用来定义数据库对象:数据库、表、列等。
SHOW DATABASES;
----a) 创建数据库
CREATE DATABASE 数据库名称;
----b) 创建数据库(判断,若不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
----a) 删除数据库
DROP DATABASE 数据库名称;
----b) 删除数据库(判断,若存在则删除)
DROP DATABASE IF EXISTS 数据库名称;
----a) 查看当前使用的数据库
SELECT DATABASE();
----b) 使用数据库
USE 数据库名称;
----a) 查看当前数据库下所有表名称
SHOW TABLES;
----b) 查询表结构
DESC 表名称;
CREATE TABLE 表名(
字段名1 数据类型1 [约束11 约束12 ...],
字段名2 数据类型2 [约束21 约束22 ...],
...
字段名n 数据类型n [约束n1 约束n2 ...]
);
----a) 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
----b) 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
----c) 修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
----d) 修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
----e) 删除列
ALTER TABLE 表名 DROP 列名;
----a) 删除表
DROP TABLE 表名;
----b) 删除表(判断,若存在则删除)
DROP TABLE IF EXISTS 表名;
外键用于让两个表的数据间建立链接,保证数据的一致性与完整性。
----a) 创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型
...
[CONSTRAINT 外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
----b) 建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键列名) REFERENCES 主表(主表列名);
----c) 删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
对表中数据进行增删改。
----a) 指定列添加数据
INSERT INTO 表名(列名1, 列名2, ...) VALUES(值1, 值2, ...);
----b) 全部列添加数据
INSERT INTO 表名 VALUES(值1, 值2, ...);
----c) 批量添加数据
# 以方式a批量添加
INSERT INTO 表名(列名1, 列名2, ...) VALUES(值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...)...;
# 以方式b批量添加
INSERT INTO 表名 VALUES(值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...)...;
UPDATE 表名 SET 列名1=值1, 列名2=值2,...[WHERE 条件];
DELETE FROM 表名 [WHERE 条件];
查询表中数据。
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分页限定;
----a) 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
----b) 起别名
# 字段名与别名间可使用 as 也可直接使用空格隔开
SELECT 字段1 as 别名1, 字段2 别名2, ... FROM 表名;
SELECT 字段列表 FROM 表名 WHERE 条件列表;
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1], 排序字段名2 [排序方式2] ...;
排序方式:
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名[HAVING 分组后条件过滤];
注意:分组之后,查询字段为聚合函数与分组字段,查询其他字段无意义
where 与 having 区别:
聚合函数
概念:将一列数据作为一个整体,进行纵向计算。
SELECT 聚合函数(列名) FROM 表名;
** null 值不参与所有聚合函数运算**
各聚合函数功能如图所示****
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询条目数;
tips:
----a) 内连接:相当于从A,B交集数据
# 隐式内连接
SELECT 字段列表 FROM 表1, 表2... WHERE 条件;
# 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
----b) 外连接:
··············左外连接:相当于查询 A 表所有数据和交集部分数据
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
··············右外连接:相当于查询 B 表所有数据和交集部分数据
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
----a) 单行单列:作为条件值,使用=、!=、>、<等进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
----b) 多行单列:作为条件值,使用 in 关键字进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 IN (子查询);
----c) 多行多列:作为虚拟表
SELECT 字段列表 FROM (子查询) WHERE 条件;