实验三 简单查询(1)解答
实验结果
1. 查询全部职工的基本信息。
SQL语句:
SELECT *
FROM Employee
查询结果:
其他:
SELECT top 5 *
FROM Employee
2.查询员工表中所有职工的部门、职工号、姓名和薪水。
SQL语句:
SELECTsql查询面试题 department,employeeNo,employeeName, salary
FROM Employee
查询结果:
3.查询全体职工的姓名、年龄、所属部门,并且用汉语显示表头信息。
SQL语句:
SELECT employeeName 姓名, year(getdate())-year(birthday) 年龄,department 所属部门
FROM Employee
查询结果:
问题:
SELECT employeeName 姓名,year(getdate())-year(birthday)+1 AS 年龄,department 所属部门
FROM Employee
4.查询1973年出生且为职员的员工信息。
SQL语句:
SELECT *
FROM Employee
WHERE year(birthday)=1973 AND headShip='职员'
查询结果:
其他:
SELECT *
FROM Employee
WHERE year(birthday)='1973' AND headShip='职员'
5.查询业务科或财务科的职工姓名、性别和所在部门,仅显示前面5位职工。
SQL语句:
SELECT TOP 5 employeeName, sex,department
FROM Employee
WHERE department IN ('业务科','财务科')
查询结果:
其他:
SELECT TOP 5 employeeName,sex,department
FROM Employee
WHERE department='业务科'or department='财务科'
问题:
SELECT top 5 employeeName,sex,department
FROM Employee
Where department=业务科,财务科
6. 查询薪水为20004000的职工编号、姓名、所在部门和薪水。
SQL语句:
SELECT employeeNo,employeeName,department, salary
FROM Employee
WHERE salary=2000 OR salary=4000
查询结果:
其他:
SELECT employeeNo,employeeName,department,salary
FROM Employee
WHERE salary='2000' OR salary='4000'
7. 查询薪水在3000 ~ 4000的职工姓名和薪水。
SQL语句:
SELECT employeeName, salary
FROM Employee
WHERE salary BETWEEN 3000 AND 4000
查询结果:
8. 查询薪水不在3000 ~ 4000的职工姓名和薪水。
SQL语句:
SELECT employeeName, salary
FROM Employee
WHERE salary NOT BETWEEN 3000 AND 4000
查询结果:
其他:
SELECT employeeName,department,salary
FROM Employee
where not (salary>=3000 and salary<=4000)
SELECT employeeName, salary
FROM Employee
WHERE salary<3000 OR salary>4000
9. 查询所有姓张的职工姓名、所属部门和性别,且性别显示为“男”或“女”。
SQL语句:
SELECT employeeName,department,sex=
case sex
    WHEN 'M' THEN ''
    WHEN 'F' THEN ''
    ELSE '不详'
END
FROM Employee
WHERE employeeName LIKE '%'
查询结果:
其他:
select employeeName,department,
case
when sex='M' then ''
when sex='F' then ''
end sex
from Employee
where employeeName like '%'
10. 查询姓张且全名为三个汉字的职工姓名。
SQL语句:
SELECT employeeName
FROM Employee
WHERE employeeName LIKE '__'
查询结果:
问题:
SELECT employeeName
FROM Employee
WHERE employeeName LIKE '__' AND employeeName NOT LIKE '_'
11. 查询既不在业务科也不在财务科的职工姓名、性别和所在部门。
SQL语句:
SELECT employeeName,sex,department
FROM Employee
WHERE department NOT IN ('业务科','财务科')
查询结果:
其他:
select employeeName,sex,department
from Employee
where department<>'业务科' and department<>'财务科'
12. 查询1991年被雇佣的职工号、姓名、性别、电话号码、出生日期以及年龄,如果电话号码为空,显示“不详”,出生日期按yyyy-mm-dd显示。
SQL语句:
SELECT employeeNo,employeeName,sex, isnull(telephone,'不详') telephone,  CONVERT(CHAR(10),birthday,120) birthday,year(getdate())-year(birthday) age
FROM Employee
WHERE year(hireDate)=1991
查询结果:
其他:
select employeeNo,employeeName,sex,telephone=isnull(telephone,'不详'),
birthday=convert(char(10),birthday,120),year(getdate())-year(birthday) as age
from Employee
where year(hiredate)=1991
13. 查询9月出生的员工编号、姓名、出生日期、并按出生日期的降序输出。
SQL语句:
SELECT employeeNo,employeeName,birthday
FROM Employee
WHERE month(birthday)=9
ORDER BY birthday DESC
查询结果:
14. 查询职工工资最高的前8个职工编号、职工姓名和工资。
SQL语句:
SELECT TOP 8 employeeNo,employeeName,salary
FROM Employee
ORDER BY salary DESC
查询结果:
15. 查询职工工资按高低排序的前10%的职工编号、职工姓名和工资。
SQL语句:
SELECT TOP 10 percent employeeNo,employeeName,salary
FROM Employee
ORDER BY salary DESC
查询结果:
其他:
SELECT top((select count(*) from Employee)/10) employeeNo,employeeName,salaryFROM EmployeeORDER BY salary DESC
查询结果:
16. 在订单数据库中,根据员工的薪水进行分类显示。(薪水小于2000元的,显示“低收入者”,大于等于2000元小于4000元的,显示“中等收入者”,大于等于4000元的,显示“高收入者”。
SQL语句:
SELECT employeeNo,employeeName,salary,薪水级别=
CASE
  WHEN salary<2000 THEN '低收入者'
  WHEN salary<4000 THEN '中等收入者'
  ELSE '高收入者'
END
FROM Employee
查询结果:
其他:
select employeeNo,employeeName,department,headship,salary, 薪水级别=
case
when salary<2000 then '低收入者'
when salary>=2000 and salary<4000 then '中等收入者'
when salary>=4000 then '高收入者'
end
from Employee