日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

發布時間:2025/3/20 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲字幕在线观看 | 九月激情网 | 日韩精品人妻一区 | 一卡二卡国产 | 国产激情一区二区三区在线观看 | 先锋资源av网 | 国产免费视频 | 好看的国产精品 | 亚洲欧美成人一区二区三区 | 哈利波特3在线观看免费版英文版 | 久久国产精品影院 | yellow免费在线观看 | 欧美日韩伊人 | 亚洲一区成人在线 | 青青操国产视频 | 青青伊人精品 | 中文字幕一区二区三区人妻 | 在线欧美成人 | 国产精品免费电影 | 杨幂一区二区国产精品 | 丰满岳乱妇一区二区 | 91av国产视频 | 一区二区三区免费 | 免费黄色网址大全 | 免费黄色看片 | 久久久久亚洲色欲AV无码网站 | 国产7777777| 日韩高清在线一区二区 | 国产精品视频久久久 | 欧美一级性生活 | 大胸美女网站 | 男女天堂av | 伊人91视频 | 91视频观看 | 黄色在线观看视频 | 99热这里有 | 国产精品黄视频 | 国产精品久久久久久妇女 | 在线观看中文字幕视频 | 国产亚洲精品码 | 久久久久亚洲色欲AV无码网站 | 极品少妇一区二区 | 黑人操日本女人 | 亚洲高清在线免费观看 | 天天干国产 | 亚洲一级精品 | 国产超碰| 欧美在线视频第一页 | 国产成人精品一二三区 | 亚洲国产精品久久久久 | 久久精品国产精品亚洲毛片 | 波多野结衣视频在线观看 | 猛男被粗大男男1069 | 欧美黄频| 美女aaa | 国产精品无码成人网站视频 | 波多野结衣一区 | 欧美大片在线 | 日韩国产精品一区 | 国产精品久久久久久免费播放 | 麻豆影视在线免费观看 | 欧美性猛交69 | 天堂在线精品视频 | 黄色网战在线观看 | 99热国产在线 | 一区二区亚洲视频 | 日韩中文字幕网站 | 天天干天天爽天天操 | jizz免费在线观看 | 37p粉嫩大胆色噜噜噜 | 欧美sm凌虐视频网站 | 日韩三级视频在线播放 | 亚洲91精品 | 在线观看视频99 | 久草视 | 少妇太紧太爽又黄又硬又爽小说 | 国产传媒专区 | xxxx精品| 免费欧美黄色片 | 69av网站| 国产精品麻豆欧美日韩ww | 国产激情一区二区三区视频免樱桃 | 欧美一二三级 | av影院在线| 无码人妻av一区二区三区波多野 | 我要看黄色大片 | 在线观看精品国产 | 女人脱了内裤趴开腿让男躁 | 亚洲国产综合av | 成年人免费在线观看视频网站 | 亚洲永久精品一区 | 午夜在线免费观看视频 | 国产情趣视频 | 天堂综合网 | 日韩精品一区二区在线视频 | 夜色福利 | 五月天久久久久久 | 狠狠干性视频 | 91看片就是不一样 |