數據庫上機試驗(二)

     這是第二次上機內容以及結果,大家在運行程序的時候,第一次是可以直接運行的,但第二次運行的時候要把原來建的表刪除,否則回顯示錶已存在的錯誤。所有完整代碼在我空間的代碼庫中均存放,可以直接運行。

上機實驗三 基本表的建立與修改

一、實習目的

通過建立基本表和向表中輸入記錄,加深對關係數據庫模型中型與值概念的理解;學會對基本表進行修改、刪除和建立索引等基本操作。

二、實習準備

1.複習Create table, Create index, Altertable, Drop table等命令。

2.複習Insert, Update,Delete命令的使用。

三、實驗內容

在查詢分析器中用Create table命令在實驗二創建的GradeManager數據庫中定義基本表:學生表(Student),課程表(Course),班級表(Class),成績表(Grade)。表結構如下:

學生表

屬性名

數據類型

可否爲空

含義

Sno

Char(7)

學號(唯一)

Sname

Varchar(20)

學生姓名

Ssex

Char(2)

性別

Sage

Smallint

年齡

Clno

Char(5)

所在班級

課程表

屬性名

數據類型

可否爲空

含義

Cno

Char(1)

課程號(唯一)

Cname

Varchar(20)

課程名

Credit

Smallint

學分

班級表

屬性名

數據類型

可否爲空

含義

Clno

Char(5)

班級號(唯一)

Speciality

Varchar(20)

班級所在專業

Inyear

Char(4)

入學年份

Number

Int

班級人數

Monitor

Char(7)

班長學號

成績表

屬性名

數據類型

可否爲空

含義

Sno

Char(7)

學號

Cno

Char(1)

課程號

Gmark

Numeric(4,1)

成績

上述四個表中的數據依次如下:

2000101,李勇,男,20,00311      2000102,劉詩晨,女,19,00311

2000103,王一鳴,男,20,00312    2000104,張婷婷,女,21,00312

2001101,李勇敏,女,19,01311    2001102,賈向東,男,22,01311

2001103,陳寶玉,男,20,01311    2001104,張逸凡,男,21,01311

 

1,數據庫,4      2,離散數學,3     3,管理信息系統,2

4,操作系統,4    5,數據結構,4     6,數據處理,2

7,C語言,4

 

00311,計算機軟件,2000,120,2000101      00312,計算機應用,2000,140,2000103

01311,計算機軟件,2001,220,2001103

 

2000101,1,92    2000101,3,88    2000101,5,86    2000102,1,78    2000102,6,55

2000103,3,65    2000103,6,78    2000103,5,66    2000104,1,54    2000104,6,83

2001101,2,70    2001101,4,65    2001102,2,80    2001102,4,90     2001102,6,83

2001103,4,76    2001103,6,56

要求完成如下操作:

(1)   給學生表增加一屬性Nation(民族),數據類型爲varchar(20);

(2)   刪除學生表中新增的屬性Nation。

(3)   向成績表中插入記錄(‘2001110’,’3’,80)。

(4)   修改學號爲2001110的學生成績爲70分。

(5)   刪除學號爲2001110的學生的成績記錄。

(6)   爲學生表創建一個名爲IX_Class的索引,以班級號排序。

(7)   刪除索引IX_Class。

四、實習報告內容

(1)   寫出用Create Table語句對四個基本表的定義。

(2)   寫出實習內容中七個操作的SQL語句。

 

上機實驗四 SELECT語句的使用(一)

一、實習目的

掌握SELECT的基本格式,能使用SQL Server對錶進行簡單查詢。

二、實習準備

1.複習SELECT語句的基本使用格式。

2.複習5種集合函數:AVG,SUM,MAX,MIN,COUNT。

三、實習內容

完成以下查詢語句:

(1) 找出所有被學生選修了的課程號。

(2) 找出01311班女生的個人信息。

(3) 找出0311班,0312班學生的姓名、性別、出生年月。

(4) 找出所有姓李的學生的個人信息。

(5) 找出學生李勇所在班級的學生人數。

(6) 找出課程名爲操作系統的平均成績、最高分、最低分。

(7) 找出選修了課程的學生人數。

(8) 找出選修了課程操作系統的學生人數。

(9) 找出2000級計算機軟件班的成績爲空的學生姓名。

四、實習報告內容

    寫出上述操作的SQL語句。



試驗結果以及程序:

/*
CREATE DATABASE GradeManager;
*/
USE GradeManager;
/*******創建數據表**********/
/*學生表*/
CREATE TABLE Student(Sno Char(7) NOT NULL UNIQUE,
 Sname Varchar(20) NOT NULL,
 Ssex Char(2) NOT NULL,
 Sage Smallint,
 Clno Char(5) NOT NULL
 );


/*課程表*/
CREATE TABLE Course(Cno Char(1) NOT NULL UNIQUE,
Cname Varchar(20) NOT NULL,
Credir Smallint
);
/*班級表*/
CREATE TABLE Class(Clno Char(5) NOT NULL UNIQUE,
   Speciality Varchar(20) NOT NULL,
   Inyear Char(4) NOT NULL,
   Number Int,
   Monitor Char(7)
   );


/*成績表*/
CREATE TABLE Grade(Sno Char(7) NOT NULL,
   Cno Char(1) NOT NULL,
   Gmark Numeric(4,1)
   ); 
/******創建表結束************/


/***************向表中插入數據******************/
/*學生表中插入數據*/    
INSERT INTO Student VALUES('2000101','李勇','男',20,'00311');
INSERT INTO Student VALUES('2000102','劉詩晨','女',19,'00311');
INSERT INTO Student VALUES('2000103','王一鳴','男',20,'00312');
INSERT INTO Student VALUES('2000104','張婷婷','女',21,'00312');
INSERT INTO Student VALUES('2001101','李勇敏','女',19,'01311');
INSERT INTO Student VALUES('2001102','賈向東','男',22,'01311');
INSERT INTO Student VALUES('2001103','陳寶玉','男',20,'01311');
INSERT INTO Student VALUES('2001104','張逸凡','男',21,'01311');


/*課程表中插入數據*/
INSERT INTO Course VALUES('1','數據庫',4);
INSERT INTO Course VALUES('2','離散數學',3);
INSERT INTO Course VALUES('3','管理信息系統',2);
INSERT INTO Course VALUES('4','操作系統',4);
INSERT INTO Course VALUES('5','數據結構',4);
INSERT INTO Course VALUES('6','數據處理',2);
INSERT INTO Course VALUES('7','C語言',4);


/*班級表中插入數據*/
INSERT INTO Class VALUES('00311','計算機軟件','2000',120,'2000101');
INSERT INTO Class VALUES('00312','計算機應用','2000',140,'2000103');
INSERT INTO Class VALUES('01311','計算機軟件','2001',220,'2001103');


/*成績表中插入數據*/
INSERT INTO Grade VALUES('2000101','1',92);
INSERT INTO Grade VALUES('2000101','3',88);
INSERT INTO Grade VALUES('2000101','5',86);
INSERT INTO Grade VALUES('2000102','1',78);
INSERT INTO Grade VALUES('2000102','6',55);
INSERT INTO Grade VALUES('2000103','3',65);
INSERT INTO Grade VALUES('2000103','6',78);
INSERT INTO Grade VALUES('2000103','5',66);
INSERT INTO Grade VALUES('2000104','1',54);
INSERT INTO Grade VALUES('2000104','6',83);
INSERT INTO Grade VALUES('2001101','2',70);
INSERT INTO Grade VALUES('2001101','4',65);
INSERT INTO Grade VALUES('2001102','2',80);
INSERT INTO Grade VALUES('2001102','4',90);
INSERT INTO Grade VALUES('2001102','6',83);
INSERT INTO Grade VALUES('2001103','4',76);
INSERT INTO Grade VALUES('2001103','6',56);


/***********插入數據結束*******************/




/***********上級試驗三***************/


/**給學生表增加一屬性Nation(民族),數據類型爲varchar(20)**/
ALTER TABLE Student ADD Nation Varchar(20);
/**刪除學生表中新增的屬性Nation**/
ALTER TABLE Student DROP COLUMN  Nation;
/**向成績表中插入記錄(‘2001110’,’3’,80)**/
INSERT INTO Grade VALUES('2001110','3',80);
/**修改學號爲2001110的學生成績爲70分**/
UPDATE Grade SET Gmark=70 WHERE Sno='2001110';
/**刪除學號爲2001110的學生的成績記錄**/
DELETE FROM Grade WHERE Sno='2001110';
/**爲學生表創建一個名爲IX_Class的索引,以班級號排序**/
CREATE INDEX IX_Class ON Student(Clno);
/**刪除索引IX_Class**/
DROP INDEX IX_Class ON Student;




/***********上級試驗四***************/


/**找出所有被學生選修了的課程號**/
SELECT DISTINCT Cno '課程號' 
FROM Grade;  /*DISTINCT表示重複的只打印一次*/


/**找出01311班女生的個人信息**/
SELECT Sno '學號',Sname '姓名',Ssex '性別',Sage '年齡',Clno '班級' 
FROM Student 
WHERE Clno='01311' AND Ssex='女';


/**找出01311班,01312班學生的姓名、性別、出生年月*/
SELECT Sname '姓名',Ssex '性別',2012-Sage '出生年月' 
FROM Student 
WHERE Clno IN('01311','01312');


/**找出所有姓李的學生的個人信息**/
SELECT Sno '學號',Sname '姓名',Ssex '性別',Sage '年齡',Clno '班級' 
FROM Student 
WHERE Sname LIKE '李%';


/**找出學生李勇所在班級的學生人數**/
SELECT Number '班級人數'
 FROM Class
  WHERE Clno =(
SELECT Clno 
FROM Student 
WHERE Sname = '李勇');


/**找出課程名爲操作系統的平均成績、最高分、最低分**/
SELECT AVG(Gmark) '平均分',MAX(Gmark) '最高分',MIN(Gmark) '最低分' 
FROM Grade 
WHERE Cno =
(SELECT Cno 
FROM Course WHERE Cname='操作系統');
/**找出選修了課程的學生人數**/
SELECT COUNT(DISTINCT Sno) '選修人數' 
FROM Grade;


/**找出選修了課程操作系統的學生人數**/
SELECT COUNT(DISTINCT Sno) '選修操作系統人數' 
FROM Grade 
WHERE Cno = 
(SELECT Cno
 FROM Course
 WHERE Cname = '操作系統');


/**找出2000級計算機軟件班的成績爲空的學生姓名**/
SELECT Sname '姓名'
 FROM Student,Class
WHERE Student.Clno=Class.Clno and Inyear='2000'and Speciality='計算機軟件'and sno NOT IN
                                                                           (SELECT sno 
                                                                           FROM Grade)
 

發佈了23 篇原創文章 · 獲贊 106 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章