一、SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格/缩进来增强语句的可读性
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
- 注释:
- 单行注释:–注释内容或 #注释内容(MySQL特有)
- 多行注释:/*注释内容*/
二、SQL分类
三、DDL
- 数据类型(数值,字符,日期)
- char(max_length) 根据max_length分配固定大小的存储空间,性能较好
- varchar(max_length)根据实际情况分配存储空间性能较差
2. DDL-数据库操作
- DDL-表-创建
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
······
)[COMMENT 表注释];
/* [···]为可选参数,最后一个字段后面没有逗号*/
-
DDL-表操作-修改
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT注释][约束];
-
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新类型(长度) [COMMENT注释][约束];
-
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
-
删除字段
ALTER TABLE 表名 DROP 字段名
-
修改表名
ALTER TABLE 表名 RENAME TO 表名
-
删除表
DROP TABLE[IF EXISTS] 表名
-
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
-
DDL-表操作-查询
-
查询当前数据库所有表
SHOW TABLES;
-
查询表结构
DESC 表名;
-
查询指定表的建表语句
SHOW CREATE TABLE 表名;
-
四、DML
1.添加数据
-
给指定字段添加数据
INSERT INTO 表名 (字段名1,字段名2,···) VALUES (值1,值2,···);
-
给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,···);
-
批量添加数据
INSERT INTO 表名 (字段名1,字段名2,···) VALUES (值1,值2,···),(值1,值2,···),(值1,值2,···)···;
INSERT INTO 表名 VALUES (值1,值2,···),(值1,值2,···),(值1,值2,···)···;
注意:
- 插入数据时,指定的字段顺序需与值的顺序一一对应;
- 字符串和日期型数据应包含在引号中;
- 插入的数据大小,应在字段的规定范围内;
2.修改数据
-
更新数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,···[WHERE 条件]
注意:WHERE条件可有可无,如果没有,修改整张表全部内容
-
删除数据
DELETE FROM 表名 [WHERE 条件]
注意:DELETE语句不能删除某一个字段的值(可以使用UPDATE)
五、DQL
1. 基础查询
-
查询多个字段
SELECT 字段1,字段2, ··· FROM 表名;
SELECT * FROM 表名; (此方法不推荐使用)
-
设置别名
SELECT 字段1 [AS 别名1],字段2 [AS 别名2] ···From 表名; (AS可省略)
-
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
2. 条件查询
3.聚合函数
4.分组查询
5.排序查询
-
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式2;
-
排序方式: ASC:升序;DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
6.分页查询
语法:
SELECT 字段列表 FROM 表名 LIMT 起始索引,查询记录数;
注意:
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;
- 分页查询是数据库的方言,不同数据库有不同的实现,MySQL中为LIMT;
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit10.
7.DQL执行顺序
六、DCL
1.用户管理
-
查询用户
USE mysql; SELECT * FROM user;
-
创建用户
CREATE USER '用户名@主机名' IDENTIFIED BY '密码';
-
修改用户密码
ALTER USER '用户名@主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
-
删除用户
DROP USER '用户名@主机名';
注意: 主机名可以使用%通配,表示任意主机;
2.权限控制
权限列表(MySQL)