目录
1,查找前的准备工作
在我们进行操作前,先创建3个表,以便我们后续操作
CREATE DATABASE hqyj;
USE hqyj;
CREATE TABLE students(
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20),
age INT,
height FLOAT,
gender CHAR(10),
cls_id INT,
is_delete INT
);
CREATE TABLE teachers(
id INT PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE classes(
id INT PRIMARY KEY,
teacher_id INT,
cls_content VARCHAR(100),
cls_date DATETIME,
NAME VARCHAR(50)
);
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);
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, '周老师');
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,插入数据
插入数据:insert into 表名 [(字段名)] values (字段对应的值1,字段对应的值2,.......)[,(字段对应的值1,字段对应的值2,.......)];
3,修改数据
修改数据:update 表名 set 字段名1=新的数据值,字段名2=新的数据值 [where 条件];
4,删除数据
delete from 表名;----------删除表里的数据,但是表仍然存在
delete from 表名 [where 条件];------------根据条件进行删除表里的数据
truncate table 表名;---------清空表里的数据,但表仍然存在,而且不能加条件
5,数据查询
5.1 基本查询
5.1.1查询全部字段的全部数据
查询全部字段的全部数据:select * from 表名;
5.1.2查询部分字段的全部数据
查询部分字段的全部数据:select 字段名1,字段名2......from 表名;
5.1.3根据条件查询数据
根据条件查询数据:select * from 表名 where 条件;
5.1.4多个条件的查询
多个条件的查询:条件与条件之间可以用and、or、in、between...and...来进行条件的连接
5.1.5模糊查询
模糊查询:select * from 表名 where 字段名 like '值';----------% _
5.1.6去重
select distinct 字段名 from 表名;
5.1.7排序
按照单个字段排序:select * from 表名 order by 字段名 asc/desc;(asc升序-默认,desc降序)
按照多个字段排序:select * from 表名 order by 字段名1 asc/desc,字段名2 asc/desc;
有条件的排序:select * from 表名 where 条件 order by 字段名 asc/desc;
5.1.8限制查询结果的数量
限制查询结果的数量:limit
5.2 内连接
5.2.1显示内连接
显示内连接:select 字段 from 表名1 inner join 表名2 on 两个表连接的条件 [where 条件];
5.2.2隐式内连接
隐式内连接:select 字段 from 表名1,表名2 where 两个表连接的条件 [and 其他查询的条件];
5.3 外连接
5.3.1左外连接
左外连接:select 字段 from 表名1 left join 表名2 on 两个表连接的条件 [where 条件];------左表的数据全部查询出来,右表符合条件的查询出来
5.3.2右外连接
右外连接:select 字段 from 表名1 right join 表名2 on 两个表连接的条件 [where 条件];------右表的数据全部查询出来,左表符合条件的查询出来
5.4 聚合函数查询
示例:查询班级学生的平均年龄
select avg(age) as '平均年龄' from students;
count()-计数
sum()-求和
max()-最大值
min()-最小值
avg()-平均值
5.5 子查询
5.5.1简单子查询
示例:查看刘德华同学的所在班级的所有同学
select * from students where cls_id = (select cls_id from students where name = '刘德华');
5.5.2ANY/SOME子查询
示例:查看赵老师所带的学生信息
select * from students where cls_id = any(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
5.5.3All子查询
示例:查看学生所在班级
select * from students where cls_id >= all(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
5.5.4NOT EXISTS子查询
示例:创建教师表
create table IF NOT EXISTS teachers(
id int primary key,
name varchar(20)
);
避免重复创建