my sql实验视图_数据库SQL 视图的创建及使用实验报告(共5篇)
《數據庫基礎》實驗報告
班級__計算機111__學號__xxxxxxxx__姓名__xxx___完成日期____6.20___
實驗室 __理工樓310_ 指導老師xxx成績____100______
實驗
四、視圖的創建及使用
(一)實驗目的
(1)加深對視圖的理解。
(2)掌握使用管理工具創建和使用視圖的方法。
(3)掌握使用SQL創建和使用視圖的方法。
(二)實驗內容
(1)使用“圖書借閱”數據庫,在管理工具中創建視圖“借閱_計算機圖書”,包含借閱類別為“計算機”的圖書的信息:(讀者編號,姓名,書號,書名,借閱日期)。
(2)直接使用SQL定義(1)中要求的視圖并對其進行查詢。
(3)在管理工具中建立各類視圖(如單表視圖、多表視圖、分組視圖、基于視圖的視圖等)。
(4)嘗試使用insert、update、delete更新視圖。
(三)實驗具體步驟
(1)使用“圖書借閱”數據庫,在管理工具中創建視圖“借閱_計算機圖書”,包含借閱類別為“計算機”的圖書的信息(讀者編號,姓名,書號,書名,借閱日期)。 create view 借閱_計算機圖書(Duno,Duname,Shuno,Shuname,JYtime)
as
select Duzhe.Duno,Duname,Tushu.Shuno,Shuname, JYtime from Tushu,Duzhe,Jieyue where Duzhe.Duno=Jieyue.Duno and Tushu.Shuno,=Jieyue.Shuno and Liebie='計算機'
(2)直接使用SQL定義(1)中要求的視圖并對其進行查詢。
select * from 借閱_計算機圖書
(3)在管理工具中建立各類視圖
用管理工具建立:在管理工具中,打開圖書借閱數據庫,右擊視圖,新建視圖,然后依照要求建立各種視圖。
《數據庫基礎》實驗報告
SQL語句:
create view 單表視圖
as
select Shuname,Shuno,Zuozhe from Tushu
create view 多表視圖
as
select Shuname,Shuno,Zuozhefrom Tushu,Jieyue
where Tushu.Shuno,=Jieyue.Shuno
create view 分組視圖(Shuno,Duno)
as
select Shuno,Duno from Jieyue group by Shuno
create view 基于視圖的視圖
as
select Duno,Duname,Danwei from 單表視圖 where Sex = '男'
(4)嘗試使用insert、update、delete更新視圖。
insert into 單表視圖 values(002,'三星','紹興文理','男',13456564751)
update 單表視圖 set sex='男' where Duname='華為'
delete from 單表視圖 where Shuno=1002
(四)實驗心得
通過這次實驗,對視圖有了更深的認識,從視圖的創建,插入,修改,查詢以及刪除都有了詳細的認識。視圖能夠簡化用戶的操作,好好的學習課程,為以后的課程打下好基礎!在實驗的過程中也遇到一些問題,但是經過自己的理解以及請教同學把實驗完成。
實驗十報告 創建視圖
實驗目的
1.掌握創建視圖的SQL語句的用法。
2.掌握使用企業管管理器創建視圖的方法。 3.掌握使用創建視圖向導創建視圖的方法。 4.掌握查看視圖的系統存儲過程的用法。 5.掌握修改視圖的方法。 一. 實驗準備
1.了解創建視圖方法。
2.了解修改視圖的SQL語句的語法格式。 3.了解視圖更名的系統存儲過程的用法。 4.了解刪除視圖的SQL語句的用法。 二. 實驗要求
1. 用不同的方法創建視圖。
2. 提交實驗報告,并驗收實驗結果。 三. 實驗內容 1. 創建視圖
(1) 使用企業管理器創建視圖
① 在EDUC庫中以“student”表為基礎,建立一個名為“V_計算機系學生”的視圖。在使用該視圖時,將顯示“student”表中的所有字段.
蘭州大學數據庫實驗報告
視圖如下:
(2) 使用SQL語句創建視圖 ① 在查詢分析器中建立一個每個學生的學號、姓名、選修的課名及成績的視圖S_C_GRADE; Create VIEW S_C_GRADE AS
SELECT student.sno,sname,cname,score FROM student,course,student_course WHERE student.sno=student_course.sno AND course.cno=student_course.cno;
視圖如下:
②建立一個所有計算機系學生的學號、選修課程號以及平均成績的視圖COMPUTE_AVG_GRADE; Create VIEW COMPUTE_AVG_GRADE AS
SELECT student.sno,course.cno,AVG(score) '平均成績' FROM student,course,student_course WHERE student.sno=student_course.sno
AND course.cno=student_course.cno AND student.dno='CS' GROUP BY student.sno,course.cno;
視圖如下:
2. 修改視圖
(1) 使用企業管理器修改視圖
在企業管理器中將視圖COMPUTE_AVG_GRADE中改成建立在數學系的學生學號、選修課程號以及平均成績的視圖。(IS設為數學系)
(2) 使用SQL語句修改視圖
① 在查詢分析器中使用更改視圖的命令將上面建立的視圖“V_計算機系學生”更名為“V_計算機系男生”。
SP_RENAME 'V_計算機系學生','V_計算機系男生';
3. 刪除視圖
(1) 使用企業管理器刪除視圖
用企業管理器刪除視圖“V_計算機系學生”
(2) 使用SQL語句刪除視圖
用SQL語句刪除視圖COMPUTE_AVG_GRADE; DROP VIEW COMPUTE_AVG_GRADE;
實驗十一 使用視圖
一. 實驗目的
1. 熟悉和掌握對數據表中視圖的查詢操作和SQL命令的使用;
2. 熟悉和掌握對數據表中視圖的更新操作和SQL命令的使用,并注意視圖更新與基本表更新的區別與聯系
3. 學習靈活熟練的進行視圖的操作,認識視圖的作用 二. 實驗準備
1.熟悉SQL SERVER 工作環境。 2.能連接到EDUC數據庫。
3.復習有關視圖操作的SQL語言命令。 三. 實驗要求
1. 在實驗開始之前做好準備工作。
2. 實驗之后提交實驗報告,思考視圖和基本表的區別 四. 實驗內容 一. 定義視圖
在EDUC數據庫中,已Student Course 和Student_course 表為基礎完成一下視圖定義 1. 定義計算機系學生基本情況視圖V_Computer;
CREATE VIEW V_Computer AS SELECT student.* FROM student WHERE student.dno='CS';
視圖如下:
2. 將Student Course 和Student_course表中學生的學號,姓名,課程號,課程名,成
績定義為視圖V_S_C_G CREATE VIEW V_S_C_G AS SELECT student.sno,sname,course.cno,course.cname,score FROM student,course,student_course WHERE student.sno=student_course.sno course.cno=student_course.cno;
AND
視圖如下:
3. 將各系學生人數,平均年齡定義為視圖V_NUM_AVG CREATE VIEW V_NUM_AVG AS SELECT COUNT(dno) '各系人數',AVG(sage) '平均年齡' FROM student GROUP BY dno;
視圖如下:
4. 定義一個反映學生出生年份的視圖V_YEAR CREATE VIEW V_YEAR AS SELECT sname,2014-sage '出生年份' FROM student;
視圖如下:
5. 將各位學生選修課程的門數及平均成績定義為視圖V_AVG_S_G
CREATE VIEW V_AVG_S_G AS SELECT student.sno '學號',sname '姓名',COUNT(*) '選修門數',AVG(score) '平均成績' FROM student,student_course WHERE student.sno=student_course.sno GROUP BY student.sno,sname;
視圖如下:
6. 將各門課程的選修人數及平均成績定義為視圖V_AVG_C_G CREATE VIEW V_AVG_C_G AS SELECT cno '課程號',COUNT(cno) '選修人數',AVG(score) '平均成績' FROM student_course GROUP BY cno;
視圖如下:
二. 使用視圖
1. 查詢以上所建的視圖結果。
所建視圖結果如上題截圖所示
2. 查詢平均成績為90分以上的學生學號、姓名和成績;
SELECT 學號,姓名,平均成績 FROM V_AVG_S_G WHERE 平均成績>90;
3. 查詢各課成績均大于平均成績的學生學號、姓名、課程和成績;
SELECT V_S_C_G.sno,V_S_C_G.sname,V_S_C_G.cname,V_S_C_G.score FROM V_S_C_G,V_AVG_S_G WHERE V_S_C_G.sno=V_AVG_S_G.學號 AND V_S_C_G.score>V_AVG_S_G.平均成績;
4. 按系統計各系平均成績在80分以上的人數,結果按降序排列;
1.先創建學生學號-系別視圖V_STUDENT CREATE VIEW V_STUDENT AS SELECT sno,dno FROM student; 2.進行查詢
SELECT V_STUDENT.dno '系別',COUNT(V_STUDENT.sno) '人數' FROM V_STUDENT,V_AVG_S_G WHERE V_STUDENT.sno=V_AVG_S_G.學號 AND V_AVG_S_G.平均成績>80 GROUP BY V_STUDENT.dno;
三. 修改視圖 并查詢結果; UPDATE V_IS SET sname='S1_MMM' WHERE SNO='32011'; UPDATE V_IS SET sname='S4_MMM' WHERE SNO='32014'; SELECT * FROM V_IS WHERE sno='32011' OR sno='32014'; 1. 通過視圖V_IS,分別將學號為“S1”和“S4”的學生姓名更改為“S1_MMM”,”S4_MMM”
2. 通過視圖V_IS,新增加一個學生記錄 ('S12','YAN XI',19,'IS'),并查詢結果
INSERT INTO V_IS(sno,sname,sex,dno,sage) VALUES('S12','YAN XI','女','IS','19') SELECT *
FROM V_IS
WHERE sno='S12';
3. 要通過視圖V_AVG_S_G,將學號為“S1”的平均成績改為90分,是否可以實現?并說明原因
答:不能實現,因為視圖或函數'V_AVG_S_G' 包含聚合、DISTINCT 或GROUP BY 子句或者PIVOT 或UNPIVOT 運算符,所以無法進行更新。
UPDATE V_AVG_S_G SET 學號='32011' WHERE 平均成績='90';
實驗十二 更新語句
一. 實驗目的
1. 熟悉使用UPDATE/INSERT/DELETE語句進行表操作; 2. 能將這些更新操作應用于實際操作中去; 二. 三. 實驗準備 實驗要求 1.了解這些更新語句的基本語法和用法; 1. 完成下面的實驗內容,并提交實驗報告; 2. 在實驗報告中附上相應的代碼; 四. 實驗內容
1. 對于student表,將所有專業號為‘001’的,并且入學年份為2006的學生,或是專業號為‘003’,并且年齡小于20歲的學生的班級號改為‘001’。
UPDATE student SET classno='001'
WHERE (mno='001'AND YEAR(sctime)='2006')OR(mno='003'AND (year(getdate())-year(sdate))<20);
2. 對于student表,刪掉所有年齡小于20歲,并且專業號為‘003’的學生的記錄。
DELETE FROM student WHERE mno='003'AND (year(getdate())-year(sdate))<20
3. 對于student表,插入一條新記錄,它的具體信息為,學號:20071100
11、姓名:張
三、性別:男、出生日期:1988080
8、院系編號:‘001’、專業編號: ‘001’、班級號:‘001’、入學時間:20070901。 INSERT INTO student(sno,sname,sex,sdate,dno,mno,classno,sctime) VALUES('2007110011','張三','男','1988-8-8','001','001','001','2007-9-1');
4. 對于student表,將入學時間最晚的學生和年齡最小的學生的聯系方式去掉。
UPDATE student SET tel=null
WHERE sctime>=ALL(select sctime FROM student) OR year(sdate)>=ALL(select year(sdate) from student)
5. 對于student表,將平均年齡最小的一個院系的院系編號改為‘008’。
UPDATE student SET dno='008' where dno in( SELECT top 1 dno FROM student
GROUP BY dno
ORDER BY AVG(year(getdate())-year(sdate)) )
T-SQL編程
一、【實驗目的】
1、掌握T_SQL編程的基本語法
2、常用函數的使用方法
二、【實驗要求】
1、使用查詢分析器練習T-SQL編程方法
2、練習函數的使用
三、【實驗準備】
1、復習與本次實驗內容相關知識
2、預習相關函數(請預查閱CONVERT、DATENAME、GFTDATE函數的用法)
四、【實驗內容】
1、條件結構
自己編寫一段程序判斷一個年份(比如1900年)是否是閏年,是則顯示1900年為閏年,否則顯示1900年不是閏年.
DECLARE @year INT SELECT @year=2014 if @year%4=0 and @year%100<>0 print CONVERT(CHAR(4),@year)+'是閏年' else print CONVERT(CHAR(4),@year)+'不是閏年'
2、循環結構 (1)下面是計算1~100和的循環結構,執行之,體會循環結構程序,注意語句塊標志BEGIN ... END
DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=0 WHILE @I<=100 BEGIN SELECT @SUM=@SUM+@I SELECT @I=@I+1 END PRINT '1...100的和為:'+CONVERT(CHAR(4),@SUM)
(3) 編寫一個程序用于計算10的階乘
DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=1 WHILE @I<=10 BEGIN SELECT @SUM=@SUM*@I SELECT @I=@I+1 END PRINT '階乘!的結果為:'+CONVERT(CHAR(10),@SUM)
(4) 自己編制一個程序,要求其能打印出100內的素數(只能被其自身和1整除的數).--循環結構+條件結構
SELECT main.number FROM master..spt_values AS main WHERE type='P'
AND number BETWEEN 3 AND 100 AND NOT EXISTS ( SELECT 1 FROM master..spt_values AS sub WHERE
type='P'
AND sub.number BETWEEN 2 AND main.number - 1 AND main.number % sub.number = 0)
3、CASE結構
(1)下面SQL查詢圖書的信息,并根據圖書定價判斷是否適合作為教材
select 書名, 出版社, 作者, case
when 定價>50 then '定價太高,不適合作教材'
else '定價' + CAST(定價 as varchar(5)) + ',可以作教材'
end 可否作為教材 from 圖書
(2) 請自己編程實現各位同學的成績以等級分顯示即:90分及以上為優,80分及以上到90以下為良,70分及以上到80分以下為中,60分及以上到70分以下為及格,其余為不及格. SELECT student.sno ,sname ,cname, CASE WHEN student_course.score >=90 THEN '優' when student_course.score>=80 and student_course.score <=90 THEN '良'
when student_course.score>=70 and student_course.score <=80 THEN '中'
when student_course.score>=60 and student_course.score<=70 THEN '及格'
else '不及格' END GRADE FROM student_course,course,student WHERE student_course.cno=course.cno AND student_course.sno=student.sno
4、函數使用
下面查詢,顯示當前日期,顯示格式為:"今天是XXXX年XX月XX日,星期X",執行之,體會系統函數的用法.
SELECT '今天是'+DATENAME(YEAR,GETDATE())+'年' +DATENAME(MONTH,GETDATE())+'月' +DATENAME(DAY,GETDATE())+'日,' +DATENAME(WEEKDAY,GETDATE())
實驗四使用SQL語句修改SQL Server數據庫
1、實驗目的:
(1) 了解SQL Server數據庫的邏輯結構和物理結構;
(2) 掌握使用SQL語句修改數據庫的方法;
2、實驗準備:
(1)要明確能夠修改數據庫的用戶必須是系統管理員,或者是被授權使用CREATE DATABASE語句的用戶;
(2)修改數據庫必須要明確:除存儲位置,即物理文件名不能修改外,其它項均可以修改,包括數據庫名、數據庫大小和增長量等數據;
(3)了解使用SQL語句修改數據庫的方法。
3、實驗內容:
(1)刪除實驗三中創建的數據庫;
(2)用自己名字創建一個數據庫,包含一個主數據文件data1和一個日志文件log1,最大值都是5M;增長量分別為10%和1M;存儲在自己的文件夾下;
(3)添加一個數據文件data2,最大值為3M;
(4)添加一個日志文件log2,最大值為4M;
(5)添加一個文件組group1;
(6)添加一個次數據文件data3放在文件組group1中;
(7)修改數據文件data2,將最大值改為5M;
(8)刪除日志文件log1;
(9)刪除次數據文件data
3、data2;
(10)修改文件組,將group1改名為group2;
(11)刪除文件組group2;
(12)將log2的增長量改為1M。
(13)縮小該數據庫的大小,保留自由空間1M,保留釋放的文件空間。
(14)將數據庫的日志文件log2縮小到3M。
(15)將數據庫更名為stud+自己的名字。
實驗2SQL Server數據庫的管理
1.實驗目的
(1)了解SQL Server 數據庫的邏輯結構和物理結構的特點。
(2)掌握使用SQL Server管理平臺對數據庫進行管理的方法。
(3)掌握使用Transact-SQL語句對數據庫進行管理的方法。
2.實驗內容及步驟
(1)在SQL Server管理平臺中創建數據庫。
① 運行SQL Server管理平臺,在管理平臺的對象資源管理器中展開服務器。
② 右擊“數據庫”項,在快捷菜單中選擇“新建數據庫”菜單項。在新建數據庫對話框的數據庫名稱文本框中輸入學生管理數據庫名studentsdb,單擊“確定”按鈕。
(2)選擇studentsdb數據庫,在其快捷菜單中選擇“屬性”菜單項,查看“常規”、“文件”、“文件組”、“選項”、“權限”和“擴展屬性”等頁面。
(3)打開studentsdb數據庫的“屬性”對話框,在“文件”選項卡中的數據庫文件列表中修改studentsdb數據文件的“分配的空間”大小為2MB。指定“最大文件大小”為5MB。修改studentsdb數據庫的日志文件的大小在每次填滿時自動遞增5%。
(4)單擊“新建查詢”打開查詢設計器窗口,在查詢設計器窗口中使用Transact-SQL語句CREATE DATABASE創建studb數據庫。然后通過系統存儲過程sp_helpdb查看系統中的數據庫信息。
(5)在查詢設計器中使用Transact-SQL語句ALTER DATABASE修改studb數據庫的設置,指定數據文件大小為5MB,最大文件大小為20MB,自動遞增大小為1MB。
(6)在查詢設計器中為studb數據庫增加一個日志文件,命名為studb_Log2,大小為5MB,最大文件大小為10MB。
(7)使用SQL Server管理平臺將studb數據庫的名稱更改為student_db。
(8)使用Transact-SQL語句DROP DATABASE刪除student_db數據庫。
3.實驗思考
(1)數據庫中的日志文件是否屬于某個文件組?
(2)數據庫中的主數據文件一定屬于主文件組嗎?
(3)數據文件和日志文件可以在同一個文件組嗎?為什么?
(4)刪除了數據庫,其數據文件和日志文件是否已經刪除?是否任何人都可以刪除數據庫?
(5)能夠刪除系統數據庫嗎?
數據庫原理及實驗報告
實驗6 視圖
實驗目的:1)掌握交互式創建、刪除視圖的方法
2)掌握使用SQL創建、刪除視圖的方法
3)掌握交互式更新視圖的方法
4)掌握使用SQL更新視圖的方法 實驗內容
6.1實驗題目:創建視圖
實驗過程:1)交互式創建視圖VIEW_S
2)交互式創建成績視圖VIEW_SCORETABLE
3)使用SQL創建課程表視圖VIEW_CTABLE
實驗結果:
6.2實驗題目:修改視圖
實驗過程:1)使用交互式方法把視圖VIEW_S中的字段SNO刪掉
2)使用SQL為視圖VIEW_CTABLE增加一個課時字段CT tiny int
實驗結果:
6.3實驗題目:通過視圖修改數據庫數據
實驗過程:1)交互式通過修改視圖VIEW_S中的數據來實現對其基本表S中數據的修改
2)對視圖VIEW_S執行INSERT語句,查看此視圖的基本表S中數據的變化
3)修改視圖VIEW_S的定義,使其包含表S中的主鍵,再執行插入操作
4)用SQL語句對視圖VIEW_S執行DELETE操作,查看此視圖的基本表S中數據的變化 實驗結果:
6.4實驗題目:刪除視圖
實驗過程:1)交互式刪除視圖VIEW_S
2)使用SQL刪除視圖VIEW_CTABLE
實驗結果:
實驗7 數據查詢
實驗目的:1,掌握從簡單到復雜的各種數據查詢。包括,單表查詢、多表連接查詢、嵌套查詢、集合查詢。
2,掌握用條件表達式表示檢索結果。
3,掌握用聚合函數計算統計檢索結果。 實驗7.1 單表查詢
實驗目的:1,掌握指定列或全部列查詢。
2,掌握按條件查詢。
3,掌握對查詢結果排序。
4,掌握使用聚集函數的查詢。
5,掌握分組統計查詢。 實驗內容:1,指定或全部列查詢。
2,按條件查詢及模糊查詢。
3,對查詢結果排序。
4,使用聚集函數的查詢。
5,分組統計查詢。
實驗7.2 連接查詢 實驗目的:掌握設計一個以上數據表的查詢方法。多表之間的連接包括等值連接、自然連接、非等值連接、自身連接、自身連接、外連接和復合連接。
實驗內容:1,連接查詢,查詢所有選課學生的學號、姓名、選課名稱及成績。
查詢每門課程的課程號、任課教師姓名及其選課人數。
2,自身連接,查詢所有比劉偉工資高的的教師的姓名、工資及劉偉的工資。
查詢同時選修了程序設計和微機原理的學生的姓名、課程號。
3,外連接,查詢所有學生的學號、姓名、選課名稱及成績(沒有選課的學生的
選課信息顯示為空)
實驗結果
實驗7.3 嵌套查詢
實驗目的:掌握嵌套查詢使我們可以用多個簡單查詢構成復雜的查詢。從而增強了SQL的查詢能力。
實驗內容:1,返回一個值的子查詢,查詢與劉偉教師職稱相同的教師號、姓名和職稱。
2,返回一組值的子查詢,使用ANY謂詞查詢講授課程號為C5的教師姓名。 使用IN謂詞查詢講授課程號為C5的教師姓名。使用ALL謂詞查詢其他系中比計算機系所有教師工資都高的教師的姓名、工資、使用EXISTS謂詞查詢沒有講授課程號為C5的課程的教師姓名、所在系.使用NOT EXISTS謂詞查詢至少選修了學生S2選修的全部課程的學生的學號。 實驗結果
實驗7.4 集合查詢
實驗目的:掌握使用UNION操作符將來自不同查詢但結構相同的數據集合組合起來,形成一個具有綜合信息的查詢結果。
實驗內容:查詢年齡不大于19歲或者屬于計算機系的學生,步驟如下:打開新建查詢窗口,創建SQL語句。執行語句。
實驗結果
實驗十.T-SQL程序設計與游標設計
實驗目的
掌握Transact-SQL語言及其程序設計的方法 掌握T-SQL游標的使用方法
實驗10.1 T-SQL程序設計邏輯 實驗目的
掌握T-SQL程序設計的控制結構及程序設計邏輯 實驗內容
(1) 計算1~100之間所有能被3整除的數的個數和總和。
(2) 從學生表S中選取SNO,SN,SEX,如果為“男”則輸出M,如果為“女”則輸出F。 實驗 10.2 面向復雜T-SQL程序設計 實驗目的
掌握面向復雜應用的T-SQL程序設計方法。 實驗內容
(1) 從教學數據庫jxsk中查詢所有同學選課成績情況:姓名,課程名,成績。要求:凡成績為空者輸出“未考”;小于60分的輸出“不及格”;60~70分的輸出“及格”;70~80分的輸出“中”;80~90分輸出“良好”;90~100分輸出優秀。并且輸出記錄按照下面要求排序:先按SNO升序,再按CNO升序,最后按成績降序。
(2) 現給教師增加工資。要求:必須任兩門以上課程且漲幅按總收入分成三個級別:4000元以上漲300;3000元以上漲200;3000元以上漲100。只任一門課程的漲50.其他情況不漲。
實驗 10.2 使用游標 實驗目的
學習和理解關系數據中游標的概念和設計思想。 掌握使用T-SQL游標處理結果集的方法。 實驗內容
針對數據庫jiaoxuedb,進行下面的實驗:
(1).定義一個游標Cursor_Famale。要求該游標返回所有女同學的基本信息,在游標中查找并顯示牛莉的記錄。 (2).創建一個一個儲存過程Pro_C,返回一個包含所有選修數據庫課程的學生基本信息的游標。利用該存儲過程,通過學生姓名查找學生王一山是否選修了數據庫課程以及成績。
總結
以上是生活随笔為你收集整理的my sql实验视图_数据库SQL 视图的创建及使用实验报告(共5篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式c学习第一步:dev cpp编译器
- 下一篇: STATS 4014 Advanced