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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值