主要学习如何创建和管理SQL Server表
1.表相关的几个概念
1.1数据完整性
数据完整性要求数据库中数字具有准确性,准确性是通过数据库表的设计和约束来实现的.
为了实现完整性,数据库需要做以下两方面的工作
(1)检验每行的数据是否符合要求
(2)检验每列数据是否符合要求
为实现以上要求,SQL Server提供了以下四种类型的约束(Constraint)
a.实体完整性约束
要求表中没一行数据都反映不同的实体,不能存在相同的数据行.
通过索引,唯一约束,主键约束或标识列属性,可以实现标的实体完整性.
b.域完整性约束
指给定列输入的有效性
通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空约束等多种方法.可以实现表的域完整性.
c.引用完整性约束
用来保持已定义表之间的关系
在强制引用完整性时,SQL Servers禁止用户进行下列操作
1)当主表没有关联记录时,将记录添加到子表
2)更改主表中的值,并导致相关表中的记录孤立
3)从主表中删除记录,但在相关表中仍存在与该记录匹配的相关记录
引用完整性通过主键之间的引用关系来实现.
d.自定义完整性约束
用来自定义特定的规则.
1.2主键和外键
(1)主键(Primary Key)
一个列这个列的值用于唯一标识表中的每一行,用来强制表的实体完整性,这样的列称为主键.
一个表只能有一个主键,主键约束确保了表中的汉是唯一的,尽管有的表中允许没有主键,但通常情况下应当为表设置一列为主键.
如果两列或多列组合起来唯一的标识表中的每一行,则该主键也叫做"复合主键".
在选择哪个列作为主键的时候,需要考虑以下两个原则
a.最少性:是指列数最少的键,如何可以从单个主键和组合主键中选择时,应该选择单个主键,这是因为一般情况操作一列比操作多列要快.
b.稳定性:是指列中的数据特征,由于主键通常用来在两个表之间建里联系,所以主键的数据不要经常更新,理想情况下应该永远不变
(2)外键
外键是相对主键而言的,就是子表中对应于主表的列,在子表中称为外键或引用键,他的值要求与主表的主键或者唯一键相对应,外键用来强制引用完整性,一个表可以有多个外键.
创建数据库表实际上就是实施不同的约束,实现完整性规则的过程.
2.创建数据库表
2.1在SQL Server Management Studio中建立数据表
在SSMS中,单击数据库下的表节点,将显示该数据库所有的表
数据库表也分为系统表和用户表
系统表是创建数据库的时候自动生成的,并用来保存数据库自身的信息
用户表存储用户自定义的数据
选择并右击数据库下"表"选项,然后在快捷菜单中选择"新建表"选项,这样就可以在右侧的区域中输入和定义表的不同列.
除了输入列的名称之外,还需要确定该列的数据类型,因此首先要对SQL Server提供的数据类型有所了解
2.2确定列的数据类型
分类 | 数据类型 | 说明 | |
---|---|---|---|
二进制数据类型 | 用来存储非字符和文本的数据 | binary varbinary image | 固定长度的二进制数据 可变长度的二进制数据 可用来存储图像 |
文本数据类型 | 字符数据包括任意字母,符号或数字字符的组合 | char varchar nchar nvarchar text ntext | 固定长度的非Unicode字符数据,最大长度为8000字符 可变长度的的非Unicode字符数据 固定长度的Unicode字符数据 可变长度的Unicode字符数据 存储长文本信息 存储可变长度的长文本 |
日期和时间数据类型 | 用于存储日期和时间 | datetime | 从1753年1月1日到9999年12月31日, 准确度为1/300秒,或3.33毫秒 |
数字数据类型 | 该数据类型仅包含数字,包括正数,负数,以及分数 | int smallint tinyint bigint float real | 整数 浮点数 |
货币数据类型 | 用于十进制货币值,并且精确到小数点后4位数字 | money | |
bit数据类型 | 表示是/否的数据,只有两种选择. 在SQL Server中用1和0表示 1表示是,0表示否 | bit | 存储布尔数据类型 |
在创建表的时候,选择字符数据类型,还需要输入长度信息,选择数字数据类型不需要输入长度信息,因为其长度是固定的.
2.3保存数据库的表
选择文件->保存,或快捷菜单中的保存图标.
3.完善表的设计结构
3.1是否允许为空值
数据库的列是否允许为空值也是一项约束,如果该列允许为空,则在输入数据行的时候这一项可以不输入.
3.2建立主键
选择要建立主键的列,单击右键,然后在快捷菜单中选择"设置主键"命令就可以了,
设置该列为主键后,该列上会有个钥匙形状图标进行标识
3.3默认值
表的默认值设置能够定义一个键,当用户没有在某一列中输入时,则将所定义的值赋值给这一列.
3.4标识列
很多情况下,存储的信息中很难找到不重复的信息作为列的主键.
SQL Server提供了一个"标识列",标识列本身没有具体的意义,只是用了区别实体
标识列实现方式如下:
a.如果一列的数据属于数字类型(例如整数),则可以把该列定义为标识列.
b.定义标识列之后,还需要分别指定"标识种子"和"标识增量",默认都是1
c.定义了标识列之后,在以后每次输入数据的时候,该列随数据行的增加而自动增加数值,并且不会重复,第一次的数字就是"标识种子"值,以后每次按照"标识递增量"增加数值
标识列中的数据是自动生成的,不能在该列上输入数据,也不允许为标识列指定值
3.5向表中插入数据
只要选择表,然后在快捷菜单中选择"打开表",就可以像表中直接插入数据了
4建立表间关系
4.1如何建里表间关系
在SSMS中可以按照以下步骤建立俩张表之间的关系
(1)在设计表的时候,在成绩表(Score)中的右键菜单中选择"关系选项",将显示"外键关系"对话框,单击添加按钮可以添加新的关系
(2)单击"表和列规范"最右侧的小按钮,将显示要建立关系的主键表以及主键列对话框
(3)选择主键表为XXX,主键列为XXX,对应的外键表的列为XXX
单击确定按钮,保存表的结构,这样他们之间的主--外键关系就建立了.
4.2建立数据库关系图
展开该数据库,选择"数据库关系图",右键单击"新建数据库关系图",然后根据提示新建数据库关系图
5.建立检查约束
5.1如何建立检查约束
在设计表的时候,在快捷菜单中选择"CHECK约束"选项,然后在"CHECK约束"对话框中单击"添加按钮",将添加一个新的约束
单击表达式最右侧的小按钮,可以在弹出的"CHECK约束表达式"对话框中输入以下表达式
单击"确定"按钮后保存表,该约束建立,以后在向表中输入,插入或者更新数据的时候.约束将起作用
6.删除数据库表
对于不在使用的数据库表,可以删除以释放磁盘空间,选择该表,在右键菜单中选择"删除"选项可以把该表直接删除
对于建立主外键关系的表,如果要删除主表,则首先要删除相关的子表以保证数据的引用完整性,否则将报错.