實(shí)驗(yàn)一:數(shù)據(jù)定義
?
實(shí)驗(yàn)學(xué)時(shí): 4 學(xué)時(shí)
實(shí)驗(yàn)類(lèi)型:綜合型
實(shí)驗(yàn)要求:必修
一、實(shí)驗(yàn)?zāi)康?
1 、熟悉 Oracle 的client配置;
2 、掌握 SQL Plus 的使用;
3 、掌握 SQL 模式定義語(yǔ)句,定義相關(guān)的表、索引與完整性約束。
二、實(shí)驗(yàn)內(nèi)容
1 Oracle的使用
Oracle 數(shù)據(jù)庫(kù)管理系統(tǒng)採(cǎi)用客戶(hù)機(jī) / server結(jié)構(gòu),client上須要配置數(shù)據(jù)庫(kù)網(wǎng)絡(luò)服務(wù)命名。在操作系統(tǒng)的“開(kāi)始”菜單的“ Oracle ”程序組中,找到并執(zhí)行“ Net 8 ”。查看當(dāng)中的服務(wù)命名配置是否與server的數(shù)據(jù)庫(kù)監(jiān)聽(tīng)服務(wù)一致。比如:服務(wù)命名為“ Oracle ” , 參數(shù)主機(jī)名“ Db_server ” ( 也能夠輸入主機(jī)的 IP 地址 ) ,監(jiān)聽(tīng)port“ 1521 ” , 數(shù)據(jù)庫(kù)名“ Orcl ”。
在操作系統(tǒng)的“開(kāi)始”菜單的“ Oracle ”程序組中,找到并執(zhí)行“ SQL Plus ”。提供username( user1 )、口令 (123) 和 Net8 中配置服務(wù)命名 (oracle) 。
2project項(xiàng)目採(cǎi)購(gòu)數(shù)據(jù)庫(kù)
設(shè)有供應(yīng)商 S 、零件 P 、project項(xiàng)目 J 三個(gè)關(guān)系模式以及反映它們之間聯(lián)系(某project使用了某供應(yīng)商提供的某零件多少個(gè))的關(guān)系模式 SPJ 。
S (SNO, SNAME, STATUS, CITY)
P (PNO, PNAME, COLOR, WEIGHT)
J (JNO, JNAME, CITY)
SPJ(SNO, PNO, JNO, QTY)
使用 SQL 模式定義語(yǔ)句定義以上關(guān)系模式,注意主鍵與外鍵的約束。在須要的屬性上建立索引,在關(guān)系中插入例如以下演示樣例數(shù)據(jù)。(數(shù)據(jù)插入或改動(dòng)后輸入 COMMIT ;更新提交命令。)
?
?
S?????????????????????????????????????????? SPJ
|
SNO |
PNO |
JNO |
QTY |
|
S1 S1 S1 S1 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S4 S5 S5 S5 S5 |
P1 P1 P1 P2 P3 P3 P3 P3 P5 P5 P1 P3 P5 P6 P6 P2 P3 P6 P6 |
J1 J3 J4 J2 J1 J2 J4 J5 J1 J2 J1 J1 J1 J3 J4 J4 J1 J2 J4 |
200 100 700 100 400 200 500 400 400 100 200 200 100 300 200 100 200 200 500 |
|
SNO |
SNAME |
STATUS |
CITY |
|
S1 S2 S3 S4 S5 |
精益 為民 光大 友好 三利 |
20 10 30 20 30 |
天津 北京 北京 天津 上海 |
P
|
PNO |
PNAME |
COLOR |
WEIGHT |
|
P1 P2 P3 P4 P5 P6 |
螺母 螺釘 螺絲刀 螺絲刀 凸輪 齒輪 |
紅 綠 蘭 紅 蘭 紅 |
12 17 14 14 40 30 |
J??????????????????????????????????
|
JNO |
JNAME |
CITY |
|
J1 J2 J3 J4 J5 J6 J7 |
汽車(chē)廠(chǎng) 彈簧廠(chǎng) 造船廠(chǎng) 機(jī)車(chē)廠(chǎng) 無(wú)線(xiàn)電廠(chǎng) 半導(dǎo)體廠(chǎng) 儀器廠(chǎng) |
北京 長(zhǎng)春 天津 天津 唐山 常州 南京 |
?
3產(chǎn)品價(jià)格數(shù)據(jù)庫(kù)
設(shè)有下面四個(gè)關(guān)系模式
PRODUCT (MAKER, MODEL, TYPE)
PC (MODEL, SPEED, RAM, HD, CD, PRICE)
LAPTOP (MODEL, SPEED, RAM, HD, SCREEN, PRICE)
PEINTER(MODEL, COLOR, TYPE, PRICE)
演示樣例數(shù)據(jù):
?
PC???????????????????????????????????????????? PRODUCT
|
MODEL |
SPEED |
RAM |
HD |
CD |
PRICE |
|
1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 |
122 120 166 166 166 200 200 180 200 160 |
16 16 24 32 16 32 32 32 32 16 |
1.6 1.6 2.5 2.5 2.0 3.1 3.2 2.0 2.5 1.2 |
6X 6X 6X 8X 8X 8X 8X 8X 8X 8X |
1595 1399 1899 1999 1999 2099 2349 3699 2599 1495 |
|
MAKER |
MODEL |
TYPE |
|
A A A B B B B C C D D D D D D D D E E F G G H I |
1001 1002 1003 1004 1006 3002 3004 1005 1007 1008 1009 1010 2001 2002 2003 3001 3003 2004 2008 2005 2006 2007 3005 3006 |
PC PC PC PC PC Printer Printer PC PC PC PC PC Laptop Laptop Laptop Printer Printer Laptop Laptop Laptop Laptop Laptop Printer Printer |
LAPTOP
|
MODEL |
SPEED |
RAM |
HD |
SCREEN |
PRICE |
|
2001 2002 2003 2004 2005 2006 2007 2008 |
100 117 117 133 133 120 150 120 |
20 12 32 16 16 8 16 16 |
1.10 0.75 1.00 1.10 1.00 0.81 1.35 1.10 |
9.5 11.3 10.4 11.2 11.3 12.1 12.1 12.1 |
1999 2499 3599 3499 2599 1999 4799 2009 |
PRINTER
|
MODEL |
COLOR |
TYPE |
PRICE |
|
3001 3002 3003 3004 3005 3006 |
True True False False False True |
Ink-jet Ink-jet Laser Laser Ink-jet Dry |
275 269 829 879 180 470 |
以上 2 、 3 題能夠選做 1 題,編寫(xiě)實(shí)驗(yàn)報(bào)告, 上機(jī)調(diào)試,記錄實(shí)驗(yàn)結(jié)果。
三、實(shí)驗(yàn)原理、方法和手段
使用 SQL 模式定義語(yǔ)句定義以上關(guān)系模式,注意主鍵與外鍵的約束。在須要的屬性上建立索引,在關(guān)系中插入演示樣例數(shù)據(jù)。(數(shù)據(jù)插入或改動(dòng)后輸入 COMMIT ;更新提交命令。)
四、實(shí)驗(yàn)組織執(zhí)行要求
本實(shí)驗(yàn)為綜合型實(shí)驗(yàn),採(cǎi)用集中授課形式,學(xué)生集中上機(jī)操作。詳細(xì)要求例如以下:
1 、學(xué)生在進(jìn)行實(shí)驗(yàn)前必須進(jìn)行充分的預(yù)習(xí),熟悉實(shí)驗(yàn)內(nèi)容;
2 、教師在學(xué)生實(shí)驗(yàn)過(guò)程中予以必要的輔導(dǎo),學(xué)生獨(dú)立完畢實(shí)驗(yàn)。
五、實(shí)驗(yàn)條件
1 、提供一臺(tái)具有 WINDOWS 98/2000/NT/XP 操作系統(tǒng)的計(jì)算機(jī);
2 、 Oracle 8.0 以上設(shè)計(jì)環(huán)境。
六、實(shí)驗(yàn)步驟
1、用SQL語(yǔ)言的模式定義設(shè)計(jì)上述實(shí)驗(yàn)內(nèi)容,并採(cǎi)用Insert Into語(yǔ)句插入實(shí)驗(yàn)數(shù)據(jù);
? 2、採(cǎi)用文本編輯器如Windows的記事本,編輯上述SQL語(yǔ)句;
??? 3、執(zhí)行“SQL Plus”,將文本編輯器中的語(yǔ)句逐條拷貝到“SQL Plus”中執(zhí)行調(diào)試。
七、思考題
??? 在上述關(guān)系模式的定義中有未定義外keyword?假設(shè)有請(qǐng)指出參照表、被參照表及參照屬性,當(dāng)刪除或改動(dòng)被參照關(guān)系主keyword的值時(shí),為了不破壞參照完整性約束,應(yīng)採(cǎi)取何種參照策略。
八、實(shí)驗(yàn)報(bào)告
1 .實(shí)驗(yàn)預(yù)習(xí)
在實(shí)驗(yàn)前每位同學(xué)都須要對(duì)本次實(shí)驗(yàn)進(jìn)行認(rèn)真的預(yù)習(xí),并寫(xiě)好預(yù)習(xí)報(bào)告,在預(yù)習(xí)報(bào)告中要寫(xiě)出實(shí)驗(yàn)?zāi)康摹⒁?、?jiǎn)要的實(shí)驗(yàn)步驟,形成一個(gè)操作提綱。
2 .實(shí)驗(yàn)記錄
學(xué)生開(kāi)始實(shí)驗(yàn)時(shí),應(yīng)該將記錄本放在近旁,將實(shí)驗(yàn)中所做的每一步操作、所得結(jié)果及相關(guān)條件如實(shí)地記錄下來(lái)。
3 .實(shí)驗(yàn)報(bào)告
主要內(nèi)容包含實(shí)驗(yàn)中的關(guān)系模式定義代碼、執(zhí)行結(jié)果以及對(duì)調(diào)試過(guò)程中出現(xiàn)錯(cuò)誤的分析總結(jié),回答思考題,給出實(shí)驗(yàn)結(jié)論。
九、其他說(shuō)明
學(xué)生嚴(yán)格遵守實(shí)驗(yàn)室的各項(xiàng)規(guī)章制度,配合和服從實(shí)驗(yàn)室人員管理。
?
實(shí)驗(yàn)代碼例如以下(在Oracle developer中執(zhí)行無(wú)誤 Index引用由主鍵自己主動(dòng)生成了 所以這邊我不要自己設(shè)計(jì))
PS:因?yàn)橛玫氖欠枪芾韱T權(quán)限 所以使用的是默認(rèn)表空間 即;后不加不論什么的TABLESPACE tablesapce_name
?
CREATE TABLE S
(
SNO VARCHAR2(8) PRIMARY KEY,
SNAME VARCHAR2(8),
STATUS VARCHAR2(8),
CITY VARCHAR2(8)
);
CREATE TABLE P
(
PNO VARCHAR2(8) PRIMARY KEY,
PNAEM VARCHAR2(8),
COLOR VARCHAR2(8),
WEIGHT NUMBER(10)
);
CREATE TABLE J
(
JNO VARCHAR2(8) PRIMARY KEY,
JNAME VARCHAR2(8),
CITY VARCHAR2(8)
);
CREATE TABLE SPJ
(
SNO VARCHAR2(8),
PNO VARCHAR2(8),
JNO VARCHAR2(8),
QTY NUMBER(10),
CONSTRAINT SPJ_SNO FOREIGN KEY(SNO)
REFERENCES S(SNO),
CONSTRAINT SPJ_PNO FOREIGN KEY(PNO)
REFERENCES P(PNO),
CONSTRAINT SPJ_JNO FOREIGN KEY(JNO)
REFERENCES J(JNO)
);
//索引自己建立 在上面建立外鍵約束的時(shí)候自己建立了
CREATE INDEX S_SNO_INDEX
ON S(SNO)
CREATE INDEX P_PNO_INDEX
ON P(PNO)
CREATE INDEX J_JNO_INDEX
ON J(JNO)
CREATE INDEX SPJ_SNO_PNO_JNO_INDEX
ON SPJ(SNO,PNO,JNO)
INSERT INTO S VALUES('S1','精益',20,'天津');
INSERT INTO S VALUES('S2','為民',10,'北京');
INSERT INTO S VALUES('S3','光大',30,'北京');
INSERT INTO S VALUES('S4','友好',20,'天津');
INSERT INTO S VALUES('S5','三利',30,'上海');
COMMIT;
INSERT INTO P VALUES('P1','螺母','紅',12);
INSERT INTO P VALUES('P2','螺釘','綠',17);
INSERT INTO P VALUES('P3','螺絲刀','蘭',14);
INSERT INTO P VALUES('P4','螺絲刀','紅',14);
INSERT INTO P VALUES('P5','凸輪','蘭',40);
INSERT INTO P VALUES('P6','齒輪','紅',30);
COMMIT;
INSERT INTO J VALUES('J1','汽車(chē)廠(chǎng)','北京');
INSERT INTO J VALUES('J2','彈簧廠(chǎng)','長(zhǎng)春');
INSERT INTO J VALUES('J3','造船廠(chǎng)','天津');
INSERT INTO J VALUES('J4','機(jī)車(chē)廠(chǎng)','天津');
INSERT INTO J VALUES('J5','無(wú)線(xiàn)電廠(chǎng)','唐山');
INSERT INTO J VALUES('J6','半導(dǎo)體廠(chǎng)','常州');
INSERT INTO J VALUES('J7','儀器廠(chǎng)','南京');
COMMIT;
INSERT INTO SPJ VALUES('S1','P1','J1',200);
INSERT INTO SPJ VALUES('S1','P1','J3',100);
INSERT INTO SPJ VALUES('S1','P1','J4',700);
INSERT INTO SPJ VALUES('S1','P2','J2',100);
INSERT INTO SPJ VALUES('S2','P3','J1',400);
INSERT INTO SPJ VALUES('S2','P3','J2',200);
INSERT INTO SPJ VALUES('S2','P3','J4',500);
INSERT INTO SPJ VALUES('S2','P3','J5',400);
INSERT INTO SPJ VALUES('S2','P5','J1',400);
INSERT INTO SPJ VALUES('S2','P5','J2',100);
INSERT INTO SPJ VALUES('S3','P1','J1',200);
INSERT INTO SPJ VALUES('S3','P3','J1',200);
INSERT INTO SPJ VALUES('S4','P5','J1',100);
INSERT INTO SPJ VALUES('S4','P6','J3',300);
INSERT INTO SPJ VALUES('S4','P6','J4',200);
INSERT INTO SPJ VALUES('S5','P2','J4',100);
INSERT INTO SPJ VALUES('S5','P3','J1',200);
INSERT INTO SPJ VALUES('S5','P6','J2',200);
INSERT INTO SPJ VALUES('S5','P6','J4',500);
COMMIT;
第二個(gè)數(shù)據(jù)庫(kù)
CREATE TABLE PRODUCT
(
MAKER VARCHAR2(5) ,
MODEL VARCHAR2(12) PRIMARY KEY,
TYPE VARCHAR2(12)
);
CREATE TABLE PC
(
MODEL VARCHAR2(12) PRIMARY KEY,
SPEED NUMBER(10),
RAM NUMBER(10),
HD NUMBER(8,2),
CD VARCHAR2(4),
PRICE NUMBER(10),
CONSTRAINT PC_PRODUCT_MODEL FOREIGN KEY(MODEL)
REFERENCES PRODUCT(MODEL)
);
CREATE TABLE LAPTOP
(
MODEL VARCHAR2(12) PRIMARY KEY,
SPEED NUMBER(10),
RAM NUMBER(10),
HD NUMBER(8,2),
SCREEN NUMBER(8,2),
PRICE NUMBER(10),
CONSTRAINT LAPTOP_PRODUCT_MODEL FOREIGN KEY(MODEL)
REFERENCES PRODUCT(MODEL)
);
CREATE TABLE PEINTER
(
MODEL VARCHAR2(12) PRIMARY KEY,
COLOR VARCHAR2(10),
TYPE VARCHAR2(10),
PRICE NUMBER(10),
CONSTRAINT PEINTER_PRODUCT_MODEL FOREIGN KEY(MODEL)
REFERENCES PRODUCT(MODEL)
);
INSERT INTO PRODUCT VALUES('A','1001','PC');
INSERT INTO PRODUCT VALUES('A','1002','PC');
INSERT INTO PRODUCT VALUES('A','1003','PC');
INSERT INTO PRODUCT VALUES('B','1004','PC');
INSERT INTO PRODUCT VALUES('B','1006','PC');
INSERT INTO PRODUCT VALUES('B','3002','Printer');
INSERT INTO PRODUCT VALUES('B','3004','Printer');
INSERT INTO PRODUCT VALUES('C','1005','PC');
INSERT INTO PRODUCT VALUES('C','1007','PC');
INSERT INTO PRODUCT VALUES('D','1008','PC');
INSERT INTO PRODUCT VALUES('D','1009','PC');
INSERT INTO PRODUCT VALUES('D','1010','PC');
INSERT INTO PRODUCT VALUES('D','2001','Laptop');
INSERT INTO PRODUCT VALUES('D','2002','Laptop');
INSERT INTO PRODUCT VALUES('D','2003','Laptop');
INSERT INTO PRODUCT VALUES('D','3001','Printer');
INSERT INTO PRODUCT VALUES('D','3003','Printer');
INSERT INTO PRODUCT VALUES('E','2004','Laptop');
INSERT INTO PRODUCT VALUES('E','2008','Laptop');
INSERT INTO PRODUCT VALUES('F','2005','Laptop');
INSERT INTO PRODUCT VALUES('G','2006','Laptop');
INSERT INTO PRODUCT VALUES('G','2007','Laptop');
INSERT INTO PRODUCT VALUES('H','3005','Printer');
INSERT INTO PRODUCT VALUES('I','3006','Printer');
INSERT INTO PC VALUES('1001', 122,16,1.6,'6X',1595);
INSERT INTO PC VALUES('1002', 120,16,1.6,'6X',1399);
INSERT INTO PC VALUES('1003', 166,24,2.5,'6X',1899);
INSERT INTO PC VALUES('1004', 166,32,2.5,'8X',1999);
INSERT INTO PC VALUES('1005', 166,16,2 ,'8X',1999);
INSERT INTO PC VALUES('1006', 200,32,3.1,'8X',2099);
INSERT INTO PC VALUES('1007', 200,32,3.2,'8X',2349);
INSERT INTO PC VALUES('1008', 180,32,2 ,'8X',3699);
INSERT INTO PC VALUES('1009', 200,32,2.5,'8X',2599);
INSERT INTO PC VALUES('1010', 160,16,1.2,'8X',1495);
INSERT INTO LAPTOP VALUES('2001', 100, 20, 1.1 ,9.5 ,1999);
INSERT INTO LAPTOP VALUES('2002', 117, 12, 0.75,11.3 ,2499);
INSERT INTO LAPTOP VALUES('2003', 117, 32, 1 ,10.4 ,3599);
INSERT INTO LAPTOP VALUES('2004', 133, 16, 1.1 ,11.2 ,3499);
INSERT INTO LAPTOP VALUES('2005', 133, 16, 1 ,11.3 ,2599);
INSERT INTO LAPTOP VALUES('2006', 120, 8 , 0.81,12.1 ,1999);
INSERT INTO LAPTOP VALUES('2007', 150, 16, 1.35,12.1 ,4799);
INSERT INTO LAPTOP VALUES('2008', 120, 16, 1.1 ,12.1 ,2009);
INSERT INTO PEINTER VALUES('3001','TRUE' ,'Ink-jet',275);
INSERT INTO PEINTER VALUES('3002','TRUE' ,'Ink-jet',269);
INSERT INTO PEINTER VALUES('3003','FALSE' ,'Laser' ,829);
INSERT INTO PEINTER VALUES('3004','FALSE' ,'Laser' ,879);
INSERT INTO PEINTER VALUES('3005','FALSE' ,'Ink-jet',180);
INSERT INTO PEINTER VALUES('3006','TRUE' ,'Dry' ,470);
DROP TABLE PC;
DROP TABLE LAPTOP;
DROP TABLE PEINTER;
DROP TABLE PRODUCT;
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

