创建数据库
创建并指定字符集为 utf8mb4
CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET utf8mb4;
使用数据库
use db_name;
删除数据库
DROP DATABASE [IF EXISTS] db_name;
创建表
在已选定数据库的情况下创建表
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
删除表
drop table if exists table_name;
在表中新增数据
INSERT [INTO] table_name (列名1,列名2.....)VALUES (value_list)
查询
全列查询
SELECT * FROM table_name;
指定列查询 查询字段可为表达式
SELECT id, name, 列名1+ 列名2+ 列名3 as 新列名 FROM table_name ;
去重
SELECT DISTINCT 列名 FROM table_name ;
排序
ASC : 升序
DESC : 降序
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
//SELECT name, qq_mail FROM student ORDER BY qq_mail DESC
条件查询 where
//SELECT name, chinese + math + english 总分 FROM exam_result
// WHERE chinese + math + english < 200;
范围查询
between and
//SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese <= 90;
in
//SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
模糊查询 like
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权
分页查询
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
修改
//UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
删除
//DELETE FROM exam_result WHERE name = '孙悟空';
聚合查询与聚合函数
//count(distinct id) 函数返回去重过后的结果
group by 子句
SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询。需要满足:使用 GROUP BY 进行分组查
询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中。
// select role,max(salary),min(salary),avg(salary) from emp group by role;
HAVING
GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用
HAVING
//select role,max(salary),min(salary),avg(salary) from emp group by role
//having avg(salary)<1500;
联合查询
实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积.
详情参考