S1/C#语言和数据库技术基础/07-用表组织数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S1/C#语言和数据库技术基础/07-用表组织数据相关的知识,希望对你有一定的参考价值。
SQL Server提供了以下四种类型的约束
1、实体完整性约束
实体完整性要求表中的每一行数据都反映不同的实体,不能存在相同的数据行。
通过索引、唯一约束、主键约束或标识列属性,可以实现表的实体完整性。这些方法的实现将在后面说明。
2、域完整性约束
域完整性指的是给定列输入的有效性。
通过限制数据类型、检查约束、输入格式、外键约束、默认值、非空约束等多种方法,可以实现表的域完整性。
3、引用完整性约束
在输入或删除数据行时,引用完整性约束用来保持表之间已定义的关系。
例如,在管理学生信息的时候,一个表用来存储学生的信息,另一个表用来存储考试成绩的详细情况,并且考试成绩表中的一列数值就是学生信息表中的编号,用来表示学生的信息。
在强制引用完整性约束时,SQL Server禁止用户进行下列操作。
- 当主表中没有关联的记录时,将记录添加到从表中,也就是说学生成绩表中不能够出现在学生信息表中不存在的学号。
- 更改主表中的值导致相关表中的记录孤立。如果学生信息表中的学号改变了,学生成绩表中的学号也应当随之改变。
- 从主表中删除记录,但在相关表中仍存在与该记录匹配的相关记录。如果把学生信息表中的学生信息删除了,则该学生的学号不能出现在学生成绩表中。
引用完整性通过主键和外键之间的引用关系来实现。
4、自定义完整性约束(检查约束)
用户自定义完整性用来定义特定的规则。例如,在向用户信息表中插入一个用户记录时,要求通过身份证编号来检查在另外一个数据库中是否存在该用户,并且该用户的信誉度是否满足要求,等等。若不满足要求,则不能够插入,这个时候就需要使用数据库的规则、存储过程等方法来进行约束。
主键
有一个列,这个列的值用来唯一标识表中的每一行,用于强制表的实体完整性,这样的列定义为表的主键。
一个表只能有一个主键,并且主键列不允许出现空值(Null),尽管有的表中允许没有主键,但是通常情况下建议为表设置一列为主键。
提示:如果两列或多列组合起来唯一的标识表中的每一行,则该主键也叫作“复合主键”。
外键
外检就是相对主键而言的,就是“从表”中对应于“主表”的列,在从表中称为外键或者引用键,它的值要求与主表的主键或者唯一键相对应,外键用来强制引用完整性。一个表可以有多个外键。
创建数据库表实际上就是实施不同的约束,实现完整性规则的过程。
SQL Server数据类型
|
分类 |
数据类型 |
说明 |
二进制数据类型 |
用来存储非字符和文本的数据 |
Binary |
固定长度的二进制数据 |
|
|
Varbinary |
可变长度的二进制数据 |
|
|
Image |
可用来存储图像 |
文本数据类型 |
字符数据包括任意字母、符号或数字字符的组合 |
Char |
固定长度的非Unicode字符数据,最大长度为8000个字符 |
|
|
Varchar |
可变长度的非Unicode字符数据 |
|
|
Nchar |
固定长度的Unicode字符数据 |
|
|
Nvarchar |
可变长度的Unicode字符数据 |
|
|
Text |
存储长文本信息 |
|
|
Ntext |
存储可变长度的长文本 |
日期和时间数据类型 |
用于存储日期和时间 |
Datetime |
从1753年1月1日到9999年12月31日,准确度为三百分之一秒或3.33毫秒 |
数字数据类型 |
该数据仅包含数字,包括正数、负数及分数 |
Int,smallint,tinyint,bigint |
整数 |
|
|
Float,real |
浮点数 |
货币数据类型 |
货币数据类型用于十进制货币值,并且精确到小数点后面4位数 |
Money |
|
Bit数据类型 |
表示是/否的数据,只有两种选择,如婚否、是否定购等。在SQL Server中用1和0表示,一般1表示是,0表示否 |
Bit |
存储布尔数据类型 |
Unicode是一种在计算机上使用的字符编码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
在创建表的时候,选择字符数据类型,还需要输入长度信息,如varchar(50)指长度为50的字符型数据,其中长度可以改变。选择数字数据类型不需要输入长度信息,以你为长度是固定的。
标识列
在很多情况下,存储的信息中很难找到不重复的信息作为列的主键。就拿学生信息来说,以姓名作为主键的话,一个班上就不允许有同名的学生,如果一张表存储整个学校的学生信息,那么整个学校都不允许重名,这显然要带来麻烦。
SQL Server提供了一个“标识列”,标识列本身没有具体的意义,不反映学生诸如地址、性别这样的信息,只是用来区别不同的学生。
标识列的实现方式如下:
- 如果一列的数据属于数字类型(如整数),那么可以把该列定义为标识列。
- 定义成标识列之后,还需要分别指定“标识种子”和“标识增量”,默认值都是1.
- 定义了表之列之后,在以后每次输入数据的时候,该列随数据行的增加而自动增加数值,并且不会重复,第一次的数字就是“标识种子”值,以后每次按照“标识增量”增加数值。
标识列通常也被定义为主键,通常所说的“自动编号”就是指标识列的数字自动增加。
标识列中的数据是自动生成的,不能在该列上输入数据,后续章节将要学习的使用SQL语句插入数据时,也不允许为标识列指定值。
建立检查约束
检查约束也叫作CHECK约束,用于定义列中可接受的数据值或者格式。其中,%代表任意多个字符。
以上是关于S1/C#语言和数据库技术基础/07-用表组织数据的主要内容,如果未能解决你的问题,请参考以下文章