郭云飞_模式对象和用户权限管理


1.索引,写出相应SQL命令。
创建student1表,并为student1表建立主键。(“student1”的结构与“a_db.学生”表一样)
 create table student1
(学号 varchar(4) not null,
 姓名 varchar(4 char) not null,
 性别 varchar(1 char) not null,
 专业 varchar(10 char) not null,
 注册日期 date,
 状态 varchar(8),
 primary key(学号));
为student1表的“姓名”创建索引,索引名为“DX1_01”。
 create index DX1_01 on student1(姓名);
为student1表的“注册日期”创建索引,并以降序排列,索引名为“DX1_02”。
 create index DX1_02 on student1(注册日期 desc);
为student1表的“性别”创建位图索引,索引名为“student_gender_index”。
 create bitmap index student_gender_index on student1(性别);
为student1表的“性别”与“姓名”创建组合索引,索引名为“DX1_03”。
 create index DX1_03 on student1(性别,姓名);
利用数据字典视图USER_INDEXES、USER_IND_COLUMNS查看索引信息。
 select * from USER_INDEXES,USER_IND_COLUMNS;
删除索引“student_ gender _index”。
 drop index student_gender_index;
2.同义词,写出相应SQL命令。
创建student1表的同义词,名为“DX1_04”。
create synonym DX1_04 for student1;
创建DX1_03的同义词,名为“DX1_05”。
create synonym DX1_05 for DX1_03;
创建同义词DX1_05的同义词,名为“st1”。
create synonym st1 for DX1_05;
创建某Oracle对象的公共同义词,公共同义词的命名规则:字符串“DX1_”后面跟上你的学号。(对象任意,在自己安装的Oracle上完成)
create public synonym DX1_202005960528 for test;
利用数据字典视图user_synonyms、all_synonyms查看同义词信息。
select * from user_synonyms,all_synonyms;
删除同义词st1。
drop synonym st1;
3.序列,写出相应SQL命令。
创建序列,该序列起始值50,步长为10,不缓冲,序列名为“DX1_06”。
create sequence DX1_06 start with 50 increment by 10 nocache;
创建序列,该序列最大值无限制,最小值为1,步长为1,序列名为“DX1_07”。
create sequence DX1_07 start with 1 nomaxvalue increment by 1;
创建序列,该序列起始值为1000,步长为2,最大值为10000,不可循环,序列名为“seq_1"。
create sequence seq_1 start with 1000 increment by 2 maxvalue 10000 nocycle;
利用数据字典视图user_SEQUENCES、all_SEQUENCES查看序列信息。
select * from all_SEQUENCES where sequence_owner='A202005960528';
select * from user_SEQUENCES;
向DEPT表中插入三条记录,利用序列DX1_06生成部门编号。
create table dept
 (nextval varchar(3),
  d varchar(6),
  a varchar(4),
  primary key(nextval));
insert into dept values(DX1_06.nextval,null,null);
insert into dept values(DX1_06.nextval,null,null);
insert into dept values(DX1_06.nextval,null,null);
修改序列“DX1_06”,将该序列最大值设为“82000”,最小值设为“10”,步长设为“5”。
alter sequence DX1_06
maxvalue 82000
minvalue 10
increment by 5;
修改序列“DX1_07”,将该序列最大值设为“1000”。
alter sequence DX1_07
maxvalue 1000;
删除序列seq_1。
drop sequence seq_1;
4.用户,写出相应SQL命令(在自己的计算机上完成)。
(1) 创建一个用户。注意:如果用户名的命名违背了公俗良序原则,将给予某些处罚。
  create user a
  identified by 123456;
(2) 该用户授予一定的权限。
  grant connect, resource to a;
  grant create session to a;
授予用户权限
新开一个会话,以新创建的用户身份连接并对scott中的emp表进行查询、删除操作。如果权限不够,则授予相应权限。最后,回滚事务。
grant select,delete on scott.emp to a;
select * from emp where empno=7369;
delete from emp where empno=7369;
rollback;
修改用户信息
(1) 修改该用户的口令,然后用新口令重新连接。
alter user a identified by 123;
(2) 封锁该用户的账号,然后解锁。
alter user a account lock;
alter user a account unlock;
查询用户与权限信息
(1) 利用数据字典视图dba_users、user_sys_privs、user_tab_privs、user_role_privs、session_privs查询用户与权限信息。
select * from dba_users;
select * from user_sys_privs;
select * from user_tab_privs;
select * from user_role_privs;
select * from session_privs;
删除用户
drop user a;
5.视图,根据a_db模式中的表:学生、课程、成绩、emp等,完成以下查询,并将查询定义为视图,视图名依次命名为DX1_10、DX1_11、… 、DX1_14
desc a_db.学生
desc a_db.课程
desc a_db.成绩
desc a_db.emp
· 对选修C13课程的学生,按分数跳跃式排名(可以并列),显示名次与学号,按名次、学号升序排列。
create view DX1_10 as
select rank() over(partition by 课程号 order by 分数 asc nulls last) 名次,学号
from  a_db.成绩
where 课程号='C13'; 
· 查询每门课程考试成绩第一名(可以并列)的学生的学号与课程号,按课程号升序排列。
create view DX1_11 as
select 学号,课程号 from (select 学号,课程号,rank() 
over(partition by 课程号 order by 分数 asc nulls last)名次 
from a_db.成绩 )where 名次=1  order by 课程号;
· 按平均分数对课程连续排名(可以并列),显示名次、课程号与平均分数(保留2位小数),按名次、课程号升序排列。
create view DX1_12 as
select rank()
  over(order by avg(分数) desc) 名次,课程号,round(avg(分数),2)as 平均分数
  from a_db.成绩 group by 课程号 order by 名次,课程号;
· 查询每门课程的课程号,以及每门课程考试成绩第一名(可以并列)的学生的姓名,按课程号与姓名升序排列。
create view DX1_13 as
select distinct 课程号,姓名 
  FROM (select 成绩.*,rank()over(PARTITION by 课程号 
  order by 分数 DESC NULLS LAST)RK 
  from a_db.成绩)R left join a_db.学生 on R.学号=学生.学号 where rk=1 
  order by 课程号,姓名 asc;
· 列出工资在3500到5000之间的员工的姓名,但只取姓名的前5个字符,不足5个则以*补足,按姓名升序排列。
create view DX1_14 as
select rpad(ename,5,'*')as 姓名 
from a_db.emp where sal between 3500 and 5000 
order by ename asc;
 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部