【mysql 的一些基本语法知识】and【例题练习】
新建下表为例:
create table emp2(
eid int primary key auto_increment,
ename varchar(100),
sex char(1),
salary double,
bir datetime,
leaderid int,
deptid int);
插入数据:
insert into emp2(ename,sex,salary,bir,leaderid,deptid)
values (马云,'男',1,'1999-02-14',null,1001);
insert into emp2 values (default,'张三丰','男',32000,'1999-02-14',1,1002),
(default,'张无忌','男',18000,'1978-08-09',2,1002),(default,'灭绝师太','女',28000,'1977-01-01',3,1003),
(default,'周芷若','女',8000,'1998-02-14',3,1003),(default,'赵敏','女',12000,'2000-02-14',1,1004);
--auto_increment:自增 -- --default:默认值--
select * from emp2; #查看表信息
1求所有姓张的人有哪些?
select *
from emp2
where ename like '张%'
--模糊查询:like-- --通配符:百分号代表多个字符可以为零--
2求名字是3个字并且工资>6000的人?
select ename,salary
from emp2
where ename like '___' and salary>6000
--通配符:下划线代表一个字符--
3---给年龄大于40岁的人,都减去500的工资--
update emp2 set salary=salary+500
where salary in ( select a.salary
from( select salary from emp2 where timestampdiff(year ,bir,curdate())>40)a)
4找出姓张的人或者姓马的人?
select ename
from emp2
where ename like '张%' or ename like '马%'
--或者:or--并且:and--
5找出工资在10000到30000之间的人有哪些?
select ename,salary
from emp2
where salary between 10000 and 30000
或者:
select ename,salary
from emp2
where salary>10000 and salary<30000
6找出每个部门的平均工资,最高工资,最低工资各是多少?
select deptid,avg(salary),max(salary),min(salary)
from emp2
group by deptid
--函数:平均:avg()--- 求和:sum()-- 统计count()-- 最大值max()--- 最小值min()--
--分组:group by--
7找出部门1002中哪些人姓张?
select *
from
(select deptid,ename
from emp2
group by deptid) t
WHERE t.ename like '张%'
--下面加了一个子查询--
8找出男生中 各部门的平均工资?
select deptid,sex,avg(salary)
from emp2
where sex='男'
group by deptid
9找出各部门的id和平均工资,最后的结果按照部门id的从大到小排序
select deptid,avg(salary)
from emp2
group by deptid
order by deptid desc
--排序:order by asc(从小到大)/desc(从大到小)
10找出公司中工资在第2位到4位的人有哪些?
select ename,salary
from emp2
order by salary limit 1,3
--分页:limit 3(取出前3行)/limit 0,3(从0行开始,取出3行)--
11 找出哪些人的工资最高?显示这些人的信息?
select *
from emp2
where salary=(select max(salary) from emp2)
或者:
select *
from emp2
where salary=(select salary from emp2 order by salary desc limit 1)
12求出部门中哪些部门的平均工资大于5000,显示的时候,按照平均工资的从大到下显示
select deptid,avg(salary)
from emp2
group by deptid
having avg(salary)>5000
order by avg(salary) desc
--过滤组信息:having--一般与group by连用--
13求出公司部门有几个
select count(distinct deptid)
from emp2
---去重:distinct --
14找出工资是 1 或者 8000 或者32000 的人
select *
from emp2
where salary in(1,8000,32000)
或者
select *
from emp2
where salary=1 or salary=8000 or salary=32000
--判断在不在里面:--in(某个具体的值)--
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人