實驗六七 SQL的數據更新

實驗六 SQL的數據更新

實驗時間:2課時

實驗性質:驗證

實驗主要內容及方法: SQL數據的插入、修改和刪除

實驗要求:

(1) 掌握SQL數據插入、修改和刪除語句的一般格式。;

(2) 掌握SQL數據插入、修改和刪除使用方法。

實驗目的:熟練掌握SQL數據插入、修改和刪除的使用。

實驗設備:裝有SQL SERVER 2005的電腦

實驗步驟:

(1) 新建一個SQL查詢窗口;

(2) 選擇數據庫;

(3) 驗證如下例題:

一、插入數據

例3.52  在數據庫SC中先創建一個關係(表)History_Student,其模式(結構)與Students完全一樣。

CREATE TABLE History_Student(

Sno char(10) primary key,

Sname char(20) UNIQUE,

Ssex char(2),

Sage int,

Sdept char(20))

試將關係Students中的所有元組插入到關係History_Student中去,其SQL命令爲:

INSERT
INTO History_Student
SELECT *
FROM Students;

 

 

二、修改數據

例3.53  將學號爲“S03”的學生年齡改爲22歲,即要修改滿足條件的一個元組的屬性值。

 

UPDATE Students
SET Sage=22
WHERE Sno='S03';

例3.54 將所有學生的年齡增加1歲。即要修改多個元組的值。

UPDATE Students
SET Sage=1+Sage;

例3.55  將數學系所有學生的成績置零。

由於學生所在系的信息在Students表中,而學習成績在Reports表中,因此,可以將SELECT子查詢作爲WHERE子句的條件表達式。故該更新要求的SQL命令爲:

UPDATE Reports
SET Grade=0
WHERE '數學'=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);

 

 

三、刪除數據

例3.56  分別刪除學號爲“S04”的學生記錄及學生選課記錄。(注意參照關係及被參照關係,即參照完整性


 

DELETE
FROM Reports
WHERE  Sno='S04';



DELETE
FROM Students
WHERE  Sno='S04';

 

 

例3.57  刪除數學系所有學生的選課記錄。

 

DELETE
FROM Reports
WHERE '數學'=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);

 

例3.58  刪除所有學生的選課記錄。

DELETE
FROM Reports;

 

 

實驗七 SQL的視圖

實驗時間:2課時

實驗性質:驗證

實驗主要內容及方法:SQL視圖建立、修改和刪除

實驗要求:

(1) 掌握SQL視圖建立、修改和刪除;

(2) 掌握SQL視圖查詢。

實驗目的:熟練掌握SQL的應用。

實驗設備:裝有SQL Server 2005的電腦

實驗步驟:

(1) 選擇數據庫SC;

(2) 新建查詢;

(3) 驗證如下例題:

一、定義視圖

1 建立視圖

例3.59 建立數學系學生的視圖Math_Student,並要求進行修改和插入操作時仍需保證該視圖只有數學系的學生,視圖的屬性名爲Sno,Sname,Sage,Sdept。

CREATE VIEW Math_Student
AS
SELECT Sno, Sname, Sage, Sdept
FROM Students
WHERE Sdept='數學'
WITH CHECK OPTION

 

例3.60  建立學生的學號(Sno)、姓名(Sname)、選修課程名(Cname)及成績(Grade)的視圖Student_CR。

本視圖由三個基本表的連接操作導出,其SQL語句如下:

CREATE VIEW Student_CR
AS
SELECT Students.Sno, Sname, Cname, Grade
FROM Students, Reports, Courses
WHERE Students.Sno=  Reports.Sno

 

 

例3.61  定義一個反映學生出生年份的視圖Student_Birth。

CREATE VIEW Student_birth(Sno, Sname, Sbirth)
AS SELECT Sno, Sname, 1996-Sage
FROM Students

 

2 刪除視圖

DROP VIEW Student_Birth;

例3.62刪除視圖Student_Birth。

DROP VIEW Student_Birth;

二、查詢視圖

例3.63 在數學系的學生視圖Math_Student中找出年齡(Sage)小於20歲的學生姓名(Sname)和年齡(Sage)。

 

SELECT Sname, Sage
FROM Math_Student
WHERE Sage<20;

說明:本例轉換後的查詢語句爲:

SELECT Sname, Sage

FROM Students

WHERE Sdept=’數學’ AND Sage<20;

例3.64 在Student_CR視圖中查詢成績在85分以上的學生學號(Sno)、姓名(Sname)和課程名稱(Cname)。

SELECT Sno, Sname, Cname
FROM Student_CR
WHERE Grade>85;

 

 

三、更新視圖

例3.65  將數學系學生視圖Math_Student中學號爲S05的學生姓名改爲“黃海”。

UPDATE Math_Student
SET Sname='黃海'
WHERE Sno='S05';

說明:DBMS自動轉換爲對基本表的更新語句如下:

UPDATE Students

SET Sname='黃海'

WHERE Sno='S05' AND Sdept='數學';

例3.66  向數學系學生視圖Math_Student中插入一個新的學生記錄,其中學號爲“S19”,姓名爲“王海”,年齡爲20歲。

INSERT
INTO Math_Student
VALUES ('S19', '王海', 20, '數學');

例3.67  刪除數學系學生視圖Math_Student中學號爲“S09”的記錄。

DELETE
FROM Math_Student
WHERE Sno='S09'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章