《ORACLE入职考试题及答案.doc》由会员分享,可在线阅读,更多相关《ORACLE入职考试题及答案.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle基础知识入职考试题答案中下划线部分需要引起注意重点。1、 数据库database:存放一系列数据的仓库。2、 dos模式下数据库备份、恢复命令:exp help=y ,imp help=y3、 主要表空间tablespace系统表空间system:存放系统表回滚段表空间undotbs1:处理回退数据,和commit、rollback相关。临时表空间temp:存放临时结果。用户表空间users:存放一般用户的表。4、 sql语句的结束符合:每一条sql语句用“;”结束而不是换行符。5、 sql语句的字符串符号:字符串使用单引号而不是双引号。6、 sql语句的注释采用字符:两个相连的减
2、号“-”7、 表 table表是数据库中存放数据的最小单位,表有行、列组成。表名由字母、下划线、数字组成。8、 表主键:由一个或者几个列组成,它的值用于唯一地标识表中的某一行数据。9、 列column的属性及每个属性的说明列名、列类型、列长度、是否可以为空(not null)列名是字母、汉字、下划线、数字组成。常用类型有:char、varchar、date、int、numeric、blob。10、 char(5)、varchar(5)的区别列类型为char(5)时,插入数据不足5位,后面自动补空格。列类型为varchar(5)时,插入数据不足5位,后面不会补空格。11、 创建学生表studen
3、t(后面的提到表student都是指这个表),列有学号、姓名、年龄、出生日期、身份证编号照片,主键为学号create table student(学号 char(10) not null,姓名 varchar(20) not null,年龄 int,出生日期 date,身份证编号 varchar(18) not null,院系名称 varchar(20), -注意:考试时不要忘记这个逗号primary key (学号);-注意:考试时不要忘记每句话后面的分号12、 创建学生选课表student_course(后面的提到表student_course都是指这个表),列有学号、课程号、成绩,主键为
4、学号、课程号create table student_course(学号 char(10) not null,课程号 char(6) not null,成绩 numeric(4,1),primary key (学号,课程号);13、 删除用户user01的表student的命令drop table user01.student;14、 快速删除表student中的数据的命令truncate table student;15、 索引index的作用:提高查询速度。16、 索引根据几个列:一个或者几个列17、 索引分哪两种,说明各自不同唯一索引:索引列所有值都是唯一的。重复索引:索引列的值可以有重
5、复。18、 为表student的列“姓名”创建一个重复索引i_student_namecreate index i_student_name on student(姓名);19、 为表student的列“身份证编号”创建一个唯一索引i_student_namecreate unique index i_student_id on student(身份证编号);20、 在建表时,系统会自动用主键建立一个唯一索引,索引名是随机产生,写出创建student的主键索引语句create unique index sys0001 on student(学号);-这个语句是由系统自动完成,用户不用自己创建。
6、21、 写出创建student_course的主键索引语句create unique index sys0001 on student_course(学号,课程号); 22、 用户user每一个表都属于一个用户,一个用户可以拥有多个表。建用户时需要指定默认表空间用来存放该用户的表。使用用户名/密码登入系统后才可操作数据库。23、 用户分哪两种:用户分为dba、普通用户。24、 dba用户特权:数据库的最高权限,配置数据库参数25、 权限权限分为系统权限、对象权限系统权限:配置数据库参数、创建表空间、创建/修改/删除用户。对象权限:访问其他用户的表(或者视图)权限。有select、update、
7、delete、insert权限。26、 dba用户能够访问哪些表(或者视图)可以访问数据库中任何表(或者视图),即使其他用户没有授权。27、 普通用户能够访问哪些表自己的表(或者视图)。其他用户授权给你的表(或者视图)。28、 创建用户user01,初始密码123,默认表空间users,使用表空间users无限额create user user01 identified by 123 default tablespace users quota unlimited on users;29、 给用户user01授权会话、建表、建视图、建过程、建触发器的权限grant create session
8、, create table, create view , create procedure,create trigger to user01 ;30、 修改用户user01密码为345alter user user01 identified by 345;31、 用户user01登入系统,查询用户user02的表student所有数据select * from user02.student; -*代表所有列32、 将自己的表student的查询权限授权给用户user01grant select on student to user01;33、 将自己的表student的修改权限授权给用户us
9、er01grant update on student to user01;34、 将自己的表student的删除权限授权给用户user01grant delete on student to user01;35、 将自己的表student的插入权限授权给用户user01grant insert on student to user01;36、 将上面select/update/delete/insert权限从用户user01撤销revoke select on student from user01;revoke update on student from user01;revoke de
10、lete on student from user01;revoke insert on student from user01;37、 将自己的表student的查询权限授权给所有人grant select on student to public;38、 将自己的表student的修改权限授权给所有人grant update on student to public;39、 将自己的表student的删除权限授权给所有人grant delete on student to public;40、 将自己的表student的插入权限授权给所有人grant insert on student t
11、o public;41、 将上面select/update/delete/insert权限从所有人撤销revoke select on student from public;revoke update on student from public;revoke delete on student from public;revoke insert on student from public;42、 授权查询所有用户的所有表的权限给user01grant select any table to user01;43、 授权修改所有用户的所有表的权限给user01grant update any
12、 table to user01;44、 授权删除所有用户的所有表中数据的权限给user01grant delete any table to user01;45、 上面三种授权的撤销revoke select any table from user01;revoke update any table from user01;revoke delete any table from user01;46、 视图:视图是一个虚拟表,其内容由查询定义。47、 根据表student,创建一个只有女生信息的视图student_femalecreate view student_male as selec
13、t * from student where 性别=女;48、 如何实现让用户user01只能查询student中的男生的学号、姓名create view student_male as select 学号、姓名 from student where 性别=男;grant select on student_male to user01;49、 rollback、commit对什么语句有效,对什么语句无效对数据操纵语言delete、insert、update有效。对数据定义语言create table、drop table、truncate table等无效。50、 rollback作用 ro
14、llback就是将上次rollback或者commit之后通过数据操纵语言对数据进行的修改全部作废。51、 commit作用commit就是将上次rollback或者commit之后通过数据操纵语言对数据进行的修改全部写入数据库。52、 为什么对数据每次操作不是立刻写入库,而是通过commit才会写入正式库。使用数据操作语言对数据进行操作,操作结果临时放在回滚段中,只到遇到commit才会一次写入正式库中,目的是为了保证数据的一致性,避免对数据操作没有完成前,出现中断,造成数据不一致。53、 对表student插入一行数据,学号:,姓名:张三,出生日期:1990-9-1,身份证编号insert
15、 into student(学号,姓名,出生日期,身份证编号)values(,张三,date1990-9-1,);54、 对表student_course插入一行数据的标准写法和省略写法,学号:,课程号:,成绩:90insert into student_course(学号, 课程号, 成绩)values(,,90);insert into student_coursevalues(,,90);55、 删除表student全部数据delete from student;56、 删除表student学号为数据delete from student where学号=;57、 删除表student前
16、100行男生的数据delete from student where性别=男 and rownum=20) or 性别=女order by 年龄;61、 查询没有选课的大于20岁的男同学的所有信息select * from student where (性别=男 and 年龄20) and 学号 not in (select 学号 from student_course);62、 和珅选学生,姓名中不能够有“刘、墉”任何一个字,但是有“钱”或者“权”的也可以,查询符合条件的学生信息。select * from student where (姓名 not like %刘% and 姓名 not
17、like %墉% ) or姓名 like %钱% or姓名 like %权%;63、 查和珅选学生,姓名中不能够有“刘、墉”任何一个字,但是如果有“钱”也有“权”的也可以,查询符合条件的学生信息。select * from student where (姓名 not like %刘% and 姓名 not like %墉% ) or (姓名 like %钱% and姓名 like %权%);64、 查询student中男学生最大年龄、最小年龄是多少select max(年龄) ,min(年龄) from student where 性别=男;65、 查询student中各个年龄及人数selec
18、t 年龄,count(年龄) from student group by 年龄;66、 查询student_course中每个学号的总成绩、平均成绩,并定义别名select 学号,sum(成绩) 总成绩,avg(成绩) 平均成绩 from student_course group by 学号;67、 查询 student中所有院系名称并剔除重复记录 select distinct 院系名称 from student;68、 age1、age2的内容为null,age3内容为20,表达的age1+100,age2+age3,age1=age3,age1ag3的值null,null,假,假注:空值
19、没有大小,自然不能进行大于、小于、等于运算。而只能进行is null,is not null的判定69、 查询所有年龄为空的前100个学生的序号、学号、姓名select rownum,学号,姓名 from student where 年龄 is null and rownum =60;74、 union用法:从student、student1中查询男生的学号、姓名,并剔除重复的记录select 学号,姓名 from student where 性别=男unionselect 学号,姓名 from student1 where 性别=男75、 union all用法:从student、stude
20、nt1中查询男生的学号、姓名,不剔除重复的记录select 学号,姓名 from student where 性别=男union allselect 学号,姓名 from student1 where 性别=男76、 将身份证编号为18位的学生的出生日期设置成身份证编号中日期update student set 出生日期=to_date(substr(身份证编号,7,8),yyyymmdd) where length(身份证编号)=18;77、 将出生日期不为空的学生的年龄根据出生日期及当前机器时间进行设置update student set 年龄= extract(year from sys
21、date) -extract(year from 出生日期) where 出生日期 is not null;78、 所有年龄不为空值的男学生年龄增加一岁,出生日期增加365天update student set 年龄=年龄+1, 出生日期=出生日期+365 where 性别=男 and年龄 is not null;79、 输入数据时粗心将部分学生的学号的开始4位“2010”输成“2020”,解决办法update student set 学号=2010 | substr(学号,5,6)- |用来连接两个字符串where substr(学号,1,4)=2020;80、 剔除院系名称中的空格upda
22、te student set 院系名称=replace(院系名称, ,)where substr(学号,1,4)=2020;81、 将院系名称长度小于3的后面,增加上“学院”两个字update student set 院系名称=院系名称|学院where length(院系名称)20) or (性别=女 and 年龄20);87、 将student、student_back结构相同,将student全部数据插入到student_back中insert into student_back select * from student;88、 将student、student_back结构相同,将st
23、udent中男同学的学号、姓名、身份证号码插入到student_back中insert into student_back (学号,姓名,身份证号码)select 学号,姓名,身份证号码 from student;89、 函数instr,instr(,45) , instr(45,) ,instr(,57)返回结果分别是4,0,090、 函数replace,replace(,4,AB),replace(,3,)返回结果分别是123AB5123AB5,91、 函数substr,substr(ABCDEFGIH,3,3),substr(ABCDEFGH,5)返回结果CDE,EFGH92、 函数to
24、_char,将当前系统时间转化成如2012-01-01 23:10:10格式串函数to_char(sysdate,yyyy-mm-dd hh24:mi:ss) -sysdate返回当前系统时间的伪列93、 函数to_char,length,length(to_char(123,99999), length(to_char(123,00000), length(to_char(123,FM9999), length(to_char(123,FM0000)返回结果6,6,3,494、 函数to_date,将字符串转换成日期to_date(,yyyymmdd)95、 函数时间trunc,当前时间为2
25、010-3-4 21:34:56,trunc(sysdate,yyyy) ,trunc(sysdate,dd) ,trunc(sysdate,hh) ,trunc(sysdate,mi)结果2010-1-1 00:00:00,2010-1-2 00:00:00,2010-1-1 21:00:00,2010-1-1 21:34:0096、 函数trunc,round,trunc(123.56,0),trunc(123.56,1),round(123.56,0),round(123.56,1)返回结果123, 123.5, 124, 123.697、 函数nvl,age1的内容为null,age2
26、内容为20,表达的nvl(age1,0)+100+nvl(age2,0)的值12098、 将字符串123转换成数值的函数, 剔除字符串A B C 中的空格的函数,剔除字符串A B C 前后空格的函数to_number(123) ,replace(A B C , ,) ,trim(A B C , ,)99、 函数last_day,求当前时间这个月的天数extract(day from last_day(sysdate)100、 系统时间增加3天,系统时间增加4小时,时间增加5分钟,时间增加6秒钟sysdate+3,sysdate+1/24*4, sysdate+1/24/60*5, sysdat
27、e+1/24/60/60*6101、 利用系统视图tab,通过sql生成批量删除自己所有表中数据的truncate命令,按表名排序select truncate table | tname | ; from tab orderby tname;102、 利用系统视图all_tables,通过sql生成批量删除所有用户的表名叫TEST表的drop命令,按用户排逆序select drop table | owner | . | table_name | ; from all_tables where table_name=TEST order by owner desc;103、 派生表,财富表FORTUNE(姓名、资金额),富豪排行榜前十名的排名、姓名、资金额select rownum,姓名,资金额 from (select姓名,资金额 from fortune order by 资金额 desc) -查询结果作为表使用就是派生表where rownum=10;