创建和管理数据表00001)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--修改表名
5、ALTER TABLE [表名] ADD CONSTRAINT [约束名称] 约束类型 (列) --添加约束
回顾数据完整性
– 实体完整性
• 能够唯一标识表中的每一条记录 • 实现方式:主键、唯一键、IDENTITY属性
– 域完整性
• 表中特定列数据的有效性,确保不会输入无效的 值
• 实现方式:类型、缺省值、约束、空值
• 数据存放在表中,创建表的时候,就应当保 证以后数据输入是正确的——错误的数据、 不符合要求的数据不允许输入。
保证数据的完整性 = 实施完整性约束
完整性问题举例
• 输入的类型是否正确?
——年龄必须是数字
• 输入的格式是否正确?
列值要求(约束)
——身份证号码必须是18位
• 是否在允许的范围内?
——性别只能是“男”或者“女”
——把学员信息表中的学号改变了,学员成绩表中的学号 也应当随之改变
子表存在与主表对应的记录,不能从主表中删除 该行
——不能把有成绩的学员删除了
删除主表前,先删子表
——先删学员成绩表、后删除学员信息表
使用T-SQL语句创建数据表
• 建表的语法
CREATE TABLE 表名 (
列名1 数据类型 列的特征, 列名2 数据类型 列的特征, ... )
real
相当于float(24)
时间和日期数据类型
表示日期和时间。从
日期和 时间数 据类型
datetime smalldatetime
1753 年 1 月 1 日 到 9999 年 12 月 31 日,精 度为 3.33 毫秒 表示日期和时间。从
1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度
最大长度为n的可变长度的 存储可变长度文本。
varchar(n) 非Unicode字符串。n取值范 根据实际存储数据长

本 text 数
围为1到 8000
可变长度的字符串。最多 2GB 字符数据
度分配空间 存储大型的非统一编 码型字符数据
据 nchar(n) 类
固定长度的 Unicode 数据。 存储特定长度的统一
• 是否存在重复输入?
——学员信息输入了两次
• 是否符合其他特定要求?
整行要求(约束)
——学生的出生日期必须小于入学日期
• ……
四种完整性约束
域完整性
数据列 数据行
表一
提供四种类型的约束保证完整性
自定义完整性 实体完整性
表二
引用完整性
实体完整性
实体完整性 (Entity Integrity) 指表中数据行的完整 性,主要用于保证每条记录非空、唯一且不重复。
×
会员证 vip001 vip002 vip003
触发器:检查信用值
编号 姓名 信用 …. 00192 张三 7 00288 李四 6 12333 王五 8 93000 马六 -10
约束方法:规则、存储过程、触发器
创建数据表
• 通过三大范式规范数据库设计并绘制数据 库模型图后,就可以在数据库中创建数据 表。
学号
姓名
刘山
吴兰
朱朱
张丽
赵可
×
地址
….
山东青岛
湖南长沙
上海徐汇区
新疆和田
河南洛阳
朱朱
上海徐汇区
约束方法:唯一约束、主键约束、标识列
域完整性
域完整性 (Domain Integrity) 又称列完整性,保证列数据具 有正确的数据类型、格式和有效的取值范围、精度等。

学号



8



×
姓名 刘山 吴兰 朱朱 张丽 赵可
保存并命名数据表
操作演示:保存数据库表
思考-主键
在主键列输入的数值,允许为空吗? 一个表的主键可以有多个列组成吗?
选择主键的原则
最少性
尽量选择单个键作为主键
稳定性
尽量选择数值更新少的列作为主键
为depositor表创建主键
操作演示:设置主键
为depositor表添加默认值
示例:为gender列设置默认值1。
地址
….
山东青岛
湖南长沙
上海徐汇区
新疆和田
河南洛阳
3488888999 赵亮
河北承德
约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束
参照(引用)完整性
参照完整性 (Referential Integrity) 又称引用完整 性,保证主表中的数据与从表中数据的一致性
学号
姓名
地址
刘山
山东青岛
列的特征: 包括该列是否为空(NULL)、是否是标识列(identity)、是否 有默认值(default)、是否为主键(Primary Key)等
创建表Student
创建Student表
USE StudentInfo
--将当前数据库设置为 StudentInfo
GO
CREATE TABLE Student --创建布学尔生值信T息RU表E 和 FALSE
为 1 分钟
数据类型示例
• 身份证号:可能是18位或15位,可以选择
nvarchar(18)
• 姓名:中国名字大多三个字,且可变长度,可选
择可以选择nvarchar(10)
• 性别:只有男女,可选择bit或char(1) • 家庭地址:可变长度的字符串,nvarchar(200)
• 电话:可变长度的字符串,nvarchar(20)
SQL Server常用数据类型
• 数据表用于存储各种数据。 • 不同类型的数据又适合不同的存储方式,从而适
合不同的数据类型。 • 首先应该了解需要存储的数据在SQL Server数据
库中的对应哪种数据类型,或者说这些数据适合 以何种数据类型存储。
二进制数据类型
Binary[(n)] 二
n位固定长度的二 进制数据。n的取 值范围可从 1 到
设置标识列
操作演示:设置标识列
建立表间(主外键)关系
操作演示:建立主外键关系
数据库关系图
利用主外键的对应、图形化表示表之间的关系
操作演示:建立数据库关系图
主外键建立后注意事项
当主表中没有对应的记录时,不能将记录添加到 子表
——成绩表中不能出现在学员信息表中不存在的学号
不能更改主表中的值而导致子表中的记录孤立
用于存储只有两 种可能值的数据, 如真假、男女
数字数据类型
tinyint
允许从0到255之间的整数
smallint int
- 2^15 (-32768)到2^15 (32767)之间的整数 从-2^31到2^31之间的整数
固定精度和比例的数字。允许从 -10^38 +1 到10^ 38 -1
之间的数字。p 参数指示可以存储的最大位数(小数点
2、ALTER TABLE [表名] add CONSTRAINT [约束名] DEFAULT 默认值 FOR [列名] --设置默认值
3、ALTER TABLE [表名] RENAME column [列名] TO [新列名] --修改列名
4、ALTER TABLE [表名] RENAME TO [新表名]
• 创建表的基本步骤:
第一步,确定表中有哪些列; 第二步,确定每列的数据类型; 第三步,给表添加各种约束; 第四步,创建各表之间的关系。
使用图形化向导创建数据库表
思考:空值NULL 身份证允许为空吗? 姓名允许为空吗? 家庭地址允许为空吗? 电子邮件信息允许为空
操作演示:创建数据库表
性别允许为空吗?
最多 4,000 个字符
编码字符型数据

nvarchar(n)
可变长度的 Unicode 数据。 最多 4,000 个字符
存储可变长度的统一 编码字符型数据
ntext
可变长度的Unicode数据。最 存储大型的统一编码
多 2GB 字符数据
字符型数据
Bit数据类型
Bit 数 据 类 bit

允许 0、1 或 NULL
自定义完整性
用户自定义完整性 (User-defined Integrity) 是对列数据的约 束,允许用户定义不属于以上三种完整性分类的特定的规则, 包括列的值域、列的类型和列的有效规则等约束,这些是由 确定关系结构时所定义的字段的属性决定的。
示例:信用不良的客户“马六”不能办理会员证。
用户编号 用户姓名 00288 张三 12333 李四 90111 王五
8000
当数据列内容长 度基本相同时使 用


可变长度的二进制 当数据列内容长
数 varbinary[(n)] 数据。n的取值范围 度不同且差别较

可从 1 到 8000
大时使用

型 image
可变长度的二进制 数据。最多 2GB
用于存储文件, 图片或者视频等 大文件
文本数据类型
Char(n)
n位固定长度的非Unicode字 存储特定长度的数据, 符串。n取值范围为1到 8000 例如11位手机号码
第四章 创建和管理数据表
预习检查
➢至少说出SQL Server中三种数据类型 ➢举例说明在哪些情况下要用到检查约束 ➢什么是标识列,其作用是什么? ➢什么是数据完整性? ➢创建数据表的T-SQL语句是什么?
本章目标
➢掌握SQL Server常用数据类型。 ➢能够使用图形工具SSMS和T-SQL语句创建数据表。 ➢能够为表创建主键、外键、设置默认值、建立检查约 束和非空约束、创建标识列等以确保数据完整性。
(
StudentID nvarchar(20) password nvarchar(50) Name nvarchar(50) NOT
NNNOOUTTLL可T转NN,RUU以换ULL转为ELL,,转换0 换为为以------姓密学下1名,码号b,F,i,tA非值非非LS空:空空E(((必必必填填填)))
介于 -214,748.3648 和 214,748.3647 之间的货币数据
从 -2^63到2^63-1的货币数据 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字,n介于153之间,如果 1<=n<=24,则将 n 视为 24。 如果 25<=n<=53,则将 n 视为 53。
gender bit NOT NULL,
--性别,非空(必填)
GradeId int NOT NULL,
--年级号(必填)
Phone nvarchar(50) NOT NULL,
--电话
birthday datetime NOT NULL,
Leabharlann Baidu
--出生日期(必填)
Address nvarchar(255),
decimal(p,s) 左侧和右侧之和)。p 必须是 1 到 38 之间的值。默认

是 18。s 参数指示小数点右侧小数部分存储的最大位数。 s 必须是 0 到 p 之间的值。默认是 0

数 numeric(p,s) decimal的同义词
据 smallmoney
类 型
money
float [(n)]
• 生日:可选择日期数据类型,datatime • 存款余额:可选择money数据类型 • 照片:可选择image数据类型
数据完整性
数据完整性(Integrity) 是指数据的准确性 (Accuracy) 和可靠性(Reliability)。
可靠性
准确性
数据完整性
• 数据完整性的问题大多是由于设计引起的。
科目
学号
吴兰
湖南长沙
高数
朱朱
上海徐汇区 外语
张丽
新疆和田
C#
赵可
河南洛阳
java
数据库
约束方法:外键约束
×
C#
分数 88 74 67 81 98
98
参照完整性的操作要求
参照完整性禁止以下几种操作:
(1) 禁止外键列中插入主键列中没有的值;即外键的取值必须 是主表中主键的有效值,或者说向从表中插入数据时只能添加 主表中已经存在的关联记录的相关信息。 例如银行开户只能给储户信息表中已经存在的储户开户;学生 成绩表中不能添加学生信息表中不存在的学号的成绩信息。 (2) 禁止只修改主表中主键列的值,而不修改从表中相应的外 键列的值;即不能更改主表中的值而导致从表中的记录孤立无 意义。 例如学生信息表中一个学生学号变了,那么学生成绩表中该学 生的学号也必须相应改变。 (3) 禁止先从主表中删除数据行;即主表中删除数据时,必须 首先删除从表中的关联记录,否则从表中会遗留大量无意义的 记录。
操作演示:设置默认值
为depositor表建立检查约束
示例:为depositorID建立检查约束,要求该列长度只能 是15位或18位。
操作演示:建立检查约束
思考-标识列
标识列允许为字符数据类型吗? 如果标识列A的初始值为1,增长量为2,则输 入三行数据以后,再删除两行,下次再输入数 据行的时候,标识值从多少开始?
--地址
Email nvarchar(50),
--邮件帐号
stuIDENTITY varchar(18) NOT NULL
--身份证号
)
GO
演示示例:创建学生信息表Student
使用T-SQL语句修改数据表
常用的数据表修改语句:
1、ALTER TABLE [表名] ADD COLUMN [列名] 数据类型 列特征 --增加一个新列
相关文档
最新文档