高分悬赏写数据库基本语句

KevinWu 2012-05-29 07:02:32
已知数据库结构描述如下,以下任务均基于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条记录
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xs0573 2012-05-30
  • 打赏
  • 举报
回复
7楼好耐心
白天的猫头鹰 2012-05-30
  • 打赏
  • 举报
回复
看了就头晕
lichao444555666 2012-05-30
  • 打赏
  • 举报
回复

--以下任务均基于SQLServer的pubs数据库的如下几张表的,雇员表employee、职务表jobs、出版社表publishers、书名表titles,他们的表结构分别如下:

--数据库解释:数据库是一个跨国出版集团的数据库。出版集团中有若干出版社,每个雇员属于一个出版社。出版社出版了若干出版物。

CREATE TABLE Employee --雇员表
--字段名称 字段类型 描述
(
emp_id INT, --雇员ID
fname VARCHAR(50), --姓
minit int,
lname VARCHAR(500), --名
job_id INT, --职位ID
job_lvl INT, --雇员工资
pub_id INT, --所在出版社
hire_date DATETIME --入职时间
)
go
INSERT INTO Employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date)VALUES(101,'张',111,'学友',1111,3000,12323,2012-01-01)
INSERT INTO Employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date)VALUES(301,'刘',111,'德华',2222,6000,54656,2012-01-01)
INSERT INTO Employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date)VALUES(501,'郭',111,'富城',565656,9000,89656,2012-01-01)
INSERT INTO Employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date)VALUES(401,'黎',111,'明',1212121,4000,235645,2012-01-01)
SELECT * FROM Employee

--职位表
create table Jobs
--字段名称 字段类型 描述
(
job_id INT, --职位ID
job_desc VARCHAR(50), --职位描述
Max_lvl INT, --该职位最高工资
Min_lvl int --该职位最低工资
)
INSERT INTO jobs(job_id,job_desc,Max_lvl,Min_lvl)VALUES(1111,'程序员',15000,2000)
INSERT INTO jobs(job_id,job_desc,Max_lvl,Min_lvl)VALUES(2222,'人事',9000,1500)
INSERT INTO jobs(job_id,job_desc,Max_lvl,Min_lvl)VALUES(3333,'行政',8000,2000)
INSERT INTO jobs(job_id,job_desc,Max_lvl,Min_lvl)VALUES(4444,'项目经理',20000,6000)
SELECT * FROM Jobs



--出版社表
create table Publisher
--字段名称 字段类型 描述
(
pub_id INT, --出版社ID
pub_name VARCHAR(20), --出版社名称
city VARCHAR(20), --出版社所在城市
state VARCHAR(20), --出版社所在的州
county VARCHAR(20) --出版社所在的国家
)
INSERT INTO Publisher
SELECT 12323,'人民出版社','北京','亚洲','中国' union all
SELECT 56565,'青年出版社','北京','亚洲','中国' union all
SELECT 89898,'中国教育出版社','北京','亚洲','中国' union all
SELECT 45458,'延安出版社','北京','亚洲','中国'
SELECT * FROM Publisher

--出版物表
--DROP TABLE titles
create table Titles
--字段名称 字段类型 描述
(
titles_id INT, --出版物ID
title VARCHAR(20), --出版物名称
type VARCHAR(20), --出版物类型
pub_id int, --出版社
price REAL, --出版物价格
advance INT, --预定量
yoralty INT,
ytd_sales INT, --销售量
notes VARCHAR(500), --出版物描述
pubdate datetime --出版时间
)
INSERT INTO Titles VALUES (12323,'围城','文学',12323,120,'100000',333,9000,'abcdefg',2008-01-01)
INSERT INTO Titles VALUES (56565,'围城','文学',56565,120,'100000',333,9000,'abcdefg',2008-01-01)
INSERT INTO Titles VALUES (89898,'围城','文学',45445,120,'100000',333,9000,'abcdefg',2008-01-01)


--任务1:基本查询
--提示:查询工龄需要去SQServer的日期处理函数
--1. 查询雇员(employee)的姓和名
select [fname],[lname] from [employee]
--2. 查询雇员的姓名
select fname+''+lname AS Employee_name from [employee]
--3. 查询雇员数
select count(*)AS total from [Employee]
--4. 查询雇员的姓名和职务
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"职务的有哪些人
SELECT e.fname+''+e.lname FROM Employee e LEFT JOIN Jobs j ON e.job_id=j.job_id WHERE job_desc='Sales Representative'
--2. 查询工龄超过15年的雇员
SELECT e.emp_id,e.fname+''+e.lname FROM Employee e WHERE hire_date=DATEDIFF(YEAR,e.hire_date,GETDATE())

--3. 查询姓以a开头的雇员
SELECT e.fname+''+e.lname AS Employee_name FROM Employee e WHERE e.fname+''+e.lname LIKE 'a%'
--4. 查询姓的开头字母在m以后的雇员
--5. 认为hire_date是雇员生日,查询巨蟹座的雇员
SELECT * FROM Employee e WHERE e.minit='巨蟹座'
--任务3:联合查询
--1. 查询雇员和雇员职位
SELECT e.fname+''+e.lname AS Employee_name,j.job_desc FROM Employee e JOIN Jobs j ON e.job_id=j.job_id
--2. 查询雇员、雇员职位和雇员所在出版社
SELECT e.fname+''+e.lname AS Employee_name,j.job_desc,e.pub_id FROM Employee e JOIN Jobs j ON e.job_id=j.job_id
JOIN Publisher p ON e.pub_id=p.pub_id
--3. 查询雇员、雇员工资、雇员离本职位最高工资的差值
--4. 查询雇员、雇员职位描述、雇员出版社、雇员所在城市、州和国家
SELECT e.fname+''+e.lname AS Employee_name,j.job_desc,p.pub_name,p.city,p.[state],p.county
FROM Employee e JOIN Jobs j ON e.job_id=j.job_id
JOIN Publisher p ON e.pub_id=p.pub_name
JOIN Titles t ON p.pub_id=t.pub_id
--5. 查询雇员和雇员所在城市
SELECT e.fname+''+e.lname AS Employee_name,p.city FROM Employee e JOIN Publisher p ON e.pub_id=p.pub_id
--任务4:嵌套查询
--1. 查询在美国的雇员
SELECT e.fname+''+e.lname AS Employee_name FROM Employee e JOIN Publisher p ON e.pub_id=p.pub_id WHERE p.county='中国'
--2. 查询最高职位工资超过100的雇员
--3. 查询所在出版社在美国,并且该出版社出版过business类型出版物的雇员
--4. 查询所在出版社在美国,且最低职位工资少于100的雇员
--5. 查询在德国出版的出版物
SELECT * FROM Titles t where t.pub_id in (SELECT p.pub_id FROM Publisher p WHERE p.county='德国')
SELECT t.title FROM Titles t INNER JOIN Publisher p ON p.pub_id=t.pub_id WHERE p.county='中国'
--任务5:排序查询
--1、 查询职位,并按职位最高工资顺序排序
SELECT j.job_desc FROM Jobs j order by j.Max_lvl DESC
--2、 查询出版物,并按出版物的单价逆序排序
SELECT t.title FROM Titles t ORDER BY t.price desc
--3、 查询雇员和对应的出版社,并按出版社名称的字母顺序、雇员姓的字母逆序排列
SELECT e.fname+''+e.lname AS Employee_name,p.pub_name FROM Publisher p JOIN Employee e ON p.pub_id=e.pub_id order by p.pub_name asc,e.fname DESC
--4、 查询出版社,按出版社的国家、州、城市和出版社名称的字母排序
SELECT p.pub_name,* FROM Publisher p ORDER BY p.county,p.[state],p.city,p.pub_name
--5、 按出版社名称排序,查询前3条记录
SELECT TOP 3 * FROM Titles t ORDER BY t.title

KevinWu 2012-05-29
  • 打赏
  • 举报
回复
能做的都做了。。剩下的不会了[Quote=引用 5 楼 的回复:]

不做作业
[/Quote]
baiwenyu 2012-05-29
  • 打赏
  • 举报
回复
不做作业
houyajin 2012-05-29
  • 打赏
  • 举报
回复
我也没有办法。
KevinWu 2012-05-29
  • 打赏
  • 举报
回复
哥。。。帮帮忙呗[Quote=引用 1 楼 的回复:]

作业题
[/Quote]
KevinWu 2012-05-29
  • 打赏
  • 举报
回复
哥。。。帮帮忙呗
  • 打赏
  • 举报
回复
作业题

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧