MySQL之CRUD

本文详细介绍了MySQL中的CRUD操作,包括基础的增删改、过滤查询、模糊查询、排序以及实际案例分析。重点讲解了like、between and、in、null判断以及order by的多种用法,提供了丰富的查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础的增删改

表:t_mysql_employees
在这里插入图片描述
下面展示表的数据
在这里插入图片描述
增加

** INSERT into t_mysql_employees(first_name,last_name,email,phone_number,salary,commission_pct,manager_id,hiredate)**

在这里插入图片描述
修改

update t_mysql_employees set last_name = ‘cheng’ where phone_number=‘17374314552’

在这里插入图片描述
删除

delete from t_mysql_employees where phone_number=‘17374314552’

在这里插入图片描述

二、过滤查询

1、按条件表达式筛选

案例
①、查询工资>12000的员工信息

select * from t_mysql_employees where salary >12000

在这里插入图片描述
②、查询部门编号不等于90号的员工名和部门编号

select last_name,department_id from t_mysql_employees where department_id <> 90

在这里插入图片描述

2、按逻辑表达式筛选

案例:
①、查询工资z在10000到20000之间的员工名、工资以及奖金

SELECT last_name,salary,commission_pct from t_mysql_employees where salary BETWEEN 10000 and 20000

在这里插入图片描述

②、查询部门编号不是在90到110之间,或者工资高于15000的员工信息

SELECT * FROM t_mysql_employees WHERE not(department_id BETWEEN 90 and 110) or salary > 15000

在这里插入图片描述

三、模糊查询

1、like

案例1:查询员工名中包含字符a的员工信息

select * from t_mysql_employees where last_name like '%a%'

在这里插入图片描述
案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

select * from t_mysql_employees where last_name like '_e_a%'

在这里插入图片描述

案例3:查询员工名中第二个字符为_的员工名

select * from t_mysql_employees where last_name like '_$_%' ESCAPE '$'

在这里插入图片描述

2、between and

案例1:查询员工编号在100到120之间的员工信息

select * from t_mysql_employees where employee_id BETWEEN 100 and 120

在这里插入图片描述

3、In

案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

select * from t_mysql_employees where job_id in('IT_PROG','AD_VP','AD_PRES')

在这里插入图片描述

3、Is null

案例1:查询没有奖金的员工名和奖金率

select last_name,commission_pct from t_mysql_employees where commission_pct is null

在这里插入图片描述

select last_name,commission_pct from t_mysql_employees where commission_pct <=> null

在这里插入图片描述

4、安全等于 <=>

案例2:查询工资为12000的员工信息

SELECT * FROM t_mysql_employees where salary <=> 12000;

在这里插入图片描述

is null 和 <=>的区别

IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=>   :既可以判断NULL值,又可以判断普通的数值,可读性较低

四、order by

1、按单个字段排序

案例:按员工表薪资排序

SELECT * FROM t_mysql_employees ORDER BY salary

在这里插入图片描述

2、添加筛选条件再排序

案例:查询部门编号>=90的员工信息,并按员工编号降序

SELECT * FROM t_mysql_employees where department_id >=90 ORDER BY employee_id desc

在这里插入图片描述

3、按表达式排序

案例:查询员工信息 按年薪降序

SELECT em.salary*12*(1+IFNULL(commission_pct,0)),em.* FROM t_mysql_employees em ORDER BY em.salary*12*(1+IFNULL(commission_pct,0)) desc

在这里插入图片描述

4、按别名排序

案例:查询员工信息 按年薪升序

SELECT em.salary*12*(1+IFNULL(commission_pct,0)),em.* FROM t_mysql_employees em ORDER BY em.salary*12*(1+IFNULL(commission_pct,0))

在这里插入图片描述

5、按函数排序

案例:查询员工名,并且按名字的长度降序

SELECT COUNT(first_name,last_name),LENGTH(COUNT(first_name,last_name)) FROM t_mysql_employees ORDER BY LENGTH(COUNT(first_name,last_name)) DESC

在这里插入图片描述

6、按多个字段排序

案例:查询员工信息,要求先按工资降序,再按employee_id升序

SELECT * FROM t_mysql_employees ORDER BY salary desc,employee_id asc;
在这里插入图片描述

7、排序练习

1.查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序

select last_name,job_id,salary*12*(1+IFNULL(commission_pct,0)) from t_mysql_employees order by salary*12*(1+IFNULL(commission_pct,0)) DESC , last_name ASC

在这里插入图片描述
2.选择工资不在8000到17000的员工的姓名和工资,按工资降序

select last_name,salary from t_mysql_employees where not (salary between 8000 and 17000) ORDER BY salary DESC

在这里插入图片描述
3.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

select * from t_mysql_employees where email LIKE '%e%' ORDER BY department_id asc,LENGTH(email) desc

在这里插入图片描述

五、案例

t_student学生表
在这里插入图片描述
t_teacher老师表
在这里插入图片描述
t_score成绩表
在这里插入图片描述

t_coures 课程表
在这里插入图片描述

1、查询" 01 “课程比” 02 "课程成绩高的学生的信息及课程分数

select a.*,b.score,c.score from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid='02' and b.score>c.score
在这里插入图片描述

2、查询同时存在" 01 “课程和” 02 "课程的情况

select a.*,b.cid,c.cid from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid='02'
在这里插入图片描述

3、查询存在" 01 “课程但可能不存在” 02 "课程的情况(不存在时显示为 null )

select a.sname,b.cid,c.cid from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid NOT in('2')
在这里插入图片描述

4、查询不存在" 01 “课程但存在” 02 "课程的情况

SELECT * FROM t_score a,t_score b where a.cid=b.cid AND a.cid NOT in('1') and b.cid='2'
在这里插入图片描述

5、查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

select a.sid,a.sname,AVG(b.score) from t_student a,t_score b where a.sid = b.sid GROUP BY b.sid HAVING AVG(b.score)>=60
在这里插入图片描述

6、查询在t_score表存在成绩的学生信息

SELECT DISTINCT(b.sid),a.* FROM t_student a,t_score b WHERE a.sid=b.sid AND b.score is NOT NULL
在这里插入图片描述

7、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )

select sum(a.score),b.sname,b.sid,COUNT(a.cid) from t_score as a,t_student as b where a.sid= b.sid GROUP BY a.sid
在这里插入图片描述

8、查询「李」姓老师的数量

select count(*) from t_teacher where tname like '%李%'
在这里插入图片描述

9、查询学过「张三」老师授课的同学的信息

SELECT DISTINCT(a.sid),a.* FROM t_student a,t_score b,t_teacher c WHERE a.sid = b.sid and c.tname='张三'
在这里插入图片描述

10、查询没有学全所有课程的同学的信息

select * from t_student where sid in( select sid from t_score GROUP BY sid HAVING count(*)>=3 )
在这里插入图片描述

13、检索" 01 "课程分数小于 60,按分数降序排列的学生信息

SELECT a.* FROM t_student a,t_score b where a.sid=b.sid and b.cid='1' and b.score<60 ORDER BY b.score DESC
在这里插入图片描述

14、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

SELECT a.*,AVG(b.score) FROM t_student a,t_score b where a.sid=b.sid GROUP BY b.sid
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值