1、准备工作
1.1打开navicat创建数据库
1.2新建查询
创建三个表代码依次如下
1.2.1students表
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (1, '小明', 18, 180, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (2, '小月月', 18, 180, '女', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (3, '彭于晏', 29, 185, '男', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (4, '刘德华', 59, 175, '男', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (5, '黄蓉', 38, 160, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (6, '凤姐', 28, 150, '保密', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (7, '王祖贤', 18, 172, '保密', 1, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (8, '周杰伦', 36, NULL, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (9, '程坤', 27, 181, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (10, '刘亦菲', 25, 166, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (11, '猪猪侠', 33, 162, '保密', 3, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (12, '静香', 12, 180, '女', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (13, '郭靖', 12, 170, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (14, '周杰', 34, 176, '女', 1, 0);
点击运行后删除
1.2.2创建teachers表
INSERT INTO `teachers` (`id`, `name`) VALUES (1, '赵老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (2, '孙老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (3, '李老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (4, '周老师');
点击运行后删除
1.2.3创建classes表
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (1, 1, '班级学生有较强的学习能力', '2024-10-01 00:00:00', 'python_01期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (2, 2, '班级学生比较顽皮', '2024-11-01 00:00:00', 'python_02期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (3, 2, '数据结构班', '2024-11-01 00:00:00', 'data_struct_01期');
结果如图所示
2、DML语言
用刚才创建的表练习DML语言
2.1 insert插入数据
语法格式:
INSERT [INTO]
表名 [字段名]
VALUES (值列表);
2.2 update更新数据
UPDATE 表名 SET 字段1=值1,
字段2=值2,…,字段n=值n
[WHERE 条件];
2.3 delete删除数据
3、DQL语言
3.1 SELECT基本查询语句
语法格式:
SELECT 列名 FROM 表名;
3.2 运算符
算术运算符 + - * / %
关系运算符 > < = <> >=
赋值运算符 =
逻辑运算符 and or not && || !
3.3 where条件查询
语法格式:
SELECT 列名
FROM 表名
WHERE 条件 (可以用到3.2的运算符)
3.4 where多条件查询
语法格式:
SELECT 列名
FROM 表名
WHERE 条件 运算符 条件
3.5 like模糊查询
模糊查询是使用SQL 通配符替代一个或多个字符的条件查询。
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
LIKE '值'
3.6 IN关键字查询
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
IN (值1,值2,....);
3.7 BETWEEN关键字查询
语法格式:
SELECT 列名
FROM 表名
WHERE 字段
BETWEEN 值1 and 值2; (包括1和2)
3.8 DISTINCT关键字查询【去重】
语法格式:
SELECT DISTINCT
字段名1,字段名2......
FROM 表名;
3.9 ORDER BY关键字查询
语法格式:
SELECT
FROM
[WHERE ]
[ORDER BY
[ASC 或 DESC]];
3.10 LIMIT关键字查询
语法格式:
SELECT
FROM
[WHERE ]
[ORDER BY [ASC 或 DESC]]
[LIMIT ];
4、连接查询
观察上面三张表,如何查看students表中cls_id所代表的的班级名称是什么?——使用连接查询
连接查询是将多张表中记录按照指定的条件进行连接的查询方式
注意:连接查询涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健
4.1 内连接
内连接是返回连接表中符合连接条件记录的连接查询。
包括:显式内连接、隐式内连接
4.1.1 显示内连接查询
语法格式:
SELECT 字段 FROM 表1
INNER JOIN 表2
ON 连接条件
WHERE 条件
4.1.2 隐式内连接查询
语法格式:
SELECT 字段
FROM 表1,表2
WHERE 表1.条件=表2.条件
4.2 外连接
4.2.1左外连接查询
左外连接是以左表为基表,返回左表中所有记录及连接表中符合条件的记录的外连接。
语法格式:
SELECT 字段 FROM 表1
LEFT [outer] JOIN 表2
ON 连接条件
WHERE 条件
4.2.2 右外连接查询
右外连接是以右表为基表,返回右表中所有记录及连接表中符合条件的记录的外连接。
语法格式:
SELECT 字段 FROM 表1
RIGHT [outer] JOIN 表2
ON 连接条件
WHERE 条件
5、聚合函数
如何查看班级同学的平均身高?——使用聚合函数
聚合函数是可以对一组值进行计算,并返回单个值的函数。
语法格式:
SELECT 聚合函数
FROM 表名
[WHERE 条件]
[GROUP BY 聚合函数]
- count()-计数
- sum()-求和
- max()-最大值
- min()-最小值
- avg()-平均值
6、子查询【查询嵌套】
如何只查询比刘德华高的同一班的学生信息?——子查询
定义:子查询是在一个查询的内部包括另一个查询的查询方式
6.1 简单子查询