SQL语法
通用语法及分类
MySQL语法:
可以单行或多行书写,以分号结尾
可以使用空格和缩进提高可读性
不区分大小写,关键字建议大写
SQL分类:
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库、表、字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户,控制数据库的访问权限 |
PS:[…]为可选参数
DDL
数据库操作:
查询
查询所有数据库:
1
SHOW DATABASES;
查询当前数据库:
1
SELECT DATABASE();
创建
1
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
删除
1
DROP DATABASE[IF EXISTS] 数据库名;
使用
1
USE 数据库名;
表操作:
查询
查询当前数据库所有表:
1
SHOW TABLES;
查询表结构:
1
DESC 表名;
查询指定表的建表语句:
1
SHOW CREATE TABLE 表名;
创建
1
2
3
4
5CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
......
字段n 字段n类型 [COMMENT 字段n注释]
) [COMMENT 表注释];最后一个字段后面没有逗号
添加字段
修改
添加字段
1
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]
修改数据类型
1
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型、
1
ALTER TABLE 表名 CHANEG 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
修改表名
1
ALTER TABLE 表名 RENAME TO 新表名;
删除
删除字段
1
ALTER TABLE 表名 DROP 字段名;
删除表
1
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表(清除数据)
1
TRUNCATE TABLE 表名;
DML
添加数据
给指定的字段添加数据
1
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...);
给全部字段添加数据
1
INSERT INTO 表名 VALUES (值1,值2,...);
批量添加数据
1
2
3INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
注意:
- 插入数据时,指定的字符顺序一定与值的顺序是一一对应的
- 字符串和日期型数据应该包含在引号中
修改数据
1
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];
- 没有条件就会修改整张表的数据
删除数据
1
DELETE FROM 表名 [WHERE 条件];
- 如果没有条件会删除整张表的数据
DQL
DQL编写顺序:
1 | SELECT |
DQL执行顺序:
1 | FROM |
基本查询
查询多个字段
1
SELECT 字段1,字段2,字段3,... FROM 表名;
1
SELECT * FROM 表名;
- * 表示查询全部字段
设置别名
1
SELECT 字段1 [AS 别名],字段2[AS 别名],... FROM 表名;
去除重复记录
1
SELECT DISTINCT 字段列表 FROM 表名;
条件查询
1
SELECT 字段列表 FROM 表名 WHERE 条件列表;
聚合函数
定义:将一列数据作为一个整体,进行纵向计算
不计算null值
1
SELECT 聚合函数(字段列表) FROM 表名;
常用的聚合函数 | 功能 |
---|---|
max | 最大值 |
min | 最小值 |
sum | 求和 |
avg | 平均值 |
count | 统计数量 |
分组查询
1
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字 段名 [HAVING 分组后过滤条件];
不满足where条件不参与分组,且where不能对聚合函数进行判断
分组后不满足having条件过滤掉
排序查询
1
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2,排序方式2;
排序方式 | 功能 |
---|---|
ASC | 升序(默认) |
DESC | 降序 |
分页查询
1
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
起始索引从0开始,$起始索引 = (查询页码 - 1)\times 每页记录数$
分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是LIMIT
如果查询的是第一页数据,起始索引可以省略
DCL
管理用户
查询用户
1
2USE mysql;
SELECT * FROM user;创建用户
1
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
- 主机名为 localhost 或 %(任意主机)
修改用户密码
1
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password '新密码';
删除用户
1
DROP USER '用户名'@'主机名';
权限控制
查询权限
1
SHOW GRANTS FOR '用户名'@'主机名';
授予权限、
1
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
- 数据库名和表名可以用 * 来表示所有
撤销权限
1
REVOKE 权限列表 ON 数据库名.表名 FROM'用户名'@'主机名';
- 数据库名和表名可以用 * 来表示所有
- 多个权限之间要用逗号分隔