SQL实验三 数据表、视图的操作

时间:2024-03-30 19:05:22

实验三 数据表、视图的操作

实验要求:

掌握数据库中基本表、视图的创建、删除与修改。

实验目的:熟练掌握库、表的定义、删除与修改,为后继学习做准备。

实验设备:装有SQL SERVER 2012以上的电脑

实验步骤:

对于如下给定的数据表格进行实验

SQL实验三 数据表、视图的操作

 

 

表中数据可以自行给定。

一 .定义基本表

1. 建立学生表Students,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。这里要求Sno和Sname不能为空值,且取值唯一。

CREATE TABLE Students                      /*列级完整性约束条件*/

    (Sno  CHAR(5) NOT NULL,              /* Sno不能为空值*/

    Sname  CHAR(20) NOT NULL,           /*Sname不能为空值*/

    Ssex  CHAR(2),

    Sage  INT,

    Sdept  CHAR(15),

    CONSTRAINT un_Sno UNIQUE(Sno),        /* Sno取值唯一的约束*/

    CONSTRAINT un_Sname UNIQUE(Sname));  /* Sname取值唯一的约束*/

说明:在Microsoft SQL Server中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。通常,SQL Server对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQL Server会给出错误信息提示。

2.  建立课程表Courses,其属性名意义分别为Cno-课程号, Cname-课程名, Pre_Cno-先修课程号, Credits-学分。

CREATE TABLE Courses

   (Cno  CHAR(5) NOT NULL,             /* Cno不能为空值*/

    Cname  CHAR(20) NOT NULL,           /*Cname不能为空值*/

    Pre_Cno CHAR(5),

    Credits  INT,

    CONSTRAINT un_Cno UNIQUE(Cno));        /*Cno取值唯一的约束*/

3. 建立成绩表Sc。其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。

 CREATE TABLE Sc               

    ( Sno  CHAR(5) NOT NULL,                 /* Sno不能为空值*/

     Cno  CHAR(5) NOT NULL,                 /* Cno不能为空值*/

     Grade  INT,

     CONSTRAINT Sno_Cno UNIQUE(Sno,Cno));   /*Sno+Cno取值唯一的约束*/

二、 修改基本表

1.向基本表Students中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。

ALTER TABLE Students ADD Sentrancedate DATETIME

2. 将Sage(年龄)的数据类型改为SMALLINT型。

ALTER TABLE Students ALTER COLUMN Sage SMALLINT

3. 删除Sname(姓名)必须取唯一值的约束。

ALTER TABLE Students DROP CONSTRAINT un_Sname

说明:⑴ 为了保证后面例子能够顺利运行,请大家一定将属性列Sentrancedate从Students表中删除。

⑵ 为了调试SQL语句方便,这里没有在表Sc中增加参照完整性约束,甚至没有定义主键。

三、 删除基本表

1. 删除Students表。

DROP TABLE  Students;

说明:此表删除后,请立即用例1将其建立起来,以便后面的例子使用。

四、建立视图

1. 建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。

CREATE  VIEW  C_Student

AS

SELECT  Sno, Sname, Sage, Sdept

FROM  Students

WHERE  Sdept=’数学’

WITH CHECK OPTION

2. 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。

本视图由三个基本表的连接操作导出,其SQL语句如下:

CREATE VIEW  Student_CR

AS

SELECT  Students.Sno, Sname, Cname, Grade

FROM  Students, Sc, Courses

WHERE  Students.Sno= Sc.Sno AND Sc.Cno=Courses.Cno

3. 定义一个反映学生出生年份的视图。

CREATE VIEW Student_birth(Sno, Sname, Sbirth)

AS  SELECT  Sno, Sname, 1996-Sage

FROM  Students

五、删除视图

1. 删除视图Student_CR。

DROP VIEW Student_CR;