oracle测试试题及答案.docx
- 文档编号:3956547
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:9
- 大小:18.64KB
oracle测试试题及答案.docx
《oracle测试试题及答案.docx》由会员分享,可在线阅读,更多相关《oracle测试试题及答案.docx(9页珍藏版)》请在冰豆网上搜索。
oracle测试试题及答案
【例1】创建一个名为IT_EMPLOYEES的表,它由编号EMPLOYEE_ID、名FIRST_NAME、姓LAST_NAME、邮箱EMAIL、电话号码PHONE_NUMBER、部门编号JOB_ID、薪资SALARY和部门经理编号MANAGER_ID八个属性组成。
createtableIT_EMPLOYEES
(
EMPLOYEE_IDNUMBER(6)notnullunique,
FIRST_NAMEVARCHAR2(20),
LAST_NAMEVARCHAR2(25)notnull,
EMAILVARCHAR2(25),
PHONE_NUMBERVARCHAR(20),
JOB_IDVARCHAR2(10),
SALARYNUMBER(8,2),
MANAGER_IDNUMBER(6)
);
【例2】建立程序员的视图PROG_EMPLOYEES(JOB_ID=’IT_PROG’),其中隐含了视图的列名.
createviewprog_employees
as
selectemployee_id,first_name,last_name,email,phone_number,salary,manager_id
fromit_employees
wherejob_id='IT_PROG';
【例3】执行下面的CREATEINDEX语句,创建索引:
CREATEINDEXIT_LASTNAMEONIT_EMPLOYEES(LAST_NAME);
【例4】将前文创建的视图PROG_EMPLOYEES删除.
DROPVIEWPROG_EMPLOYEES;
【例5】向IT_EMPLOYEES表中增加“雇员生日”列,其数据类型为日期型:
ALTERTABLEIT_EMPLOYEESADDBIRTHDATEDATE;
【例6】将IT_EMPLOYEES表的MANAGER_ID字段改为8位:
ALTERTABLEIT_EMPLOYEESMODIFYMANAGER_IDNUMBER(8);
【例7】删除IT_EMPLOYEES表EMPLOYEE_ID字段的UNIQUE约束:
ALTERTABLEIT_EMPLOYEESDROPUNIQUE(EMPLOYEE_ID);
【例8】创建表COUNTRIES时的列顺序为:
COUNTRY_ID、COUNTRY_NAME、REGION_ID。
通过SELECT指定列,可以改变列的顺序。
SELECTREGION_ID,COUNTRY_NAMEFROMCOUNTRIES;
【例9】对employees表中薪金的调整,所有人员的薪金增加10%:
selectemployee_id,first_name,last_name,salary*(1+0.1)fromemployees;
【例10】在EMPLOYEES表中包含一个DEPARTMENT_ID列。
假设,现在要检索该表中出现的所有部门,这时我们不希望有重复的部门出现,这时需要在DEPARTMENT_ID列前面加上关键字DISTINCT。
selectdistinctdepartment_idfromemployees;
【例11】编写一个查询,判断所FIRST_NAME列以"B"开头的雇员:
selectemployee_id,firstname,last_namefromemployees
Wherefirst_namelike'B%';
【例12】查询出所有属于IT部门(DEPARTMENT_ID=60),并且薪金值大于2000的雇员。
selectemployee_id,first_name,last_name,salaryfromemployees
wheredepartment_id=60andsalary>2000;
【例13】在下面的查询中,将选择具有不同部门的雇员信息:
selectemployee_id,ftrstname,last_name,department_idfromemployees
wheredepartment_id=60ordepartment_id=30;
【例14】使用EMPLOYEES进行NULL值的插入和查询:
insertintodepartments(department_id,department_name,manager_id)
values(300,'数据库',NULL);
【例15】下面的查询语句中,将使用ORDERBY子句对检索到的数据进行排序,该排列顺序是按照薪金从低到高的升序进行的:
selectemployee_id,first_name,last_name,salary
fromemployees
wheresalary>2000
orderbysalary;
【例16】以下的查询中,从EMPLOYEES表中选择相应的列,分析JOB_ID的SALARY信息。
selectjob_id,salaryfromemployeesorderbyjob_id;
【例17】使用GROUPBY子句对薪金记录进行分组,对于使用一些SQL函数计算每个JOB_ID的平均薪金(AVG)、所有薪金的总和(SUM),以及最高薪金(MAX)和各组的行数,如图3.16所示。
selectjob_id,avg(salary),sum(salary),max(salary),count(job_id)fromemployeesgroupbyjob_id;
【例18】下面是一个错误的查询,由于在SELECT子句后面出现了SALARY列,而该列并没有出现在GROUPBY子句中,所以该语句是一个错误的查询。
selectjob_id,salary,avg(salary),sum(salary),max(salary),count(*)
fromemployeesgroupbyjob_id;
【例19】下面的查询对各个部门中的各个工种类型进行分组:
selectdepartment_id,job_id,avg(salary),sum(salary),max(salary),count(*)
fromemployeesgroupbydepartment_id,job_id;
【例20】在下面的示例中,GROUPBY子句将使用ROLLUP运算符汇总JOB_ID列。
selectjob_id,avg(salary),sum(salary),max(salary),count(*)
fromemployeesgroupbyrollup(job_id);
【例21】列出平均薪金值大于10000的统计信息:
selectjob_id,avg(salary),sum(salary),max(salary),count(*)
fromemployeesgroupbyjob_idhavingavg(salary)>10000;
【例22】以下的查询将EMPLOYEES表和DEPARTMENT表相连接,而生成一个笛卡儿积:
selectemployee_id,last_name,department_namefromemployees,departments;
【例23】下面的语句通过在WHERE子句中使用连接条件,实现了查询雇员信息,以及雇员所对应的部门信息:
selectemployee_id,last_name,department_namefromemployees,departments
whercemployees.department_id=departments.department_id;
【例24】增加新的限定条件,只显示工作部门为Shipping的雇员信息:
selectemployee_id,last_name,department_name
fromemployees,departments
whereemployees.department_id=departments.department_id
anddepartments.department_name='Shipping';
【例25】以下的查询使用内连接查询雇员信息和雇员所有的部门名称:
selectem.employee_id,em.last_name,dep.department_name
fromemployeeseminnerjoindepartmentsdep
onem.department_id=dep.department_id
whereem.job_id='AD_ASST';
【例26】使用内连接查询雇员的信息、名称以及工作名称:
selectememployee_id,em.last_name,dep.department_name,j.job_title
fromemployeeseminnerjoinjobs
onem.job_id=jobs.job_id
innerjoindepartmentsdep
onem.department_id=dep.department_id
whereem.job_id='IT_PROG';
【例27】演示内连接和外连接的区别:
insertintoemployees(employee_id,last_name,email,hire_date,job_id,department_id)
values(1000,'blaine','******************',to_date('2009-05-01',yyyy-mm-dd'),
'IT_PROG',null);
selectem.employee_id,em.last_name,dep.department_name
fromemployeeseminnerjoindepartmentsdep
onem.department_id=dep.department_id
whereem.job_id='IT_PROG';
【例28】用户通过自连接,在同一行中看到雇员和部门经理的信息。
selectem1.last_name"manager",em2.last_name"employee"
fromemployeesemlleftjoinemployeesem2
onem1.employee_id=em2.manager_id
orderbyem1.employee_id;
【例29】下面的示例中,第一个查询将选择所有LASTNAME列以C或者S开头的雇员信息,第二个查询将会选择所有LAST_NAME列以S或者T开头的雇员信息。
其结果是所有LAST_NAME列以C或者S或者T开头的雇员信息均会被列出。
selectemployee_id,last_name
fromemployees
wherelast_namelike'C%'orlast_namelike'S%'
union
selectemployee_id,last_name
fromemployees
whefelast_namelike'S%'orlast_namelike'T%';
【例30】修改例29的查询语句,使用INTERSECT集合操作,将在查询结果集中保留LAST_NAME以S开头的雇员:
selectemployee_id,last_name
fromemployees
wherelast_namelike'C%'orlast_namelike'S%'
intersect
selectemployee_id,last_name
fromemployees
whefelast_namelike'S%'orlast_namelike'T%';
【例31】以下面的查询语句为例,使用运算符MINUS求两个要查询的差集。
第一个查询会返回所有LAST_NAME以C或S开头的雇员,而第二个查询会返回所有LAST_NAME以S和T开头的雇员。
因此,两个查询结果集的MINUS操作将返回LAST_NAME以C开头的那些雇员。
selectemployee_id,last_name
fromemployees
wherelast_namelike'C%'orlast_namelike'S%'
minus
selectemployee_id,last_name
fromemployees
whefelast_namelike'S%'orlast_namelike'T%';
【例32】使用子查询查看所有部门在某一地区(1700)的雇员信息:
selectemployee_id,last_name,department_id
fromemployees
wheredepartment_idin(
selectdepartment_id
fromdepartments
wherelocation_id=1700);
【例33】查询EMPLOYEES表,将薪金大于本职位平均薪金的雇员信息显示出来:
selectemployee_id,last_name,job_id,salary
fromemployees
wherejob_id='PU_MAN'and
salary>=(selectavg(salary)fromemployees
wherejob_id='PU_MAN');
【例34】用INSERT语句向JOBS表添加一条记录。
insertintojobs(job_id,job_title,min_salary,max_salary)
values('IT_TEST',测试员',3000.00,8000.00);
【例35】使用DESC命令查看JOBS表中各列的定义次序,然后省略列表清单向表中添加一行记录。
descjobs
insertintojobsvalues('IT_DBA','数据库管理员',5000.00,15000.00);
【例36】建立没有MAX_SALARY值的记录。
insertintojobs(job_id,job_title,min_salary)values('PP_MAN','产品经理',5000.00);
【例37】例1中我们建立了一个名为IT_EMPLOYEES的表,下面的示例将从EMPLOYEES表提取department_id等于”IT”的雇员信息,并保存到IT_EMPLOYEES中。
insertintoIT_EMPLOYEES(
employee_id,first_name,last_name,email,
phone_number,job_id,salary,manager_id)
selectem.employee_id,em.first_name,em.1ast_name,em.email,
em.phone_number,em.job_id,em.salary,em.manager_id
fromemployeesem,departmentsdep
whereem.department_id=dep.department_id
anddep.department_name='IT’;
【例38】使用UPDATE语句为所有程序员提高15%的薪金,其运行结果如图3.37所示。
updateemployees
setsalary=salary*1.15
wherejob_id=’IT_PROG’;
【例39】使用UPDATE语句将更新编号为104的雇员薪金,调整后的薪金为IT程序员的平均薪金:
updateemployees
setsalary=
(selectavg(salary)
fromemployees
wherejob_id='IT_PROG')
whereemployee_id=104;
【例40】一个简单的示例,从IT_EMPLOYEES表中删除一条记录:
deletefromit_employeeswhereemployee_id=107;
【例41】使用TRUNCATE语句删除IT_EMPLOYEES表中所有的记录:
truncatetableit_employees;
selectemployee_id,last_namefromit_employees;
【例42】把查询IT_EMPLOYEES表的权限授给用户User1。
GRANTSELECT
ONTABLEIT_EMPLOYEES
TOUser1;
【例43】把对IT_EMPLOYEES表和JOBS表的全部操作权限授予用户User2和User3。
GRANTALLPRIVILEGES
ONTABLEIT_EMPLOYEES,JOBS
TOUser2,User3;
【例44】把对表DEPARTMENT的查询权限授予所有用户。
GRANTSELECT
ONTABLEDEPARTMENT
TOPUBLIC;
【例45】把查询IT_EMPLOYEES表和修改雇员编号的权限授给用户User4。
GRANTUPDATE(EMPLOYEE_ID),SELECT
ONTABLEIT_EMPLOYEESTOUser4;
【例46】把对表DEPARTMENT的INSERT权限授予User5用户,并允许将此权限再授予其他用户。
GRANTINSERT
ONTABLEDEPARTMENT
TOUser5WITHGRANTOPTION;
【例47】User5将此权限授予User6:
GRANTINSERT
ONTABLEDEPARTMENT
TOUser6WITHGRANTOPTION;
【例48】User6将此权限授予User7:
GRANTINSERT
ONTABLEDEPARTMENT
TOUser7;
【例49】DBA把在数据库DB_EMPLOYEES中建立表的权限授予用户User8。
GRANTCREATETAB
ONDATABASEDB_EMPLOYEES
TOUser8;
【例50】把用户User4修改雇员编号的权限收回:
REVOKEUPDATE(EMPLOYEE_ID)
ONTABLEIT_EMPLOYEES
FROMUser4;
【例51】收回所有用户对表DEPARTMENT的查询权限:
REVOKESELECT
ONTABLEDEPARTMENT
FROMPUBLIC;
【例52】把用户User5对DEPARTMENT表的INSERT权限收回:
REVOKEINSERT
ONTABLEDEPARTMENT
FROMUser5;
【例53】ASCII函数示例:
selectASCII('A')BIG_A,ASCII('a')SMALL_AFROMdual;
【例54】CHR函数示例:
selectCHR(65),CHR(97)FROMdual;
【例55】CONCAT函数示例:
selectconcat('oracle','11g')namefromdual;
【例56】INITCAP函数示例:
selectINITCAP('oracleuniversalinstaller')namefromdual;
【例57】INSTR函数示例1:
selectINSTR('Moisossoppo','o',3,3)fromdual;
【例58】INSTR函数示例2:
selectINSTR('Moisossoppo','o',-2,3)fromdual;
【例59】LENGTH函数示例:
selectLENGTH(‘Oracle11g’)namefromdual;
【例60】LOWER函数示例:
selectLOWER(job_id)fromJOBSWHERELOWER(job_id)LIKE'it%';
【例61】LTRIM函数示例:
selectLTRIM('Moisossoppo','Mois’)fromdual;
【例62】REPLACE函数示例:
selectREPLACE(‘feelblue’,’blue’,’yellow’)fromdual;
【例63】SUBSTR函数示例:
selectSUBSTR(‘Message’,1,4)fromduaI;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 测试 试题 答案