实用知识:SQL 约束(主键、外键)
2016-05-24 10:24
323 查看
简单约束
建表时可以给特定的字段设置一些约束条件,常见的约束有
NOT NULL :规定字段的值不能为null
UNIQUE :规定字段的值必须唯一
DEFAULT :指定字段的默认值 (建议:尽量给字段设定严格的约束,以保证数据的规范性)
示例
CREATE TABLE T_Person (id integer, name text NOT NULL UNIQUE, age integer NOT NULL DEFAULT 1) ;
name 字段不能为 NULL,并且唯一
age 字段不能为 NULL,并且默认为1
主键约束
如果 T_Person 表中就 name 和 age 两个字段,而且有些记录的 name 和 age 字段的值都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据
良好的数据库编程规范应该要保证每条记录的 唯一性,为此,增加 主键约束
每张表都必须有一个主键,用来标识记录的唯一性
主键(Primary Key,简称PK)用来 唯一 地标识某 一条记录
例如t_student可以增加一个id字段作为主键,相当于人的身份证
外键约束
利用 外键约束 可以用来 建立表与表之间 的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
新建一个外键
CREATE TABLE T_Student (id integer primary key autoincrement, name text, age integer, class_id integer, constraint fk_student_class foreign key (class_id) references t_class (id));
T_Student 表中有一个叫做 fk_t_student_class_id_t_class_id的 外键
这个外键的作用是用 T_Student 表中的 class_id 字段引用 T_Class 表的 id 字段
建表时可以给特定的字段设置一些约束条件,常见的约束有
NOT NULL :规定字段的值不能为null
UNIQUE :规定字段的值必须唯一
DEFAULT :指定字段的默认值 (建议:尽量给字段设定严格的约束,以保证数据的规范性)
示例
CREATE TABLE T_Person (id integer, name text NOT NULL UNIQUE, age integer NOT NULL DEFAULT 1) ;
name 字段不能为 NULL,并且唯一
age 字段不能为 NULL,并且默认为1
主键约束
如果 T_Person 表中就 name 和 age 两个字段,而且有些记录的 name 和 age 字段的值都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据
良好的数据库编程规范应该要保证每条记录的 唯一性,为此,增加 主键约束
每张表都必须有一个主键,用来标识记录的唯一性
主键(Primary Key,简称PK)用来 唯一 地标识某 一条记录
例如t_student可以增加一个id字段作为主键,相当于人的身份证
外键约束
利用 外键约束 可以用来 建立表与表之间 的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
新建一个外键
CREATE TABLE T_Student (id integer primary key autoincrement, name text, age integer, class_id integer, constraint fk_student_class foreign key (class_id) references t_class (id));
T_Student 表中有一个叫做 fk_t_student_class_id_t_class_id的 外键
这个外键的作用是用 T_Student 表中的 class_id 字段引用 T_Class 表的 id 字段
相关文章推荐
- 数据库知识点④
- SQLServer的数据类型
- Mysql 开启远程访问
- 使用Redis保存Spring session(基于XML配置文件)
- 去除站点的数据库字段中包含的关键词,并恢复
- SQL Sever无法连接到本地数据库解决办法
- 关系代数中的除法运算
- redis 问题解决(MISCONF Redis is configured to save RDB snapshots)
- 老大叫我改主数据库(MySQL)的时间!!!--UTC问题
- 160524、Linux下如何启动、关闭Oracle以及打开关闭监听
- 由浅入深探究 MySQL索引结构原理、性能分析与优化(三)
- 由浅入深探究 MySQL索引结构原理、性能分析与优化(二)
- Oracle中判断字段是否为数字
- 由浅入深探究 MySQL索引结构原理、性能分析与优化(一)
- 解决Discuz论坛 MySQL数据库报错try to repair it
- SQL Server 中WITH (NOLOCK)浅析
- sql SELECT时的with(nolock)选项说明
- mysqldump: 导出部分数据
- sql 为表添加描述信息
- MySQL 索引的创建、删除和查看操作