Oracle基础知识入职考试题
答案中下划线部分需要引起注意重点。
1、 数据库database:存放一系列数据的仓库。
2、 dos模式下数据库备份、恢复命令:exp help=y ,imp help=y 3、 主要表空间tablespace
系统表空间system:存放系统表
回滚段表空间undotbs1:处理回退数据,和commit、rollback相关。 临时表空间temp:存放临时结果。
用户表空间users:存放一般用户的表。
4、 sql语句的结束符合:每一条sql语句用“;”结束而不是换行符。 5、 sql语句的字符串符号:字符串使用单引号而不是双引号。 6、 sql语句的注释采用字符:两个相连的减号“--” 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、 创建学生表student(后面的提到表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都是指这个表),列有学号、课程号、成绩,
主键为学号、课程号
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、 索引分哪两种,说明各自不同
唯一索引:索引列所有值都是唯一的。 重复索引:索引列的值可以有重复。
1
18、 为表student的列“姓名”创建一个重复索引i_student_name
create index i_student_name on student(姓名);
19、 为表student的列“身份证编号”创建一个唯一索引i_student_name
create unique index i_student_id on student(身份证编号);
20、 在建表时,系统会自动用主键建立一个唯一索引,索引名是随机产生,写出创建student的主键索引语句
create unique index sys0001 on student(学号);--这个语句是由系统自动完成,用户不用自己创建。
21、 写出创建student_course的主键索引语句
create unique index sys0001 on student_course(学号,课程号);
22、 用户user
每一个表都属于一个用户,一个用户可以拥有多个表。 建用户时需要指定默认表空间用来存放该用户的表。 使用用户名/密码登入系统后才可操作数据库。
23、 用户分哪两种:用户分为dba、普通用户。
24、 dba用户特权:数据库的最高权限,配置数据库参数 25、 权限
权限分为系统权限、对象权限
系统权限:配置数据库参数、创建表空间、创建/修改/删除用户。
对象权限:访问其他用户的表(或者视图)权限。有select、update、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, create table, create view , create procedure,create trigger to user01 ;30、 修改用户user01密码为345
alter user user01 identified by 345;
31、 用户user01登入系统,查询用户user02的表student所有数据
select * from user02.student; --*代表所有列
32、 将自己的表student的查询权限授权给用户user01
grant select on student to user01;
33、 将自己的表student的修改权限授权给用户user01
grant update on student to user01;
34、 将自己的表student的删除权限授权给用户user01
grant delete on student to user01;
35、 将自己的表student的插入权限授权给用户user01
grant insert on student to user01;
36、 将上面select/update/delete/insert权限从用户user01撤销
revoke select on student from user01; revoke update on student from user01; revoke delete 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;
2
39、 将自己的表student的删除权限授权给所有人
grant delete on student to public;
40、 将自己的表student的插入权限授权给所有人
grant insert on student to 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、 授权查询所有用户的所有表的权限给user01
grant select any table to user01;
43、 授权修改所有用户的所有表的权限给user01
grant update any table to user01;
44、 授权删除所有用户的所有表中数据的权限给user01
grant 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_female
create view student_male as select * 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作用
rollback就是将上次rollback或者commit之后通过数据操纵语言对数据进行的修改全部作废。 51、 commit作用
commit就是将上次rollback或者commit之后通过数据操纵语言对数据进行的修改全部写入数据库。
52、 为什么对数据每次操作不是立刻写入库,而是通过commit才会写入正式库。
使用数据操作语言对数据进行操作,操作结果临时放在回滚段中,只到遇到commit才会一次写入正式库中,目的是为了保证数据的一致性,避免对数据操作没有完成前,出现中断,造成数据不一致。
53、 对表student插入一行数据,学号:2012010101,姓名:张三,出生日期:1990-9-1,身份证编号
370111201201012345
insert into student(学号,姓名,出生日期,身份证编号)
values(’2012010101’,’张三’,date’1990-9-1’,’370111201201012345’);
54、 对表student_course插入一行数据的标准写法和省略写法,学号:2012010101,课程号:100001,成绩:90
insert into student_course(学号, 课程号, 成绩)
values(’2012010101’,’100001’,90); insert into student_course
values(’2012010101’,’100001’,90);
55、 删除表student全部数据
delete from student;
56、 删除表student学号为2012010101数据
delete from student where学号=‘2012010101’;
3
57、 删除表student前100行男生的数据
delete from student where性别=’男’ and rownum<=100;
58、 查询student中所有数据标准写法和简单写法
select 学号,姓名,年龄,出生日期,身份证编号,院系名称 from student; select * from student;
59、 查询student中所有学生的院系名称、学号、姓名,按院系名称排序逆序、然后按学号排序
select 学号,姓名 from student order by院系名称desc,学号;
60、 查询大于等于20岁男同学或者所有的女同学的所有信息,按年龄排序
select * from student where (性别=’男’ and 年龄>=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 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中各个年龄及人数
select 年龄,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,age1<>ag3的值
null,null,假,假
注:空值没有大小,自然不能进行大于、小于、等于运算。 而只能进行is null,is not null的判定
69、 查询所有年龄为空的前100个学生的序号、学号、姓名
select rownum,学号,姓名 from student where 年龄 is null and rownum <=100;
70、 select * from student_course where 学号 in (select 学号 from student where 性别=’女’)将in改成
exists
select * from student_course t1 where exists(select * from student where 性别=’女’ and t1.学号=学号)
71、 select * from student_course where 学号 not in (select 学号 from student where 性别=’女’)将in
改成exists
select * from student_course t1 where not exists(select * from student where 性别=’女’ and t1.学号=学号)
72、 利用student、student_course查询男学生的学号、姓名、课程号、成绩
select t1.学号,t1.姓名,t2.课程号,t2.成绩 from student t1,student_course t2
where t1.学号=t2.学号 and t1.性别=’男’;
73、 查询平均成绩大于60的学号、总成绩
select 学号,sum(成绩) from student_course group by 学号 having avg(成绩)>=60;
4
74、 union用法:从student、student1中查询男生的学号、姓名,并剔除重复的记录
select 学号,姓名 from student where 性别=’男’ union
select 学号,姓名 from student1 where 性别=’男’
75、 union all用法:从student、student1中查询男生的学号、姓名,不剔除重复的记录
select 学号,姓名 from student where 性别=’男’ union all
select 学号,姓名 from student1 where 性别=’男’
76、 将身份证编号为18位的学生的出生日期设置成身份证编号中日期
update student set 出生日期=to_date(substr(身份证编号,7,8),‘yyyymmdd’)
where length(身份证编号)=18;
77、 将出生日期不为空的学生的年龄根据出生日期及当前机器时间进行设置
update student set 年龄= extract(year from sysdate) -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、 剔除院系名称中的空格
update student set 院系名称=replace(院系名称,’ ‘,’’) where substr(学号,1,4)=’2020’;
81、 将院系名称长度小于3的后面,增加上“学院”两个字
update student set 院系名称=院系名称||’学院‘ where length(院系名称)<3;
82、 和珅选状元,姓名中不能够有“刘、墉”任何一个字,而且要有“钱”也要有“权”,将这些学生的所有选课的
成绩赋值100。
update student_course set 成绩=100 where 学号 in
(select 学号 from student
where 姓名 not like ‘%刘%’ and 姓名 not like ‘%墉%’ and 姓名 like ‘%钱%’and姓名 like ‘%权%’;
83、 根据student中姓名设置student_course中新增加的列姓名
update student_course t1
set 姓名=(select 姓名 from student t2 where t1.学号=t2.学号);
84、 根据student_course中成绩统计student中新增加总成绩、平均成绩,条件是只统计有选课的学生
update student t1
set (总成绩,平均成绩)
=(select sum(成绩),avg(成绩) from student_course t2 where t1.学号=t2.学号)
where 学号 in (select 学号 from student_course)
85、 将student中所有数据备份到表studentback中
create table studentback as select * from student;
86、 查询大于20岁男同学或者小于20岁的女同学的学号、姓名,将查询结果创建成表student1
create table student1 as
select 学号,姓名 from student
where (性别=’男’ and 年龄>20) or (性别=’女’ and 年龄<20);
5
87、 将student、student_back结构相同,将student全部数据插入到student_back中
insert into student_back select * from student;
88、 将student、student_back结构相同,将student中男同学的学号、姓名、身份证号码插入到student_back中
insert into student_back (学号,姓名,身份证号码)select 学号,姓名,身份证号码 from student;
89、 函数instr,instr(‘1234567’,’45’) , instr(‘45’,’1234567’) ,instr(‘1234567’,’57’)返回
结果分别是 4,0,0
90、 函数replace,replace(‘1234512345’,’4’,’AB’),replace(‘1234512345’,’3’,’’)返回结果分别
是
123AB5123AB5,12451245
91、 函数substr,substr(‘ABCDEFGIH’,3,3),substr(‘ABCDEFGH’,5)返回结果
CDE,EFGH
92、 函数to_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,4
94、 函数to_date,将字符串‘20120101’转换成日期
to_date(‘20120101’,’yyyymmdd’)
95、 函数时间trunc,当前时间为2010-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:00
96、 函数trunc,round,trunc(123.56,0),trunc(123.56,1),round(123.56,0),round(123.56,1)返回结果
123, 123.5, 124, 123.6
97、 函数nvl,age1的内容为null,age2内容为20,表达的nvl(age1,0)+100+nvl(age2,0)的值
120
98、 将字符串‘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, sysdate+1/24/60/60*6
101、 利用系统视图tab,通过sql生成批量删除自己所有表中数据的truncate命令,按表名排序
select ‘truncate table ’ || tname || ‘;’ from tab order by 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;
6
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育ORACLE入职考试题及答案 全文阅读和word下载服务。
相关推荐: