IT@程序员猿媛程序员

SQLServer:表结构、主码、外码、完整性约束和课程作业

2019-03-18  本文已影响0人  魔娃

表和完整性约束

主码

主码(主关键字,PRIMARY KEY__PK),在码中选择的一个代表,被定义为主码
主码的特点:
1、主码value不得为空
2、构成主码的每个字段不得重复
主属性是构成码的属性
主码属性是构成主码的属性

外码

外码(Foreign key__FK),设有关系表R和W,R中的某个字段FK与W中的主码PK对应,则FK成为W的外码。
外码定义了两个表之间的约束关系,W为主表(被参照表),R为从表(参照表)。

范式描述

1.关键字
2.语法概念
3.元语言符号:[] {} |
4.() 实际符号

表的定义

字段的完整性约束也可以定义成表的完整性约束

列的定义

UNIQUE :唯一
若一个字段定义了UNIQUE字段,该字段值不允许重复,但可以为多个null

CHECK
如:CHECK(grade>=0 AND grade<=100)

DEFAULT
设置默认值

ON DELETE CASCADE / ON UPDATE CASCADE
当被参照记录即被参照表被删除/修改时级联删除参照表即从表的记录。

修改表结构

ALTER TABLE

课程作业:

USE 学校管理
GO
CREATE SCHEMA 学校
GO
CREATE TABLE 学校.院系(
编号 INT PRIMARY KEY,
名称 VARCHAR(20) NOT NULL UNIQUE,
负责人 VARCHAR(10),
办公地点 VARCHAR(20)
)
GO
CREATE TABLE 学校.学生(
学号 VARCHAR(8) PRIMARY KEY,
姓名 VARCHAR(10) NOT NULL,
院系 INT FOREIGN KEY REFERENCES 学校.院系(编号),
性别 VARCHAR(2) CHECK (性别 IN ('男' ,'女') ),
生源 VARCHAR(6),
状态 VARCHAR(4) CHECK (状态 IN ('正常','留级','休学','退学') )
)
GO
CREATE TABLE 学校.教师(
教师编号 VARCHAR(8) PRIMARY KEY,
姓名 VARCHAR(10) NOT NULL,
性别 VARCHAR(2) CHECK(性别 IN ('男','女')),
院系 INT FOREIGN KEY REFERENCES 学校.院系(编号),
专业 VARCHAR(10),
职称  VARCHAR(6) CHECK(职称 IN('教授','副教授','讲师','助教'))
)
GO
CREATE TABLE 学校.课程(
课程编号 VARCHAR(8) PRIMARY KEY,
课程名称 VARCHAR(20) NOT NULL,
责任教师 VARCHAR(8) FOREIGN KEY REFERENCES 学校.教师(教师编号),
学时 INT NOT NULL,
课程性质 VARCHAR(10) CHECK(课程性质 IN ('公共基础','专业基础','专业选修','任意选修'))
)
GO
CREATE TABLE 学校.选课(
学号 VARCHAR(8) FOREIGN KEY REFERENCES 学校.学生(学号),
课程编号 VARCHAR(8) FOREIGN KEY REFERENCES 学校.课程(课程编号),
考试成绩 INT CHECK(考试成绩>=0 AND 考试成绩<=100) DEFAULT NULL
)

ALTER TABLE 学校.学生
ADD 平均成绩 INT DEFAULT NULL

ALTER TABLE 学校.课程
DROP COLUMN 学时

ALTER TABLE 学校.课程
ADD 学时 INT NOT NULL CHECK(学时%8=0)

ALTER TABLE 学校.院系
ALTER COLUMN 名称 VARCHAR(30)

ALTER TABLE 学校.教师
ADD 工资 NUMERIC(7,2)
上一篇 下一篇

猜你喜欢

热点阅读