MySQL学习笔记-SQL语句

简介

SQL(structure query language,结构化查询语言),是使用关系模型的数据库应用语言。

SQL分类

SQL语句主要分为三类:DDL(data definition language, 数据定义语言)语句,DML(data manipulation language, 数据操纵语言)语句,DCL(data control language, 数据控制语言)语句。

  • DDL:对数据库内部对象进行创建、删除、修改等操作;
  • DML:对数据库表记录进行插入、更新、删除和查询等操作;
  • DCL:用于管理系统中的对象用户权限;

SQL语句 DDL数据定义

每个SQL语句以分号(;)分隔,我使用了图形化界面工具:SQLyog。

  1. 操作数据库
CREATE DATABASE <databasename>;//创建数据库
USE <databasename>;//选择数据库
SHOW TABLES//查看数据库中所有数据表
DROP DATABASE <databasename>//删除数据库

创建数据库执行后,显示如下,表示执行成功。
执行成功示例
查看数据库中所有数据表,执行结果示例。
查看数据库表示例

  1. 操作数据表(创建、删除、修改、重命名数据表)
CREATE TABLE <tablename> (
column_1 VARCHAR(10),
column_2 INT(20),
column_3 FLOAT(5));//创建数据表,定义表名,列名,列的数据类型及约束;
DROP TABLE <tablename>;//删除数据表
ALTER TABLE <tablename> RENAME  <new_tablename>;//重命名数据表
ALTER TABLE <tablename> MODIFY column_1 VARCHAR(20);//修改一个字段类型
ALTER TABLE <tablename> CHANGE column_1 new_column_1 VARCHAR(20);//修改字段名称及类型
ALTER TABLE <tablename> ADD [COLUMN] <columnname> INT(20);//增加字段
ALTER TABLE <tablename> DROP COLUMN <columnname>;//删除字段
ALTER TABLE <tablename> ADD COLUMN <columnname> AFTER <columnname1>;//增加字段加在columnname1后
ALTER TABLE <tablename> ADD COLUMN <columnname> FIRST;//增加字段放在前面

也可使用图形化界面进行创建及定义
在这里插入图片描述

SQL语句 DML数据操纵

  1. 插入记录(insert)
//插入单条记录
INSERT INTO <tablename> (field_1,field_2,...,field_n) 
VALUES 
(values_1,values_2,...,values_n);
//插入多条记录
INSERT INTO <tablename> (field_1,field_2,...,field_n) 
VALUES 
(values_1_1,values_1_2,...,values_1_n),
(values_2_1,values_2_2,...,values_2_n),
...
(values_m_1,values_m_2,...,values_m_n),
;
  1. 更新记录(update)
//更新一张表的多条记录
UPDATE <tablename> SET field_1= values_1,field_2 = values_2,...,field_n = values_n [WHERE condition] ;
//更新多张表的多条记录
UPDATE <tablename_a> a,<tablename_b> b,...,<tablename_m> m SET a.field1 = values_1,b.field_2 = values_2,...,m.field_m = values_m [WHERE condition] ;
  1. 删除记录(delete)
//删除一张表的多条记录
DELETE FROM <tablename> [WHERE condition];
//删除一张表的多条记录
DELETE <tablename_a>,<tablename_b>,...,<tablename_m> FROM  <tablename_a>,<tablename_b>,...,<tablename_m> [WHERE condition];
//删除一张表的多条记录,表名使用别名
DELETE a,b,...,m FROM <tablename_a> a,<tablename_b> b,...,<tablename_m> m [WHERE condition];
  1. 查询记录(select)
//查询一张表的全部记录
SELECT * FROM <tablename>;
//查询一张表的部分记录
SELECT field_1,field_2,...,field_n FROM <tablename>;
//查询一张表的部分记录
SELECT field_1,field_2,...,field_n FROM <tablename>;
  • 去掉重复记录
SELECT DISTINCT(FIELD) FROM <tablename>;
  • 限制查询记录条数
//限制记录条数,offset_start起始偏移量,row_count显示行数
SELECT * FROM <tablename> LIMIT [offset_start,] row_count;
  • 条件查询(限定条件查询部分记录)
    字段比较:=, <, >, <=, >=, !=;
    多个条件连接:and,or
//条件查询
SELECT * FROM <tablename> WHERE field1 = values1 AND field2 != values2 OR field3 >= values3;
  • 表连接
    内连接:仅选出两张表中匹配的记录;
    外连接:分为左连接和右连接,左连接包含所有左边表中的记录甚至是右边表中没有和它匹配的记录,右连接包含所有右边表中的记录甚至是左边表中没有和它匹配的记录。
//内连接
SELECT * FROM <tablename_1> a,<tablename_2> b ON a.field1 = b.field2
//外连接-左连接
SELECT * FROM <tablename_1> a LEFT JOIN <tablename_2> b ON a.field1 = b.field2
//外连接-右连接
SELECT * FROM <tablename_1> a RIGHT JOIN <tablename_2> b ON a.field1 = b.field2
  • 查询记录排序,升序/降序,默认升序
//查询一张表的记录并排序,DESC降序,ASC升序,默认升序排列
SELECT * FROM <tablename> [WHERE condition] ORDER BY field1 [DESC/ASC], field2 [DESC/ASC],...,fieldn [DESC/ASC] ;
  • 聚合
    聚合函数包括:sum,max,min,count等;
    分组聚合:group by
    having condition:对已经分类后的记录结果进行条件过滤;where condition:在聚合前对记录尽心过滤。
    这篇把with rollup函数讲的很清楚:https://www.cnblogs.com/Mr-Cxy/p/5923375.html
//聚合,仅简单示例
SELECT field1,SUM(field2) FROM <tablename> GROUP BY field3 WITH ROLLUP HAVING SUM(field2) > 3;
  • 子查询
    关键字:in,not in,=,!=,exists, not exists
//示例
SELECT * FROM <tablename1> WHERE field1 IN (SELECT field2 FROM <tablename2>);

SQL语句 DCL数据控制

系统中的对象权限变更,关键词:grant,revoke

//创建用户root,密码为'12345678'开放对数据库database1的所有表的select/insert权限
GRANT SELECT,INSERT ON database1.* TO 'root"@"localhost' IDENTIFIED BY '12345678';
//收回用户root,对数据库database1的所有表的insert权限
REVOKE INSERT ON database1.* FROM 'root'@'localhost';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值