SQL Server创建及修改表实验报告

例3-1

创建student(学生信息表),在数据库XSCJ中创建一个表student,它由学号sno,姓名sname,性别ssex,年龄sage,系部sdept五个属性组成。将学号设置成主键

USE XSCJ

CREATE TABLE student

(

    sno char(10)PRIMARY KEY,

    sname char(6),

    ssex char(1),

    sage int,

    sdept char(15)

)

       例3-2

创建课程信息表course,将课程号cno设置成主键

       USE XSCJ

CREATE TABLE course

(

cno char(4) PRIMARY KEY,

cname char(20) NOT NULL,

credit int NOT NULL

)

例3-3

创建sc(学生选课信息表)

  课程和学生是多对多的联系,这个表的主键要包括学号和课程两个字段

  主键所在的表叫主表,外键所在的表叫从表,先要有主表才能有从表

USE XSCJ

CREATE TABLE sc

(

    sno char(10) FOREIGN KEY(sno) REFERENCES student,

    cno char(4) FOREIGN KEY(cno) REFERENCES COURSE,

    grade int

   

)

例3-4

在student表中添加“入学时间”列,其数据类型为日期型

alter table student

add 入学时间 datetime

例3-5

将表student的sname的长度修改为8

alter table student

alter column sname char(8)

例3-6

将表student的sage列改为smallint型

alter table student

alter column sage smallint

       例3-7

删除student 表

drop table student

       课上练习

(1)修改student表中的sname为非空约束   

alter table student

alter column sname char(8) not null

       (2)删除字段,删除student中的入学时间那一列

alter table student

drop column 入学时间

 

3-15 修改student表中的sname列为非空约束

alter table student

alter column sname char(16) not null

3-16 XSCJ数据库中创建student结构为(sno char(10),sname char(6),ssex char(2),sage int,sdept char(15)),其中sno为主键

CREATE TABLE student

(

sno char(10) PRIMARY KEY,

sname char(6),

ssex char(2),

sage int,

sdept char(15)

)

3-17 XSCJ数据库创建一个sc其结构是sc(sno char(10),cno char(4),grade int ),其中主键为sno+cno

USE XSCJ

GO

create table sc

(

sno char(10),

cno char(4),

grade int,

PRIMARY KEY(sno,cno)

)

3-18 XSCJ数据库中的数据表(course)添加课程号为主键约束约束名为PK

alter table course

ADD CONSTRAINT PK PRIMARY KEY(cno)

3-19 XSCJ数据库中的student表和sc表之间建立外键约束其中sc表中的sno为外键参照student表中的sno

create table sc

(

sno char(10) CONSTRAINT FK_sno FOREIGN KEY REFERENCES student(sno),

cno char(4),

grade int,

PRIMARY KEY(sno,cno)

)

3-20 XSCJ数据库中的选课表sc中的课程号cno建立外键约束该列值参照课程表的课程号cno

alter table sc

ADD CONSTRAINTS  FK FOREIGN KEY(cno) REFERENCES course(cno)

3-21 创建student表时sname列创建唯一约束

create table student

(

sno char(10) CONSTRAINT pk_sno PRIMARY KEY,

sname char(6) CONSTRAINT UN_sname UNIQUE,

ssex char(2),

sage int,

sdept char(15)

)

3-22 创建sc表时限制grade列的值只能在-100之间

create table sc

(

sno char(10) CONSTRAINT FK_sno FOREIGN KEY REFERENCES student(sno),

cno char(4) CONSTRAINT FK_cno FOREIGN KEY REFERENCES course(cno),

grade int CHECK(grade>=0 and grade<=100),

PRIMARY KEY(sno,cno)

)

3-23 创建student表时ssex列只能取男或女且默认值是男

create table student

(

sno char(10) CONSTRAINT pk_sno PRIMARY KEY,

sname char(6),

ssex char(2) CHECK (ssex=''or ssex='')DEFAULT '',

sage int,

sdept char(15)

)

5.实验数据记录与整理:

(1)添加主键约束,在sc表中设置主键时遇到以下情况:

因为学号原本是允许空的,要修改学号这个字段是非空的才可以,课程号也是一样

进行正确的非空操作如下图:

这里容易出错的地方见下图:

注意修改非空的代码是alter table sc,而不是alter table student或者alter table course

(2)两把钥匙不是两个主键,而是两个合成一个主键

(3)在删除student表时遇到以下情况:

因为该对象有一个外键约束,student是一个主表,而sc表是一个从表和它相关联的,互相引用的所以不能删除。想删除必须先删除从表,然后再删除主表。所以应该先drop table sc 然后drop table student

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
交互式SQL的使用 环境:WINDOWS,Microsoft SQL Server 实验要求: 1,创建Student数据库,包括Students,Courses,SC结构如下: Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT) Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER) SC(SNO,CNO,GRADE) (注:下划线示主键,斜体示外键),并插入一定数据。 2.完成如下的查询要求及更新的要求。 (1)查询身高大于1.80m的男生的学号和姓名; (2)查询计算机系秋季所开课程的课程号和学分数; (3)查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩; (4)查询至少选修一门电机系课程的女生的姓名(假设电机系课程的课程号以EE开头); (5)查询每位学生已选修课程的门数和总平均成绩; (6)查询每门课程选课的学生人数,最高成绩,最低成绩和平均成绩; (7)查询所有课程的成绩都在80分以上的学生的姓名、学号、且按学号升序排列; (8)查询缺成绩的学生的姓名,缺成绩的课程号及其学分数; (9)查询有一门以上(含一门)三个学分以上课程的成绩低于70分的学生的姓名; (10)查询1984年~1986年出生的学生的姓名,总平均成绩及已修学分数。 (11) 在STUDENT和SC关系中,删去SNO以’01’开关的所有记录。 (12)在STUDENT关系中增加以下记录: (13)将课程CS-221的学分数增为3,讲课时数增为60 3.补充题: (1) 统计各系的男生和女生的人数。 (2) 列出学习过‘编译原理’,‘数据库’或‘体系结构’课程,且这些课程的成绩之一在90分以上的学生的名字。 (3) 列出未修选‘电子技术’课程,但选修了‘数字电路’或‘数字逻辑’课程的学生数。 (4) 按课程排序列出所有学生的成绩,尚无学生选修的课程,也需要列出,相关的学生成绩用NULL示。 (5) 列出平均成绩最高的学生名字和成绩。(SELECT句中不得使用TOP n子句) 4.选做题:对每门课增加“先修课程”的属性,用来示某一门课程的先修课程,每门课程应可记录多于一门的先修课程。要求: 1) 修改结构的定义,应尽量避免数据冗余,建立必要的主键,外键。 2) 设计并插入必要的测试数据,完成以下查询: 列出有资格选修数据库课程的所有学生。(该学生已经选修过数据库课程的所有先修课,并达到合格成绩。) 注意:须设计每个查询的测试数据,并在查询之前用INSERT语句插入中。 提交作业形式: 1) 建立Student数据库SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 2) 完成查询要求的SQL语句脚本。 3) 选做题:须提交修改数据库定义的SQL脚本,插入测试数据的SQL脚本以及用于查询的SQL语句。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值