数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
生活随笔
收集整理的這篇文章主要介紹了
数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 數據庫有六大約束
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 keyeid varchar(20) primary key,-- 2.員工名字:添加非空約束not null,唯一約束uniqueename varchar(20) not null unique, -- 3.員工性別與年齡:添加檢查約束checksex char(2) check(sex in ('男','女')),age number(3) check(age>0),-- 4.員工工資:添加默認約束defaultsal number(7,2) default('3000'),-- 5.員工所屬部門:添加外鍵約束forein keydeptno 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 keyeid varchar(20),-- 2.員工名字:非空約束not null,唯一約束uniqueename varchar(20) not null unique, -- 3.員工性別與年齡:檢查約束checksex char(2),age number(3),-- 4.員工工資:默認約束defaultsal number(7,2) default('3000'),-- 5.員工所屬部門:外鍵約束forein keydeptno 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 keyeid varchar(20),-- 2.員工名字:非空約束not null,唯一約束uniqueename varchar(20), -- 3.員工性別與年齡:檢查約束checksex char(2),age number(3),-- 4.員工工資:默認約束defaultsal number(7,2) default(533) not null ,-- 5.員工所屬部門:外鍵約束foreign keydeptno 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 keyeid varchar(20),-- 2.員工名字:非空約束not null,唯一約束uniqueename varchar(20), -- 3.員工性別與年齡:檢查約束checksex char(2),age number(3),-- 4.員工工資:默認約束defaultsal number(7,2) default(533) not null ,-- 5.員工所屬部門:外鍵約束forein keydeptno 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);總結
以上是生活随笔為你收集整理的数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巧用Eclipse中用户自定义包(Use
- 下一篇: 【Structs2】struts2单例多