目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
任务4.4 实施完整性约束

任务4.4 实施完整性约束

子任务4.4.1 数据完整性概念

所谓数据完整性,是指数据的正确性和一致性。

数据完整性分为四类:实体完整性、域完整性、参照完整性和用户自定义完整性。

实体完整性要求每一个表中的主键字段都不能为空或者重复的值。实体完整性指表中行的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。例如,每个学生都有一个学号,以标识不同的学生。

域完整性是针对某一具体关系数据库的约束条件,它保证表中某些列不能输入无效的值。例如,性别字段只能为男或女。

参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又称引用完整性。例如,学生只能选修课程表中的课程。

用户自定义完整性反映某一具体应用所涉及的数据必须满足的语义要求。例如,某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等。用户定义完整性可以涵盖实体完整性、域完整性、参照完整性等完整性类型。

子任务4.4.2 使用约束保证数据完整性

保证数据完整性的主要方法之一是对表添加约束。在SQL Server中有五种约束:主键(PRIMARY KEY)约束、外键(FOREIGN KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束和默认(DEFAULT)约束。

主键约束:保证实体完整性,一张表只能有一个主键,但主键可以由多个字段构成,称为复合主键。主键字段的值要求唯一和非空,复合主键中单个字段可以有重复值,但字段组合值必须唯一。

外键约束:保证参照完整性,外键约束字段的值参照对应主键表的主键约束字段的值。必须先建立对应主键表的主键,才能建立外键。

唯一性约束:是对主键字段的补充,用于非主键字段的唯一性限定。该字段的值可以为空值,但只能有一个空值。

检查约束:保证域完整性,对于字段的特定限制可用检查约束实现。默认约束:有些字段重复值较多或不允许为空,可用默认约束实现。添加默认约束后字段如果用户没有填值,系统将自动填入默认值,否则为用户填入的值。

约束可以在建表的时候直接创建,也可以在表建完后再添加约束。

2.表创建完后再添加约束添加约束的命令格式如下:

主键约束:ALTER TABLEADD CONSTRAINT 约束名 PRIMARY KEY(主键字段名)


外键约束:ALTER TABLEADD CONSTRAINT 

约束名 FOREIGN KEY(外键字段名)  REFERENCES 主键表(主键字段名)


唯一性约束:ALTER TABLEADD CONSTRAINT 约束名 UNIQUE(字段名)


检查约束:ALTER TABLEADD CONSTRAINT 约束名 CHECK(条件表达式)


默认约束:ALTER TABLEADD CONSTRAINT 约束名 DEFAULT 默认值 FOR

段名





上机题:

(1)创建图书管理书库表 (程序脚本)

(2)某公司需要使用表tbCustomerInfo来存储客户的信息,客户的信息包括:代号(整型,IDENTITY,从100001开始,每次增加5),名称(最长40个汉字),电话(20个字符),传真(20个字符),备注(最长1000个汉字),电话和传真需要使用用户定义数据类型TypeTelFax。写出创建数据库[HX公司DB]及表[tbCustomerInfo]的T-SQL语句。


CREATE DATABASE  [HX公司DB]  GOUSE  [HX公司DB]

/** 对象:  UserDefinedDataType [dbo].[TypeTELFAX]  **/

CREATE TYPE [dbo].[TypeTELFAX] FROM [varchar](20) NOT NULLGO


CREATE TABLE [tbCustomerInfo]

( 代号 INT IDENTITY (100001,5) NOT NULL,

 名称 nCHAR(40),  

 电话  TypeTELFAX,  

  传真  TypeTELFAX,  

   备注  nvarchar(1000) )—


USE [HX公司DB]

GO 

INSERT INTO [HX公司DB].[dbo].[tbCustomerInfo] ([名称],[电话],[传真],[备注]) VALUES    ('广州华夏IT公司','020-87862345','020-11234567','this is a computer!')


INSERT INTO [HX公司DB].[dbo].[tbCustomerInfo]           ([名称],[电话],[传真],[备注])     VALUES    ('广东华夏技工公司','020-86862345','020-33234567','this is a book!')


—
SELECT *  FROM [HX公司DB].[dbo].[tbCustomerInfo]



特别说明:

identity 表示该列字段的值会自动更新,不需要人们维护,通常情况下不能直接给 identity列直接赋值,否则编译时会报错。

语法格式为:

  • identity [(m, n)]

  • 其中:

  • m 表示的是初始值,n 表示的是每次自动增加的值。

  • 提示:

  • 要么同时指定 m 和 n 的值,要么 m 和 n 都不指定,不能只写其中一个值。如:identity(5,3)identity 是正确的,但是 identity(5)是错误的。

  • 如果 m 和 n 都未指定,则取默认值(1, 1)

  • 数据类型是整型的列才能被定义成标识列:

  • intbigintsmallint 列都可以被定义成 identity


  • (不含有小数位的 decimal 和 numeric 也可以被标记为 identity。如:decimaldecimal(6, 0) 字段都可以被标记为 identity,但是 decimal(6, 2) 字段就不能被标记为 identity)

  • 标识列通常与 primary key 约束一起用作表的唯一行标识符




use教务数据库

createtable HXloving

ID int identity (100,1),

学号 CHAR(9)  CONSTRAINT FKEY_ID1 FOREIGNKEY(学号) REFERENCES 学生表(学号),

NAME  varchar(12),

SEX char(2)CONSTRAINTDefault_SEXN Default '' ,

Email char(20)CONSTRAINTch_email  CHECK ( EMAIL LIKE '%@%') ,

)


exec sp_help'HXloving'