目录
DDL:
使用数据库:
SHOW DATABASES; 查询所有的数据库
CREATE DATABASE 数据库名称; 创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名称; 创建数据库(判断,如果不存在则创建)
DROP DATABASE 数据库名称; 删除数据库
DROP DATABASE IF EXISTS 数据库名称; 删除数据库(判断,如果存在则删除)
USE 数据库名称; 使用数据库
SELECT DATABASE(); 查看当前使用的数据库
操作表:
SHOW TABLES; 查询当前数据库下所有表名称
DESC 表名称; 查询表结构
CREATE TABLE 表名 ( 字段名1 数据类型1 , 字段名2 数据类型2 , … 字段名n 数据类型n );
数据类型:
tinyint : 小整数型,占一个字节
int : 大整数类型,占四个字节
double : 浮点类型 使用格式: 字段名 double(总长度,小数点后保留的位数)
date : 日期值。只包含年月日
datetime : 混合日期和时间值。包含年月日时分秒
char : 定长字符串。 优点:存储性能高 缺点:浪费空间
varchar : 变长字符串。 优点:节约空间 缺点:存储性能底
删除表:
DROP TABLE 表名; 删除表
DROP TABLE IF EXISTS 表名; 删除表时判断表是否存在
修改表:
ALTER TABLE 表名 RENAME TO 新的表名;
ALTER TABLE 表名 ADD 列名 数据类型; 添加一列
ALTER TABLE 表名 MODIFY 列名 新数据类型; 修改数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; 修改列名和数据类型
ALTER TABLE 表名 DROP 列名; 删除列
DML:
添加数据:
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,…)…;
修改数据:
UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ; 修改表数据
删除数据:
DELETE FROM 表名 [WHERE 条件] ; 删除数据
DQL:
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组后条件 ORDER BY 排序字段 LIMIT 分页限定
基础查询:
SELECT 字段列表 FROM 表名; 查询多个字段 SELECT * FROM 表名; -- 查询所有数据
SELECT DISTINCT 字段列表 FROM 表名; 去除重复记录
AS: AS 也可以省略 起别名
条件查询:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件:
条件列表可以使用以下运算符:
> | 大于 |
---|---|
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围之内(都包含) |
IN ( ... ) | 多选一 |
LIKE 占位符 | 模糊查询 _单个任意字符 %多个任意字符 |
IS NULL | 是null |
IS NOT NULL | 不是null |
AND 或 && | 并且 |
OR 或 || | 或者 |
NOT 或 ! | 非 , 不是 |
排序查询:
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
排序方式:
-
ASC : 升序排列 (默认值)
-
DESC : 降序排列
聚合函数:
将一列数据作为一个整体,进行纵向计算
SELECT 聚合函数名(列名) FROM 表;
聚合函数分类
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
分组查询:
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
where 和 having 区别:
-
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
-
可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
分页查询:
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
*起始索引 = (当前页码 - 1) * 每页显示的条数*