sql 查询语句

表结构如下:

image
1、显示所有职工的基本信息。

select * from worker ;

image

2、查询所有职工所属部门的部门号,不显示重复的部门号。

select distinct `部门号`from worker; 

image

3、求出所有职工的人数。

select count(*) as '人数' from worker;

image

4、列出最高工和最低工资。
法一

select `工资` as `最低工资` from worker order by `工资` limit 0,1 ;
select `工资`as ` 最高工资` from worker order by `工资` desc limit 0,1;

select 工资 as 最低工资 from worker order by 工资 limit 0,1 union
select 工资as 最高工资 from worker order by 工资 desc limit 0,1;
image

法二:

select min(`工资`) as 最低工资, max(`工资`) as 最高工资 from worker;

image

5、列出职工的平均工资和总工资。

select avg(`工资`) as 平均工资, sum(`工资`) as 总工资 from worker;

image

6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

CREATE TABLE `workedate` (
 `职工号` int(11) NOT NULL,
 `工作时间` date NOT NULL,
 `姓名` varchar(20) NOT NULL,
 PRIMARY KEY (`职工号`)
)  select 职工号,姓名,工作时间 from worker;

image
7、显示所有职工的年龄。

select datediff(curdate(),`出生日期`)/365 as 年龄 from worker;

image

8、列出所有姓孙的职工的职工号、姓名和出生日期。

select 职工号,姓名,出生日期 from worker where 姓名 like '孙%';

image

9、列出1990年以前出生的职工的姓名、参加工作日期。
法一

select 姓名,工作时间 from worker where year(出生日期)<1990;

image

10、列出工资在3000-5000之间的所有职工姓名。

select 姓名 from worker where 工资 between 3000 and 5000;

image

11、列出所有陈姓和李姓的职工姓名。

select 姓名 from worker where 姓名 regexp '^(李|张)';
使用正则匹配以李或张开头的项

image

12、列出所有部门号为102和103的职工号、姓名、党员否。

select 职工号,姓名,政治面貌 from worker where 部门号 in (102,103);

image

13、将职工表worker中的职工按出生的先后顺序排序。

select * from worker order by `出生日期`;

image

14、显示工资最高的前3名职工的职工号和姓名。

select `职工号` ,`姓名` from worker order by `工资` desc limit 0,3;

image

15、求出各部门党员的人数。

select 部门号,count(*) as 人数 from worker where `政治面貌`='党员' group by `部门号`;

image

16、统计各部门的工资和平均工资

 select `部门号` ,avg(`工资`) as 平均工资, sum(`工资`) as 总工资 from worker group by `部门号`;

image

17、列出总人数大于4的部门号和总人数。

select count(*) as `人数` ,`部门号` from worker group by `部门号` having `人数` >= 4; 

image

posted @ 2024-05-16 18:22  f0r9  阅读(76)  评论(0)    收藏  举报