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

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

登录

SQL练习训练一

1、查询dept表的结构

在命令窗口输入:

desc dept;

2、检索dept表中的所有列信息 select * from dept

3、检索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、使用列别名

用姓名显示员工姓名,用年收入显示全年月收入。

select ename "员工姓名",sal*12 "全年收入" from emp

8、连接字符串

在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 2000

10、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里面的条件都是使用的单引号

13、查询表中是空值的数据

检索emp表中有提成的员工姓名、月收入及提成。

select ename "姓名",comm "提成",sal "工资" from emp where comm is not null

14、使用ORDER BY子句,进行排序。

检索emp表中部门编号是30的员工姓名、月收入及提成,并要求其结果按

月收入升序、然后按提成降序显示。

select ename "姓名",comm "提成",sal "工资" from emp where deptno='30' order by sal asc,comm desc

SQL练习训练二

1. 查询工资大于1200的员工姓名和工资

select ename "姓名",sal "工资" from emp where sal>1200

2. 查询员工号为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 not

4. 选择雇用时间在1981-02-01到1981-05-01之间的员工姓名,职位(job)和雇用时间,按从早到晚排序.

select ename "姓名",job "职位",hiredate "雇佣时间"

from emp where 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要用单引号引起来!!!否则报错——日期格式不够长这个例子很重要!!!!!!!!!!!!!!!!!!!!!!!!

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 where

to_char(hiredate,'YYYY')='1987'

取出雇用时间的年份且转换为字符形式;然后与'1987'比较

select ename "姓名",hiredate "雇佣时间" from emp where

to_char(hiredate,'MM')='04'

select ename "姓名",hiredate "雇佣时间" from emp where

to_char(hiredate,'MM')='4'

前者是可以的,后者不可

以??????????????????????????????

这个例子也很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

7. 选择公司中没有管理者的员工姓名及job

select ename "姓名",job "工作" from emp where mgr is null

8. 选择公司中有奖金 (COMM不为空,且不为0) 的员工姓名,工资和奖金比例,按工资逆排序,奖金比例逆排序.

select ename "姓名",sal "工资",comm "奖金比例"from emp where comm is not null and comm !=0 order by sal desc,comm desc

9. 选择员工姓名的第三个字母是a的员工姓名

select ename "姓名"from emp where ename='__A'

select ename "姓名"from emp where ename like '__A%'

总结:

1,前者是错的,这样定死了:一共只有三个字母,且最后一个是A

2,后者正确。表示A后的不限定

这个例子也很重要,可以用于模糊查询!!!!!!!!!!!!!!

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

使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下

emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)

dept部门表(depton部门编号/dname部门名称/loc地点)

工资=薪金+佣金

--1、选择部门30中的雇员

--2、列出所有办事员的姓名、编号和部门

--3、找出佣金高于薪金的雇员

--4、找出佣金高于薪金60%的雇员

--5、找出部门10中所有经理和部门20中的所有办事员的详细资料

--6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料

--7、找出收取佣金的雇员的不同工作

--8、找出不收取佣金或收取的佣金低于100的雇员

--9、找出各月最后一天受雇的所有雇员

--10、找出早于25年之前受雇的雇员

--11、显示只有首字母大写的所有雇员的姓名

--12、显示正好为6个字符的雇员姓名

--13、显示不带有'R'的雇员姓名

--14、显示所有雇员的姓名的前三个字符

--15、显示所有雇员的姓名,用a替换所有'A'

--16、显示所有雇员的姓名以及满10年服务年限的日期

--17、显示雇员的详细资料,按姓名排序

--18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

--19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序

--20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面

--21、显示在一个月为30天的情况下所有雇员的日薪金

--22、找出在(任何年份的)2月受聘的所有雇员

--23、对于每个雇员,显示其加入公司的天数

--24、显示姓名字段的任何位置,包含 "A" 的所有雇员的姓名

--25、以年、月和日显示所有雇员的服务年限

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 Class Add ____________ PK_LASS_ID (Constraint) PRIMARY KEY ________ (ID) 14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp

Oracle基础练习题及答案(多表查询1)

利用scott用户自带的四张表完成如下作业: 1.列出至少有一个员工的所有部门 selectb.deptno,b.dnamefromemp a,dept bwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1; 2.列出薪金比SMITH高的所有员工 select*fromempwheresal>(selectsalfromempwhereename='SMITH'); 3.列出所有员工的姓名及其直接上级领导的姓名 selecta.ename,b.ename "leader"fromemp a,emp bwherea.mgr=b.empno; 4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr= b.empnoanda.deptno=c.deptnoanda.hiredate

oracle两表查询练习附答案

Sutdent表的定义 字段名字段描述数据类型主键外键非空唯一自增Id学号INT(10)是否是是是Name姓名VARCHAR(20)否否是否否Sex性别VARCHAR(4)否否否否否Birth出生年份YEAR否否否否否Department院系VARCHAR(20)否否是否否Address家庭住址VARCHAR(50)否否否否否 Score表的定义 字段名字段描述数据类型主键外键非空唯一自增Id编号INT(10)是否是是是Stu_id学号INT(10)否否是否否C_name课程名VARCHAR(20)否否否否否Grade分数INT(10)否否否否否 1.创建student和score表 create table student( id number(10)not null primary key, name varchar2(20)not null, sex varchar2(4), birth number, department varchar2(20)not null, address varchar2(50) ); create table score( id number(10)not null primary key, stu_id number(10)not null, c_name varchar2(20), grade number(10) ); 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: Insert into student values(100101,'张三','男',23,'计算机系','北京市朝阳区'); Insert into student values(100102,'李四','男',21,'英语系','北京市海淀区'); Insert into student values(100103,'王五','女',19,'建工系','北京市昌平区'); Insert into student values(100104,'孙六','女',21,'化学系','北京市苏州桥'); Insert into student values(100105,'齐七','男',23,'英语系','北京市海淀区'); 向score表插入记录的INSERT语句如下: Insert into score values(001,100101,'计算机基础',89); Insert into score values(002,100101,'英语',93); Insert into score values(003,100101,'数学',87);

Oracle数据库查询练习及答案

1 找出佣金高于薪金60%的雇员。 SELECT * FROM emp WHERE comm>sal*; 2 找出部门10中所有经理和部门20中所有办事员的详细资料。 SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK'; 3 找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料。 SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR JOB NOT IN('MANAGER','CLERK') AND SAL>=2000; SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000); 4 找出收取佣金的雇员的不同工作。 SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL; 5 找出不收取佣金或收取的佣金低于300的雇员。 SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300; 6 找出各月最后一天受雇的所有雇员。 SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE); --找出各月最后受雇的所有雇员 SELECT * FROM emp WHERE hiredate IN (SELECT maxh FROM (SELECT MAX(HIREDATE) maxh,EXTRACT(MONTH FROM hiredate)FROM EMP GROUP BY EXTRACT(MONTH FROM hiredate))); 7 找出晚于26年之前受雇的雇员。 SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=26*12; 8 显示只有首字母大写的的所有雇员的姓名。 SELECT * FROM emp WHERE ename=initcap(ename); 9 显示正好为5个字符的雇员的姓名。 SELECT * FROM emp WHERE length(ename)=5; 10显示不带有“R”的雇员姓名。 SELECT * FROM emp WHERE instr(ename,'R')=0; SELECT * FROM emp WHERE ename NOT LIKE '%R%'; 11显示所有雇员的姓名的前三个字符。 SELECT substr(ename,1,3) AS en3 FROM emp; 12显所有雇员的姓名,用a替换所有“A”。

Oracle基础查询关联查询练习题

1 Oracle基础查询综合示例 有职员表emp,表结构如表-1所示:表-1 职员表emp 信息 emp 表中的示例数据如图-1所示: 图-1 有部门表dept,表结构如表-2所示:表-2 部门表dept 信息

dept表中的示例数据如图-2所示: 图-2 需要完成如下查询: 1、查询职员表中,在20和30号部门工作的员工姓名和部门号。 select ename,deptno from emp where deptno in(20,30); 2、查询职员表中,没有管理者的员工姓名及职位,并按职位排序。 select ename,job from emp where mgr is null order by job; 3、查询职员表中,有绩效的员工姓名、薪资和绩效,并按工资倒序排列。select ename,sal,comm from emp order by sal desc; 4、查询职员表中,员工姓名的第三个字母是A的员工姓名。 select ename from emp where ename like'__a%'; 5、查询职员表中的职员名字、职位、薪资,并显示为如图-3所示效果:select ename||','||job||','||sal out_put from emp;

图-3 提示:列之间用逗号连接,列头显示成OUT_PUT。 6、查询职员表中员工号、姓名、工资,以及工资提高百分之20%后的结果。select empno,ename,sal,sal*1.2from emp; 7、查询员工的姓名和工资,条件限定为:工资必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。 select ename,sal from emp where sal>1200 order by hiredate asc; 8、查询ACCOUNT部门以外的其他部门的编号、名称以及所在地。 select deptno,dname,loc from dept where dname not in'accounting';

oracle 查看用户、权限、角色

查看用户、权限、角色的命令和视图 a 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户系统权限: select * from dba_sys_privs; select * from session_privs; select * from user_sys_privs; 3.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 4.查看所有角色: select * from dba_roles; 5.查看用户所拥有的角色: select * from dba_role_privs; select * from user_role_privs; b 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 查询当前用户所拥有的系统权限 SESSION_PRIVS: 查询当前用户所拥有的全部权限 ROLE_SYS_PRIVS:查询某个角色所拥有的系统权限 注意: 要以SYS用户登陆查询这个视图,否则返回空. ROLE_ROLE_PRIVS: 当前角色被赋予的角色 SESSION_ROLES: 当前用户被激活的角色 USER_ROLE_PRIVS: 当前用户被授予的角色 另外还有针对表的访问权限的视图: TABLE_PRIVILEGES ALL_TAB_PRIVS ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限 oracle与用户角色权限相关的视图 Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图. 一. 概述 与权限,角色相关的视图大概有下面这些: 1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。 2、USER_SYS_PRIVS: 查询当前用户所拥有的系统权限。

oracle练习题之单表查询

1.查询dept表的全部记录 select * from dept; 2.查询出每个雇员的编号、姓名、基本工资。 select empno,ename,sal from emp; 3.查询每个雇员的职位。 select job from emp; 4.使用DISTINCT关键字删除重复行。 select distinct job from emp; 5.要求显示每一位雇员的姓名、职位、基本年薪 select ename,job,sal*12 from emp; 6.由于公司的福利很高,每个月都有200的饭食补贴以及100元的车费补助,并且年底每 个月都会多发一个月的基本工资,查询此时的年薪。 select ename,(sal+200+100)*12+sal from emp; 7.将【例4-6】中的年薪列,改为income显示 select ename,(sal+200+100)*12+sal income from emp; 8.观察“||”的使用 select '雇员姓名:' || ename || ',职位:' || job info from emp; 9.查询编号为7521的职工的姓名、职位、雇用日期和基本工资。 select ename,job,hiredate,sal from emp where empno=7521; 10.要求查询出基本工资高于1500的所有雇员信息 select * from emp where sal>1500; 11.要求查询出职位是办事员的所有雇员信息。 select * from emp where job='CLERK'; 12.查询工资在1500~3000之间的全部雇员信息。 select * from emp where sal between 1500 and 3000; select * from emp where sal>=1500 and sal<=3000; 13.查询出职位是办事员或销售人员的全部信息。 select * from emp where job='CLERK' or job='SALESMAN'; 14.查询出职位是办事员或销售人员的全部信息,并且要求这些雇员的工资大于1200。 select * from emp where (job='CLERK' or job='SALESMAN') and sal>1200;

Oracle练习题附答案

练习1、请查询表DEPT中所有部门的情况。 select * from dept; 练习2、查询表DEPT中的部门号、部门名称两个字段的所有信息。 select deptno,dname from dept; 练习3、请从表EMP中查询10号部门工作的雇员姓名和工资。 select ename,sal from emp where deptno=10; 练习4、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。select ename,sal from emp where job='CLERK' or job='MANAGER'; 练习5、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。select ename,deptno,sal,job from emp where deptno between 10 and 30; 练习6、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 select ename,sal,job from emp where ename like 'J%'; 练习7、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。 select ename,job,sal from emp where sal<=2000 order by sal desc; 练习8、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。 select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=?CLERK?; 练习9、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。 select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000; select a.ename 员工,b.ename 经理 from emp a left join emp b on a.mgr=b.empno where a.sal>=2000; 练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。 select ename,job,sal f rom emp where sal>(select sal from emp where ename=?JONES?); 练习11、列出没有对应部门表信息的所有雇员的姓名、工作以及部门号。 select ename,job,deptno from emp where deptno not in (select deptno from dept); 练习12、查找工资在1000~3000之间的雇员所在部门的所有人员信息 select * from emp where deptno in (select distinct deptno from emp where sal between 1000 and 3000);

oracle 创建create user 及授权grant 查看登陆的用户

oracle 创建create user 及授权grant 查看登陆的用户: 以下都可以: show user; select sys_context('userenv','session_user') from dual; select user from dual; 查看所有登录的用户必须为DBA 用户: select username from v$session; sys、system等DBA 用户查看其他用户(test)中的对象(表): SQL> select * from test.student; 创建一个普通用户都把该用户用起来的流程: 1、创建用户 SQL>create user test indentified by test; 这样就创建了一个用户名密码都为test的用户 但这个时候test还是不能登陆成功的,我们需要赋予相应的权限 2、赋予create session的权限 SQL>grant create session to test; 这样test用户就能成功登陆进去 但是此时用户还是不能创建表我们需要赋予用户创建表的权限: SQL>grant create table to test; 但是用户此时还不能创建表因为需要有使用表空间的权限(相当于用户有了进房间的钥匙但是没有进大门的钥匙。。。) 所以也应该赋予相应的权限 SQL>grant unlimited tablespace to test; 这个时候用户就拥有了创建表的权限由于表是用户test的相应的他就拥有了对创建的表的增删查改的权限了 3、查看用户拥有什么权限可以通过查询一个系统的视图(数字字典) SQL>select * from user_sys_privs; 这样就可以知道当前用户的权限 4、撤销权限 SQL> revoke create table from test; ----------------------------- 一些常用视图的区分 dba_tables dba_all_tables user_tables user_all_tables all_tables

如何查看oracle用户具有的权限和角色

如何查看oracle用户具有的权限和角色 上次有同学问我,如何查看一个oracle用户具有的权限和角色,我一时没答上来,回头好好研究了一下,记录一下,备查: 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6.查看用户或角色所拥有的角色: select * from dba_role_privs; select * from user_role_privs; 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) select * from V$PWFILE_USERS 比如我要查看用户wzsb的拥有的权限: SQL> select * from dba_sys_privs where grantee='WZSB';

GRANTEE PRIVILEGE ADMIN_OPTION ------------------------------ ---------------------------------------- ------------ WZSB CREATE TRIGGER NO WZSB UNLIMITED TABLESPACE NO 比如我要查看用户wzsb的拥有的角色: SQL> select * from dba_role_privs where grantee='WZSB'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------------------------ ------------------------------ ------------ ------------ WZSB DBA NO YES 查看一个用户所有的权限及角色 select privilege from dba_sys_privs where grantee='WZSB' union select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='WZSB' );

Oracle测试题

一、选择题(40分) 1.Oracle发出下列select语句: SQL> select , , 2 from emp e, dept d 3 where = 4 and substr, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句 A.select empno, ename, loc from emp join dept on = where substr, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on = where substr, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where = and substr, 1, 1) = ‘S’; D.select empno, ename, loc from emp left join dept on = and substr, 1, 1) = ‘S’; 2.下列哪个选项表示Oracle中select语句的功能 A.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据 C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断 3.你要操纵Oracle数据,下列哪个不是SQL命令 A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 4.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用A.表B.序列 C.索引 D.视图 5.你要根据PRODUCT_NAME列从PROFITS表查询中过滤返回的数据。下列哪个子句包含相 应过滤条件的引用 A.select B.from C.where D.having 用下列代码所示的内容回答后面五个问题: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ ---------- --------- ---- --------- ---- ---- ------7369 SIMTH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10

Oracle+SQL+PLSQL练习题带答案

Oracle SQL & PL/SQL练习题(三) 本文由java教学网https://www.360docs.net/doc/0f4338692.html,整理,转发请带出处 (蓝色为正确选项) 1.Oracle发出下列select语句: SQL> select e.empno, e.ename, d.loc 2 from emp e, dept d 3 where e.deptno = d.deptno 4 and substr(e.ename, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句? A.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; D.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; 2.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能,并且不需要 使用子查询? A.可以用select语句改变Oracle中的数据B.可以用select语句删除Oracle中的数据C.可以用select语句和另一个表的内容生成一个表D.可以用select语句对表截断 3.Oracle数据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学运算时的 查询组件? A.列子句B.表子句C.DUAL表D.where子句 4.你要操纵Oracle数据,下列哪个不是SQL命令? A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 5.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用? A.表B.序列C.索引D.视图 6.你要根据PRODUCT_NAME列从PROFITS表查询中过滤返回的数据。下列哪个子句包含相应过 滤条件的引用? A.select B.from C.where D.having 7.下列代码显示了PROFITS表输出的局部: PRODUCT_NAME PRODUCT_TYPE QTR_END_DATE PROFIT ------------ ------------ ------------ ------------- BARNEY DOLL TOY 31-MAR-2001 6575430.30 GAS GRILL APP 31-MAR-2001 1234023.88 PENCIL OFFICE 30-JUN-2001 34039.99 下列查询的where子句哪个能正确计算2001年1月1日到6月1日六个月内销售的所有家电总利润? A.where product_name = ‘GAS GRILL’ and qtr_end_date between ’01-JAN-2001’ and ‘01-JUN-2001’; B.where proeuct_type = ‘APPLIANCE’ and name = ‘GAS GRILL’ and qtr_end_date = ’31-JAN-2001’ or ‘30-JUN-2001’; C.where proeuct_type = ‘APPLIANCE’ and qtr_end_date between ’01-JAN-2001’ and ’01-JUN-2001; D.where proeuct_name = ‘GAS GRILL’ and qtr_end_date = ’01-JAN-2001’ or ‘01-JUN-2001’; 用下列代码所示的内容回答后面八个问题: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ ---------- --------- ---- --------- ---- ---- ------ 7369 SIMTH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

《oracle数据库》练习题4

练习题4 一、选择题(每题1分,共20分) 1. 有数据”oracle”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为() A、 10 10 B、66 C、 10 6 D、 6 10 2.ORACLE数据库物理结构包括以下三种文件,以下不属于的是() A、系统文件 B、日志文件 C、数据文件 D、控制文件 3.下面四个语句中哪一个是正确的?() A、SELECT * , ENAME FROM EMP; B、 DELETE * FROM EMP; C、 SELECT DISTINCT EMPNO ,HIREDATE FROM EMP; D、SELECT ENAME|SAL AS “name” FROM EMP ; 4.更改oracle用户HR,使其变为不可用(锁定)状态() A、UPDATE USER HR ACCOUNT DISABLE ; B、UPDATE USER HR ACCOUNT LOCK ; C、ALTER USER HR ACCOUNT LOCK ; D、ALTER USER HR ACCOUNT DISABLE ; 5.在Oracle中,使用下列的语句: CREATE PUBLIC SYNONYM parts FOR Scott.inventory; 完成的任务是()。 A、需要给出schema被除去的对象名 B、指定了新的对象权限 C、指定了新的系统权限 D、给Scott.inventory对象创建一个公用同义词parts 6. ORACLE中,用来判断列值是否为空的操作符是() A、 ==NULL B、IS NULL C、 AS NULL D、 NULLIS 7.在CUSTOMER中有一列为单价(PRICE),写一个SELECT命令显示所有单价在500以上的查询语句()

oracle练习题

1、Oracle是对象关系型数据库管理系统。 2、Oracle 9i中的i和Oracle 10g、Oracle11g中的g各代表什么意思。 i是internet的意思,g是grid网格运算 3、数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是___A____。(选择1项) A)DBS包括DB和DBMS B)DBMS包括DB和DBS C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS 5、完全卸载Oracle 11g时,需要进行的第一步操作是( A )。 A 停止所有的Oracle服务 B 启动Oracle的卸载向导 C 删除磁盘上的Oracle文件 D 删除数据库Orcl 6、安装Oracle数据库过程中SID指的是什么( B )。 A 系统标识号 B 数据库名 C 用户名 D 用户口令 7、Oracle网络配置分为服务器端和客户端,监听程序的配置是在_数据库服务 器端_。 8、监听程序与Net服务名的关系是怎样的? Oracle中的Net工具都能用来配置监听器和网络服务名 9、要开启Oracle服务器,必须开启的两个服务是( D )。 A.OracleHOME_NAMETNSListener和OracleHOME_NAMEAgent B.OracleServiceSID和OracleHOME_NAMEHTTPServer

C.OracleHOME_NAMEAgent和OracleServiceSID D.OracleHOME_NAMETNSListener和OracleServiceSID A 数据文件 B 控制文件 C 日志文件 D 归档日志文件 5、在Oracle中,一个用户拥有的所有数据库对象统称为(A)。 A 数据库 B 模式 C 表空间 D 实例 6、在Oracle数据库的逻辑结构中有以下组件: A 表空间 B 数据块 C 区 D 段 这些组件从大到小依次是( B) A A->B->C->D B A->D->C->B C A->C->B-> D D D->A- >C->B 7、在Windows操作系统中,Oracle的( A )服务器监听并接受来自客户端 应用程序的连接请求。 A OracleHOME_NAMETNSListener B OracleServiceSID

Oracle基础练习题及答案(基本查询)

O r a c l e基础练习题及答案(基本查询) -CAL-FENGHAI.-(YICAI)-Company One1

练习题 使用SQL PLUS工具登陆,用户名用scott。 1.1 在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中 文。 select empno"员工编号",ename"员工姓名",job"职位",mgr"上级领导",hiredate"入职日期",sal"薪资",comm"奖金",deptno"部门编号" from emp; 1.2 在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。 select * from emp where sal>1500order by sal desc; 1.3 在emp表中查询出comm字段为空值的记录。 select * from emp where comm is null; 1.4 查询出emp表中含有几个部门的记录。(用DISTINCT去除重复记录) select distinct deptno from emp; 1.5 在emp表中查询出部门编号为10或20的记录(要求使用IN关键字) select * from emp where deptno in(10,20); 1.6 在emp表中查询出姓名的第二个字母为A的记录。 select ename from emp where ename like'_A%'; 1.7 查询出emp表中总共有多少条记录。 select count(*) from emp; 1.8 查询emp表中出每个部门的部门代码、薪水之和、平均薪水。 select deptno,sum(sal),avg(sal) from emp group by deptno;

Oracle中查看所有的表,用户表,列名,主键,外键

在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : selecttable_name from user_tables; //当前用户的表 selecttable_name from all_tables; //所有用户的表 selecttable_name from dba_tables; //包括系统表 select * from user_indexes //可以查询出所有的用户表索引 查所有用户的表在all_tables 主键名称、外键在all_constraints 索引在all_indexes 但主键也会成为索引,所以主键也会在all_indexes里面。 具体需要的字段可以DESC下这几个view,dba登陆的话可以把all换成dba 1、查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columnst,user_indexesi where t.index_nam e = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constraints au where cu.constraint _name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列): selectcolumn_name from user_cons_columns cu, user_constraints au where cu. constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table _name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/0f4338692.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

相关文档
最新文档