SQL和数据管理综合练习
? 1.创建一个表空间mytablespace,以存放下述所创建的所有用户、表、索引、视图、序列等
? 2.创建一个用户myuser置于mytablespace表空间中。授予其创建会话、创建表、创建视图、创建序列、创建同义词、对表空间无限使用的系统权限,可以查看、更新、删除、插入dept和emp表的对象权限。
? 3.创建一个概要文件来限制会话总的连接时间为100分钟,用户登录次数不得超过3次。
? 4.以myuser身份连接数据库
? 5. 创建student表、course表、grade表,也放于mytablespace表空间中 ? 其具体描述如下: student表 列名 sno sname sage 类型 VARCHAR2(10) VARCHAR2(10) NUMBER(2)
约束 主键 不为空
不为空,取值在18~30之间
? course表 列名 cno cname credit 类型 VARCHAR2(10) VARCHAR2(15) NUMBER(2)
约束 主键 不为空
不为空,取值2,3,4,5,6之间
score表 列名 sno cno grade 类型 VARCHAR2(10) VARCHAR2(10) NUMBER(3,1)
约束
主键,单独sno,cno为外键 不为空,取值0~100之间
? 6.分别向3个表中插入3行数据:数据如下 ('s001' ,'mike' ,20 ) ('s002' ,'jerry' ,19 ) ('s003' ,'tom' ,20 )
('c001' ,'oracle' ,4 ) ('c002' ,'java' ,4 ) ('c003' ,'c++' ,6 )
('s001' ,'c001' ,80 )
('s001' ,'c002' ,90 ) ('s002' ,'c001' ,85 )
? 如果出现错误修改或删除其中存在的记录
? 7.为course表的cname列上加唯一值索引,也放于mytablespace表空间中
? 8.为scott.emp和scott.dept表创建同义词semp和sdept ? 9.创建emp、dept表的备份empbak、deptbak ? 10.创建视图view1以查询所有学生的选课情况 创建视图view2以查询所有学生所学课程情况和成绩情况 创建视图view3以求取每个学生的平均成绩 创建视图view4以求取没有学生选择的课程信息 通过SELECT * FROM view1来查看结果
? 11.再以myuser身份打开一个sqlplus,其提示符设置为USER2> ? 在USER>提示符下锁定student表,向student表中插入一条数据。
? 然后在USER2>下向student表中插入一样的数据,观察并发事务处理现象
? 12.备份整个myuser方案 ? 13.删除myuser用户及其所有内容 ? 14.恢复myuser方案
答案
SQL> conn system/sys@orcl 已连接。
SQL> create tablespace yxm39tablespace 2 datafile'h:\\yxm39tablespace.dbm' 3 size 100M reuse;
表空间已创建。
SQL> create user yxm39user identified by yxm39 2 default tablespace yxm39tablespace;
用户已创建。
SQL> grant create session,create view, create table,create any index, 2 create synonym,unlimited tablespace to yxm39user;
授权成功。
SQL> grant insert,delete,update,select on scott.dept to yxm39user;
授权成功。
SQL> grant insert,delete,update,select on scott.emp to yxm39user;
授权成功。
SQL> create profile yxm39profile limit 2 connect_time 100 3 failed_login_attempts 3;
配置文件已创建
SQL> conn yxm39user/yxm39@orcl 已连接。
SQL> create table student 2 (
3 sno varchar2(10) ,
4 sname varchar2(10) not null,sage number(2) not null, 5 constraint stu_sno_pk primary key(sno),
6 constraint stu_sage_ck check(sage between 18 and 30) 7 )
8 tablespace yxm39tablespace;