Loading... # Oracle复习整理 ## 理论题 1. **关于数据控制语言中,收回所授予的权限的语句是( )。** 答:revoke - GRANT 授予权限 - REVOKE 撤销已授予的权限 2. **ORACLE中 char类型与varchar2类型的区别,描述正确的是( )** 答:char 为定长字符数据类型;varchar2为不定长数据类型 - VARCHAR2(length)字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。 - varchar是标准sql里面的。varchar2是oracle提供的独有的数据类型。varchar存放固定长度的字符串,最大长度是2000,varchar2是存放可变长度的字符串,最大长度是4000 3. **以下权限中,不属于表权限的是? ()** A、Insert B、update C、delete ==D、exec== - `exec <producer>`用来执行存储过程 - 表的基本操作,到下面实验代码中说明 4. **下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表( )。** ==A、授予了CONNECT的角色,但没有授予RESOURCE的角色== B、没有授予用户系统管理员的角色 C、数据库实例没有启动 D、数据库监听没有启动 - CONNECT角色:connect角色是Oracle用户的基本角色,connect权限代表着用户可以和Oracle服务器**进行连接**,**建立session**(会话) - RESOURCE角色:resouce角色是开发过程中常用的角色。RESOURCE给用户提供了**可以创建自己的对象**,包括:表、视图、序列、过程、触发器、索引、包、类型等。 - DBA角色:DBA角色是**管理数据库管理员**该有的角色。它拥护系统了所有权限,和给其他用户授权的权限。SYSTEM用户就具有DBA权限。 5. **向t_student表中添加一列f_address varchar2(50),下列语句正确的是? ()** `ALTER TABLE t_student Add f_address varchar2(50)` 添加字段:`ALTER TABLE <表名> ADD <字段名> <数据类型>` 6. **order by子句仅对检索数据的显示有影响,并不改变表中行的内部顺序。** 答:正确 7. **在Oracle查询的结果中,要将表userInfo中的userName字段用别名 “用户名”显示,请选择错误的语句( )。** A、`SELECT 用户名 = userName FROM userInfo` B、`SELECT userName AS 用户名 FROM userInfo` C、`SELECT userName = 用户名 FROM userInfo` D、`SELECT username 用户名 FROM userInfo` 答:AC,注意是错误的一项 正确写法:`SELECT <字段名> (AS) <别名> FROM <表名>` 8. **在Oracle中,有一个教师表teacher的结构如下:** **ID NUMBER(5) NAME VARCHAR2(25) EMAIL VARCHAR2(50)** **下面哪个语句显示没有Email地址的教师姓名()。** 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;` 答:C,这里是是条件查询 1. 关系运算符 - Oracle中的关系运算符:`>`、`>=`、`<`、`<=`、`!=(<>)`、`=` - Oracle中的逻辑运算符:`&&(AND)`、`||(OR)`、`!(NOT)` - 在逻辑表达式中,我们一般使用英文表示,如`AND`/`OR`/`NOT`。 2. 条件查询 - 带关系运算符和逻辑运算符的表达式 - 带`between...and`关键字的条件数据查询 - 使用`is null`关键字的条件数据查询 - 使用`in`关键字的条件数据查询 - 带`like(模糊查询)`关键字的条件数据查询 9. **下列不属于Oracle数据库数据类型的是( )** A、NUMBER B、FLOAT C、CLOB ==D、BOOLEAN== Oracle数据类型: 1. 字符串: **VARCHAR2**(length),**VARCHAR**(length) 2. 数值类型: **NUMBER(a,b)**(整数,浮点数,a表示有效数字位数,b表示小数位的位数),**INTEGER**(等同于NUMBER(38,0),用来存储整数) 3. 日期类: **DATE**(存储日期和时间),**TIMESTAMP**(还存储了时区) 4. 其他类型: **CLOB**(大字段类型),**BLOB**(二进制类型) 10. **在Oracle中, 获得当前系统时间的查询语句是:( )。** 答:`select sysdate from dual` 11. **Oracle数据库中,连接字符串的运算符是( )。** 答:`||` 12. **将字符串转换为日期类型的转换函数是( )。** 答:`to_date()` 13. **关于通配符中的“%”,以下说法正确的是( )。** A、代表任意一个字符,与like结合使用。 ==B、代表任意多个字符,与like结合使用。== C、代表任意一个字符,在like后的表达式中只能使用一次“%”。 ==D、代表任意多个字符,在like后的表达式中可以使用多次“%”。== 答:BD 14. **在Oracle中,使用HAVING子句也可以进行条件查询,以下选项说法是正确的是( )。** A、HAVING子句和WHERE子句相同 B、HAVING子句用于行的条件查询 ==C、HAVING子句用于已分组结果的条件查询== D、以上皆非 答:C 15. 在oracle中获取前10条的关键字是( )。 答:rownum - `ROWID`是表中行的存儲地址,该地址可以唯一标识数据库中的一行,可以使用ROWID伪列快速定位表中的一行 - `ROWNUM`是查询返回的结果集中行的序号,可以使用它来**限制查询返回的行数** ```sql --查询工资最低的四位(正确写法) select m.* from ( select t.*, rownum from stuinfo t order by t.salary asc) m where rownum<=4; ``` 16. **Oracle数据库中返回字符串长度的函数是( )。** 答:`length()`   17. **如果要统计表中有多少行记录,应该使用下列哪个聚合函数?( )** A、SUM函数 B、AVG函数 ==C、COUNT函数== D、MAX函数 答:C 18. **为了去除结果集中的重复行,可以在SELECT中使用下列哪个关键字?( )** A、ALL ==B、DISTINCT== C、UPDATA D、MERGE 答:B 19. **在Oracle中,下面哪条语句当COMM字段为空时显示0,不为空时显示COMM的值()。** A、SELECT ename, NVL(comm, 0) FROM emp; B、SELECT ename, NULL(comm, 0) FROM emp; C、SELECT ename, NULLIF(comm, 0) FROM emp; D、SELECT ename, DECODE(comm, NULL, 0) FROM emp; 答:A - `nvl(string,replace_with)`:不为空时为本身,为空时为指定值 **[重点]** - `nvl2(e1,e2,e3)`:不为空时指定值e2,为空时指定值e3; - `NullIF(a,b)`:相等时为空,否则为前者; 20. **‘_P%’表示( )。** 答:第二个字母是P 21. **在Oracle中,下述( )命令会使挂起的事务完成。** 答:`COMMIT` 22. 若要删除book表中所有数据,以下语句错误的是( )。 A、truncate table book B、drop table book C、delete from book D、delete * from book 答:BD 23. 下列关于视图的说法中,正确的是( )。 A、视图是一种查看数据表中数据的方式 B、视图就是真实的表 C、视图是从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表 D、可以将复杂的查询保存为视图,对最终用户屏蔽一定的复杂性。 答:ACD 24. **在视图中并不保存任何数据,通过视图操作的数据仍然保存在表中( )。** 答:正确 25. **在PL/SQL块中定义一个名为PI值为3.14的常量的语法是( )。** 答:`PI Constant number:=3.14` 26. **下面那个不是oracle程序设计中的循环语句( ) 。** A、for… end for B、loop…end loop C、while…end loop D、for… 答:A - 基本LOOP循环,while循环,for循环,嵌套循环 ```sql # Loop循环 LOOP Sequence of statements; END LOOP; # while..loop循环 WHILE condition LOOP sequence of statements; END LOOP; # for...loop循环 FOR counter IN initial_value .. final_value LOOP sequence of statements; END LOOP; # 嵌套循环 LOOP Sequence of statements1; LOOP Sequence of statements2; END LOOP; END LOOP; ``` 27. **在Oracle中,关于PL/SQL下列描述正确的是( )。** A、PL/SQL代表Power Language/SQL B、PL/SQL未提供boolean数据类型 C、PL/SQL块包括声明部分、可执行部分和异常处理部分 D、子程序参数的模式只有IN和OUT两种模式 答:C 28. **过程是一组为了完成特定功能的符合数据库脚本规范的程序,经编译后存储在数据库中,然后由一个应用程序或其他PL/SQL程序调用。** 答:正确 29. **存储过程语法中可选参数列表包含参数的名称,模式和类型,以及参数取值范围。** 答:错误 - 可选参数列表包含参数的名称,模式和类型。IN表示将从外部传递的值,OUT表示将用于返回过程外的值的参数。 - 存储过程参数**不带取值范围** 30. **下列哪个动作不会激发一个触发器?( )。** A、更新数据 ==B、查询数据== C、删除数据 D、插入数据 答:B ## 实验题 ### 实验二 1. 创建用户并指定表空间 ```sql SQL> create user wangxingju identified by 123456; SQL> alter user wangxingju default tablespace wangxingju_tablespace; ``` 2. 授予权限 ```sql grant connect,resource to wangxingju; ``` ### 实验三 1. 创建表 例:科目表,包含字段:课程编号、课程名字、教师编号 ```sql CREATE TABLE WANGXINGJU."crouse" ( "c_id" NUMBER, "c_name" VARCHAR2(50), "t_id" NUMBER, PRIMARY KEY ( "c_id" ), CONSTRAINT "t_id" FOREIGN KEY ( "t_id" ) REFERENCES "WANGXINGJU"."teacher" ( "t#" ) ON DELETE SET NULL ) ``` 2. 修改表 ```sql # 修改学生信息表名student_info为s_information ALTER TABLE "WANGXINGJU"."student_ info" RENAME TO "s_ information"; # 在学生信息表添加地址字段 ALTER TABLE "WANGXINGJU"."S_information" ADD ("address" VARCHAR2(100)); # 将地址字段的数据类型修改成VARCHAR2 AlTER TABLE "WANGXINGJU"."S_information" MODIFY ("address" VARCHAR(100 BYTE)); ``` 3. 数据操作 ```sql # 测试数据:学号:20202202,姓名:测试,年龄:20,性别:男,地址:4号楼511 INSERT INTO "WANGXINGJU". "s_ information" ("s_ id", "S_ name", "age", "gender", "address") VALUES(20202202,'测试', 20,'男','24号楼511'); # 修改姓名:张三,年龄:19 UPDATE "WANGXINGJU"."s_ information" SET "s_name"='张三',"age"=19 WHERE "s_name"='李四' # 删除 DELETE FROM "WANGXINGJU"."s_information" WHERE "s_name" = '张三' ``` ### 实验四 直接贴实验报告了 <iframe src="https://onedrive.live.com/embed?cid=FECD80CE4F909A96&resid=FECD80CE4F909A96%2144073&authkey=ADQL_mKmvSDxkGs&em=2" width="100%" height="500" frameborder="0" scrolling="no"></iframe> ### 实验五 <iframe src="https://onedrive.live.com/embed?cid=FECD80CE4F909A96&resid=FECD80CE4F909A96%2144074&authkey=AIgSt7k1d0eQMEg&em=2" width="100%" height="500" frameborder="0" scrolling="no"></iframe> ### 实验六 <iframe src="https://onedrive.live.com/embed?cid=FECD80CE4F909A96&resid=FECD80CE4F909A96%2144075&authkey=AK7st1xwhdJRTOY&em=2" width="100%" height="500" frameborder="0" scrolling="no"></iframe> ### 实验七 <iframe src="https://onedrive.live.com/embed?cid=FECD80CE4F909A96&resid=FECD80CE4F909A96%2144076&authkey=ADsdHboEqKrc5Nc&em=2" width="100%" height="500" frameborder="0" scrolling="no"></iframe> 最后修改:2022 年 12 月 08 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏