第一篇:數(shù)據(jù)庫實驗報告(三)
實驗三:Alter表結(jié)構(gòu)修改
實驗?zāi)康氖煜な褂胊lter語句對表進行修改;熟悉常用的函數(shù)。
實驗內(nèi)容
創(chuàng)建學(xué)生信息表,其中表名為student,包含字段:number(學(xué)號)、name(姓名)
1. 將student表名修改為stu。
2. 向stu表添加id字段,設(shè)置為主鍵且自動遞增
3. 向stu表中添加一下3條學(xué)生記錄。1、012001、張杰2、012002、李連杰3、012003、王五
4. 查詢姓名并且將姓和名分別用兩列顯示(假設(shè)學(xué)生姓名的第一個字符是姓)。實驗程序或截圖
實驗總結(jié)
第二篇:實驗三 數(shù)據(jù)庫安全性實驗報告
一 實驗?zāi)康?.熟悉通過SQL語句對數(shù)據(jù)進行安全性控制;
2.針對具體應(yīng)用要求,完成授權(quán)和收回權(quán)限的操作;
二 實驗工具SQL Server 2005
利用SQL Server 2005 SSMS及其SQL查詢編輯器。
三 實驗內(nèi)容和要求
使用SQL對數(shù)據(jù)進行安全性控制,包括:授權(quán)和權(quán)力回收。操作完成后看看已授權(quán)的用戶是否真正具有授予的數(shù)據(jù)操作的權(quán)力了;權(quán)力收回操作之后的用戶是否確實喪失了收回的數(shù)據(jù)操作的權(quán)力。根據(jù)以上要求認真填寫實驗報告,記錄所有的實驗用例。具體操作可以參照課件中的實例。
具體操作內(nèi)容:
創(chuàng)建以下兩個關(guān)系模式,并分別插入相應(yīng)的數(shù)據(jù)。
職工(職工號,姓名,年齡,職務(wù),工資,部門號)
部門(部門號,名稱,經(jīng)理名,地址,電話號碼)
(1)請用SQL的Grant和Revoke語句(加上視圖機制)完成以下授權(quán)定義或存取控制功能,并進行相應(yīng)的安全性測試;
(a)用戶王明對兩個表有select權(quán)力;
(b)用戶李勇對兩個表有insert和delete權(quán)力;
(c)每個職工只對自己的記錄有select權(quán)力;
(d)用戶劉星對職工表有select權(quán)力,對工資字段具有更新權(quán)力;
(e)用戶張新具有修改這兩個表的結(jié)構(gòu)的權(quán)力;
(f)用戶周平具有對兩個表所有權(quán)力(對,插,改,刪數(shù)據(jù)),并具有給其他用戶授權(quán)的權(quán)利;
(g)用戶楊蘭具有從每個部門職工中select最高工資,最低工資,平均工資的權(quán)力,他不能查看每個人的工資。
(2)把上面(a)~(g)的每一種情況,撤銷各用戶所授予的權(quán)力。
四 實驗報告
4.1 實驗環(huán)境:
Windows XP
MicrosoftSQL server Management Studio 2005
4.2 實驗內(nèi)容與完成情況:
--新建數(shù)據(jù)庫
create database work
go
use work
--創(chuàng)建以下兩個關(guān)系模式,并分別插入相應(yīng)的數(shù)據(jù)。
--Worker(職工號,姓名,年齡,職務(wù),工資,部門號)
go
create table Worker(職工號 varchar(10),姓名 char(10),年齡 int,職務(wù) char(15),工資 int,部門號 char(50))
--Section(部門號,名稱,經(jīng)理名,地址,電話號碼)
create table Section(職工號 char(10),名稱 char(10),經(jīng)理名 char(10),地址 char(50),電話 char(15));
go
--插入部門信息
insert into Section values('a001','市場部門','李永','白理工','***');
insert into Section values('a002','營銷部門','李剛','白理工','***');
--插入職工信息
insert into Worker values('a001001','王明',20,'市場營銷員',2000,'a001');
insert into Worker values('a001002','李村',29,'市場營銷員',2000,'a001');
insert into Worker values('a001003','李永',20,'經(jīng)理',5000,'a001');
insert into Worker values('a002001','羅杰',18,'銷售員',2000,'a002');
insert into Worker values('a002002','李紅',24,'銷售員',2000,'a002');
insert into Worker values('a002003','李剛',32,'經(jīng)理',5000,'a002');
--查詢部門表和職工表的數(shù)據(jù)
select *from Worker;
select *from Section;
--授權(quán)
use work
go
--(a)用戶王明對兩個表有select權(quán)力;
create login [王明] with password=N'1234';
create user [王明] for login [王明];
grant select on Worker to [王明];
grant select on Section to [王明];
--插入數(shù)據(jù)權(quán)限測試
insert into Worker values('a002004','羅紅',28,'銷售助理',4000,'a002');
--查詢數(shù)據(jù)權(quán)限測試
select *from Worker;
--(b)用戶李勇對兩個表有insert和delete權(quán)力;
use work
go
create login [李勇] with password=N'1234';
create user [李勇] for login [李勇];
grant insert,delete on Worker to [李勇];
grant insert,delete on Section to [李勇];
--插入數(shù)據(jù)權(quán)限測試
insert into Worker values('a002005','羅莉',52,'銷售助理',4000,'a002');
--查詢數(shù)據(jù)權(quán)限測試
select *from Worker;
--刪除權(quán)限測試
delete Worker from where 職工號='a002001';
--(c)每個職工只對自己的記錄有select權(quán)力;
use work
go
create view Myself as select * from Worker
where 姓名=user;
grant select on Myself to public;
--(d)用戶劉星對職工表有select權(quán)力,對工資字段具有更新權(quán)力;
use work
go
create login [劉星] with password=N'1234';
create user [劉星] for login [劉星];
grant select,update(工資)on Worker to [劉星];
--更新修改權(quán)限測試
update Worker set 工資=3500 where 職工號='a002001'
--查詢數(shù)據(jù)權(quán)限測試
select *from Worker;
--(e)用戶張新具有修改這兩個表的結(jié)構(gòu)的權(quán)力;
use work
go
create login [張新] with password=N'1234';
create user [張新] for login [張新];
grant all PRIVILEGES on Worker to 張新;
grant all PRIVILEGES on Section to 張新;
--(f)用戶周平具有對兩個表所有權(quán)力(對,插,改,刪數(shù)據(jù)),并具有給其他用戶授權(quán)的權(quán)利;
use work
go
create login [周平] with password=N'1234';
create user [周平] for login [周平];
grant all PRIVILEGES on Worker to 周平with grant option;
grant all PRIVILEGES on Section to 周平with grant option;
--(g)用戶楊蘭具有從每個部門職工中select最高工資,最低工資,平均工資的權(quán)力,他不能查看每個人的工資。
use work
go
create login [楊蘭] with password=N'1234';
create user [楊蘭] for login [楊蘭];
grant view Wage(max(工資),min(工資),avg(工資))
as select max(工資),min(工資),avg(工資)from Worker Group by 部門號; grant select on Wage to 楊蘭;
--(2)把上面(a)~(g)的每一種情況,撤銷各用戶所授予的權(quán)力。
use work
go
--注銷用戶王明,收回權(quán)力
revoke select on WOrker from [王明];
revoke select on Section from [王明];
drop user [王明];
drop login [王明];
use work
go
--注銷用戶李勇,收回權(quán)力
revoke select on Worker from [李勇];
revoke select on Section from [李勇];
drop user [李勇];
drop login [李勇]
--撤銷用戶對自己的記錄有select權(quán)力
use work
go
revoke select on Myself from public;
drop view Myself cascade;
use work
go
--注銷用戶劉星,收回權(quán)力
revoke select,update(工資)on Worker from [劉星];
drop user [劉星];
drop login [劉星];
use work
go
--注銷用戶張新,收回權(quán)力
revoke alter on table Worker,Section from [張新];
drop user [張新];
drop login [張新];
use work
go
--注銷用戶周平,收回權(quán)力
revoke all PRIVILEGES on table Worker from [周平] cascade;
revoke all PRIVILEGES on Section from [周平] cascade;
drop user [周平];
drop login [周平];
--注銷用戶楊蘭,收回權(quán)力
revoke select on Wage from [楊蘭];
drop view Wage cascade;
drop user [楊蘭];
drop login [楊蘭];
use master
go
--刪除數(shù)據(jù)庫work
drop database work;
4.3 出現(xiàn)的問題:
在更改連接的時候使用SQL server身份驗證登陸,用新建的用戶名登陸失敗,顯示
該用戶與可信SQL server無關(guān)聯(lián)
4.4 解決方案(列出遇到的問題和解決辦法,列出沒有解決的問題): 啟用SQL Server身份驗證
SQL Server Management Studio--對象資源管理器--右鍵 你的服務(wù)器(.SQLExpress或者localhost)--屬性--安全性--服務(wù)器身份驗證--SQL Server和Windows身份驗證模式,最后重啟一下數(shù)據(jù)庫
第三篇:數(shù)據(jù)庫實驗報告
數(shù)據(jù)庫實驗報告
一、題目要求
某銀行準備開發(fā)一個銀行業(yè)務(wù)管理系統(tǒng),通過調(diào)查,得到以下的主要需求:
銀行有多個支行。各個支行位于某個城市,每個支行有唯一的名字。銀行要監(jiān)控每個支行的資產(chǎn)。銀行的客戶通過其身份證號來標識。銀行存儲每個客戶的姓名及其居住的街道和城市??蛻艨梢杂袔簦⑶铱梢再J款。客戶可能和某個銀行員工發(fā)生聯(lián)系,該員工是此客戶的貸款負責(zé)人或銀行帳戶負責(zé)人。銀行員工也通過身份證號來標識。員工分為部門經(jīng)理和普通員工,每個部門經(jīng)理都負責(zé)領(lǐng)導(dǎo)其所在部門的員工,并且每個員工只允許在一個部門內(nèi)工作。每個支行的管理機構(gòu)存儲每個員工的姓名、電話號碼、家庭地址及其經(jīng)理的身份證號。銀行還需知道每個員工開始工作的日期,由此日期可以推知員工的雇傭期。銀行提供兩類帳戶——儲蓄帳戶和支票帳戶。帳戶可以由2個或2個以上客戶所共有,一個客戶也可有兩個或兩個以上的帳戶。每個帳戶被賦以唯一的帳戶號。銀行記錄每個帳戶的余額、開戶的支行以及每個帳戶所有者訪問該帳戶的最近日期。另外,每個儲蓄帳戶有其利率,且每個支票帳戶有其透支額。每筆貸款由某個分支機構(gòu)發(fā)放,能被一個或多個客戶所共有。每筆貸款用唯一的貸款號標識。銀行需要知道每筆貸款所貸金額以及逐次支付的情況(銀行將貸款分幾次付給客戶)。雖然貸款號不能唯一標識銀行所有為貸款所付的款項,但可以唯一標識為某貸款所付的款項。對每次的付款需要記錄日期和金額。
二、需求分析
這一部分主要是根據(jù)實驗需求對銀行系統(tǒng)需求中的實體、實體屬性以及實體之間的關(guān)聯(lián)進行確認,以便畫出正確的概念模型。
2.1 實體確認
根據(jù)需求分析確認實體:銀行員工、銀行支行、客戶、賬戶(其中:儲蓄賬戶、支票賬戶是繼承實體賬戶而來)、貸款、支付(弱實體)。
2.2 實體屬性確認
銀行員工:身份證號(pi)、姓名、電話號碼、家庭地址、開始工作日期 銀行支行:支行名、資產(chǎn)、城市
客戶:身份證號、姓名、街道、所在城市 賬戶:賬戶號、余額、最近訪問日期 支票賬戶:透支額 儲蓄賬戶:利率 2.3 實體關(guān)系確認
賬戶和支行:N:1定義關(guān)系為Relationship_accout_bank 客戶和貸款:M:N定義關(guān)系為Relationship_client_loan 客戶和員工:M:1 定義關(guān)系為 Relation_client_staff 貸款和支行:1:N 定義關(guān)系為 Relationship_loan_bank 客戶和賬戶:M:N 定義關(guān)系為 client__accout 貸款發(fā)放信息和貸款:N:1 定義關(guān)系為 Relationship_loan_pay 支行和員工:1:N 定義關(guān)系為Relationship_staff_bank
員工和員工:1:N 定義關(guān)系為 Relationship_lead
三、概念模型(CDM)
根據(jù)sybase power designer畫出概念模型(CDM),如下圖所示:
四、物理模型(PDM)
根據(jù)概念模型轉(zhuǎn)化成物理模型(PDM),如下圖所示:
第四篇:數(shù)據(jù)庫實驗報告
實驗4SQL高級應(yīng)用
【實驗?zāi)康摹?/p>
1、掌握在SQL SERVER 2005下進行數(shù)據(jù)還原的方法。
2、掌握SQL語句的查詢統(tǒng)計功能和數(shù)據(jù)更改功能。
【實驗內(nèi)容】
1.還原factory數(shù)據(jù)庫。
2.在factory數(shù)據(jù)庫上,完成如下各題。
(1)刪除factory數(shù)據(jù)庫上各個表之間建立的關(guān)系。(2)*顯示各職工的工資記錄和相應(yīng)的工資小計。
(3)*按性別和部門名的所有組合方式列出相應(yīng)的平均工資。
(4)在worker表中使用以下語句插入一個職工記錄。職工號:20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門號:4。
在depart表中使用以下語句插入一個部門記錄。部門號:5;部門名:設(shè)備處。對worker和depart表進行全外連接顯示職工的職工號、姓名和部門名,然后刪除這兩個插入的記錄。
(5)顯示最高工資的職工的職工號、姓名、部門名、工資發(fā)放日期和工資。(6)顯示最高工資的職工所在的部門名。
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號和姓名。(8)*采用游標方式實現(xiàn)(6)小題的功能。(9)*采用游標方式實現(xiàn)(7)小題的功能。
(10)*先顯示worker表中的職工人數(shù),開始一個事務(wù),插入一個職工記錄,再顯示worker表中的職工人數(shù),回滾該事務(wù),最后顯示worker表中的職工人數(shù)。
【實驗報告要求】
1.第(1)寫出操作步驟。
2.其他各題寫出實現(xiàn)要求的命令/程序,并列出執(zhí)行結(jié)果。
【操作步驟】
1.還原factory數(shù)據(jù)庫。
2.在factory基礎(chǔ)上,有
(1)刪除factory數(shù)據(jù)庫上各個表之間建立的關(guān)系。
(2)*顯示各職工的工資記錄和相應(yīng)的工資小計。
Select 職工號,姓名,工資from salary Order by 職工號
Compute sum(工資)by 職工號
(3)*按性別和部門名的所有組合方式列出相應(yīng)的平均工資。
select worker.職工號,worker.性別,depart.部門名,avg(工資)as'平均工資' from worker inner join depart on worker.部門號=depart.部門號 inner join salary on worker.職工號=salary.職工號
group by worker.職工號,worker.性別,depart.部門名
order by worker.職工號
(4)在worker表中使用以下語句插入一個職工記錄。職工號:20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門號:4。
insert into worker values('20','陳立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下語句插入一個部門記錄。部門號:5;部門名:設(shè)備處。
Insert into depart Values('5','設(shè)備處')對worker和depart表進行全外連接顯示職工的職工號、姓名和部門名,然后刪除這兩個插入的記錄。
use factory Select b.部門號,c.姓名
from salary a,departb,worker c delete from worker where 職工號=20 delete from depart where 部門號=5(5)顯示最高工資的職工的職工號、姓名、部門名、工資發(fā)放日期和工資。
Use factory Select b.部門名,c.職工號,c.姓名,b.部門名,a.日期,a.工資 from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and a.職工號=c.職工號and b.部門號=c.部門號(6)顯示最高工資的職工所在的部門名。
Use factory Select b.部門名from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and c.部門號=b.部門號and a.職工號=c.職工號
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號和姓名。
Use factory Select a.職工號,a.姓名,avg(b.工資)as平均工資from worker a,salary b where a.職工號=b.職工號 group by a.職工號,a.姓名
having avg(工資)<(select avg(工資)from salary)
第五篇:數(shù)據(jù)庫實驗報告
南華大學(xué)
計算機科學(xué)與技術(shù)學(xué)院
實驗報告
(2013 ~2014 學(xué)
第二學(xué)期)
課程名稱 實驗名稱
數(shù)據(jù)庫原理與技術(shù)
姓名 張濤 學(xué)號 20124350230
專業(yè) 軟件工程
班級 02班
地點
教師 劉征海 實驗1 認識DBMS 一.實驗題目
認識DBMS 二.實驗要求
1.利用管理工具創(chuàng)建數(shù)據(jù)庫、表和表間關(guān)系。
實驗?zāi)康暮妥⒁馐马?基本操作,進一步理解數(shù) 據(jù)庫、表、表間關(guān)系的概念。
注意事項:創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表時應(yīng)認真,如果出現(xiàn)錯誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。三.實驗代碼(內(nèi)容)
(1)利用SQL Server Management Studio 創(chuàng)建數(shù)據(jù)庫,名稱為【學(xué)生選課
YYXXXX】。其中YY為專業(yè)代號,計算機為JS,軟件工程為RJ,網(wǎng)絡(luò)為WL,數(shù)媒為
SM;XXXX為各位同學(xué)的學(xué)號中的最后四位 實驗?zāi)康模菏煜QL Server Management Studio
(2)在【學(xué)生選課YYXXXX】中建立數(shù)據(jù)表,表的定義如下所示。
學(xué)生YYXXXX(學(xué)號,姓名,性別,出生日期,院系名稱,備注);
課程YYXXXX(課程號,課程名,先行課,學(xué)分); 選修YYXXXX(學(xué)號,課程號,分數(shù))。
要求定義每張表的主碼,為屬性選擇合適的數(shù)據(jù)類型,決定是否允許為空,為【性別】和【學(xué)分】屬性定義默認值。
(3)定義表之間的關(guān)系。
(4)分別為表錄入幾行數(shù)據(jù)記錄,同時練習(xí)數(shù)據(jù)的修改和刪除操作
2.利用SQL 語句創(chuàng)建數(shù)據(jù)庫、表和表間關(guān)系 實驗?zāi)康暮妥⒁馐马?/p>
實驗?zāi)康模菏煜?chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表的SQL 語句。
注意事項:輸入SQL 語句時應(yīng)注意,語句中均使用西文操作符號。
實驗內(nèi)容
在SQL Server Management Studio 中新建查詢,實現(xiàn)以下操作。(1)用SQL 語句創(chuàng)建數(shù)據(jù)庫,名稱為“StudentCourseYYXXXX”。其中YYXXXX 為各位同學(xué)的學(xué)號中的最后四位。
(2)用SQL 語句創(chuàng)建StudentCourseYYXXXX 中的3 張表,同時指定主碼、外 碼、默認值等。
(3)直接在表數(shù)據(jù)窗口中錄入表數(shù)據(jù)記錄。
實驗 2 交互式 SQL(1)
一、數(shù)據(jù)庫單表查詢 實驗?zāi)康暮妥⒁馐马?/p>
實驗?zāi)康模赫莆諉伪聿樵僑ELECT、FROM、WHERE 的用法,特別要掌握比較運 算符、邏輯運算符的使用。注意事項:子句WHERE<條件>表示元組篩選條件;子句HAVING<條件>表示元
組選擇條件;子句HAVING<條件>必須和GROUP BY 子句配合使用;注意輸入SQL語句時均應(yīng)使用西文操作符號。實驗內(nèi)容
(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)單表查詢 實驗步驟
(1)選擇要查詢的數(shù)據(jù)庫,右擊【新建查詢】,或者選擇系統(tǒng)菜單中的【文
件】|【新建】|【使用當前連接查詢】命令,或者單擊標準工具欄中的【新建查
詢】按鈕,即可新建一個查詢窗口。如果查詢數(shù)據(jù)庫不是StudentCourseYYXXXX,則可在可用數(shù)據(jù)庫下拉列表中進行選擇,或用USE 語句調(diào)用。
(2)在查詢窗口中輸入SELECT 查詢語句,對StudentCourseYYXXXX 數(shù)據(jù)庫 進行查詢操作。
① 查詢計算機系全體學(xué)生的信息
② 查詢姓“李”的學(xué)生的學(xué)號和姓名。
③ 查詢課程表中先行課為空的課程名。
④ 查詢考試成績有不及格的學(xué)生的學(xué)號。
⑤ 求選修了C1 課程或C2 課程的學(xué)生的學(xué)號及成績。
⑥ 查詢?nèi)w計算機系學(xué)生的姓名及其年齡。
⑦ 查詢計算機系在1986-1987 年之間出生的學(xué)生的姓名。
⑧ 查詢姓“李”的前兩個學(xué)生的學(xué)號和姓名。
⑨ 查詢選修了兩門以上課程的學(xué)生學(xué)號與課程數(shù)。
⑩ 查詢選修課程數(shù)大于等于2 的學(xué)生的學(xué)號、平均成績和選課門數(shù),并按平均成績降序排列。
二、數(shù)據(jù)庫多表連接查詢 實驗?zāi)康暮妥⒁馐马?/p>
實驗?zāi)康模豪斫舛啾聿樵兊母拍?;掌握多表查詢的SELECT、FROM、WHERE、JOIN子句的用法,特別要求比較內(nèi)連接、外連接的結(jié)果。
注意事項:內(nèi)連接、左外連接和右外連接的含義及表達方法;注意輸入SQL 語 句時均應(yīng)使用西文操作符號。實驗內(nèi)容
(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)多表復(fù)雜查詢。實驗步驟
新建查詢窗口,選擇StudentCourseYYXXXX 為當前數(shù)據(jù)庫,輸入如下SELECT 查詢語句并執(zhí)行,對數(shù)據(jù)庫進行多表連接查詢操作。(1)查詢選修了【數(shù)據(jù)庫原理】的計算機系的學(xué)生學(xué)號和姓名。
(2)查詢每一門課的間接先行課(即先行課的先行課)。
(3)查詢學(xué)生的學(xué)號、姓名、選修課程的名稱和成績。
(4)查詢選修了課程的學(xué)生姓名。
(5)查詢所有學(xué)生的信息和所選修的課程。
(6)查詢已被選修的課程的情況和所有課程的名字。
(7)列出學(xué)生所有可能的選修情況。
(8)查找計算機系的學(xué)生選修課程數(shù)大于2 的學(xué)生的姓名、平均成績和選課 門數(shù),并按平均成績降序排列。
實驗 3 交互式 SQL(2)數(shù)據(jù)庫嵌套查詢和組合查詢 實驗?zāi)康暮妥⒁馐马?/p>
實驗?zāi)康模赫莆詹樵冎星短撞樵兒徒M合查詢的操作方法,進一步加深對 SELECT 語句的理解。
注意事項:子句的使用;注意語句的層次嵌套關(guān)系和括號的配對使用問題;
注意輸入SQL 語句時均應(yīng)使用西文操作符號。實驗內(nèi)容(1)創(chuàng)建查詢窗口,設(shè)置查詢環(huán)境。(2)分組查詢。(3)統(tǒng)計查詢。(4)嵌套查詢。實驗步驟
新建查詢窗口,選擇StudentCourseYYXXXX 為當前數(shù)據(jù)庫,輸入如下SELECT 查詢語句并執(zhí)行,對數(shù)據(jù)庫進行嵌套查詢和組合查詢操作。
(1)統(tǒng)計選修了【數(shù)據(jù)庫原理】課程的學(xué)生人數(shù)。
(2)查詢沒有選修【數(shù)據(jù)庫原理】課程的學(xué)生信息。
(3)查詢其他系中比計算機系學(xué)生年齡都小的學(xué)生。
(4)查詢被0602001 學(xué)生或0602002 學(xué)生所選修的課程的課程號(用UNION 組合查詢與IN 條件查詢兩種方法實現(xiàn))。
(5)查詢0602001 學(xué)生和0602002 學(xué)生同時選修的課程的課程號(用
INTERSECT 組合查詢與EXISTS 嵌套子查詢兩種方法實現(xiàn))。
(6)查詢被0602001 學(xué)生選修,但沒有被0602002 學(xué)生所選修的課程的課程
號(用EXCEPT 組合查詢與NOT EXISTS 嵌套子查詢兩種方法實現(xiàn))。
實驗 4 交互式 SQL(3)數(shù)據(jù)的更新 實驗?zāi)康暮妥⒁馐马?/p>
實驗?zāi)康模菏煜げ迦?、修改和刪除SQL 語句的用法。注意事項:對于INSERT 語句,要求理解默認值約束、空值約束在插入時所 起的作用。實驗內(nèi)容
(1)使用INSERT 語句在數(shù)據(jù)庫的表中插入幾行記錄。(2)使用UPDATA 語句修改某個數(shù)據(jù)。(3)使用DELETE 語句刪除某行記錄。實驗步驟
(1)新建查詢窗口,選擇StudentCourseYYXXXX 為當前數(shù)據(jù)庫。
(2)在已建立StudentCourseYYXXXX 數(shù)據(jù)庫和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 個表的基礎(chǔ)上,向StudentCourseYYXXXX數(shù)據(jù)庫中 的表更新數(shù)據(jù)。
① 向表StudentsYYXXXX 中插入(0601001,趙林, 男,1985-09-08,計算機)的記錄。
② 向SCYYXXXX 表中添加一個學(xué)生的選課記錄,學(xué)號為0601001,所選的課
程號為C2。SC表中有Sno、Cno、Grade 這3 個列。這里只知道學(xué)號和課程號,不知道成績值。
③ 向表StudentsYYXXXX 中插入(0601002,張修雨,default)記錄,該記錄 的數(shù)據(jù)中default 表示默認值‘男’,其他數(shù)據(jù)表示空值。
④ 用CREATE 語句建立表StudentBAK1YYXXXX,包含(與Students 的Sno、Sname、Sdept 相同)3 個字段,然后用INSERT SELECT 語句實現(xiàn)向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的計算機系學(xué)生的學(xué)號、姓名、所在系的信息。
⑤ 用 SELECT...INTO 語句實現(xiàn)把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的學(xué)生的學(xué)號、姓名存儲到一個新表StudentBAK2YYXXXX。
⑥ 將姓名為【趙林】的同學(xué)的所在系改為【機電系】,愛好改為【足球】。
⑦ 將選修了課程名為【數(shù)據(jù)庫原理】的學(xué)生成績加5 分。⑧ 將StudentCourseYYXXXX
數(shù)據(jù)庫的StudentBAK1YYXXXX 表中所有姓趙的 同學(xué)刪除。
⑨ 刪除計算機系選修成績不及格的學(xué)生選修記錄。⑩ 將除。StudentCourseYYXXXX
數(shù)據(jù)庫的StudentBAK2YYXXXX 表中的所有行刪
四.實驗總結(jié)
實驗一要注意創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表時應(yīng)認真,如果出現(xiàn)錯誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。輸入SQL 語句時應(yīng)注意,語句中均使用西文操作符號;實驗二應(yīng)注意注意group和having以及where的搭配使用的情況;實驗三注意注意輸入SQL 語句時均應(yīng)使用西文操作符號,子句的使用,注意語句的層次嵌套關(guān)系和括號的配對使用問題;實驗四注意輸入SQL 語句時均應(yīng)使用西文操作符號,對于INSERT 語句,要求理解默認值約束、空值約束在插入時所起的作用。注意插入,修改,新建表,刪除語句的寫法,并且掌握把原表中的數(shù)據(jù)轉(zhuǎn)存到新表中的語句寫法。