實驗一、熟悉ORALCE環境並練習SQL操作
一、目的與要求
本實驗主要是熟悉ORACLE的運行環境,在CLIENT端進行聯接設置與服務器聯通,進入ORACLE的SQL*PLUS或SQL Developer的操作環境,進一步建立表格,並考慮主鍵、外鍵及值約束,進行相應的測試與查詢等操作。
二、操作環境
硬件:主頻2GHz以上服務器(內存2GB以上、硬件空閑2.2GB以上),主頻1GHz以上微機,內存1GB以上。
軟件:WINDOWS XP/2000/2003/或Win7/Win8/Win10等。如操作系統是 SERVER版, 可安裝ORACLE/9i/10g/11g/12C FOR NT/WINDOWS(注意有32位與64位的區別,可選企業版); 如果Windows非server如XP/win7等,安裝時請選擇個人版(PERSONAL),注意安裝時要有兼容性設置與用管理員運行。安裝過程中需要關注系統預定義的賬號SYS與SYSTEM的密碼設置。
三、實驗內容
1.上機步驟
在實驗室上機時,一般安裝時管理員已設置好.先找到windows中的oracle服務(一般為OracleServiceORCL,如下圖1),啟動此服務,再找到sql*plus所在的位置(一般桌面上有如下圖2的程序組有),運行即可進行登錄界面.
圖1 Oracle在計算機系統中的服務
圖2稱SQL*Plus在系統程序組中的位置
實驗室現有環境操作步驟:
通過桌面我的電腦找到管理服務的入口,如圖3,或者通過資源管理器找到管理。
圖3 通過桌面我的電腦找到管理服務的入口
然后找到服務,如圖4。
圖4 系統中的服務
再找啟動oracle的服務如圖1。
(1) 從桌面或在程序中(圖2)執行SQL*PLUS
(2) 輸入:system/manager(密碼可能有變化)
(3) 在SQL>狀態下輸入建立用戶命令:
create user username identified by password;
其中username與password不要數字開頭,用戶名username中按規則加學號后3位作后綴。如:U_J101表示尾數為J101號的用戶。
(4) 給用戶授權:
grant resource,connect to username;
(5) 連接用戶:
connect username/password
在SQL>狀態下,就可以執行建表等操作了。
2.根據要求建立如下表
定義基本表格major_????(專業)與stud_???(學生),關系模式如下(類型長度自定義):
major_???(MajorNo專業編號 Primary key, MNAME 專業名稱,loc 地址 in(主校區,南校區,新校區,鐵道校區,湘雅校區),mdean 專業負責人))
stud_???(SNO primary key, SNAME, SEX (男,女,其他),TEL ,E-MAIL (基本格式判斷), birthday >=’19990731’ ,MNO 班長學號 FK,MajorNo 專業編號 FK )
其中學號的第3,4位為MajorNo(專業編號)。
注意表的命名規則。
3.插入樣本數據
插入3個專業,如計算機科學與技術,物聯網工程,數據科學與大數據技術,每個專業不少於10個人,其中包括自己的信息。
測試相關的完整性約束,並注意保留出錯的提示,分析出錯的原因。
4.為每個學生建立相關用戶,實現權限控制,每個學生可查詢自己的信息,班長可查詢本班所有學生信息; 為每個專業負責人建立用戶,每個專業負責人可查詢本專業所有學生信息。
1.建立用戶u_j524,密碼為p123456,並完成相關操作
drop user u_j524 cascade; create user u_j524 identified by p123456; grant resource,connect,dba to u_j524; conn u_j524/p123456
t_major_j432(
MNO專業編號 Primary key,
MNAME 專業名稱,
loc 地址 in(主校區,南校區,新校區,鐵道校區,湘雅校區),
mdean 專業負責人))
t_stud_j432(SNO primary key,
SNAME,
SEX (男,女,其它,其他),
TEL ,E-MAIL (基本格式判斷),
birthday >=’19990731’ ,
MNO 班長學號 fk,
MajorNo 專業編號 fk ),
其中MajorNo 專業編號為學號的第3,4位。
create table t_major_j524( mno varchar2(2), mname varchar2(32), loc varchar2(32), mdean varchar2(32), constraint pk_major_mno primary key(mno), constraint ck_major_mname check(loc in('主校區','南校區','新校區','鐵道校區','湘雅校區'))); create table t_stud_j524( sno varchar2(10), sname varchar2(32), sex varchar2(32), tel varchar2(32), email varchar2(32), birthday date, mno varchar2(10), majorno varchar2(2), constraint pk_stud_sno primary key(sno), constraint ck_stud_sex check(sex in('男','女','其它')), constraint ck_stud_email check(email like '%@%.%'), constraint ck_stud_birthday check(birthday>to_date('19990731','yyyymmdd')), constraint ck_stud_majorno check(majorno in substr(sno,3,2)), constraint fk_stud_mno foreign key(mno) references t_stud_j524(sno), constraint fk_stud_majorno foreign key(majorno) references t_major_j524(mno));
插入3個專業的6個班級,如:計算機科學與技術,物聯網工程,數據科學與大數據技術,每個專業不小於10個人。
------插入實驗數據:3個專業6個班共計36人--------- delete from t_stud_j524; delete from t_major_j524; insert into t_major_j524 values('21','數據科學與大數據技術','主校區','張三'); insert into t_major_j524 values('02','計算機科學與技術','主校區','許寧'); insert into t_major_j524 values('19','物聯網工程','主校區','李四'); --數據科學與大數據技術13名同學 insert into t_stud_j524 values('0921170114','李一','男','15390451131','liyi@163.com',to_date('20000122','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170115','李二','男','18726450331','lier@163.com',to_date('20001010','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170117','李三','男','13260450831','lisan@163.com',to_date('20001220','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170120','李四','男','18655450232','lisi@163.com',to_date('20000525','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170122','李五','女','15342450031','liwu@163.com',to_date('20000214','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170123','李六','女','18790332061','liliu@163.com',to_date('20000323','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170124','李七','男','13250450031','liqi@163.com',to_date('20000930','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170207','張一','男','18790450032','zhangyi@163.com',to_date('20001130','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170225','張二','女','15256350531','zhanger@163.com',to_date('20000722','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170226','張三','男','18796650031','zhangsan@163.com',to_date('20001023','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170227','張四','女','18390455631','zhangsi@163.com',to_date('20000504','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170209','張五','男','18790460031','zhangwu@163.com',to_date('20010130','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170228','張六','女','18592450551','zhangliu@163.com',to_date('20000101','yyyymmdd'),'0921170207','21'); --計算機科學與技術12名同學 insert into t_stud_j524 values('0902170516','王二','男','18790450032','wanger@163.com',to_date('20001130','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170520','王三','男','18790460031','wangsan@163.com',to_date('20010130','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170521','王四','男','15390451131','wangsi@163.com',to_date('20000122','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170523','杜豪','男','18726450331','duhao@163.com',to_date('20001010','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170524','宋海磊','男','13278882876','songhailei@163.com',to_date('20001220','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170525','翟樹傑','男','13278886638','zhaishujie@163.com',to_date('20000525','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170526','胡旭東','男','15342450031','huxudong@163.com',to_date('20000214','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170601','嬴政','男','18790332061','yingzheng@163.com',to_date('20000323','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170602','劉邦','男','13250450031','liubang@163.com',to_date('20000930','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170604','李廣','男','15256350531','liguang@163.com',to_date('20000722','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170605','李世民','女','18796650031','lishimin@163.com',to_date('20001023','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170625','趙匡胤','女','18796650031','zhaokuangyin@163.com',to_date('20001023','yyyymmdd'),'0902170601','02'); --物聯網工程11名同學 insert into t_stud_j524 values('0919170112','周一','女','18790450032','zhouyi@163.com',to_date('20001130','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170120','周二','男','18790460031','zhouer@163.com',to_date('20010130','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170107','周三','男','15390451131','zhousan@163.com',to_date('20000122','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170109','周四','男','18726450331','zhousi@163.com',to_date('20001010','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170110','周五','男','13260450831','zhouwu@163.com',to_date('20001220','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170115','周六','女','18655450232','zhouliu@163.com',to_date('20000525','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170214','陳一','男','15342450031','chenyi@163.com',to_date('20000214','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170215','陳二','女','18790332061','chener@163.com',to_date('20000323','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170217','陳三','女','13250450031','chensan@163.com',to_date('20000930','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170220','陳四','女','15256350531','chensi@163.com',to_date('20000722','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170225','陳五','男','18796650031','chenwu@163.com',to_date('20001023','yyyymmdd'),'0919170214','19');
4.測試相關的完整性約束,並注意保留出錯的提示,分析出錯的原因 (建議把4放在3前面)
-----測試約束 ---------t_major_j524約束 column mno format a3; column mname format a32; column loc format a10; column mdean format a12; column sno format a11; column sname format a7; column sex format a4; column tel format a12; column email format a32; column birthday format a11; column mno format a11; column majorno format a3; set linesize 150; set pagesize 100; --1.主鍵不為空 insert into t_major_j524(mno) values(''); --2.主鍵不能重復 insert into t_major_j524(mno) values('34'); insert into t_major_j524(mno) values('34'); delete from t_major_j524; --3.約束:loc in('主校區','南校區','新校區','鐵道校區','湘雅校區') insert into t_major_j524(loc) values('北校區'); --4.成功插入幾條完整數據 insert into t_major_j524 values('34','計算機科學與技術','主校區','許寧'); insert into t_major_j524 values('35','大數據','主校區','許寧'); select * from t_major_j524; --t_stud_j524約束 --1.主鍵不為空 insert into t_stud_j524(sno) values(''); --2.主鍵不能重復 insert into t_stud_j524(sno) values('1234567890'); insert into t_stud_j524(sno) values('1234567890'); delete from t_stud_j524; --3.約束:sex in('男','女','其它') insert into t_stud_j524(sno,sex) values('1234567890','不知道'); --4.約束:email like '%@%.%' insert into t_stud_j524(sno,email) values('1234567890','123456@789'); --5.約束:birthday>to_date('19990731','yyyymmdd') insert into t_stud_j524(sno,birthday) values('1234567890',to_date('19951130','yyyymmdd')); --6.約束:majorno in substr(sno,3,2) insert into t_stud_j524(sno,majorno) values('1234567890','35'); --7.外鍵約束:foreign key(mno) references t_stud_j524(sno) insert into t_stud_j524(sno,mno) values('1234567890','1234567891'); --8.外鍵約束:foreign key(majorno) references t_major_j524(mno) insert into t_stud_j524(sno,majorno) values('0987654321','87'); --9.成功插入一條完整數據 insert into t_stud_j524 values('1234567890','余東','男','18790450031','ydduong@163.com',to_date('20001130','yyyymmdd'),'1234567890','34');
5.為每個學生建立相關用戶,實現權限控制,每個學生可查詢自己的信息,班長可查詢本班所有學生信息; 為每個專業負責建立用戶,每個專業負責可查詢本專業所有學生信息。
---權限管理:為學生、班長、年級長分別建立視圖並賦予相應查看權限--- set heading off set feedback off set echo off set termout off spool d:\users.txt --刪除用戶 select 'drop user u'||sno||';' from t_stud_j524; --新建用戶(為每個學生) select 'create user u'||sno||' identified by p'||sno||';' from t_stud_j524; --授予connect權利 select 'grant connect to u'||sno||';' from t_stud_j524; --刪除學生用戶視圖 select 'drop view vi'||sno||';' from t_stud_j524; --為每個用戶建立各自的視圖 select 'create view vi'||sno||' as select * from t_stud_j524 where sno='||sno||';' from t_stud_j524; --為每個用戶授予查詢視圖的權利 select 'grant select on vi'||sno||' to u'||sno||';' from t_stud_j524; --刪除班長用戶視圖 select 'drop view vi'||sno||';' from t_stud_j524 where sno=mno; select 'drop view vib'||sno||';' from t_stud_j524 where sno=mno; --為班長建立班長視圖 select 'create view vib'||sno||' as select * from t_stud_j524 where mno='||sno||';' from t_stud_j524 where sno=mno; --為班長授予查詢班長視圖的權利 select 'grant select on vib'||sno||' to u'||sno||';' from t_stud_j524 where sno=mno; --刪除年級負責人用戶視圖 select 'drop view vi'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view vib'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view viz'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; --為年級負責人創建年級視圖 select 'create view viz'||t_stud_j524.sno||' as select * from t_stud_j524 where majorno='||t_stud_j524.majorno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; --為年級負責人授予查詢年級視圖的權利 select 'grant select on viz'||t_stud_j524.sno||' to u'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; spool off set heading on set feedback on set echo on set termout on ------------------------ @d:\users.txt --普通學生僅查詢自己 conn u0919170225/p0919170225 select * from u_j524.vi0919170225; --班長可以查詢自己和班級同學 conn u0919170112/p0919170112 select * from u_j524.vib0919170112; --年級長可以查詢自己和年同學 conn u0921170226/p0921170226 select * from u_j524.viz0921170226; set heading off set feedback off set echo off set termout off spool d:\users.txt
實驗源碼
drop user u_j524 cascade; create user u_j524 identified by p123456; grant resource,connect,dba to u_j524; conn u_j524/p123456 ---------------建表---------------- create table t_major_j524( mno varchar2(2), mname varchar2(32), loc varchar2(32), mdean varchar2(32), constraint pk_major_mno primary key(mno), constraint ck_major_mname check(loc in('主校區','南校區','新校區','鐵道校區','湘雅校區'))); create table t_stud_j524( sno varchar2(10), sname varchar2(32), sex varchar2(32), tel varchar2(32), email varchar2(32), birthday date, mno varchar2(10), majorno varchar2(2), constraint pk_stud_sno primary key(sno), constraint ck_stud_sex check(sex in('男','女','其它')), constraint ck_stud_email check(email like '%@%.%'), constraint ck_stud_birthday check(birthday>to_date('19990731','yyyymmdd')), constraint ck_stud_majorno check(majorno in substr(sno,3,2)), constraint fk_stud_mno foreign key(mno) references t_stud_j524(sno), constraint fk_stud_majorno foreign key(majorno) references t_major_j524(mno)); -----測試約束 ---------t_major_j524約束 column mno format a3; column mname format a32; column loc format a10; column mdean format a12; column sno format a11; column sname format a7; column sex format a4; column tel format a12; column email format a32; column birthday format a11; column mno format a11; column majorno format a3; set linesize 150; set pagesize 100; --1.主鍵不為空 insert into t_major_j524(mno) values(''); --2.主鍵不能重復 insert into t_major_j524(mno) values('34'); insert into t_major_j524(mno) values('34'); delete from t_major_j524; --3.約束:loc in('主校區','南校區','新校區','鐵道校區','湘雅校區') insert into t_major_j524(loc) values('北校區'); --4.成功插入幾條完整數據 insert into t_major_j524 values('34','計算機科學與技術','主校區','許寧'); insert into t_major_j524 values('35','大數據','主校區','許寧'); select * from t_major_j524; --t_stud_j524約束 --1.主鍵不為空 insert into t_stud_j524(sno) values(''); --2.主鍵不能重復 insert into t_stud_j524(sno) values('1234567890'); insert into t_stud_j524(sno) values('1234567890'); delete from t_stud_j524; --3.約束:sex in('男','女','其它') insert into t_stud_j524(sno,sex) values('1234567890','不知道'); --4.約束:email like '%@%.%' insert into t_stud_j524(sno,email) values('1234567890','123456@789'); --5.約束:birthday>to_date('19990731','yyyymmdd') insert into t_stud_j524(sno,birthday) values('1234567890',to_date('19951130','yyyymmdd')); --6.約束:majorno in substr(sno,3,2) insert into t_stud_j524(sno,majorno) values('1234567890','35'); --7.外鍵約束:foreign key(mno) references t_stud_j524(sno) insert into t_stud_j524(sno,mno) values('1234567890','1234567891'); --8.外鍵約束:foreign key(majorno) references t_major_j524(mno) insert into t_stud_j524(sno,majorno) values('0987654321','87'); --9.成功插入一條完整數據 insert into t_stud_j524 values('1234567890','余東','男','18790450031','ydduong@163.com',to_date('20001130','yyyymmdd'),'1234567890','34'); ------插入實驗數據:3個專業6個班共計36人--------- delete from t_stud_j524; delete from t_major_j524; insert into t_major_j524 values('21','數據科學與大數據技術','主校區','張三'); insert into t_major_j524 values('02','計算機科學與技術','主校區','許寧'); insert into t_major_j524 values('19','物聯網工程','主校區','李四'); --數據科學與大數據技術13名同學 insert into t_stud_j524 values('0921170114','李一','男','15390451131','liyi@163.com',to_date('20000122','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170115','李二','男','18726450331','lier@163.com',to_date('20001010','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170117','李三','男','13260450831','lisan@163.com',to_date('20001220','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170120','李四','男','18655450232','lisi@163.com',to_date('20000525','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170122','李五','女','15342450031','liwu@163.com',to_date('20000214','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170123','李六','女','18790332061','liliu@163.com',to_date('20000323','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170124','李七','男','13250450031','liqi@163.com',to_date('20000930','yyyymmdd'),'0921170114','21'); insert into t_stud_j524 values('0921170207','張一','男','18790450032','zhangyi@163.com',to_date('20001130','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170225','張二','女','15256350531','zhanger@163.com',to_date('20000722','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170226','張三','男','18796650031','zhangsan@163.com',to_date('20001023','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170227','張四','女','18390455631','zhangsi@163.com',to_date('20000504','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170209','張五','男','18790460031','zhangwu@163.com',to_date('20010130','yyyymmdd'),'0921170207','21'); insert into t_stud_j524 values('0921170228','張六','女','18592450551','zhangliu@163.com',to_date('20000101','yyyymmdd'),'0921170207','21'); --計算機科學與技術12名同學 insert into t_stud_j524 values('0902170516','王二','男','18790450032','wanger@163.com',to_date('20001130','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170520','王三','男','18790460031','wangsan@163.com',to_date('20010130','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170521','王四','男','15390451131','wangsi@163.com',to_date('20000122','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170523','杜豪','男','18726450331','duhao@163.com',to_date('20001010','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170524','宋海磊','男','13278882876','songhailei@163.com',to_date('20001220','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170525','翟樹傑','男','13278886638','zhaishujie@163.com',to_date('20000525','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170526','胡旭東','男','15342450031','huxudong@163.com',to_date('20000214','yyyymmdd'),'0902170516','02'); insert into t_stud_j524 values('0902170601','嬴政','男','18790332061','yingzheng@163.com',to_date('20000323','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170602','劉邦','男','13250450031','liubang@163.com',to_date('20000930','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170604','李廣','男','15256350531','liguang@163.com',to_date('20000722','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170605','李世民','女','18796650031','lishimin@163.com',to_date('20001023','yyyymmdd'),'0902170601','02'); insert into t_stud_j524 values('0902170625','趙匡胤','女','18796650031','zhaokuangyin@163.com',to_date('20001023','yyyymmdd'),'0902170601','02'); --物聯網工程11名同學 insert into t_stud_j524 values('0919170112','周一','女','18790450032','zhouyi@163.com',to_date('20001130','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170120','周二','男','18790460031','zhouer@163.com',to_date('20010130','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170107','周三','男','15390451131','zhousan@163.com',to_date('20000122','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170109','周四','男','18726450331','zhousi@163.com',to_date('20001010','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170110','周五','男','13260450831','zhouwu@163.com',to_date('20001220','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170115','周六','女','18655450232','zhouliu@163.com',to_date('20000525','yyyymmdd'),'0919170112','19'); insert into t_stud_j524 values('0919170214','陳一','男','15342450031','chenyi@163.com',to_date('20000214','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170215','陳二','女','18790332061','chener@163.com',to_date('20000323','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170217','陳三','女','13250450031','chensan@163.com',to_date('20000930','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170220','陳四','女','15256350531','chensi@163.com',to_date('20000722','yyyymmdd'),'0919170214','19'); insert into t_stud_j524 values('0919170225','陳五','男','18796650031','chenwu@163.com',to_date('20001023','yyyymmdd'),'0919170214','19'); ---權限管理:為學生、班長、年級長分別建立視圖並賦予相應查看權限--- set heading off set feedback off set echo off set termout off spool d:\users.txt --刪除用戶 select 'drop user u'||sno||';' from t_stud_j524; --新建用戶(為每個學生) select 'create user u'||sno||' identified by p'||sno||';' from t_stud_j524; --授予connect權利 select 'grant connect to u'||sno||';' from t_stud_j524; --刪除學生用戶視圖 select 'drop view vi'||sno||';' from t_stud_j524; --為每個用戶建立各自的視圖 select 'create view vi'||sno||' as select * from t_stud_j524 where sno='||sno||';' from t_stud_j524; --為每個用戶授予查詢視圖的權利 select 'grant select on vi'||sno||' to u'||sno||';' from t_stud_j524; --刪除班長用戶視圖 select 'drop view vi'||sno||';' from t_stud_j524 where sno=mno; select 'drop view vib'||sno||';' from t_stud_j524 where sno=mno; --為班長建立班長視圖 select 'create view vib'||sno||' as select * from t_stud_j524 where mno='||sno||';' from t_stud_j524 where sno=mno; --為班長授予查詢班長視圖的權利 select 'grant select on vib'||sno||' to u'||sno||';' from t_stud_j524 where sno=mno; --刪除年級負責人用戶視圖 select 'drop view vi'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view vib'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view viz'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; --為年級負責人創建年級視圖 select 'create view viz'||t_stud_j524.sno||' as select * from t_stud_j524 where majorno='||t_stud_j524.majorno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; --為年級負責人授予查詢年級視圖的權利 select 'grant select on viz'||t_stud_j524.sno||' to u'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; /* select 'drop user u'||sno||';' from t_stud_j524; select 'create user u'||sno||' identified by p'||sno||';' from t_stud_j524; select 'grant connect to u'||sno||';' from t_stud_j524; select 'drop view vi'||sno||';' from t_stud_j524; select 'create view vi'||sno||' as select * from t_stud_j524 where sno='||sno||';' from t_stud_j524; select 'grant select on vi'||sno||' to u'||sno||';' from t_stud_j524; select 'drop view vi'||sno||';' from t_stud_j524 where sno=mno; select 'drop view vib'||sno||';' from t_stud_j524 where sno=mno; select 'create view vib'||sno||' as select * from t_stud_j524 where mno='||sno||';' from t_stud_j524 where sno=mno; select 'grant select on vib'||sno||' to u'||sno||';' from t_stud_j524 where sno=mno; select 'drop view vi'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view vib'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'drop view viz'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'create view viz'||t_stud_j524.sno||' as select * from t_stud_j524 where majorno='||t_stud_j524.majorno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; select 'grant select on viz'||t_stud_j524.sno||' to u'||t_stud_j524.sno||';' from t_stud_j524,t_major_j524 where t_stud_j524.majorno=t_major_j524.mno and t_stud_j524.sname=t_major_j524.mdean; */ spool off set heading on set feedback on set echo on set termout on ------------------------ @d:\users.txt --普通學生僅查詢自己 conn u0919170225/p0919170225 select * from u_j524.vi0919170225; --班長可以查詢自己和班級同學 conn u0919170112/p0919170112 select * from u_j524.vib0919170112; --年級長可以查詢自己和年同學 conn u0921170226/p0921170226 select * from u_j524.viz0921170226; set heading off set feedback off set echo off set termout off spool d:\users.txt --刪除用戶 select 'drop user u'||sno||' cascade;' from t_stud_j524; spool off set heading on set feedback on set echo on set termout on