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) 建表及数据完整性的更多相关文章

  1. SQL SERVER 生成MYSQL建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_MYSQL] Script Date: 06/15/2012 13:05:14 ***** ...

  2. SQL SERVER 生成ORACLE建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_ORACLE] Script Date: 06/15/2012 13:07:16 **** ...

  3. 数据库SQL server 删除一张表中的重复记录

    --建立一张表 create table cat( catId int, catName varchar(40) ) --将下边的插入语句,多执行几次. insert into catvalues(1 ...

  4. Sql Server系列:数据表操作

    表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...

  5. 查看SQL Server被锁的表以及如何解锁

    锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCK ...

  6. 把sql server 2000的用户表的所有者改成dbo

    怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名. 推荐使用下面介绍的第二种方法,执行以下查询便可以了.sp_configure 'allow updates','1' ...

  7. SQL Server 2008 无法保存表的更改

    MS SQL Server 2008 在建完表后,如果要重新设计表,如修改字段长度,就会提示:“当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表 ...

  8. MS SQL SERVER 中的系统表

    MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.   2 syscomments 包含每 ...

  9. SQL Server 2014内存优化表的使用场景

    SQL Server 2014内存优化表的使用场景 最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表 ...

  10. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

随机推荐

  1. [洛谷P1972][题解][SDOI2009]HH的项链

    别碰我! 自己还是太蒟了…… 看了好久,最后抄参考题解打出来的…… 前面的可能影响后面的,所以按照询问右端点排序 这时候维护一个前缀和数组就可以了, 那么问题又来了,去重? 可以这样,从前往后枚举,如 ...

  2. PowerMock学习(八)之Mock Argument Matcher的使用

    前言 本计划在上周六日将powermock学完,并同步到博客中,结果自己没经得住诱惑,又开始去打王者荣耀了.虽然两天时间我从钻石一升到了星耀V四星,但是我并没有觉得很开心,相反很失落呢.不得不说腾讯的 ...

  3. sublime插件开发教程1

    学习sublime插件开发 好处有很多 比方说微信小程序插件 他官方自带的功能太鸡肋了 可以开发个sublime插件 写智能提示 甩掉微信几条街 sublime插件是用python开发的  所以学习s ...

  4. C - Train Problem II——卡特兰数

    题目链接_HDU-1023 题目 As we all know the Train Problem I, the boss of the Ignatius Train Station want to ...

  5. PHP目前常见的五大运行模式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xujingzhong0077/artic ...

  6. Java题库——Chapter5 方法

    1)Suppose your method does not return any value, which of the following keywords can be used as a re ...

  7. python进程基础点整理

    操作系统 串行: 一个程序完完整整的执行完再执行下一个 并发: 看起来像是同时运行,其实就是程序间的切换频率比较快,看不出来 并行:真正的同时运行 多道技术 空间复用:共用一个内存条,多个进程相互隔离 ...

  8. SpringCloud的入门学习之概念理解、Hystrix断路器

    1.分布式系统面临的问题,复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败. 2.什么是服务雪崩? 答:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务 ...

  9. C#Winform窗体利用单例子窗体传值父窗体

    简述:最近在做C#和HALCON编程,要用到单例的参数由子窗体改变父窗体的值.此例为简化版 1,点击系统设置 2,弹出子窗体,在其输入修改参数后点修改按钮 3,点击确定按钮后,关闭子窗体后,主窗体te ...

  10. 解决vscode中golang插件依赖安装失败问题

    vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示 gocode go-outline go-symbols gur ...