【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找出工资在1000030000之间的人有哪些?

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(某个具体的值)--

posted @   瓦风  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示