Oracle實驗一 熟悉ORACLE環境並練習SQL操作

實驗一、熟悉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

  2.定義基本表格t_major_j432(專業)與t_stud_j432(學生),關係模式如下:

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.插入樣本數據:

插入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','[email protected]',to_date('20000122','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170115','李二','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170117','李三','','13260450831','[email protected]',to_date('20001220','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170120','李四','','18655450232','[email protected]',to_date('20000525','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170122','李五','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170123','李六','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170124','李七','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170207','張一','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170225','張二','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170226','張三','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170227','張四','','18390455631','[email protected]',to_date('20000504','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170209','張五','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170228','張六','','18592450551','[email protected]',to_date('20000101','yyyymmdd'),'0921170207','21');

--計算機科學與技術12名同學
insert into t_stud_j524 values('0902170516','王二','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170520','王三','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170521','王四','','15390451131','[email protected]',to_date('20000122','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170523','杜豪','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170524','宋海磊','','13278882876','[email protected]',to_date('20001220','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170525','翟樹傑','','13278886638','[email protected]',to_date('20000525','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170526','胡旭東','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170601','嬴政','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170602','劉邦','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170604','李廣','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170605','李世民','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170625','趙匡胤','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0902170601','02');

--物聯網工程11名同學
insert into t_stud_j524 values('0919170112','週一','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170120','週二','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170107','週三','','15390451131','[email protected]',to_date('20000122','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170109','週四','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170110','週五','','13260450831','[email protected]',to_date('20001220','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170115','週六','','18655450232','[email protected]',to_date('20000525','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170214','陳一','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170215','陳二','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170217','陳三','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170220','陳四','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170225','陳五','','18796650031','[email protected]',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','[email protected]',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','[email protected]',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','[email protected]',to_date('20000122','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170115','李二','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170117','李三','','13260450831','[email protected]',to_date('20001220','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170120','李四','','18655450232','[email protected]',to_date('20000525','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170122','李五','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170123','李六','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170124','李七','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0921170114','21');
insert into t_stud_j524 values('0921170207','張一','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170225','張二','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170226','張三','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170227','張四','','18390455631','[email protected]',to_date('20000504','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170209','張五','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0921170207','21');
insert into t_stud_j524 values('0921170228','張六','','18592450551','[email protected]',to_date('20000101','yyyymmdd'),'0921170207','21');

--計算機科學與技術12名同學
insert into t_stud_j524 values('0902170516','王二','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170520','王三','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170521','王四','','15390451131','[email protected]',to_date('20000122','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170523','杜豪','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170524','宋海磊','','13278882876','[email protected]',to_date('20001220','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170525','翟樹傑','','13278886638','[email protected]',to_date('20000525','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170526','胡旭東','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0902170516','02');
insert into t_stud_j524 values('0902170601','嬴政','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170602','劉邦','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170604','李廣','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170605','李世民','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0902170601','02');
insert into t_stud_j524 values('0902170625','趙匡胤','','18796650031','[email protected]',to_date('20001023','yyyymmdd'),'0902170601','02');

--物聯網工程11名同學
insert into t_stud_j524 values('0919170112','週一','','18790450032','[email protected]',to_date('20001130','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170120','週二','','18790460031','[email protected]',to_date('20010130','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170107','週三','','15390451131','[email protected]',to_date('20000122','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170109','週四','','18726450331','[email protected]',to_date('20001010','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170110','週五','','13260450831','[email protected]',to_date('20001220','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170115','週六','','18655450232','[email protected]',to_date('20000525','yyyymmdd'),'0919170112','19');
insert into t_stud_j524 values('0919170214','陳一','','15342450031','[email protected]',to_date('20000214','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170215','陳二','','18790332061','[email protected]',to_date('20000323','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170217','陳三','','13250450031','[email protected]',to_date('20000930','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170220','陳四','','15256350531','[email protected]',to_date('20000722','yyyymmdd'),'0919170214','19');
insert into t_stud_j524 values('0919170225','陳五','','18796650031','[email protected]',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
發佈了675 篇原創文章 · 獲贊 30 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章