oracle例题
oracle64道题目
select replace (ename,'s','S') from scott.emp;
--18查询员工的姓名和入职日期,并按入职日期从先到后进行排序。
select ename,hiredate from scott.emp order by hiredate ;
--30查询最低工资大于2500的各种工作。
select job,min(sal) from scott.emp group by job having min(sal)>2500 ;
--31查询平均工资低于2000的部门及其员工信息。
select a.*,b.* from scott.emp a,scott.dept b where a.deptno =
select * from scott.emp where( job='MANAGER' and deptno=10) or (job='CLERK' and deptno=20);
--6查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。
select * from scott.emp where job not in('MANAGER','CLERK') and sal>=2000;
select ename,extract(year from hiredate) y,extract(month from hiredate) m from scott.emp order by m,y;
--21查询在2月份入职的所有员工信息。
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.empnowhere a.sal>=2000;练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。
oracle上机试题及答案
oracle上机试题及答案Oracle上机试题及答案1. 查询当前数据库版本- 请写出SQL语句来查询当前数据库的版本。
答案:```sqlSELECT * FROM V$INSTANCE;```2. 创建表- 编写SQL语句创建一个名为`employees`的表,包含字段`id`(主键,自动增长),`name`(姓名),`department`(部门),`salary`(薪资)。
答案:```sqlCREATE TABLE employees (id NUMBER GENERATED ALWAYS AS IDENTITY,name VARCHAR2(100),department VARCHAR2(50),salary NUMBER(10, 2),PRIMARY KEY (id));```3. 插入数据- 向`employees`表中插入一行数据,姓名为"John Doe",部门为"IT",薪资为5000。
答案:```sqlINSERT INTO employees (name, department, salary) VALUES('John Doe', 'IT', 5000);```4. 更新数据- 更新`employees`表中姓名为"John Doe"的员工的薪资为6000。
答案:```sqlUPDATE employees SET salary = 6000 WHERE name = 'John Doe'; ```5. 删除数据- 删除`employees`表中所有薪资低于3000的员工记录。
答案:```sqlDELETE FROM employees WHERE salary < 3000;```6. 查询数据- 查询`employees`表中所有员工的姓名和薪资,并按薪资从高到低排序。
oracle数据库的试题及答案
oracle数据库的试题及答案一、选择题1. Oracle数据库是一种()数据库管理系统。
A. 非关系型B. 关系型C. 分布式D. 图形化2. 数据库中,将所有数据进行分类和组织的基本单位是()。
A. 表B. 字段C. 记录D. 数据库3. 在Oracle数据库中,用于删除表中所有数据的操作是()。
A. DELETEB. REMOVEC. DROPD. TRUNCATE4. 在Oracle数据库中,用于更新表中数据的操作是()。
A. UPDATEB. MODIFYC. ALTERD. REPLACE5. 在Oracle数据库中,用于查询数据的操作是()。
A. SELECTB. SEARCHC. FINDD. WHERE二、简答题1. 请简述Oracle数据库的特点。
Oracle数据库具有以下特点:- 完整性:通过约束和触发器来保证数据的完整性。
- 可扩展性:支持集群部署和分布式数据库,可以动态扩展数据库的容量。
- 安全性:提供了严格的数据权限管理和用户认证机制,保护数据免受未经授权的访问。
- 可靠性:支持数据备份和恢复功能,保障数据的持久性和可靠性。
- 高性能:采用多线程和缓存技术,提高数据库的读写性能和响应速度。
2. 在Oracle数据库中,什么是事务?事务是指逻辑上的一组操作,这组操作要么全部成功执行,要么全部失败回滚。
事务具有以下特性:- 原子性:事务中的操作要么全部执行成功,要么全部回滚,不会出现部分执行的情况。
- 一致性:事务执行前后,数据库的状态保持一致性,不会破坏数据的完整性。
- 隔离性:事务之间相互独立,每个事务都认为自己是唯一在操作数据库的。
- 持久性:事务一旦提交,其对数据库的修改将永久保存,不会被回滚。
3. 请说明Oracle数据库中的索引是什么,并简要介绍索引的作用。
索引是一种特殊的数据库对象,用于快速查找数据库中的数据。
索引基于一个或多个列值创建,并按照特定的排序规则存储列值和对应的行指针。
oracle笔试题及答案
oracle笔试题及答案一、选择题1. Oracle数据库是一种()数据库管理系统。
A. 关系型B. 非关系型C. 层次型D. 网状型答案:A2. 下列哪个选项不属于Oracle数据库的特点?A. 完全支持SQL语言B. 支持分布式数据库C. 提供高可用性和故障恢复机制D. 仅支持单用户操作答案:D3. 在Oracle数据库中,下列关键字中哪个用于插入一行数据?A. UPDATEB. DELETEC. SELECTD. INSERT答案:D4. 在Oracle数据库中,下列关键字中哪个用于从表中删除一行数据?A. TRUNCATEB. DROPC. DELETED. REMOVE答案:C5. 在Oracle数据库中,下列关键字中哪个用于更新表中的数据?A. MODIFYB. ALTERC. UPDATED. CHANGE答案:C6. 在Oracle数据库中,下列哪个语句用于创建一个新的用户?A. CREATE ROLEB. CREATE USERC. GRANT PERMISSIOND. ALTER ACCOUNT答案:B7. 在Oracle数据库中,下列关键字中哪个用于将表中的数据按照指定的列进行排序?A. SORTB. GROUPC. ORDERD. ARRANGE答案:C8. 在Oracle数据库中,下列关键字中哪个用于查询满足特定条件的数据?A. SELECTB. SEARCHC. FINDD. FILTER答案:A9. 在Oracle数据库中,下面哪个关键字用于创建新的表?A. CREATEB. MAKEC. BUILDD. CONSTRUCT答案:A10. 下列哪个Oracle数据库对象用于避免数据冗余,提高查询速度,并提供数据的一致性和完整性?A. 视图(View)B. 函数(Function)C. 存储过程(Stored Procedure)D. 游标(Cursor)答案:A二、简答题请简要回答以下问题。
oracle期末考试题及答案
oracle期末考试题及答案一、选择题(每题2分,共20分)1. Oracle数据库中的用户和模式是什么关系?A. 完全相同B. 完全不同C. 模式是用户的集合D. 用户是模式的集合答案:C2. 在Oracle数据库中,以下哪个命令用于查看当前用户?A. SELECT USER FROM DUAL;B. SELECT CURRENT_USER FROM DUAL;C. SELECT SESSION_USER FROM DUAL;D. SELECT SYSTEM_USER FROM DUAL;答案:A3. Oracle数据库中的哪个参数用于设置数据库的字符集?A. DB_CHARSETB. NLS_CHARACTERSETC. DB_LANGUAGED. NLS_LANGUAGE答案:B4. 在Oracle数据库中,以下哪个不是SQL语句?A. SELECTB. UPDATEC. DELETED. PRINT答案:D5. Oracle数据库中的触发器可以在哪些时刻执行?A. 数据插入前B. 数据更新前C. 数据删除后D. 数据查询时答案:ABC二、填空题(每空2分,共20分)1. Oracle数据库的默认表空间名称是 _ 。
答案:SYSTEM2. 在Oracle数据库中,用来查看当前数据库版本信息的命令是 _ 。
答案:SELECT * FROM V$VERSION;3. Oracle数据库中,用来创建索引的SQL语句是 _ 。
答案:CREATE INDEX;4. 在Oracle数据库中,存储过程和函数的区别在于存储过程可以有_ ,而函数不能。
答案:OUT参数5. Oracle数据库中,用于实现数据完整性的约束包括主键约束、外键约束、 _ 和CHECK约束。
答案:UNIQUE约束三、简答题(每题10分,共30分)1. 解释Oracle数据库中的视图是什么,并说明其优点。
答案:视图是Oracle数据库中的一种虚拟表,它是基于一个或多个表的查询结果。
oracle数据库sql试题及答案
oracle数据库sql试题及答案Oracle数据库SQL试题及答案1. 如何查询员工表中所有员工的姓名和工资,要求工资从高到低排序?```sqlSELECT name, salaryFROM employeesORDER BY salary DESC;```2. 如何统计每个部门的员工人数?```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```3. 如何查询工资高于平均值的员工信息?```sqlSELECT *FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```4. 如何找出没有直属上司的员工?```sqlSELECT *FROM employees e1WHERE NOT EXISTS (SELECT 1FROM employees e2WHERE e1.manager_id = e2.employee_id);```5. 如何查询工资在3000到5000之间的员工姓名和工资?```sqlSELECT name, salaryFROM employeesWHERE salary BETWEEN 3000 AND 5000;```6. 如何删除员工表中所有工资低于3000的员工记录?```sqlDELETE FROM employeesWHERE salary < 3000;```7. 如何更新员工表中所有部门为10的员工的工资,增加10%?```sqlUPDATE employeesSET salary = salary * 1.1WHERE department_id = 10;```8. 如何查询员工表中每个员工的姓名和他们直属上司的姓名?```sqlSELECT AS employee_name, AS manager_name FROM employees e1JOIN employees e2 ON e1.manager_id = e2.employee_id; ```9. 如何查询员工表中每个部门的平均工资?```sqlSELECT department_id, AVG(salary) AS avg_salary FROM employeesGROUP BY department_id;```10. 如何查询员工表中工资最高的员工信息?```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees); ```。
oracle练习题(打印版)
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
Oracle_练习与答案
Oracle_练习与答案1.求部门中薪水最高的人select ename,sal,emp.deptno from empjoin (select deptno,max(sal) max_sal from emp group by deptno) ton (emp.deptno = t.deptno and emp.sal = t.max_sal);2.求部门平均薪水的等级select deptno, avg_sal, grade from(select deptno,avg(sal) avg_sal from emp group by deptno) tjoin salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal);3.求部门平均的薪水等级select deptno, avg(grade) avg_sal_grade from(select deptno, grade from empjoin salgrade on emp.sal between salgrade.losal and salgrade.hisal) group by deptno;4.雇员中有哪些人是经理人select distinct e2.ename manager from emp e1 join emp e2 on e1.mgr = e2.empno;select ename from emp where empno in (select mgr from emp);5.不准用组函数,求薪水的最高值select distinct sal max_sal from empwhere sal not in(select e1.sal e1_sal from emp e1 join emp e2 on e1.sal < e2.sal);6.求平均薪水最高的部门的部门编号select deptno, avg_sal from(select deptno, avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg_sal) from(select avg(sal) avg_sal from emp group by deptno));组函数嵌套写法(对多可以嵌套一次,group by 只对内层函数有效) select deptno, avg_sal from(select deptno, avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg(sal)) from emp group by deptno);7.求平均薪水最高的部门的部门名称select t1.deptno, dname, avg_sal from(select deptno,avg(sal) avg_sal from emp group by deptno) t1 join dept on t1.deptno = dept.deptnowhere avg_sal =(select max(avg_sal) from(select deptno,avg(sal) avg_sal from emp group by deptno) );select dname from deptwhere deptno =(select deptno from(select deptno,avg(sal) avg_sal from emp group by deptno) where avg_sal =(select max(avg_sal) from(select deptno,avg(sal) avg_sal from emp group by deptno) ));8.求平均薪水的等级最低的部门的部门名称select dname from deptjoin(select deptno, grade from(select deptno, avg(sal) avg_sal from emp group by deptno) t join salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal)) ton dept.deptno = t.deptnowhere t.grade =(select min(grade) from(select avg(sal) avg_sal from emp group by deptno) tjoin salgradeon (t.avg_sal between salgrade.losal and salgrade.hisal));9.求部门经理人中平均薪水最低的部门名称select dname from(select deptno, avg(sal) avg_sal from empwhere empno in (select mgr from emp)group by deptno) tjoin dept on t.deptno = dept.deptnowhere avg_sal =(select min(avg_sal) from(select avg(sal) avg_sal from empwhere empno in (select mgr from emp)group by deptno) t);10.求比普通员工的最高薪水还要高的经理人名称(not in) select ename from emp where empnoin (select mgr from emp) and sal >(select max(sal) from(select e2.sal fromemp e1 right join emp e2 on e1.mgr = e2.empno where e1.ename is null) t);select ename from emp where empnoin (select mgr from emp) and sal >(select max(sal) from emp where empno not in(select distinct mgr from emp where mgr is not null));//NOT IN遇到NULL则返回NULL,必须排除NULL值11.求薪水最高的前5名雇员select empno,ename from(select * from emp order by sal desc)where rownum<=5;12.求薪水最高的第6到第10名雇员(!important)select ename,sal from(select t.*,rownum r from(select * from emp order by sal desc) t) where r>=6 and r<=10;13.求最后入职的5名员工select ename, to_char(hiredate,'YYYY"年"MM"月"DD"日"') hiredate from (select t.*,rownum r from(select * from emp order by hiredate desc)t)where r<=5;select ename, to_char(hiredate,'YYYY"年"MM"月"DD"日"') hiredate from (select t.*,rownum r from(select * from emp order by hiredate)t)where r>(select count(*)-5 from emp);P。
Oracle测试题(卷)+答案解析
Oracle测试题(卷)+答案解析1) PL/SQL块中可以使用下列()命令。
(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是(B)〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SAd) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是(C)〔选择一项〕a) Aptechb) 无输出c) 14行Aptechd) 编译出错4) PL/SQL块中哪几部分是可选的()〔选择二项〕a) Declareb) Beginc) Exceptiond) Constant5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。
(选择一项)a) Cycleb) Nocyclec) Cached) Nocache6) 同义词有以下()用途。
(选择三项)a) 简化SQL 语句b) 隐藏对象的名称和所有者c) 提供对对象的公共访问d) 显示对象的名称和所有者7) Oracle中用来释放锁的语句有()〔选择二项〕a) commitb) Drop lockc) rollbackd) unlock8) 关于类型定义Number(9,2)说确的有()〔选择一项〕a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确9) 下列哪种Lob类型用来存储数据库以外的操作系统文件()〔选择一项〕a) CLOBb) BLOBc) CFILEd) BFILE10) Oracle中的三种系统文件分别是()〔选择三项〕a) 数据文件b) 归档文件c) 日志文件d) 控制文件11) 下列哪项不是Oracle中常用的分区方法?()〔选择一项〕a) 围分区b) 散列分区c) 列表分区d) 条件分区12) 查看Test中名称为P1的分区中的记录的查询语句为()〔选择一项〕a) Select * from Test Where PartitionName=’p1’b) Select * from Test(p1)c) Select * from Test Partition(p1);d) 以上均正确13) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值14) 下列哪项是创建索引组织表所必需的()〔选一项〕a) Primary Keyb) Order Byc) Group Byd) 以上均不是15) 若表的某字段值存在大量的重复,则基于该字段适合创建哪种索引?()〔选一项〕a) 标准索引b) 唯一索引c) 位图索引d) 分区索引16) 在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是()〔选一项〕a) A.Pi Const Real=3.14;b) B.Pi Real Const =3.14;c) C.Constant Pi Real:=3.14d) D.Pi Constant Real:=3.1417) 22.当Select语句没有返回行时,将引发下列哪个异常?()[选择一项]a) A.No_rows_foundb) B.No_data_foundc) C.No_Data_rows_foundd) D.Invalid_Number18) Oracle中提供的两种游标是()〔选择二项〕a) A.隐式游标b) B.静态游标c) C.REF游标d) D.显式游标19) 若Emp表中有14条记录,则用户执行了以下操作,结果是:()〔选择一项〕Cursor mycur is Select * From emp;。
oracle例题
1.创建大小为50MB的表空间XXX(数据文件c:/xxx.dbf),禁止自动扩展数据文件。
答:CREATE TABLESPACE XXXDATAFILE 'c:\XXX.ora' SIZE 50M;2.为XXX表空间添加位置是“c:\xxx02.dbf”的数据文件,大小是50M,并可以增长,每次50M,最大是500M。
答:ALTER TABLESPACE XXXADDDATAFILE 'C:\xxx02.ora' SIZE 50M AUTOEXTENDON NEXT 50M MAXSIZE 500M;3.创建表SC,字段为SNO,CNO,G;数据类型都是NUMBER;字段SNO,cno为关键字;字段G不能为空;表空间为XXX。
答:CREATE TABLE system.SC (SNO NUMBER(10) NOT NULL, CNO NUMBER(10) NOT NULL, G NUMBER(10)) NOT NULL, PRIMARY KEY(SNO, CNO))TABLESPACE XXX ;4.在表sc中增加字段学分xf,数据类型是number。
答:ALTER TABLE system.SCADD (XF NUMBER(10) NOT NULL);5.为表sc的SNO字段创建索引S_I。
答:CREATE INDEX system.S_ION system.SC (SNO);6.重新命名索引为S_I2;7.为表SC创建公有同义词SC_C;答:CREATE PUBLIC SYNONYM SC_CFOR SYSTEM.SC;8.创建视图,显示学生的学号(S.SNO)、姓名(S.SNAME)、课程名(AME)和对应的成绩(SC.G);答:CREATE VIEW SYSTEM.SC_V ASselect s.sno,sname,cname,gfrom s,sc,cwhere s.sno=sc.sno and o=o;9.对第3小题中的SC表创建存储过程a_p并调用该过程在屏幕上输出。
Oracle经典练习题(很全面)
Oracle 经典练习题一.创建一个简单的PL/SQL程序块1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。
declarev_emp emp%rowtype;beginselect * into v_emp from emp where ename='SMITH';dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:'||v_emp.sal);end;2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。
方法一:(传统方法)declarepname dept.dname%type;ploc dept.loc%type;pdeptno dept.deptno%type;beginpdeptno:=&请输入部门编号;select dname,loc into pname,ploc from dept where deptno=pdeptno; dbms_output.put_line('部门名称: '||pname||'所在位置:'||ploc); exception –异常处理when no_data_foundthen dbms_output.put_line('你输入的部门编号有误!!');when othersthen dbms_output.put_line('其他异常');end;方法二:(使用%rowtype)declareerow dept%rowtype;beginselect * into erow from dept where deptno=&请输入部门编号;dbms_output.put_line(erow.dname||'--'||erow.loc);exceptionwhen no_data_foundthen dbms_output.put_line('你输入的部门号有误');when othersthen dbms_output.put_line('其他异常');end;3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。
ORACLE数据库习题(有答案)
--1.列出至少有一个雇员的所有部门。
SELECT * FROM DEPTWHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);--2.列出薪金比“SMITH”多的所有雇员。
SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH');--3.列出所有雇员的姓名及其上级的姓名。
SELECT AS empName, AS mgrNameFROM emp ygb,emp sjbWHERE =;--4.列出入职日期早于其直接上级的所有雇员。
【SELECT * FROM emp ygbWHERE hiredate<(SELECT hiredate FROM emp sjb WHERE =;--5.列出所有部门的名称和这些部门的雇员编号及姓名(没有雇员的部门包含在内)SELECT dname,enameFROM dept a LEFT JOIN emp b ON =; --6.列出所有JOB为“CLERK”(办事员)的员工姓名及其部门名称SELECT ename,dnameFROM dept a,emp bWHERE = AND job='CLERK';--7.列出各种类型的最低薪金,并使最低薪金大于。
SELECT job,MIN(sal)—FROM empGROUP BY jobHAVING MIN(sal)>1500;--8.列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。
SELECT ename FROM empWHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES'); --9.列出薪金高于公司平均水平的所有雇员。
SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);--10.列出与“SCOTT”从事相同工作的所有雇员。
oracle数据库期末考试试题及答案
oracle数据库期末考试试题及答案一、选择题(每题2分,共20分)1. 在Oracle数据库中,用于创建数据库表的命令是:A. CREATE DATABASEB. CREATE TABLEC. DROP TABLED. ALTER TABLE答案:B2. 下列哪个选项不是Oracle数据库的系统表?A. USER_TABLESB. DBA_TABLESC. ALL_TABLESD. EMPLOYEE答案:D3. 在Oracle数据库中,用于删除数据库表的命令是:A. DROP TABLEB. DELETE TABLEC. REMOVE TABLED. ERASE TABLE答案:A4. Oracle数据库中,哪个命令用于查询数据库中所有用户?A. SELECT * FROM USER_USERS;B. SELECT * FROM ALL_USERS;C. SELECT * FROM DBA_USERS;D. SELECT * FROM USER;答案:B5. 在Oracle数据库中,用于添加新列的命令是:A. ADD COLUMNB. INSERT COLUMNC. CREATE COLUMND. ALTER TABLE答案:D6. 下列哪个选项不是Oracle数据库的存储引擎?A. InnoDBB. Oracle RDBMSC. BDBD. Oracle ASM答案:A7. Oracle数据库中,用于更新表中数据的命令是:A. UPDATEB. CHANGEC. MODIFYD. ALTER答案:A8. Oracle数据库中,用于删除表中数据的命令是:A. DELETEB. REMOVEC. DROPD. ERASE答案:A9. 在Oracle数据库中,用于查询表中数据的命令是:A. SELECTB. QUERYC. FETCHD. GET答案:A10. Oracle数据库中,用于创建索引的命令是:A. CREATE INDEXB. CREATE KEYC. INDEXD. KEY答案:A二、填空题(每题2分,共20分)1. Oracle数据库的默认端口号是______。
oracle数据库试题及答案
oracle数据库试题及答案一、单选题1. Oracle数据库的特点是()A. 高安全性B. 高性能C. 可扩展性D. 全面支持ACID特性答案:D2. 在Oracle数据库中,数据存储在()中。
A. 数据块B. 数据段C. 数据文件D. 表空间答案:D3. 下面哪个是Oracle数据库的管理工具?A. SQL DeveloperB. ToadC. PL/SQL DeveloperD. SQL*Plus答案:A4. Oracle数据库中,用于创建和修改数据库对象的语言是()。
A. DMLB. DDLC. DCLD. TCL答案:B5. 在Oracle数据库中,用于查询和操作数据库对象的语言是()。
A. DMLB. DDLC. DCLD. TCL答案:A二、多选题1. 下列哪些是Oracle数据库的特点?()A. 支持事务处理B. 支持分布式数据库C. 支持并发控制D. 支持网络编程答案:A、B、C2. Oracle数据库的体系结构包含以下几个部分:()A. 数据块B. 数据文件C. 表空间D. 实例答案:A、B、C、D3. 下列哪些是Oracle数据库的安全机制?()A. 用户权限管理B. 数据加密C. 访问控制D. 数据备份答案:A、B、C4. Oracle数据库的存储结构包括以下几个层次:()A. 数据库B. 表空间C. 数据文件D. 段E. 数据块答案:A、B、C、D、E5. Oracle数据库的备份与恢复策略包括以下几种:()A. 完全备份B. 增量备份C. 差异备份D. 恢复点备份E. 日志备份答案:A、B、C、E三、判断题1. Oracle数据库是面向对象的数据库。
答案:错误2. Oracle数据库可以跨平台使用。
答案:正确3. Oracle数据库的事务具有原子性、一致性、隔离性和持久性。
答案:正确4. Oracle数据库可以使用PL/SQL语言进行存储过程和触发器的编写。
答案:正确5. Oracle数据库的数据存储采用以行为单位的方式。
ORACLE期末考试试题及答案
ORACLE期末考试试题及答案一、选择题(每题2分,共40分)1. ORACLE数据库系统属于以下哪一种数据库类型?A. 关系型数据库B. 层次型数据库C. 网状型数据库D. 对象-关系型数据库答案:A2. 在ORACLE中,以下哪个命令用来创建一个表?A. CREATE TABLEB. CREATE VIEWC. CREATE INDEXD. CREATE SEQUENCE答案:A3. 数据库的三级模式结构包括以下哪几个层次?A. 外模式、概念模式、内模式B. 概念模式、内模式、物理模式C. 外模式、内模式、物理模式D. 外模式、概念模式、物理模式答案:A4. 在ORACLE中,以下哪个命令用来删除一个表?A. DROP TABLEB. DELETE TABLEC. DROP VIEWD. DELETE VIEW答案:A5. 数据库事务的四个特性包括以下哪些?A. 原子性、一致性、隔离性、持久性B. 原子性、一致性、独立性、持久性C. 原子性、一致性、并发性、持久性D. 原子性、一致性、并发性、独立性答案:A6. 在ORACLE中,以下哪个命令用来修改表的结构?A. ALTER TABLEB. MODIFY TABLEC. UPDATE TABLED. ALTER VIEW答案:A7. 数据库的备份分为以下哪几种类型?A. 冷备份、热备份、逻辑备份B. 冷备份、热备份、物理备份C. 冷备份、热备份、完全备份D. 冷备份、热备份、增量备份答案:D8. 在ORACLE中,以下哪个命令用来创建一个索引?A. CREATE INDEXB. CREATE TABLEC. CREATE VIEWD. CREATE SEQUENCE答案:A9. 数据库的并发控制主要包括以下哪些方法?A. 乐观并发控制、悲观并发控制、时间戳并发控制B. 乐观并发控制、悲观并发控制、锁并发控制C. 乐观并发控制、悲观并发控制、令牌并发控制D. 乐观并发控制、悲观并发控制、版本并发控制答案:B10. 在ORACLE中,以下哪个命令用来创建一个序列?A. CREATE SEQUENCEB. CREATE TABLEC. CREATE VIEWD. CREATE INDEX答案:A二、填空题(每题2分,共20分)1. 在ORACLE中,使用______命令可以创建一个表。
oracle习题及答案
1.查询工资大于12000的员工姓名和工资Select last_name||' '||first_name,salary from employees where salary >12000;2.查询员工号为176的员工的姓名和部门号Select last_name||' '||first_name,department_id from employees where employee_id=176;3.选择工资不在5000到12000的员工的姓名和工资Select last_name||' '||first_name,salary from employees where salary not between 5000 and 12000;4.选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时间Select last_name||' '||first_name,job_id,hire_date from employees where hire_date between '1-2月-98' and '1-5月-98';5.选择在20或50号部门工作的员工姓名和部门号Select last_name||' '||first_name,department_id from employees where department_id in (20,50);6.选择在1994年雇用的员工的姓名和雇用时间Select last_name||' '||first_name,hire_date from employees where hire_date like '%94';7.选择公司中没有管理者的员工姓名及job_idSelect last_name||' '||first_name,job_id from employees where Manger_id is null;8.选择公司中有奖金的员工姓名,工资和奖金Select last_name||' '||first_name,salary,commission_pct from employees where commission_pct is not null;9.选择员工姓名的第三个字母是a的员工姓名Select last_name||' '||first_name from employees where last_name||' '||first_name like '___a%';10.选择姓名中有字母a和e的员工姓名Select last_name||' '||first_name from employees where last_name||first_name like '%a%e%' or last_name||first_name like '%e%a%';多表查询11.显示所有员工的姓名,部门号和部门名称。
Oracle数据库试题100题(附答案)
Oracle数据库试题100题(附答案)1.当Oracle服务器启动时,下列哪种文件不是必须的(D)。
A.数据文件B.控制文件C.日志文件D.归档日志文件2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据(B)。
A.用户进程B.服务器进程C.日志写入进程(LGWRD.检查点进程(CKPT)3.在Oracle中,一个用户拥有的所有数据库对象统称为(B)。
A.数据库B.模式C.表空间D.实例4.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME V ARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名(C)。
A.SELECT name FROM teacher WHERE email = NULL;B.SELECT name FROM teacher WHERE email <> NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;5.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是(B)。
A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B6.在Windows操作系统中,Oracle的(A)服务监听并接受来自客户端应用程序的连接请求。
A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(B)表空间分配给用户作为默认表空间。
oracle数据库的试题及答案
oracle数据库的试题及答案### Oracle数据库试题及答案#### 一、选择题1. 在Oracle数据库中,哪个命令用于创建数据库表?- A. CREATE TABLE- B. DROP TABLE- C. ALTER TABLE- D. TRUNCATE TABLE答案:A2. 以下哪个选项不是Oracle数据库的SQL语句?- A. SELECT- B. UPDATE- C. DELETE- D. PRINT答案:D3. Oracle数据库中,用于删除表中所有数据的命令是什么? - A. DELETE FROM table_name- B. TRUNCATE TABLE table_name- C. DROP TABLE table_name- D. CLEAR table_name答案:B4. 在Oracle数据库中,哪个命令用于查看表的结构?- A. DESCRIBE table_name- B. EXPLAIN table_name- C. DESC table_name- D. SHOW table_name答案:C5. Oracle数据库中,哪个命令用于插入数据?- A. INSERT INTO- B. ADD INTO- C. PUT INTO- D. SET INTO答案:A#### 二、简答题1. 简述Oracle数据库的体系结构。
- Oracle数据库的体系结构主要包括内存结构和存储结构。
内存结构包括系统全局区(SGA)和程序全局区(PGA)。
存储结构包括数据文件、控制文件和重做日志文件。
SGA是所有数据库进程共享的内存区域,包含了数据库缓冲区、重做日志缓冲区等。
PGA是每个服务器进程或后台进程的私有内存区域。
2. 什么是PL/SQL?它在Oracle数据库中的作用是什么?- PL/SQL是Oracle数据库的过程式扩展,它允许用户定义存储过程、函数、触发器等。
PL/SQL结合了SQL语句和过程式编程的特性,使得数据库编程更加灵活和强大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)先显示所有雇员的部门名,员工名和工资:
select a1.ename,a1.sal,a2.dname,a1.deptno from emp a1,dept a2 where a1.deptno=a2.deptno;
(2)加条件限制显示最终结果:
(2)加限制条件:
select boss.ename,boss.empno,work.ename,work.sal,work.empno from work,boss where boss.empno=work.mgr and work.ename='FORD';
多表查询必须弄明白笛卡尔积:
(1) select ename,sal,deptno from emp where sal>any(select sal from emp where deptno=30);
或:
(2) select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30);
13.group by 用于对查询的结果进行分组统计。统计各部门,每个岗位的工资之和;
(1) select sum(sal),deptno,job from emp group by deptno,job
统计30号部门,每个岗位的工资之和;
(2)select sum(sal),deptno,job from emp group by deptno,job having deptno=30;
注:where?后的列如sal不能直接等于分组函数,Sal=max(sal)是错的。要解决此题就要用到子查询。
7.子查询(分步拆分思想):显示与smith同一部门的员工信息。?
(1)查询SMITH?所在的部门:
select deptno from emp where ename='SMITH'
对数据分组的总结:
1.分组函数只能出现在选择列表,having,order?by子句中。不能出现在如where?列名?=分组函数,不能做条件使用。
2.如果在select语句种同时包含group by,having,order by那么他们的顺序是group by,having,order by。
总结:一般查询语句涉及到函数的,有关小于最大,大于平均值,最小值这类的,要注意使用子查询。拆分思想很重要。
二:经典多表查询
1.显示雇员名,雇员工资以及所在部门的名称;(涉及到多表查询)
select a1.ename,a1.sal,a2.dname,a1.deptno from emp a1,dept a2 where a1.deptno=a2.deptno;
select a1.ename,a1.sal,a2.dname,a1.deptno from emp a1,dept a2 where a1.deptno=a2.deptno and a1.deptno=10;
3.显示各个员工的姓名,工资,及其工资级别。
select a1.ename,a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal;
(SMITH的记录也会显示出来)?
如果只想把除SMITH之外的记录显示出来:
?
select*from emp where(deptno,job)=(select deptno,job from emp where ename='SMITH') and ename<>'SMITH';
9.查询和10号部门的工作相同的雇员的名字,岗位,工资,部门号。
(1)部门10工作职位:
select distinct job from emp where deptno=10;
(2)显示最终结果:
select * from emp where job in (select distinct job from emp where deptno =10);
3.按照部门号升序而雇员的工资降序排列。(知道某个部门最高工资的员工最低工资的员工是谁。)
select * from emp order by deptno,sal desc;
4.使用列的别名排序按升序显示员工年薪信息:
select ename,(sal+nvl(comm,0))*12 年薪 from emp order by 年薪
比所有30号部
门员工的工资高。还有一种方法:查询条件大于30号部门的最大值即可如(3)?
(3)select ename,sal,deptno from emp where sal>(select max(sal)from emp where deptno=30);
11.显示工资比部门30的任意一个员工的工资高的员工姓名,工资和部门号。?再多行子查询中使用any操作符。
select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)>2000;这里deptno就一定要出现在group?by中。
4.在多表查询时要选择查询条件,否则会出现笛卡尔集,在进行n表查询时至少需要n-1个条件。
10.在多行子查询中使用all操作符。显示工资比部门30所有员工的工资高的员工姓名,工资和部门号?
(1)先查出来30号部门的工资:
select sal from emp where deptno =30;
(2)最终结果:
select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30);
如果查询的列涉及到A和B两张表,如果没有限制对等条件的话,那么A表的每一行与B表的所有行进行匹配,
这时会返回A.line*B.line行即A表的行数乘以B表的行数,加了查询限制条件之后就会只显示哪些符合条件的记录。
5.自连接:自连接是指在同一张表的连接查询。
如:显示”FORD”的上级领导的姓名
(1)显示各个员工对应的上级领导
select boss.ename,boss.empno,work.ename,work.sal,work.empno from work,boss where boss.empno=work.mgr
(2)显示:
select * from emp where deptno=(select deptno from emp where ename='SMITH');从后边向前进行筛选到结果。
8.查询与SMITH的部门和岗位完全相同的所有雇员的信息。
(1)首先查询SMITH所在的部门和岗位:
5.使用子查询。(分组函数:max,min,avg,sum,count.)
select min(sal),max(sal) from emp //在这里查询的列都必须是分组函数。
6.显示工资最高的员工信息:
select ename, sal from emp where sal=(select max(sal) from emp);
注意:用于分组统计的列必须要出现在查询的列表;having子句用于限制分组显示结果。
14.显示每个部门的平均工资和最高工资。group by用于对查询的结果分组统计。having子句用于限制分组显示结果,进一步筛选。
select avg(sal),max(sal),deptno from emp group by deptno;。//deptNO必须出现在列里面。
1.查询工资高于500或是岗位为manager的雇员的信息,同时还要满足他们的姓名首写字母为大写J:
select * from emp where (sal>500 or job='manager') and ename like 'J%';
2.按工资由低到高的顺序显示员工信息:
select * from emp order by sal asc;注:desc高到低;asc?低到高,升序这是默认的
select deptno,job from emp where ename='SMITH';
(2)显示最终结果:
select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');
4.显示雇员名,雇员工资及所在部门的名字,并按部门排序。
select ename,sal,dname from emp,dept where emp.deptno=dept.deptno order by dept.deptno;
注:group by 后的字段必须出现在select之后。但order by 不用。
15.显示每个部门的每个岗位的平均工资和最低工资。
select avg(sal),max(sal),deptno,job from emp group by deptno,job;
16.显示平均工资 avg(sal),deptno from emp group by deptno having avg(sal)<2000;
12.?显示工资高于平均工资的员工信息。
(1)先求出平均工资:
select avg(sal) from emp;