用表组织数据
表相关的几个基本概念
⦁ 数据的完整性
数据库需要做两方面的工作:检验每行或每列数据是否符合要求
⦁ 实体完整性约束
实体完整性要求表中的每一行数据都反应不同的实体,不能存在相同的数据,通过索引、唯一约束、主键约束或标识列属性
⦁ 域完整性约束
域完整性是指给定列输入的有效性
通过数据类型等约束
⦁ 引用完整性约束
在输入或删除时引用完整性约束来保持表之间已定义的关系
学生表(主表id\name\scoreid)中的id编号对应成绩表(从表id\score)中的成绩,删除一名学生,先删除成绩中的数据,在删除学生表中的数据
引用完整性约束通过主键和外键之间的引用关系来实现
⦁ 自定义完整性约束
用户自定义完整性约束用来定义特定的规则
主键和外键
主键(Primary key)
什么是主键?
是一个或多个字段,他的值用于唯一地表示表中的某一条记录。
在两个表的关系中,主关键字用来在一个表中的引用来自另一个表中的特定记录,主关键字是一种唯一的关键字(是表定义的一部分)主键列不能包含空值
注意:如果两个列或者多个列组合起来唯一表示表中的每一行,这叫“复合主键”
我怎么知道选择谁当主键?
需要两个原则:最少性和稳定性
⦁ 最少性:列数最少的键
⦁ 稳定性:指列中的数据特征,因为主键通常用来建立两个表之间的联系,所以主键数据不需要更新,理想状态下,永久不变
外键(foreign key)
什么是外键:外键就是指另外表中的主键
作用:保持数据的一致性,完整性,主要目的是控制存储在外键表中的数据
使用原则:
⦁ 为关联字段或创建外键
⦁ 所有的键都必须唯一
⦁ 避免使用复合键
⦁ 外键总是关联唯一字段
操作:建库、建表
创建数据库表
⦁ 确定列的数据类型
分类 数据类型 说明
二进制数据类型:存储非字符型文本或数据 image 可用来存储图片
文本数据类型:字符数据类型包括任意字母 char 固定长度的非Unicode
、字符或数字字符的组合 字符数据
Varchar 可变长度的非Unicode数据
Nchar 固定长度的Unicode数据
Nvarchar 可变长度的
Text 储存长度文本信息
Ntxet 存储可变长度的文本
日期和时间:日期和时间 datatime
数字类型:该数据仅包含数字 int、smallint、 整数
整数和浮点 tinyint、bigint
Float、real 浮点型
货币数据类型:十进制货币 money
Bit数据类型:表示是/否的数据 bit 存储布尔类型
用户表(Users)
编号 id
姓名 name\username Tom
年龄 age
成绩编号 scoreId 25
成绩表(Score)
编号 id 25
成绩 score 10
完善表的设计结构
1)是否允许为空值
允许当前列为空,不勾就是不允许
Nvarchar(50):长度
⦁ 设置主键
主键不能为空
3)默认值得设置
当前列中的列属性
4)标识列
自动增长的列(自动添加编号;默认值为1)
不能在该列上添加数据
向表中插入数据
右击编辑200行,直接插入数据
建立表之间的关系
建立表间关系实际上就是实施引用完整性约束、建立主表和从表之间的关系
在哪个表上新建当前表就为从表,另一个表就为主表
实际:用户----(找)-----成绩
数据库:成绩为主-----用户为次
建立检查约束
Check约束,用于定义列可接受的数据格式(gender:男、女 成绩:0~150)
成绩或年龄:score >= 0 and score <= 150
性别:sex = ‘男’ or sex =’女’
Id >= 0
Email: Semail like ‘%@%’