oracle 有关emp表的简单查询练习题
Oracle练习题讲解

一、填空1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。
2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。
3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。
4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。
5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。
6.在SQL语句中,用于向表中插入数据的语句是Insert。
7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select 语句。
8.使用Describe命令可以显示表的结构信息。
9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。
10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。
11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。
12.根据约束的作用域,约束可以分为表级约束和列级约束两种。
列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。
13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID 的主键约束。
ALTER TABLE ClassAdd ____________ PK_LASS_ID (Constraint)PRIMARY KEY ________ (ID)14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp15. Oracle提供了两种类型的权限:系统权限和对象权限。
Oracle数据库scott用户四张表结构以及经典练习题

Oracle数据库四张表结构以及经典练习题在创建数据库的时候,如果给scott解锁,没有设置密码,那么默认的密码是tager。
用scott用户登录,Oracle系统会默认为scott用户创建了四张表,分别是BONUS,DEPT,EMP,SALGRADE。
BONUS(/ˈbonəs/,英文翻译为奖金、津贴)是工资表,表结构如下:其中:ENAME是雇员姓名,最多由10个字符所组成;JOB是雇员职位最多由9个字符所组成;SAL是雇员基本工资,NUMBER表示数字位数没有限制;COMM是奖金、提成,NUMBER表示数字位数没有限制;该表没有主键约束和外键约束,默认也没有数据。
DEPT是部门表,表结构如下:其中:DEPTNO是部门编号,由两位数字组成;DNAME是部门名称,最多由14个字符所组成;LOC是部门所在位置,最多由13个字符所组成;DEPTNO是表的主键,主键名为PK_DEPT,该表没有外键。
select*from dept;EMP是雇员表,表结构如下:其中:EMPNO是雇员编号,由四个数字组成;ENAME是雇员姓名,由10个字符组成;JOB是雇员的职位,由9个字符组成;MGR是雇员对应的领导编号(注意:领导也是雇员);HIREDATE是雇员的雇佣日期;SAL是雇员的基本工资,由两位小数5位整数和2位小数组成,共7位;COMM是雇员的奖金;DEPTNO是雇员所在部门的编号;EMPNO是表是主键,主键名为PK_EMP;DEPTNO是表的外键,关联到部门表DEPT的DEPTNO字段,外键名称是FK_DEPT。
select*from emp;SALGRADE是工资等级表,表结构如下:GRADE是工资的等级;LOSAL是此等级的最低工资;HISAL是此等级的最高工资;该表没有主键约束和外键约束。
select*from salgrade;经典练习题:1.列出至少有一个员工的所有部门。
2.列出薪金比“SMITH”多的所有员工。
《Oracle数据库应用》 练习题2

《Oracle数据库应用》一、选择题(20分)1. 有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是()A、select * from 产品表 where价格>1000B、select sum(价格) from 产品表 group by 所属分类 having max(价格)>1000C、select所属分类,sum(价格) from 产品表 where 价格>1000 group by 所属分类D、select所属分类,sum(价格) from 产品表 where max(价格)>1000 groupby 所属分类2.在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?()A、primary keyB、uniqueC、checkD、not null3.你要在Oracle中定义SQL查询。
下列哪个数据库对象不能直接从select语句中引用?()A、表B、序列C、索引D、视图4. SQL *Plus中发出的下列语句:select ceil(256.342), floor(256.342), round(256.342), trunc(256.342) from dual; 下列哪个函数不返回结果256?()A、ceil()B、floor()C、round()D、trunc()5.在Oracle数据库的逻辑结构中有以下组件:A 表空间 B 数据块 C 区 D 段,这些组件从大到小依次是()。
A、表空间→数据块→区→段B、表空间→段→区→数据块C、表空间→区→数据块→段D、段→表空间→区→数据块6. 有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为()A、 10 10B、 4 4C、 10 4D、 4 107.SQL语句中修改表结构的命令是()。
A、MODIFY TABLEB、MODIFY STRUCTUREC、ALTER TABLED、ALTER STRUCTURE8. DELETE FROM S WHERE 年龄>60语句的功能是______。
ORACLE数据库习题.62

1.ORACLE数据库物理结构包括以下三种文件,以下不属于的是〔〕A.系统文件B.日志文件C.数据文件D.控制文件2.以下哪个命令是用于ORACLE中数据导出的 ( )A.exp B.imp C.input D.output3.〔〕是用于控制数据访问的语言。
A.DML B.DDL C.DCL D.DLL4.NULL表示什么〔〕A.0 B.空格 C.值 D.没有值5.下面四个语句中哪一个是正确的?〔〕A.SELECT * , ENAME FROM EMP;B. DELETE * FROM EMP;C. SELECT DISTINCT EMPNO ,HIREDATE FROM EMP;D.SELECT ENAME|SAL AS “name〞 FROM EMP ;6.假定有一张表用户表users,其中一身份证字段ID_card。
为了维护数据的完整性,在设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束〔〕A. primary key B.check C.default D.not null7.下面哪一个like命令会返回名字象HOTKA的行?〔〕A.where ename like ‘_HOT%'B.where ename like ‘H_T%'C.where ename like ‘%TKA_'D.where ename like ‘%TOK%'8.〔〕操作符只返回由第一个查询选定但是没有被第二个查询选定的行。
B.UNION ALL9.EMPLOYEES表的结构如下:A.表中没有行。
B.有一个姓名为James的员工。
C.不能屡次回滚到相同的保存点。
D. 由于已经删除了员工ID180,因此最后一次更新未更新任何行。
10.以下运算结果不为空值的是〔〕A.12+NULLB.60*NULLC.NULL‖’NULL’D.12/〔60+NULL〕11.假设当前日期为’25-5月-06’,以下〔〕表达式能计算出5个月后那一天所在月份的最后一天的日期。
oracle 有关emp表的简单查询练习题

SQL练习训练一1、查询dept表的结构在命令窗口输入:desc dept;2、检索dept表中的所有列信息select * from dept3、检索emp表中的员工姓名、月收入及部门编号select ename "员工姓名",sal "月收入",empno "部门编号" from emp注意查询字段用分号隔开。
4、检索emp表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD-MM-YY",如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用TO_CHAR函数进行转换。
select ename "员工姓名", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD') "雇用时间2" from emp注意:第一个时间是日期类型的,在Oracle的查询界面它的旁边带有一个日历。
第二个时间是字符型的。
易错点:不要将YYYY-MM-DD使用双引号5、使用distinct去掉重复行。
检索emp表中的部门编号及工种,并去掉重复行。
select distinct deptno "部门编号",job "工种" from emp order by deptno注意distinct放的位置为什么不放在from的前面?翻译成汉语就明白了应该是:选择不重复的部门编号和工种从emp表。
而不是:选择部门编号和工种不重复地从emp表。
这还是人话么O(∩_∩)O哈哈~6、使用表达式来显示列检索emp表中的员工姓名及全年的月收入select ename "员工姓名", (sal+nvl(comm,0))*12 "全年收入" from emp 注意:防止提成comm为空的操作,使用nvl函数7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。
8Oracleemp表案例

8Oracleemp表案例第一章1.创建名字为hy_tablespace的表空间,默认大小为10M;2.创建一个用户,用户名以自己名字命名,并指定命名空间为hy_tablespace;3.给用户授予connect和resource角色;4.创建一张员工表(Emp),字段定义如下empno NUMBER(4), 员工编号ename VARCHAR2(10), 员工姓名job VARCHAR2(9), 岗位mgr NUMBER(4), 上级领导编号hiredate DATE, 生日sal NUMBER(7,2), 工资comm NUMBER(7,2), 奖金deptno NUMBER(2) 部门编号5.将员工编号设置成主键;6.创建一个部门表,字段如下deptno NUMBER(2) , 部门编号dname VARCHAR2(14), 部门名称loc VARCHAR2(13) 部门位置7.将部门编号设置为主键;8.将Emp表中的ename设置为非空。
9.将dept表中的dname设置为非空。
10.将Emp表中的deptno字段设置默认值,默认值为10。
11.将Emp表中的deptno字段添加外键约束,关联到dept表中的deptno字段。
12.创建一个序列,名为seq_hy,起始值为1,步长为1,没有最大值限制。
13.怎样理解数据库和数据库实例的区别?14.怎样理解权限和角色的区别?15.char和varchar2数据类型有什么区别?第二章修改表结构1.将Emp表中job字段长度改为15;2.将Emp字段中的mgr字段名字改为ldn;3.向Emp表中添加一个字段性别(sex char(3));4.删除Emp表中的员工性别字段;5.删除Emp表;数据控制语言重新构建Emp表1.给Emp表授予resource权限;2.给Emp表授予connect权限;3.收回Emp表的resource权限和connect权限;数据操作语言1.查询员工的所有信息;2.查询部门表的所有信息;3.查询员工的姓名和工资;4.查询员工的姓名和部门编号;5.查询部门的名称和所在位置;6.查询公司的所有岗位,要求不重复。
Oracle自测题-第1,2,3章

第1章Oracle数据库系统的结构与安装选择题1、下列有关ORACLE实例的说法哪个是错误的?(B)A. ORACLE实例主要由内存结构和迚程结构两部分组成B. 每一数据库至少有一个与之对应的实例,一个实例可以打开和使用多个数据库C. 每一个数据库可以由多个实例使用,但一个实例只能打开和使用一个数据库D. 实例就是运行状态下的ORACLE软件,主要是由内存结构和一些迚程组成2、以下哪些内存区域不是SGA的一部分?(B)A. 数据库缓冲区高速缓存B.PGAC.重做日志缓冲区D. 共享池3、DBWR迚程是(C)A. 从Shared Pool读出被更新的数据写入DataFilesB. 从Shared Pool读出被更新的数据写入LogFilesC. 从Database Buffer Cache读出被更新的数据写入DataFilesD. 从Database Buffer Cache读出被更新的数据写入LogFiles4、下面的描述中错误的是:(A)A. Oracle表的存储结构为:一个表就是一个物理文件,物理文件和表之间存在着绝对的一一对应关系。
B. 表空间由一个或多个数据文件组成。
C. 系统全局区(SGA)可由所有的服务器和用户迚程共享。
D. 段、区间、数据块是Oracle数据库的基本逻辑组织单位。
5、下面的描述中错误的是:(B )A. 表空间由一个或多个数据文件组成。
B. 表中的数据存储在数据文件,索引等其他模式对象的数据不存储在数据文件中。
C. 数据块是Oracle I/O操作的最小单位。
D. 区间是由数据块组成的。
6、下面的描述中错误的是:(A)A. 程序全局区(PGA)可由所有的用户迚程共享。
B. Oracle使用表空间组织数据库,每个数据库至少有一个System表空间。
C. 数据块是Oracle I/O操作的最小单位。
D. 区间是由连续的数据块组成的。
7、下面的描述中错误的是:(C)A. 每个数据库必须至少有一个控制文件。
数据库基础知识试题(含答案)

数据库基础知识试题部门____________姓名__________日期_________得分__________一、不定项选择题(每题1.5分,共30分)1.DELETE语句用来删除表中的数据,一次可以删除()。
DA.一行B.多行C.一行和多行D.多行2.数据库文件中主数据文件扩展名和次数据库文件扩展名分别为()。
CA..mdf.ldfB..ldf.mdfC..mdf.ndfD..ndf.mdf3.视图是从一个或多个表中或视图中导出的()。
AA表B查询C报表D数据4.下列运算符中表示任意字符的是()。
BA.*B.%C.LIKED._5.()是SQLServer中最重要的管理工具。
AA.企业管理器B.查询分析器C.服务管理器D.事件探察器6.()不是用来查询、添加、修改和删除数据库中数据的语句。
DA、SELECTB、INSERTC、UPDATED、DROP7.在oracle中下列哪个表名是不允许的()。
DA、abc$B、abcC、abc_D、_abc8.使用SQL命令将教师表teacher中工资salary字段的值增加500,应该使用的命令是()。
DA、Replacesalarywithsalary+500B、Updateteachersalarywithsalary+500C、Updatesetsalarywithsalary+500D、Updateteachersetsalary=salary+5009.表的两种相关约束是()。
CA、主键和索引B、外键和索引C、主键和外键D、内键和外键10.ORACLE数据库物理结构包括()。
ABCA、数据文件B、日志文件C、控制文件D、临时文件11.在Oracle中,一个用户拥有的所有数据库对象统称为()。
CA、数据库B、模式C、表空间D、实例12.在Oracle中,可用于提取日期时间类型特定部分(如年、月、日、时、分、秒)的函数有()。
BA、DATEPARTB、EXTRACTC、TO_CHARD、TRUNC13.在Oracle中,下面用于限制分组函数的返回值的子句是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL练习训练一预备步骤:show user;select * from tab;1、查询dept表的结构在命令窗口输入:desc dept;2、检索dept表中的所有列信息select * from dept3、检索emp表中的员工姓名、月收入及部门编号select ename "员工姓名",sal "月收入",empno "部门编号" from emp 注意查询字段用分号隔开。
4、检索emp表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD-MM-YY",如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用TO_CHAR函数进行转换。
select ename "员工姓名", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD') "雇用时间2" from emp 注意:第一个时间是日期类型的,在Oracle的查询界面它的旁边带有一个日历。
第二个时间是字符型的。
易错点:不要将YYYY-MM-DD使用双引号5、使用distinct去掉重复行。
检索emp表中的部门编号及工种,并去掉重复行。
select distinct deptno "部门编号",job "工种" from emp order by deptno注意distinct放的位置为什么不放在from的前面?翻译成汉语就明白了应该是:选择不重复的部门编号和工种从emp表。
而不是:选择部门编号和工种不重复地从emp表。
这还是人话么???O(∩_∩)O哈哈~6、使用表达式来显示列检索emp表中的员工姓名及全年的月收入select ename "员工姓名", (sal+nvl(comm,0))*12 "全年收入" from emp 注意:防止提成comm为空的操作,使用nvl函数,判断是否为NULL7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。
select ename "员工姓名",sal*12 "全年收入" from emp8、连接字符串在oracle中连接字符串用“||”操作符来完成的,当连接字符串时,如果在字符串要加入数字值那么在“||”后可以直接指定数字,如果在字符串加入字符和日期值,则必须要用单引号。
检索emp表,用is a 这个字符串来连接员工姓名和工种两个字段select ename||' is a '||job "他们各自的职位"from emp 注意:用的是单引号!!!9、使用WHERE子句检索月收入大于2000的员工姓名及月收入。
select ename "姓名" ,sal "月薪"from emp where sal>2000 检索月收入在1000元到2000元的员工姓名、月收入及雇佣时间。
select ename "姓名" ,sal "月薪",hiredate "雇佣时间" from emp where sal between 1000 and 200010、like的用法:检索以S开头的员工姓名及月收入。
select ename "员工姓名",sal "月收入" from emp where ename like 'S%' 检索员工姓名中的第三个字符是A的员工姓名及月收入。
select ename "员工姓名",sal "月收入" from emp where ename like '__A%' 注意这里A前面有两个通配符。
且注意like后面使用的是单引号11、在WHERE条件中使用IN操作符检索emp表中月收入是800的或是1250的员工姓名及部门编号select ename "姓名",deptno "部门编号",sal "工资" from emp where sal in(800,1250)注意:IN的意思是或者。
是800或者1250而不是表示范围12、在WHERE条件中使用逻辑操作符(AND、OR、NOT)显示在部门20中岗位CLERK的所有雇员信息select * from emp where deptno='20' and job='CLERK'显示工资高于2500或岗位为MANAGER的所有雇员信息select * from emp where sal>'2500' or job='MANAGER'注意:在where里面的条件都是使用的单引号,oracle中字符串可以自动转为数字 to_number(‘2500’);13、查询表中是空值的数据检索emp表中有提成的员工姓名、月收入及提成。
select ename "姓名",comm "提成",sal "工资" from emp where comm is not null注意:comm is not null不能写成comm!=NULL14、使用ORDER BY子句,进行排序。
检索emp表中部门编号是30的员工姓名、月收入及提成,并要求其结果按月收入升序、然后按提成降序显示。
select ename "姓名",comm "提成",sal "工资" from emp where deptno='30' order by sal asc,comm descSQL练习训练二1. 查询工资大于1200的员工姓名和工资select ename "姓名",sal "工资" from emp where sal>12002. 查询员工号为7934的员工的姓名和部门号select ename "姓名",deptno "部门编号" from emp where empno='7934'3. 选择工资不在5000到12000的员工的姓名和工资select ename "姓名",sal "工资" from emp where sal not between 5000 and 12000注意:不是 is not4. 选择雇用时间在1981-02-01到1981-05-01之间的员工姓名,职位(job)和雇用时间,按从早到晚排序.select ename "姓名",job "职位",hiredate "雇佣时间"from empwhere hiredate between to_date('1981-02-01','YYYY-MM-DD')and to_date('1981-05-01','YYYY-MM-DD')order by hiredate asc总结:1,要转换为字符类型转换为日期类型!!!否则无法比较2,1981-05-01要用单引号引起来!!!否则报错——日期格式不够长这个例子很重要!!!!!!!!!!!!!!!!!!!!!!!!to_date(‘日期样式字符串’,‘格式化标准’)5. 选择在20或10号部门工作的员工姓名和部门号select ename "姓名",deptno "部门号" from emp where deptno in('20','10')select ename "姓名",deptno "部门号" from emp where deptno in (20,10) 加不加单引号都可以。
那么有什么区别呢???????????????????6. 选择在1987年雇用的员工的姓名和雇用时间select ename "姓名",hiredate "雇佣时间" from emp whereto_char(hiredate,'YYYY')='1987'取出雇用时间的年份且转换为字符形式;然后与'1987'比较select ename "姓名",hiredate "雇佣时间" from emp whereto_char(hiredate,'MM')='04'select ename "姓名",hiredate "雇佣时间" from emp whereto_char(hiredate,'MM')='4'前者是可以的,后者不可以??????????????????????????????这个例子也很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!7. 选择公司中没有管理者的员工姓名及jobselect ename "姓名",job "工作" from emp where mgr is null8. 选择公司中有奖金 (COMM不为空,且不为0) 的员工姓名,工资和奖金比例,按工资逆排序,奖金比例逆排序.select ename "姓名",sal "工资",comm "奖金比例"from emp where comm is not null and comm !=0 order by sal desc,comm desc9. 选择员工姓名的第三个字母是a的员工姓名select ename "姓名"from emp where ename='__A'select ename "姓名"from emp where ename like '__A%'总结:1,前者是错的,这样定死了:一共只有三个字母,且最后一个是A2,后者正确。