数据库查询语句Word格式.docx
《数据库查询语句Word格式.docx》由会员分享,可在线阅读,更多相关《数据库查询语句Word格式.docx(10页珍藏版)》请在冰点文库上搜索。
![数据库查询语句Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/926b8523-891c-40d9-9aa8-46d82ea7d84b/926b8523-891c-40d9-9aa8-46d82ea7d84b1.gif)
g)显示所有在部门为20和50的雇员的名字和部门号,并以名字按字母顺序排序。
Selectfirst_name,last_name,department_id
Wheredepartment_idin(20,30)
Orderbyfirst_name;
h)显示每一个在1994年受雇的雇员的名字和受雇日期
Selectfirst_name,last_name,hire_date
Wherehire_datelike„%94‟;
i)对每一个雇员,显示employee_id、last_name、salary和salary增加15%,并且表示成整数,列标签显示为NewSalary。
Selectfirst_name,last_name,salary,round(salary*
1."
15,0)“NewSalary”Fromemployees;
j)显示所有没有主管经理的雇员的名字和工作岗位。
Selectfirst_name,last_name,job_id
Wheremanager_idisnull;
k)显示所有名字中第三个字母是a的雇员的名字
Selectfirst_name,last_name
Wherefirst_namelike„__a%‟;
l)显示所有名字中有一个a和一个e的雇员的名字。
Wherefirst_namelike„%a%‟andfirst_namelike„%e%‟;
m)写一个查询显示当前日期,列标签显示为Date。
Selectsysdate“date”fromdual;
n)查询表employees的department_id列,department_id为10时显示为“计算机工程系”,为20时显示为“汽车工程系”,其它显示为“其它”,分别用case和decode实现。
Selectdepartment_id,casedepartment_idwhen10then'
计算机工程系'
When20then'
汽车工程系'
Else'
其它'
End
Fromemployees;
Selectdepartment_id,
decode(department_id,10,'
20,'
'
)
o)查询表employees的salary列,如果salary小于3000显示为“低工资”,salary小于5000显示为“中”,其余显示为“高工资”Selectsalary,casewhensalary<
3000then„低工资‟
Whensalary<
5000then„中‟
Else„高工资‟endfromemployees;
(2)连接查询和子查询
a)写一个查询显示所有雇员的last_name、department_id、anddepartment_name
Selecte.last_name,d.department_id,d.department_name
Fromemployeese,departmentsd
Wheree.department_id=d.department_id;
Selecte.last_name,d.department_name,d.location_id,l.city
Fromemployeese,departmentsd,locationsl
c)写一个查询显示那些工作在Toronto(城市名)的所有雇员的last_name、job_title、department_id和department_name。
Selecte.last_name,j.job_title,d.department_id,d.department_name
Fromemployeese,departmentsd,locationsl,jobsj
Wheree.department_id=d.department_idandd.location_id=l.location_idAnde.job_id=j.job_idandl.city=‟Toronto‟;
d)显示雇员的lastname和employee_id连同他们的经理的lastname和manager_id。
列标签分别为Employee、Emp#、Manager和Mgr#。
Selecta.last_nameEmployee,a.employee_idEmp#,
b.last_nameManager,b.employee_idMgr#
Fromemployeesa,employeesb
Wherea.manager_id=b.employee_id;
e)创建一个查询显示那些在雇员Davies之后入本公司工作的雇员的name和hire_date。
Selectfirst_name,last_namefromemployees
Wherehire_date>
(selecthire_datefromemployeeswherelast_name=‟Davies‟);
f)显示所有雇员的最高、最低、合计和平均薪水,列标签分别为:
Maximum、Minimum、Sum和Average。
Selectmax(salary)Maximum,min(salary)Minimum,
sum(salary)Sum,avg(salary)Average
fromemployees;
g)写一个查询显示每一工作岗位的人数。
Selectjob_id,count(*)fromemployeesgroupbyjob_id;
h)写一个查询显示最高和最低薪水之间的差。
列标签是DIFFERENCE。
Selectmax(salary)-min(salary)DIFFERENCEfromemployees;
i)显示经理号和经理付给雇员的最低薪水。
排除那些经理未知的人。
排除最低薪水小于等于$6,000的组。
按薪水降序排序输出。
Selectmanager_id,min(salary)fromemployees
Wheremanager_idisnotnull
Groupbymanager_id
Havingmin(salary)<
=6000;
j)创建一个查询显示雇员总数,和在
1995、"
1996、"
1997和1998受雇的雇员人数。
创建适当的列标题。
Selectcount(*)total,
Sum(decode(to_char(hire_date,‟YY‟),‟1995‟,1,0))“1995”,Sum(decode(to_char(hire_date,‟YY‟),‟1996‟,1,0))“1996”,Sum(decode(to_char(hire_date,‟YY‟),‟1997‟,1,0))“1997”,Sum(decode(to_char(hire_date,‟YY‟),‟1998‟,1,0))“1998”Fromemployees;
k)写一个查询显示与Zlotkey在同一部门的雇员的lastname和hiredate,结果中不包括Zlotkey。
Selectlast_name,hire_datefromemployees
Wherelast_name<
>
‟Zlotkey‟
Anddepartment_id=(selectdepartment_idfromemployeeswherelast_name=‟Zlotkey‟);
l)创建一个查询显示所有其薪水高于平均薪水的雇员号和名字。
Selectemployee_id,first_name,last_namefromemployees
Wheresalary>
(selectavg(salary)fromemployees)
Orderbysalary;
(3)数据维护
a)运行下面语句来构造MY_EMPLOYEE表。
CREATETABLEmy_employee
(idNUMBER
(4)CONSTRAINTmy_employee_id_nnNOTNULL,last_nameVARCHAR2
(25),
first_nameVARCHAR2
useridVARCHAR2
(8),
salaryNUMBER(9,2));
b)从下面的样本数据中添加第一行数据到MY_EMPLOYEE表中,在INSERT子句中不要字段列表。
Insertintomy_employeevalues(1,‟Patel‟,‟Ralph‟,‟rpatel‟,895);
c)用前面的列表中样本数据的第二行组装MY_EMPLOYEE表,这次在INSERT子句中显式地列出字段列表。
Insertintomy_employee(id,last_name,first_name,userid,salary)
values(2,‟Dancs‟,‟Betty‟,‟bdancs‟,860);
d)插入表中的其它数据
e)确认你添加到表中的数据。
Select*frommy_employee;
f)使得数据添加永久化
Commit;
g)改id为3的雇员的名字为Drexler
Updatemy_employeesetlast_name=‟Drexler‟whereid=3;
h)改变所有薪水少于900的雇员的工资为
1000。
"
Updatemy_employeesetsalary=1000wheresalary<
900;
i)从MY_EMPLOYEE表中删除BettyDancs。
Deletefrommy_employeewhereid=2;
j)提交所有未决的改变。
k)在事务的过程中标记一个中间点。
SAVEPOINTstep_18;
清空整个表。
DELETE
FROMmy_employee;
确认表是空的。
SELECT*FROMmy_employee;
丢弃最近的DELETE操作,而不丢弃前面的插入操作。
ROLLBACKTOstep_18;
确认新行还是完整的。
附录:
表的结构
表COUNTRIES的结构:
字段名称类型中文含义
COUNTRY_IDCHAR
(2)国家编码
COUNTRY_NAMEVARCHAR2
(40)
REGION_IDNUMBER
表REGIONS的结构:
名称类型
REGION_NAMEVARCHAR2
(25)
表LOCATIONS的结构:
LOCATION_IDNUMBER
(4)
STREET_ADDRESSVARCHAR2
POSTAL_CODEVARCHAR2
(12)
CITYVARCHAR2
(30)
STATE_PROVINCEVARCHAR2
(2)
表DEPARTMENTS的结构:
DEPARTMENT_IDNUMBER
DEPARTMENT_NAMEVARCHAR2
MANAGER_IDNUMBER
(6)
表EMPLOYEES的结构:
EMPLOYEE_IDNUMBER
FIRST_NAMEVARCHAR2
(20)
LAST_NAMEVARCHAR2
EMAILVARCHAR2
PHONE_NUMBERVARCHAR2
HIRE_DATE
JOB_IDVARCHAR2
(10)
SALARYNUMBER(8,2)
COMMISSION_PCTNUMBER(2,2)国家名称
地区编码
中文含义
地区名称
地点编码
街道地址
邮政编码
所属城市
所属州
国家编码
部门编号
部门名称
管理员编号
地点编号
雇员编码名姓
Email地址
电话号码
受雇日期
工作岗位
薪水
佣金
(6)管理员编号
(4)部门编号