Mysql基础学习day02
- DDL-表查询
- 查询当前数据库所有表
-- 查看当前数据库所有表 show tables;
b.查看指定表结构
-- 查看指定表结构 desc employee;
c.查询指定表的建表语句
-- 查看指定表的建表语句 show create table employee;
d.查询指定表的建表语句
2.DDL-表修改
a.添加字段
-- 添加字段 alter table employee add qq varchar(11) comment 'QQ号码'; alter table employee add update_time timestamp comment '更新时间';
b.修改字段
-- 修改字段 alter table employee change qq qq_number varchar(13) comment '新的QQ号码';
3.DDL-表删除
a.删除字段
-- 删除字段 alter table employee drop qq_number;
b.修改表名
-- 修改表名 rename table employee to emp;
c.删除表
-- 删除表 drop table if exists emp;
4.DML-增加/插入(insert)
a. 插入单条数据(部分字段)
-- 插入单条数据(部分字段) insert into emp(name, department, salary, phone_number, create_time) values ('张三', '教育部', 1300, 12345678901, now());
b.插入单条数据(全部字段)
insert into emp values (2, '李四', '教育部', '2023-01-01', 12000, 12345678902, now());
c.插入多条数据(部分字段)
-- 插入多条数据(部分字段) insert into emp(name, department, salary, phone_number, create_time) values ('钱八', '教育部', 10000, 12345678906, now()), ('周九', '教育部', 14000, 12345678907, now());
d.插入多条数据
-- 插入多条数据 insert into emp values (5, '王五', '教育部', '2023-01-01', 15000, 12345678903, now()), (6, '赵六', '教育部', '2023-01-01', 11000, 12345678904, now()), (7, '孙七', '教育部', '2023-01-01', 20000, 12345678905, now());
5.DML-修改(update)
a.单条数据修改
# 将emp表中id为1的员工,薪资salary改为13000 update emp set salary = 13000 where id = 1;
b.多条数据修改
# 将emp表中的入职时间entry_date改为2025-06-01 update emp set entry_date = '2025-06-01', update_time = now();
6.DML-删除(delete)
a.单条数据删除
-- 单条数据删除 delete from emp where id = 7;
b.多条数据删除
-- 多条数据删除 delete from emp where id > 4;
c.删除某个字段全部数据
-- 删除某个字段全部数据 update emp set qq_number = null;
7.DQL-查询(select)
a.准备数据
# 准备数据 create table emp ( id int unsigned primary key auto_increment comment 'ID,主键', username varchar(20) not null unique comment '用户名', password varchar(32) not null comment '密码', name varchar(10) not null comment '姓名', gender tinyint unsigned not null comment '性别, 1:男, 2:女', phone char(11) not null unique comment '手机号', job tinyint unsigned comment '职位, 1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师', salary int unsigned comment '薪资', image varchar(300) comment '头像', entry_date date comment '入职日期', create_time datetime comment '创建时间', update_time datetime comment '修改时间' ) comment '员工表'; -- 准备测试数据 INSERT INTO emp(id, username, password, name, gender, phone, job, salary, image, entry_date, create_time, update_time) VALUES (1, 'shinaian', '123456', '施耐庵', 1, '13309090001', 4, 15000, '1.jpg', '2000-01-01', '2023-10-27 16:35:33', '2023-10-27 16:35:35'), (2, 'songjiang', '123456', '宋江', 1, '13309090002', 2, 8600, '2.jpg', '2015-01-01', '2023-10-27 16:35:33', '2023-10-27 16:35:37'), (3, 'lujunyi', '123456', '卢俊义', 1, '13309090003', 2, 8900, '3.jpg', '2008-05-01', '2023-10-27 16:35:33', '2023-10-27 16:35:39'), (4, 'wuyong', '123456', '吴用', 1, '13309090004', 2, 9200, '4.jpg', '2007-01-01', '2023-10-27 16:35:33', '2023-10-27 16:35:41'), (5, 'gongsunsheng', '123456', '公孙胜', 1, '13309090005', 2, 9500, '5.jpg', '2012-12-05', '2023-10-27 16:35:33', '2023-10-27 16:35:43'), (6, 'huosanniang', '123456', '扈三娘', 2, '13309090006', 3, 6500, '6.jpg', '2013-09-05', '2023-10-27 16:35:33', '2023-10-27 16:35:45'), (7, 'chaijin', '123456', '柴进', 1, '13309090007', 1, 4700, '7.jpg', '2005-08-01', '2023-10-27 16:35:33', '2023-10-27 16:35:47'), (8, 'likui', '123456', '李逵', 1, '13309090008', 1, 4800, '8.jpg', '2014-11-09', '2023-10-27 16:35:33', '2023-10-27 16:35:49'), (9, 'wusong', '123456', '武松', 1, '13309090009', 1, 4900, '9.jpg', '2011-03-11', '2023-10-27 16:35:33', '2023-10-27 16:35:51'), (10, 'lichong', '123456', '林冲', 1, '13309090010', 1, 5000, '10.jpg', '2013-09-05', '2023-10-27 16:35:33', '2023-10-27 16:35:53'), (11, 'huyanzhuo', '123456', '呼延灼', 1, '13309090011', 2, 9700, '11.jpg', '2007-02-01', '2023-10-27 16:35:33', '2023-10-27 16:35:55'), (12, 'xiaoliguang', '123456', '小李广', 1, '13309090012', 2, 10000, '12.jpg', '2008-08-18', '2023-10-27 16:35:33', '2023-10-27 16:35:57'), (13, 'yangzhi', '123456', '杨志', 1, '13309090013', 1, 5300, '13.jpg', '2012-11-01', '2023-10-27 16:35:33', '2023-10-27 16:35:59'), (14, 'shijin', '123456', '史进', 1, '13309090014', 2, 10600, '14.jpg', '2002-08-01', '2023-10-27 16:35:33', '2023-10-27 16:36:01'), (15, 'sunerniang', '123456', '孙二娘', 2, '13309090015', 2, 10900, '15.jpg', '2011-05-01', '2023-10-27 16:35:33', '2023-10-27 16:36:03'), (16, 'luzhishen', '123456', '鲁智深', 1, '13309090016', 2, 9600, '16.jpg', '2010-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:05'), (17, 'liying', '12345678', '李应', 1, '13309090017', 1, 5800, '17.jpg', '2015-03-21', '2023-10-27 16:35:33', '2023-10-27 16:36:07'), (18, 'shiqian', '123456', '时迁', 1, '13309090018', 2, 10200, '18.jpg', '2015-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:09'), (19, 'gudasao', '123456', '顾大嫂', 2, '13309090019', 2, 10500, '19.jpg', '2008-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:11'), (20, 'ruanxiaoer', '123456', '阮小二', 1, '13309090020', 2, 10800, '20.jpg', '2018-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:13'), (21, 'ruanxiaowu', '123456', '阮小五', 1, '13309090021', 5, 5200, '21.jpg', '2015-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:15'), (22, 'ruanxiaoqi', '123456', '阮小七', 1, '13309090022', 5, 5500, '22.jpg', '2016-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:17'), (23, 'ruanji', '123456', '阮籍', 1, '13309090023', 5, 5800, '23.jpg', '2012-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:19'), (24, 'tongwei', '123456', '童威', 1, '13309090024', 5, 5000, '24.jpg', '2006-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:21'), (25, 'tongmeng', '123456', '童猛', 1, '13309090025', 5, 4800, '25.jpg', '2002-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:23'), (26, 'yanshun', '123456', '燕顺', 1, '13309090026', 5, 5400, '26.jpg', '2011-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:25'), (27, 'lijun', '123456', '李俊', 1, '13309090027', 5, 6600, '27.jpg', '2004-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:27'), (28, 'lizhong', '123456', '李忠', 1, '13309090028', 5, 5000, '28.jpg', '2007-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:29'), (29, 'songqing', '123456', '宋清', 1, '13309090029', 5, 5100, '29.jpg', '2020-01-01', '2023-10-27 16:35:33', '2023-10-27 16:36:31'), (30, 'liyun', '123456', '李云', 1, '13309090030', NULL, NULL, '30.jpg', '2020-03-01', '2023-10-27 16:35:33', '2023-10-27 16:36:31');
b.基本查询
- 查询多个字段
- 案例1:查询指定字段 name,entry_date并返回
-- 案例1:查询指定字段 name,entry_date并返回 select name, entry_date from emp;
- 起别名
-- 起别名 select name as 姓名, entry_date as 入职时间 from emp; select name as '姓 名', entry_date as 入职时间 from emp; select name as "姓 名", entry_date as 入职时间 from emp;
- 1:
- 2:
- 3:
- 查询所有字段 `*`号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)
-- 查询所有字段 `*`号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率) select * from emp;
- 查询emp表中有哪些职位
# 查询emp表中有哪些职位 select job from emp;
- 查询emp表中的职位去重
-- 查询emp表中的职位去重 select distinct job from emp;
c.条件查询
- 案例1:查询 姓名 为 '宋江' 的员工
-- 案例1:查询 姓名 为 '宋江' 的员工 select * from emp where name = '宋江';
- 案例2:查询 薪资小于等于 5000 的员工信息
-- 案例2:查询 薪资小于等于 5000 的员工信息 select * from emp where salary <= 5000;
- 案例3:查询 没有分配职位 的员工信息
-- 案例3:查询 没有分配职位 的员工信息 select * from emp where job is null;
- 案例4:查询 有职位 的员工信息
-- 案例4:查询 有职位 的员工信息 select * from emp where job is not null;
- 案例5:查询 密码不等于 '123456' 的员工信息
-- 案例5:查询 密码不等于 '123456' 的员工信息 select * from emp where password != '123456';
- 案例6:查询 入职日期 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间的员工信息
-- 案例6:查询 入职日期 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间的员工信息 select * from emp where entry_date between '2000-01-01' and '2010-01-01'; select * from emp where entry_date >= '2000-01-01' and entry_date <= '2010-01-01';
- 案例7:查询 入职时间 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间 且 性别为女 的员工信息
-- 案例7:查询 入职时间 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间 且 性别为女 的员工信息 select * from emp where entry_date between '2000-01-01' and '2010-01-01' and gender = 2;
- 案例8:查询 职位是 2 (讲师), 3 (学工主管), 4 (教研主管) 的员工信息
-- 案例8:查询 职位是 2 (讲师), 3 (学工主管), 4 (教研主管) 的员工信息 select * from emp where job in (2, 3, 4); select * from emp where job = 2 or job = 3 or job = 4;
- 案例9:查询 姓名 为两个字的员工信息
-- 案例9:查询 姓名 为两个字的员工信息 select * from emp where name like '__';
- 案例10:查询 姓 '李' 的员工信息
-- 案例10:查询 姓 '李' 的员工信息 select * from emp where name like '李%';
- 案例11:*查询 姓名中包含* '二' 的员工信息
-- 案例11:*查询 姓名中包含* '二' 的员工信息 select * from emp where name like '%二%';
d.聚合函数
- 案例1:统计该企业员工数量
-- 案例1:统计该企业员工数量 select count(*) from emp; select count(id) from emp;
- 案例2:统计该企业员工的平均薪资
-- 案例2:统计该企业员工的平均薪资 select avg(salary) from emp;
- 案例3:统计该企业员工的最低薪资
-- 案例3:统计该企业员工的最低薪资 select min(salary) from emp;
- 案例4:统计该企业员工的最高薪资对应员工的姓名
-- 案例4:统计该企业员工的最高薪资对应员工的姓名 select max(salary) from emp; select name from emp where salary = (select max(salary) from emp);
- 案例5:统计该企业每月要给员工发放的薪资总额(薪资之和)
-- 案例5:统计该企业每月要给员工发放的薪资总额(薪资之和) select sum(salary) from emp;
d.分组查询
- 案例1:根据性别分组 , 统计男性和女性员工的数量
-- 案例1:根据性别分组 , 统计男性和女性员工的数量 select gender, count(*) from emp group by gender;
- 查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位
-- 查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位 select job, count(*) from emp where entry_date <= '2015-01-01' group by job having count(*) >= 2;
e.排序查询
- 案例1:根据入职时间, 对员工进行升序排序
-- 案例1:根据入职时间, 对员工进行升序排序 select * from emp order by entry_date asc;
- 案例2:根据入职时间, 对员工进行降序排序
-- 案例2:根据入职时间, 对员工进行降序排序 select * from emp order by entry_date desc;
- 案例3:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序
-- 案例3:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序 select * from emp order by entry_date asc, update_time desc;
f.分页查询 起始索引 = (页码-1) * 每页条数
- 案例1:从起始索引0开始查询员工数据, 每页展示5条记录
# 分页查询 起始索引 = (页码-1) * 每页条数 -- 案例1:从起始索引0开始查询员工数据, 每页展示5条记录 select * from emp limit 0,5; select * from emp limit 5,5; select * from emp limit 10,5;