数据库——SQL-SERVER练习(4) 建表及数据完整性
1、 输入下图的语句, 建立学生表STU.
CREATE TABLE STU
(
SNO NUMERIC() PRIMARY KEY,
SNANE CHAR() NOT NULL,
SSEX CHAR() CHECK (SSEX IN ('男','女')),
SDEPT CHAR()
);

2、输入下图的语句, 建立课程表COU.
CREATE TABLE COU
(
CNO NUMERIC() PRIMARY KEY,
CNANE CHAR() NOT NULL UNIQUE,
CPNO NUMERIC() REFERENCES COU(CNO),
CCREDIT NUMERIC()
);

3、输入下图的语句, 建立选课表STUCOU.
CREATE TABLE STUCOU
(
SNO NUMERIC() REFERENCES STU(SNO),
CNO NUMERIC() REFERENCES COU(CNO),
GRADE NUMERIC(,),
PRIMARY KEY(SNO,CNO)
);

4、 建立供应商表: ST(Sno,Sname,City)
各列数据类型分别为( CHAR(8), CHAR(20), CHAR(20) )
约束:Sno为主码,Sname唯一,City非空
CREATE TABLE ST
(
SNO CHAR() PRIMARY KEY,
SNAME CHAR() UNIQUE,
CITY CHAR() NOT NULL
)

5、建立零件表: PT(Pno,Pname,Color)
各列数据类型分别为( CHAR(8), CHAR(20), CHAR(20) )
约束:Pno为主码,Pname非空,Color只能是红,黑,蓝
CREATE TABLE PT
(
PNO CHAR() PRIMARY KEY,
PNAME CHAR() NOT NULL,
COLOR CHAR() CHECK (COLOR IN ('红','黑','蓝'))
)

6、建立工程表: JT(Jno,Jname)
各列数据类型分别为( CHAR(8), CHAR(20) )
约束:Jno为主码,Jname唯一
CREATE TABLE JT
(
JNO CHAR() PRIMARY KEY,
JNAME CHAR() UNIQUE
)

7、建立供应表: SPJT(Sno,Pno,Jno,Qty)
各列数据类型分别为( CHAR(8),CHAR(8),CHAR(8), INT )
约束:(Sno,Pno,Jno)为主码, Qty要大于0
Sno是外码参照ST,Pno是外码参照PT, Jno是外码参照JT
CREATE TABLE SPJT
(
SNO CHAR() REFERENCES ST(SNO),
PNO CHAR() REFERENCES PT(PNO),
JNO CHAR() REFERENCES JT(JNO),
QTY INT CHECK (QTY>),
PRIMARY KEY (SNO,PNO,JNO)
)

8、查看批处理文件CREATE_TABLES.SQL中对学生三个表的定义(不用执行), 写出以下引起完整性约束报错的操作语句,记录显示的出错信息,并解释操作违反了何种数据完整性?
(1) 执行下面语句:
insert INTO STUDENT(sname, ssex,sage,sdept) values( '刘楠','男',,'CS');
1).出错信息

2). 对出错信息的解释( 出错原因, 违反了哪种完整性等):
出错原因,主属性为空置,违反了实体完整性。
(2)修改student中数据, 将95001的学号改为99001
1).语句:
UPDATE STUDENT
SET SNO=''
WHERE SNO=''
2).出错信息(将出错信息复制至此):

3).对出错信息的解释( 出错原因, 违反了哪种完整性等)::
修改student表中一个元组sno属性,造成修改后sc中的sno在student找不到一个元组,其sno属性值与之相等。
违反了参照完整性。
(3)删除student中95002的元组
1).语句:
DELETE
FROM STUDENT
WHERE SNO=''
2).出错信息:

3).解释:
从student表中删除一个元组的sno属性,造成sc表中的某些元组的sno属性值在表student中找不到一个元组,其sno值与之对应。
违反了参照完整性。
(4)试图在student中插入下面的元组:
( 99001,'赵冬','M',19,'CS')
1).语句:
INSERT INTO STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)
values( '','赵冬','M',,'CS');
2).出错信息:

3).解释:
在创建student时限制ssex只能是‘男’,或者‘女’。
违反了用户自定义完整性。
(5)删除course中2号课的元组
1).语句:
DELETE
FROM COURSE
WHERE CNO=
2).出错信息:

3).解释:
从COURSE表中删除一个元组的CNO属性,造成SC表中的某些元组的CNO属性值在表COURSE中找不到一个元组,其CNO值与之对应。违反了参照完整性。
(6) 在SC中插入一条学号为99990,选1号课,成绩90的学生选课信息
1).语句:
INSERT INTO SC(SNO,CNO,GRADE)
VALUES('',,);
2).出错信息:

3).解释:
SC表中增加一个元组,该元组的SNO属性值在表STUDENT中找不到一个元组,其SNO属性值与之对应。
数据库——SQL-SERVER练习(4) 建表及数据完整性的更多相关文章
- SQL SERVER 生成MYSQL建表脚本
/****** Object: StoredProcedure [dbo].[GET_TableScript_MYSQL] Script Date: 06/15/2012 13:05:14 ***** ...
- SQL SERVER 生成ORACLE建表脚本
/****** Object: StoredProcedure [dbo].[GET_TableScript_ORACLE] Script Date: 06/15/2012 13:07:16 **** ...
- 数据库SQL server 删除一张表中的重复记录
--建立一张表 create table cat( catId int, catName varchar(40) ) --将下边的插入语句,多执行几次. insert into catvalues(1 ...
- Sql Server系列:数据表操作
表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...
- 查看SQL Server被锁的表以及如何解锁
锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCK ...
- 把sql server 2000的用户表的所有者改成dbo
怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名. 推荐使用下面介绍的第二种方法,执行以下查询便可以了.sp_configure 'allow updates','1' ...
- SQL Server 2008 无法保存表的更改
MS SQL Server 2008 在建完表后,如果要重新设计表,如修改字段长度,就会提示:“当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表 ...
- MS SQL SERVER 中的系统表
MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. 2 syscomments 包含每 ...
- SQL Server 2014内存优化表的使用场景
SQL Server 2014内存优化表的使用场景 最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表 ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...
随机推荐
- Python数据结构性能分析
1.目标 告诉大家Python列表和字典操作的 大O 性能.然后我们将做一些基于时间的实验来说明每个数据结构的花销和使用这些数据结构的好处 2.实操 在列表的操作有一个非常常见的编程任务就是是增加一个 ...
- 新版Notepad++加十六进制查看的插件HexEditor
Notepad++新版虽然去掉了在线插件商店功能,但是依然可以使用自定义插件 Notepad++下载地址 腾讯(请务必点普通下载):https://pc.qq.com/detail/0/detail_ ...
- [python / selenium] - 用python刷公选课是一种什么体验?
前言 看公选课还是能学到很多知识的,这里是给大家提供一个selenium的使用思路(好好学公选课,我真的看了) 思路 当观看者移动鼠标到某一范围时就会停止播放,就让selenium一直将鼠标悬停在视频 ...
- IT兄弟连 HTML5教程 设置IE9以下版本浏览器支持HTML5
HTML2.HTML5刚发布时由于各浏览器之间的标准不统一,开发者的时间都浪费在解决Web浏览器之间的兼容性上.但由于W3C和WHATWG对HTML5新版本的制定,以及近年来对HTML5的使用,再加上 ...
- mysql分布式
一,复制,对数据进行备份,实现搞可用,提高吞吐量,实现高性能. 1,主从架构 2,多主架构 3,主主从从 4,主备 (实际用得多) 二,分片/分库分表 () 1,垂直拆分 1,垂直分表 2,垂直分库 ...
- ETCD:HTTP JSON API通过gRPC网关
原文地址:HTTP JSON API through the gRPC gateway etcd v3 使用 gRPC 作为消息协议.etcd项目包括一个基于gRPC的Go客户端和一个命令行工具,et ...
- jvm虚拟机笔记<二> 垃圾回收与内存分配
确定对象已废弃需要两步: 利用可达性分析算法(与GC roots有关联——虚拟机栈中的对象,方法区静态对象,方法区常量对象,本地方法引用的对象)判断是否需要回收. 是否覆盖过finalize方法并执行 ...
- 关于如何获取项目所部署的本机IP和端口的问题
关于如何获取项目所部署的本机IP和端口的问题 今天在写一个需求的时候碰到一个不常见的问题,在没有继承或者实现服务器提供的接口或者实现类的时候,比如说部署在tomacat上,某个类不去继承servelt ...
- windows下同时安装多个python版本的方法
根据项目的需要,我的电脑上需要安装的python不止一个版本,比如同时需要python2.7和python3.6: 安装多个python版本 这时需要下载多个python安装包,为了区分不同的pyth ...
- Linux CentOS 6.5 卸载、安装JDK1.8
卸载系统自带的jdk 1. 查询系统是否已经安装了jdk rpm -qa|grep java 2. 卸载已安装的jdk, 系统可能会自带多个jdk版本, 按需卸载 rpm -e --nodeps ja ...