高分悬赏写数据库基本语句
已知数据库结构描述如下,以下任务均基于SQLServer的pubs数据库的如下几张表的,雇员表employee、职务表jobs、出版社表publishers、书名表titles,他们的表结构分别如下:
数据库解释:数据库是一个跨国出版集团的数据库。出版集团中有若干出版社,每个雇员属于一个出版社。出版社出版了若干出版物。
Employee雇员表
字段名称 字段类型 描述
emp_id int 雇员ID
fname varchar 姓
minit
lname varchar 名
job_id int 职位ID
job_lvl int 雇员工资
pub_id int 所在出版社
hire_date datetime 入职时间
Jobs职位表
字段名称 字段类型 描述
job_id int 职位ID
job_desc varchar 职位描述
Max_lvl int 该职位最高工资
Min_lvl int 该职位最低工资
Publisher出版社表
字段名称 字段类型 描述
pub_id int 出版社ID
pub_name varchar 出版社名称
city varchar 出版社所在城市
state varchar 出版社所在的州
county varchar 出版社所在的国家
Titles出版物表
字段名称 字段类型 描述
titles_id int 出版物ID
title varchar 出版物名称
type varchar 出版物类型
pub_id int 出版社
price real 出版物价格
advance int 预定量
yoralty int
ytd_sales int 销售量
notes varchar 出版物描述
pubdate datetime 出版时间
任务1:基本查询
提示:查询工龄需要去SQServer的日期处理函数
1. 查询雇员(employee)的姓和名
select [fname] from [employee];
select [lname] from [employee];
2. 查询雇员的姓名
select fname,lname from [employee];
3. 查询雇员数
select count(*) from [Employee];
4. 查询雇员的姓名和职务
5. select fname +lname as name ,job_desc
from Employee e ,Jobs j
where e.job_id= j.job_id
6. 查询雇员的工龄
select *,datediff(yy,hire_date,getdate()) as [工龄]
from Employee
任务2:条件查询
1. 查询雇员(employee)从事"Sales Representative"职务的有哪些人
2. 查询工龄超过15年的雇员
3. 查询姓以a开头的雇员
4. 查询姓的开头字母在m以后的雇员
5. 认为hire_date是雇员生日,查询巨蟹座的雇员
任务3:联合查询
1. 查询雇员和雇员职位
2. 查询雇员、雇员职位和雇员所在出版社
3. 查询雇员、雇员工资、雇员离本职位最高工资的差值
4. 查询雇员、雇员职位描述、雇员出版社、雇员所在城市、州和国家
5. 查询雇员和雇员所在城市
任务4:嵌套查询
1. 查询在美国的雇员
2. 查询最高职位工资超过100的雇员
3. 查询所在出版社在美国,并且该出版社出版过business类型出版物的雇员
4. 查询所在出版社在美国,且最低职位工资少于100的雇员
5. 查询在德国出版的出版物
任务5:排序查询
1、 查询职位,并按职位最高工资顺序排序
2、 查询出版物,并按出版物的单价逆序排序
3、 查询雇员和对应的出版社,并按出版社名称的字母顺序、雇员姓的字母逆序排列
4、 查询出版社,按出版社的国家、州、城市和出版社名称的字母排序
5、 按出版社名称排序,查询前3条记录