数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
来源:互联网 发布:淘宝联盟 高佣金 编辑:程序博客网 时间:2024/05/17 18:16
1. 数据库有六大约束
- 主键(primary key)
- 外键(foreign key):被参照的键必须有唯一约束或是主键
- 非空(not null)
- 默认(default)
- 检查(check):oracle独有
- 唯一(unique)
2. 六大约束的用法
以下所有演示的SQL语句都是基于Oracle,可能在MySQL中使用有些出入。不过不用担心,后面会指出一些MySQL与Oracle的不同之处
-- 1.创建部门表dept 用于演示外键create table test_dept( deptno varchar2(20) primary key, dname varchar2(20), loc varchar2(20)unique);-- 2.创建员工表emp create table test_emp( -- 1.员工id:添加主键约束primary key eid varchar(20) primary key, -- 2.员工名字:添加非空约束not null,唯一约束unique ename varchar(20) not null unique, -- 3.员工性别与年龄:添加检查约束check sex char(2) check(sex in ('男','女')), age number(3) check(age>0), -- 4.员工工资:添加默认约束default sal number(7,2) default('3000'), -- 5.员工所属部门:添加外键约束forein key deptno references test_dept(deptno), -- 6.部门地址:用于单独添加外键约束演示 loc varchar2(20) );-- 单独添加或修改check约束alter table test_emp add constraint age check (age>0 and age<140);--- 单独添加外键约束alter table test_emp add constraint fk_loc foreign key(loc) references test_dept(loc);-- 也可以将check约束和主键约束放在最后create table test_emp2( -- 1.员工id:主键约束primary key eid varchar(20), -- 2.员工名字:非空约束not null,唯一约束unique ename varchar(20) not null unique, -- 3.员工性别与年龄:检查约束check sex char(2), age number(3), -- 4.员工工资:默认约束default sal number(7,2) default('3000'), -- 5.员工所属部门:外键约束forein key deptno references test_dept(deptno), -- 6.部门地址:用于单独添加外键约束演示 loc varchar(20), primary key(eid),check(sex in ('男','女')),check(age>0));-- default约束用法:-- 1.默认为空:default null-- 2.默认值类型为字符串:default '普通用户' 或default('普通用户')-- 3.默认值类型为数值:default 2000 或default(2000)-- 推荐使用不需要括号方式:default 'admin' 或 default 2000-- oracle中:default约束必须放在非空约束(not null)前面create table test_emp3( -- 1.员工id:主键约束primary key eid varchar(20), -- 2.员工名字:非空约束not null,唯一约束unique ename varchar(20), -- 3.员工性别与年龄:检查约束check sex char(2), age number(3), -- 4.员工工资:默认约束default sal number(7,2) default(533) not null , -- 5.员工所属部门:外键约束foreign key deptno references test_dept(deptno), -- 6.部门地址:用于单独添加外键约束演示 loc varchar2(20), check(sex in ('男','女')),check(age>0));-- 单独添加主键alter table test_emp3 add constraint pk_ename primary key(ename);-- 一次添加多个主键-- 注意:1.一次添加多个主键,只能采取下列方式(使用GUI工具除外);-- 2.不能使用分别在eid和ename后面加primary key-- 3.也不能先给eid设置为primary key ,在表创建完毕后在使用alter去给ename添加主键create table test_emp4( -- 1.员工id:主键约束primary key eid varchar(20), -- 2.员工名字:非空约束not null,唯一约束unique ename varchar(20), -- 3.员工性别与年龄:检查约束check sex char(2), age number(3), -- 4.员工工资:默认约束default sal number(7,2) default(533) not null , -- 5.员工所属部门:外键约束forein key deptno references test_dept(deptno), -- 6.部门地址:用于单独添加外键约束演示 loc varchar2(20), primary key(eid,ename),check(sex in ('男','女')),check(age>0));
3. mysql中如何实现类似于oracle的检查约束
可以采用枚举enum来实现类似检查约束的功能。
CREATE TABLE `testuser` ( `user_id` INT(11) NOT NULL AUTO_INCREMENT, `user_name` VARCHAR(12) NOT NULL DEFAULT '', `real_name` VARCHAR(12) NOT NULL DEFAULT '', `password` VARCHAR(8) NOT NULL DEFAULT '', `sex` ENUM('0','1') NOT NULL DEFAULT '0', `degree` ENUM('1','2','3','4') NOT NULL DEFAULT '1', `birthday` DATETIME DEFAULT NULL, PRIMARY KEY (`user_id`));
4.mysql创建外键
(1)创建表时添加外键
添加一个外键
create table users( username varchar(50), role_id int , constraint fk_users_roles foreign key (role_id) references roles(roleid) );
可以添加两个主键
CREATE TABLE roles_menus ( roles_id INT , menus_id INT, PRIMARY KEY (roles_id, menus_id), CONSTRAINT fk_users_roles FOREIGN KEY (roles_id) REFERENCES roles(roleid), CONSTRAINT fk_users_menus FOREIGN KEY (menus_id) REFERENCES menus(menuid) );
(2)创建表后,单独添加外键约束
create table users( username varchar (50) primary key, role_id int );alter table users add constraint fk_users_roles foreign key (role_id) references roles(roleid);
阅读全文
0 0
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
- SQL约束(主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)
- SQLite 约束NOT NULL,DEFAULT,UNIQUE,PRIMARY KEY, CHECK
- oracle约束总结(not null/unique/primary key/foreign key/check)
- oracle中五中约束详解(CHECK,UNIQUE,PRIMARY KEY,FOREIGN KEY,NOT NULL)
- 第五章、数据库设计(三范式、主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)
- oracle的完整性约束:check/not null/unique/primary/foreign key
- SQLite学习笔记六: 约束NOT NULL,DEFAULT,UNIQUE,PRIMARY KEY, CHECK
- oracle_约束条件(primary key、foreign key、unique、not null、check)
- SQL 约束 (Constraints):NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHE
- SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的
- 主键约束--PRIMARY KEY
- 笔记081112 ORACLE 常用系统函数 数字类型 时间类型 大文件数据类型 主键约束 NOT NULL UNIQUE CHECK FOREIGN KEY ON DELETE CASCADE ON DELETE SET NULL USER_C
- oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作
- 数据库2 domain cardinality degree 主键(PRIMARY KEY) 外键(FOREIGN KEY) 候选键(candidate key) 超键(SUPER KEY)
- 约束:确保数据的完整性(主键,唯一,检查,默认,非空,外键)
- 创建Primary key主键和Unique唯一索引
- SQL 数据库 学习 010 表和约束的区别、check约束、default约束、unique约束、not null约束
- 最小生成树——Prim算法
- 203. Remove Linked List Elements
- 一个简单实用的的加载动画(跳点效果)
- PostgreSQL递归查询
- [python]返回每个分组的top_n
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
- java 解析ttf字体文件
- POJ1840-简单hash-Eqs
- 关于使用VMware搭建Linux虚拟机配置IP你应知道的一切
- ContentProvider获取手机联系人
- 提取字符串中所有src图片的地址 或清空
- 2016多校训练总结
- <C#>_在窗体中打开文件
- QT之图标添加