数据库查询语句.docx
- 文档编号:10701965
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:10
- 大小:17.38KB
数据库查询语句.docx
《数据库查询语句.docx》由会员分享,可在线阅读,更多相关《数据库查询语句.docx(10页珍藏版)》请在冰豆网上搜索。
数据库查询语句
数据查询
(1)基本数据查询
a)分别查询表employees、regions、countries和locations表中的所有行和列
例:
Select*fromemployees;
b)创建一个查询,显示每个雇员的lastname,job_id,hire_date,和employee_id,employee_id显示在第一列,给HIRE_DATE列指定一个别名STARTDATE。
Selectemployee_id,last_name,job_id,hire_datestartdatefromemployees;c)创建一个查询从EMPLOYEES表中显示唯一的工作代码(job_id)Selectdistinctjob_idfromemployees;
d)创建一个查询,显示收入超过$12,000的雇员的名字和薪水。
Selectfirst_name,last_name,salaryfromemployeeswheresalary>12000;e)创建一个查询,显示雇员号为176的雇员的名字和部门号Selectfirst_name,last_name,department_idfromemployees
whereemployee_id=176;
f)显示受雇日期在
1998年2月20日和
1998年5月1日之间的雇员的名字、岗位(job_id)和受雇日期(hire_date)。
按受雇日期顺序排序查询结果。
Selectfirst_name,last_name,job_id,hire_date
Fromemployees
Wherehire_datebetween‟20-2月-98‟and„1-5月-98‟
Orderbyhire_date(desc);
g)显示所有在部门为20和50的雇员的名字和部门号,并以名字按字母顺序排序。
Selectfirst_name,last_name,department_id
Fromemployees
Wheredepartment_idin(20,30)
Orderbyfirst_name;
h)显示每一个在1994年受雇的雇员的名字和受雇日期
Selectfirst_name,last_name,hire_date
Fromemployees
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
Fromemployees
Wheremanager_idisnull;
k)显示所有名字中第三个字母是a的雇员的名字
Selectfirst_name,last_name
Fromemployees
Wherefirst_namelike„__a%‟;
l)显示所有名字中有一个a和一个e的雇员的名字。
Selectfirst_name,last_name
Fromemployees
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,'汽车工程系','其它')
Fromemployees;
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
(25),
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)提交所有未决的改变。
Commit;
k)在事务的过程中标记一个中间点。
SAVEPOINTstep_18;
清空整个表。
DELETE
FROMmy_employee;
确认表是空的。
SELECT*FROMmy_employee;
丢弃最近的DELETE操作,而不丢弃前面的插入操作。
ROLLBACKTOstep_18;
确认新行还是完整的。
附录:
表的结构
表COUNTRIES的结构:
字段名称类型中文含义
COUNTRY_IDCHAR
(2)国家编码
COUNTRY_NAMEVARCHAR2
(40)
REGION_IDNUMBER
表REGIONS的结构:
名称类型
REGION_IDNUMBER
REGION_NAMEVARCHAR2
(25)
表LOCATIONS的结构:
名称类型
LOCATION_IDNUMBER
(4)
STREET_ADDRESSVARCHAR2
(40)
POSTAL_CODEVARCHAR2
(12)
CITYVARCHAR2
(30)
STATE_PROVINCEVARCHAR2
(25)
COUNTRY_IDCHAR
(2)
表DEPARTMENTS的结构:
名称类型
DEPARTMENT_IDNUMBER
(4)
DEPARTMENT_NAMEVARCHAR2
(30)
MANAGER_IDNUMBER
(6)
LOCATION_IDNUMBER
(4)
表EMPLOYEES的结构:
名称类型
EMPLOYEE_IDNUMBER
(6)
FIRST_NAMEVARCHAR2
(20)
LAST_NAMEVARCHAR2
(25)
EMAILVARCHAR2
(25)
PHONE_NUMBERVARCHAR2
(20)
HIRE_DATE
JOB_IDVARCHAR2
(10)
SALARYNUMBER(8,2)
COMMISSION_PCTNUMBER(2,2)国家名称
地区编码
中文含义
地区编码
地区名称
中文含义
地点编码
街道地址
邮政编码
所属城市
所属州
国家编码
中文含义
部门编号
部门名称
管理员编号
地点编号
中文含义
雇员编码名姓
Email地址
电话号码
受雇日期
工作岗位
薪水
佣金
MANAGER_IDNUMBER
(6)管理员编号
DEPARTMENT_IDNUMBER
(4)部门编号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 查询 语句