oracle操作题
- 格式:docx
- 大小:20.83 KB
- 文档页数:5
史上最全Oracle数据库基本操作练习题(含答案)oracle基本操作练习题使用表格:员工表(emp):部:(deptnonumber(2)notnull,--部门编号dnamevarchar2(14),--部门名称locvarchar2(13)―部门地址)注:添加、删除和修改相对简单。
这些练习旨在进行数据查询。
查询主要使用函数、运算符、模糊查询、排序、分组、变量关联、子查询、分页查询等。
建表脚本(根据需要使用):创建表脚本1练习:2.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)中选择*;3.统计各部门的薪水总和。
按deptno从empgroup中选择deptno,sum(sal);4.找出部门10中所有理(manager),部门20中所有办事员(clerk)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)或(jobnotin('manager','clerk')和sal>2000)中选择*;5.列出各种工作的最低工资。
从empgroupbyjob中选择job,min(sal);26.列出每个部门经理的最低工资。
selectdeptno,min(sal)fromempwherejob='manager'groupbydeptno;7.了解领取奖金的员工的不同工作。
9.找出各月最后一天受雇的所有员工。
选择*fromempwherehiredate=最后一天(hiredate);10.显示所有员工的姓名,首字母大写。
oracle期末考试试题及答案一、选择题(每题2分,共20分)1. Oracle数据库中,用于创建表的命令是:A. CREATE DATABASEB. CREATE TABLEC. CREATE INDEXD. CREATE VIEW答案:B2. 在Oracle中,哪个命令用于查询数据库中所有用户?A. SELECT * FROM USER_USERS;B. SELECT * FROM ALL_USERS;C. SELECT * FROM DBA_USERS;D. SELECT * FROM USER;答案:B3. 下列哪个选项不是Oracle数据库的存储结构?A. 数据块B. 区C. 段D. 表答案:D4. Oracle数据库中,哪个命令用于删除表?A. DROP TABLEB. REMOVE TABLEC. DELETE TABLED. DELETE FROM TABLE答案:A5. 在Oracle中,哪个命令用于添加列到已存在的表?A. ADD COLUMNB. ALTER TABLEC. MODIFY COLUMND. CHANGE COLUMN答案:B6. Oracle数据库中,哪个命令用于显示当前用户?A. SELECT USER FROM DUAL;B. SELECT CURRENT_USER FROM DUAL;C. SELECT USER FROM USER_USERS;D. SELECT USER FROM ALL_USERS;答案:B7. 在Oracle中,哪个命令用于创建索引?A. CREATE INDEXB. CREATE KEYC. CREATE TABLED. CREATE VIEW答案:A8. Oracle数据库中,哪个命令用于查询表结构?A. DESCRIBEB. DESCC. EXPLAIND. SELECT答案:A9. 在Oracle中,哪个命令用于删除索引?A. DROP INDEXB. REMOVE INDEXC. DELETE INDEXD. DROP KEY答案:A10. Oracle数据库中,哪个命令用于显示当前会话信息?A. SELECT * FROM V$SESSION;B. SELECT * FROM SESSION;C. SELECT * FROM CURRENT_SESSION;D. SELECT * FROM V$SESSION_INFO;答案:A二、填空题(每题2分,共20分)1. Oracle数据库中,用于创建视图的命令是________。
要求20道判断、20道单选选择10道多选7道问答3道编程,再加20道填空一、单项选择题(每题1分,共20分)1、在Oracle中,一个用户拥有的所有数据库对象统称为(B )A) 数据库B) 模式C) 表空间D) 实例2、在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(D)表空间分配给用户作为默认表空间。
A) USER B) SYS C) DEFAULT D) SYSTEM3、在oracle中获取前10条的关键字是(D)A) top B)Limit C)first D) rownum解释:top 是sql server数据库的关键字,limit 是mysql数据库的关键字,first是informix 数据库的关键字4、在Oracle中,( B)操作符返回并集操作并不包括重复行A) Intersect B) Union C) Union all D) Minus解释:Intersect返回交集,union返回并集,不包括重复行,union all 返回并集,包括重复行,minus返回差集5、下面那个语句是错误的(D)A) create synonym dept_synon for scott.deptB) create sequence dept_seque increment by 1C) alter sequence dept_seque increment by 2D) drop dept_synon6、oracle数据库中,通过( C)可以以最快的方式访问表中的一行。
A) 主键B) 唯一索引C) rowid D) 全表扫描7、下面那个不是oracle程序设计中的循环语句( A)A) for… end for B) loop…end loopC) while…end loop D) for… end loop8、oracle存储结构正确的是(B)A) tablespace--segment--osblock--blockB) tablespace--segment--extent--blockC) tablespace--extent--segment--blockD) tablespace--extent--block –segment9、若tnsnames.ora文件中部分配置如下:xfhtdb =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hello)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = scce)))则表明:( C)A) Oracle服务器所在的主机名为DEDICATEDB) Oracle服务器所在的主机名为scceC) 对应数据库的SID为scceD) 对应数据库的SID为xfhtdb10、现在要启动数据库,那么下面哪一个启动语句是错误的(A)A) STRATUP NORMAL B) STRATUP FORCEC) STRATUP NOMOUNT D) STARTUP MOUNT11、授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是:( C )A) GRANT CHANGE ON SCOTT.EMP TO SAB) GRANT UPDATE ON SCOTT.EMP(SAL) TO SAC) GRANT UPDATE(SAL) ON SCOTT.EMP TO SAD)GRANT MODIFY ON SCOTT.EMP TO SA12、一个表有百万以上数据,其中一个列经常被作为查询条件并且只有25个不同数据,适合使用(C)索引提高查询速度。
Oracle笔试题目带答案1.( )程序包用于读写操作系统文本文件。
(选一项)A、Dbms_outputB、Dbms_lobC、Dbms_randomD、Utl_file2.( )触发器允许触发操作的语句访问行的列值。
(选一项)A、行级B、语句级C、模式D、数据库级3.( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。
(选一项)A、控制文件B、参数文件C、数据文件D、可执行文件4.CREATE TABLE 语句用来创建(选一项)A、表B、视图C、用户D、函数5.imp命令的哪个参数用于确定是否要倒入整个导出文件。
(选一项)A、constranintsB、tablesC、fullD、file6.ORACLE表达式NVL(phone,'0000-0000')的含义是(选一项)A、当phone为字符串0000-0000时显示空值B、当phone为空值时显示0000-0000C、判断phone和字符串0000-0000是否相等D、将phone的全部内容替换为0000-00007.ORACLE交集运算符是(选一项)A、intersectB、unionC、setD、minus8.ORACLE使用哪个系统参数设置日期的格式(选一项)A、nls_languageB、nls_dateC、nls_time_zoneD、nls_date_format9.Oracle数据库中,通过()访问能够以最快的方式访问表中的一行(选一项)A、主键B、RowidC、唯一索引D、整表扫描10.Oracle数据库中,下面()可以作为有效的列名。
(选一项)A、ColumnB、123_NUMC、NUM_#123D、#NUM12311.Oracle数据库中,以下()命令可以删除整个表中的数据,并且无法回滚(选一项)A、dropB、deleteC、truncateD、cascade12.Oracle中, ( )函数将char或varchar数据类型转换为date数据类型。
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数据库的试题及答案一、选择题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笔试题及答案一、选择题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期末考试题及答案一、选择题(每题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试题及答案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); ```。
一、建表,修改表CREATE TABLE XSB(XH char(6) NOT NULL PRIMARY KEY,XM char(8) NOT NULL,XB char(2) DEFAULT '1' NOT NULL,CSSJ date NOT NULL,ZY char(12) NULL,ZXF n umber(2) NULL,BZ varchar2(200) NULL);CREATE TABLE KCB(KCH char(3) NOT NULL PRIMARY KEY,KCM char(16) NOT NULL,KKXQ number(1) NULL,XS number(2) NULL,XF number(1) NOT NULL);CREATE TABLE CJB(XH char(6) NOT NULL,KCH char(3) NOT NULL,CJ number(2) NULL,PRIMARY KEY(XH, KCH));二、查询1、列出XSB表中所有记录的XM、XB和ZY列。
2、显示所有的专业名称即不重复的专业列。
3、显示CJB表中成绩在60到80之间的所有记录。
4、显示CJB表中成绩为85,86或88的记录。
5、显示XSB表中“计算机”专业或性别为“女”的同学记录。
6、显示“计算机”专业的学生人数。
7、显示CJB表中的最高分的学生学号和课程号。
8、显示“212”号课程的平均分。
9、*显示CJB表中至少有5名学生选修的且课程号以“2”开头的课程的平均分数。
10、*显示最低分大于70,最高分小于90 的XH。
11、显示所有学生的XM、KCH和CJ列。
12、显示所有学生的XM、KCM和CJ列。
13、列出“计算机”专业所选课程的平均分。
14、显示成绩高于学号为“101101”、课程号为“101”的成绩的所有成绩记录。
15、显示出和学号为“101101”的同学同年出生的所有学生的XH、XM和CSSJ列。
16、显示“软件工程”课程的学生成绩。
17、*显示选修人数多于5人的课程名称。
18、*显示存在有85分以上成绩的课程号。
19、*显示“101”课程成绩高于“102”课程成绩的同学的学号、姓名和成绩。
select xsb.xh, xsb.xm , t1.cjfrom ( select * from cjb where kch = 101 ) t1, (select * from cjb where kch = 102 ) t2, xsb where t1.cj > t2.cj and t1.xh = t2.xh and t1.xh = xsb.xh ;Select cno sno,degree from scoreWhere cno=‘3-105’ and degree>ALL (select degree from scorewhere cno=‘3-245’) ;select cno dno,degreefrom scorewhere cno=’ 101’and degree >(select max(degree) from scorewhere cno=’102 ’);20、*列出没有学生选修的课程的基本信息。
select *from kcbwhere not exists(select *from xsbWhere xh in(select xh From cjb Where xsb.xh=cjb.xh));21、*检索所有学生都选修的课程名称。
select * from kcb where not exists ( select * from xsb where not EXISTS ( select * from cjb where xh = xsb.xh and kch = kcb.kch));22、*检索所选课程包含学生“101101”所选课程的学生学号。
select distinct xhfrom cjb t1where not exists( select * from cjb t2where t2.xh = 101101 andnot exists(select * from cjb t3 where t3.xh = t1.xh and t3.kch = t2.kch ));三、数据增删改1、往kcb表中添加一门课程信息(105,数据结构,2,80,5)insert into kcb(kch,kcm,kkxq,xs,xf)values(105,数据结构,2,80,5);2、每个学生都要选修数据结构(105),将选课信息加入到cjb表。
insert into cjb(xh,kch,cj) select xh,105,null from xsb;3、将“计算机”专业全体学生的102号成绩修改为空值。
update cjb set cj=null where xh in(select xh from xsb where zy='计算机') and kch='102';4、删除“通信工程”专业所有学生的选课记录。
delete from cjb where xh in(select xh from xsb where zy='通信工程')四、函数、存储过程和触发器1、在scott方案下创建函数cj_avg,要求输入课程编号作为参数,函数返回相应课程的平均成绩。
2、在scott中创建存储过程xs_avg,该存储过程包括一个输入参数,用于获取学号,一个输出参数用于返回指定学号的平均成绩。
3、在cjb表上创建一个触发器,当删除记录的时候,如果被删除的课程成绩低于60则不能删除该选课记录。
Create or replace trigger del_cjbefore delete on cjb for each rowwhen(old.cj<60)beginraise_application_error(-20000,”被删除的学生成绩低于60分”);end;4、在学生表(xsb)中创建触发器,要求新插入的学生记录的年龄不能超过现有学生的最大年龄。
Create or replace trigger ins_ageBefore insert on xsb on each rowDeclareTime date;BeginSelect min(ccsj) into timefrom xsb;if(:sj<time) thenraise_applicartion_error(-20001,”新插入的学生记录的年龄不能超过现有的最大年纪”); End;5、在cjb中创建触发器,当修改学生成绩时,成绩的变动不能超过10分,否则不允许修改。
create or replace trigger upda_cjafter update of cj on cjb for each rowwhen(old.cj>new.cj+10 or old.cj<new.cj-10)beginraise_application_error(-20001,'不能修改成绩');end;6、在xsb表中创建触发器,当删除学生记录的时候,如果该生有不及格选课记录,则不允许删除。
create or replace trigger del_xsbefore delete on xsb for each rowdeclarenum number;beginselect count(xh) INTO num from xsb,cjbwhere xsb.XH = cjb.XH and cj<60;group by xh;if num = 0 thenraise_application_error (-20000,'不允许删除');end if;end;7、在xsb表上创建触发器,禁止修改学生的学号。
create or replace trigger upda_xhbefore update of XH on xsb for each rowbeginraise_application_error(-20001,'不能修改学生学号');end;8、在cjb表上创建触发器,限制每个学生选课记录不能超过3.create or replace trigger ins_cjbbefore insert on cjb for each rowdeclarenum number;beginselect count(*) into numfrom cjbgroup by xh;if num>3 thenraise_application_error (-20001,'每个学生选课记录不能超过3个');end if;end;四、游标DECLAREv_xh char(6);v_zxf number(2);CURSOR XS_CUR3ISSELECT XH,ZXFFROM XSBWHERE ZY= '计算机';BEGINOPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh, v_zxf;WHILE XS_CUR3%FOUNDLOOPDBMS_OUTPUT.PUT_LINE (v_xh+v_zxf);FETCH XS_CUR3 INTO v_xh, v_zxf;END LOOP;CLOSE XS_CUR3;END;五、用户与权限管理1、使用sql语句创建用户2、给用户解锁3、给用户授权。