1. 程式人生 > >SQL Server 2008 互動式SQL語言例項練習

SQL Server 2008 互動式SQL語言例項練習

資料庫學習初步

資料定義

()、基本表操作

先建立school資料庫,在school資料庫裡做以下的操作。

1.建立基本表

1)建立學生表Student,由以下屬性組成: 學號SNOINT型,主碼),姓名SNAMECHAR型,長度為8,非空唯一),性別SEXCHAR型,長度為2),所在系DEPTNOINT型)。

 

2)建立課程表Course,由以下屬性組成:課程號CNOINT型),課程名CNAMECHAR型,長度為20,非空),授課教師編號TNOINT型),學分CREDITINT型)。其中(CNOTNO)為主碼。

 

3)建立學生選課表SC,由以下屬性組成:學號SNO

,課程CNO,成績GRADE。所有屬性均為INT型,其中(SNOCNO)為主碼。

 

4)建立教師表Teacher,由以下屬性組成:教師編號TNOINT型,主碼),教師姓名TNAMECHAR型,長度為8,非空),所在系DEPTNOINT型)。

 

5)建立系表Dept,由以下屬性:系號DEPTNOINT型,主碼),系名DNAMECHAR型,長度為20,非空)。

 

2.修改基本表

1)在Student表中加入屬性SAGE(INT)

2)將Student表中的屬性SAGE型別改為SMALLINT 型。

3.刪除基本表

1)在所有操作結束後刪除STUDENT

表。

2)在所有操作結束後刪除COURSE表。

3)在所有操作結束後刪除SC表。

4)在所有操作結束後刪除TEACHER表。

5)在所有操作結束後刪除DEPT表。

()、索引操作

1.建立索引

1)在Student表上建立關於SNO的唯一索引stusno

2)Course表上建立關於CNO升序的唯一索引coucno

2.刪除索引

1)刪除Student表上的索引stusno

2)刪除Course表上的索引coucno

()、檢視操作

1.建立檢視

在插入資料的Student基本表上為電腦科學與技術系的學生記錄建立一個檢視CS_STUDENT

2.刪除檢視

在操作結束後刪除檢視CS_STUDENT

資料操作

()、更新操作

1.插入資料

1)向STUDENT表插入下列資料:

1001,張天,,10,20

1002,李蘭,,10,21

1003,陳銘,,10,21

1004,劉茜,,20,21

1005,馬朝陽,,20,22

 

2)向COURSE表插入下列資料:

1,資料結構,101,4

2,資料庫,102,4

3,離散數學,103,4

4,C語言程式設計,101,2

 

3)向SC表插入下列資料:

1001,1,80

1001,2,85

1001,3,78

1002,1,78

1002,2,82

1002,3,86

1003,1,92

1003,3,90

1004,1,87

1004,4,90

1005,1,85

1005,4,92

4)向TEACHER表插入下列資料:

101,張星,10

102,李珊,10

103,趙天應,10

104,劉田, 20

5)向DEPT表插入下列資料:

10,電腦科學與技術

20,資訊

2.修改資料

將張星老師資料結構課的學生成績全部加2

3.刪除資料

刪除馬朝陽同學的所有選課記錄

()、查詢操作

1.單表查詢

1)查詢所有學生的資訊。

2)查詢所有女生的姓名。

3)查詢成績在8089之間的所有學生選課記錄,查詢結果按成績的降序排列。

4)查詢各個系的學生人數。

2.連線查詢

查詢資訊系年齡在21歲以下(含21歲)的女生姓名及其年齡。

3.巢狀查詢

1)查詢修課總學分在10學分以下的學生姓名。

2)查詢各門課程取得最高成績的學生姓名及其成績。

3)查詢選修了1001學生選修的全部課程的學生學號。

4)查詢選修了張星老師開設的全部課程的學生姓名。

出現的問題及解決方案:

1.在建立基本表時是否可以預設主碼?

2.對基本表進行修改,執行ALTER TABLE Student MODIFY Sage SMALLINT顯示執行失敗。

自己做的答案:

(一)  基本表操作

建立基本表

1)     建立Student

命令列操作:

CREATE TABLE Student

( SNO INTNOTNULL PRIMARY KEY,

  SNAME CHAR(8)NOTNULL,

  SEX CHAR(2)NOTNULL,

  DEPTNO INT NOT NULL)

2)     建立Course

命令列操作:

CREATE TABLE Course

(

    CNO INT NOT NULL,

    CNAME CHAR(20)NOTNULL,

    TNO INT NOT NULL,

    CREDIT INT NOT NULL,

    PRIMARY KEY(CNO, TNO)

)

3)     建立SC

命令列操作:

CREATE TABLE SC

(

   SNO INT NOT NULL,

   CNO INT NOT NULL,

   GRAGE INT NOT NULL,

   PRIMARY KEY(SNO, CNO)

)

4)     建立Teacher

命令列操作:

CREATE TABLE Teacher

( TNO INTNOTNULL,

  TNAME CHAR(8)NOTNULL PRIMARY KEY,

  DEPTNO INT NOT NULL

)

5)     建立Depth

命令列操作:

CREATETABLE Dept

(

  DEPTNO INT NOT NULL PRIMARYKEY,

  DNAME CHAR(20)NOTNULL

)

2.修改基本表

1)在Student表中加入屬性SAGE(INT)

命令列操作:

ALTER TABLE Student ADD SAGEINT;

2)將Student表中的屬性SAGE型別改為SMALLINT型。

命令列操作:

ALTERTABLEStudent alter column SAGESMALLINT;

3.刪除基本表

1)在所有操作結束後刪除STUDENT表。

命令列操作:

DROP TABLE Student;

2)在所有操作結束後刪除COURSE表。

DROP TABLE Course;

3)在所有操作結束後刪除SC表。

DROP TABLE SC;

4)在所有操作結束後刪除TEACHER表。

DROP TABLETeacher;

5)在所有操作結束後刪除DEPT表。

DROP TABLE Dept;

()、索引操作

1.建立索引

1)在Student表上建立關於SNO的唯一索引stusno

CREATE UNIQUEINDEXstusno ON Student(SNO);

2)Course表上建立關於CNO升序的唯一索引coucno

CREATE UNIQUE INDEX coucno ONCourse(CNO);

2.刪除索引

1)刪除Student表上的索引stusno

DROP INDEXStudent.stusno;

2)刪除Course表上的索引coucno

DROP INDEX Course.coucno;

()、檢視操作

1.建立檢視

在插入資料的Student基本表上為電腦科學與技術系的學生記錄建立一個檢視CS_STUDENT

CREATE VIEWCS_STUDENT

  AS

  SELECT SNO,SNAME,SEX,DEPTNO,SAGE

  FROM Student

  WHERE DEPTNO=10

  WITH CHECK OPTION

2.刪除檢視

在操作結束後刪除檢視CS_STUDENT

 DROPVIEW CS_STUDENT;

二、資料操作

()、更新操作

1.插入資料

1)向STUDENT表插入下列資料:

1001,張天,,10,20

1002,李蘭,,10,21

1003,陳銘,,10,21

1004,劉茜,,20,21

1005,馬朝陽,,20,22

命令列操作:

INSERT INTOStudent

VALUES(1001,'張天','',10,20);

INSERT INTOStudent

VALUES(1002,'李蘭','',10,21);

INSERT INTOStudent

VALUES(1003,'陳銘','',10,21);

INSERT INTOStudent

VALUES(1004,'劉茜','',20,21);

INSERT INTOStudent

VALUES(1005,'馬朝陽','',20,22);

2)向COURSE表插入下列資料:

1,資料結構,101,4

2,資料庫,102,4

3,離散數學,103,4

4,C 語言程式設計,101,2

命令列操作:

INSERT INTOCourse

VALUES(1,'資料結構',101,4);

INSERT INTOCourse

VALUES(2,'資料庫',102,4);

INSERT INTOCourse

VALUES(3,'離散數學',103,4);

INSERT INTOCourse

VALUES(4,'C語言程式設計',101,2);

3)向SC表插入下列資料:

1001,1,80

1001,2,85

1001,3,78

1002,1,78

1002,2,82

1002,3,86

1003,1,92

1003,3,90

1004,1,87

1004,4,90

1005,1,85

1005,4,92

命令列操作:

INSERT INTOSC(SNO,CNO,GRAGE)

SELECT 1001,1,80 union

SELECT 1001,2,85 union

SELECT 1001,3,78 union

SELECT 1002,1,78 union

SELECT 1002,2,82 union

SELECT 1002,3,86 union

SELECT 1003,1,92 union

SELECT 1003,3,90 union

SELECT 1004,1,87 union

SELECT 1004,4,90 union

SELECT 1005,1,85 union

SELECT 1005,4,92

4)向TEACHER表插入下列資料:

101,張星,10

102,李珊,10

103,趙天應,10

104,劉田, 20

命令列操作:

INSERT INTOTeacher(TNO,TNAME,DEPTNO)

SELECT 101,'張星',10 union

SELECT 102,'李珊',10 union

SELECT 103,'趙天應',10 union

SELECT 104,'劉田', 20

5)向DEPT表插入下列資料:

10,電腦科學與技術

20,資訊

命令列操作:

INSERT INTODept(DEPTNO,DNAME)

SELECT 10,'電腦科學與技術'union

SELECT 20,