最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL約束constraint用法詳解

 更新時間:2023年05月11日 10:29:05   作者:05431  
大家都知道MySQL中經(jīng)常會需要創(chuàng)建父子表之間的約束,下面這篇文章主要給大家介紹了關(guān)于MySQL約束constraint用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

約束canstraint,約束實際上就是表中數(shù)據(jù)的限制條件。表在設(shè)置的時候加入約束的目的是為了保證表中的記錄完整性和有效性,比如用戶的某些數(shù)據(jù)不能為空。

常用約束:

添加約束的兩種方法:

  • 在創(chuàng)建表的時候添加 create
  • 在修改標(biāo)的時候添加 alter

一:主鍵約束 primary key

注意:

1.主鍵約束的列非空且唯一,不能是null,不能重復(fù)
2.聯(lián)合主鍵的每一列都不能為null

1.添加單列主鍵

創(chuàng)建單列主鍵有兩種方式,一種是在定義字段的同時指定主鍵,一種是定義完字段之后指定主鍵。

use name;
create table emp1(
	eid int primary key,
	name varchar(20),
	edptId int,
	salary double
);

constraint <約束名> 可以省略(相當(dāng)于給約束起一個名字)

create table emp2(
	eid int,
	name varchar(20),
	deptId int,
	salary double,
	constraint pk1 primary key(eid)   -- constraint pk1  可以省略
);

2.添加多列主鍵(聯(lián)合主鍵)

-- 聯(lián)合主鍵,就是由多個字段組成一個主鍵約束
create table emp3(
	name varchar(20),
	deptId int,
	salary double,
	constraint pk2 primary key(name,deptId)
);
--   空字符串不等于null
insert into emp3 values("",20,30);
-- 主鍵不能為空,
insert into emp3 values(null,29,32);

3.通過修改表結(jié)構(gòu)添加主鍵

use name;
-- 添加單列主鍵
create table emp4(
	eid int,
	name varchar(20),
	deptId int,
	salary double
);
alter table emp4 add primary key(eid);
-- 添加多列主鍵
create table emp5(
	eid int,
	name varchar(20),
	deptId int,
	salary double
);
alter table emp5 add primary key(name,deptId);

4.刪除主鍵約束

-- 刪除主鍵
-- 1.刪除單列主鍵
alter table emp1 drop primary key;
-- 2.刪除多列主鍵
alter table emp5 drop primary key;

二:自增長約束 auto_increment

在 MySQL 中,當(dāng)主鍵定義為自增長后,這個主鍵的值就不再需要用戶輸入數(shù)據(jù)了,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動賦值。每增加一條記錄,主鍵會自動以相同的步長進(jìn)行增長。通過給字段添加 auto_increment 屬性來實現(xiàn)主鍵自增長

Ø 默認(rèn)情況下,auto_increment的初始值是 1,每新增一條記錄,字段值自動加 1。
Ø 一個表中只能有一個字段使用 auto_increment約束,且該字段必須有唯一索引,以避免序號重復(fù)(即為主鍵或主鍵的一部分)。
Ø auto_increment約束的字段必須具備 NOT NULL 屬性。
Ø auto_increment約束的字段只能是整數(shù)類型(TINYINT、SMALLINT、INT、BIGINT 等。
Ø auto_increment約束字段的最大值受該字段的數(shù)據(jù)類型約束,如果達(dá)到上限,auto_increment就會失效。

1.添加自增長約束

create table t_user1(
	id int primary key auto_increment,
	name varchar(20)
);

2. 指定自增字段初始值

如果第一條記錄設(shè)置了該字段的初始值,那么新增加的記錄就從這個初始值開始自增。例如,如果表中插入的第一條記錄的 id 值設(shè)置為 5,那么再插入記錄時,id 值就會從 5 開始往上增加

-- 方式一:創(chuàng)建表的時候指定
create table t_user2(
	id int primary key auto_increment,
	name varchar(20)
)auto_increment = 100;
insert into t_user2 values (null,"張三");

-- 方式二:創(chuàng)建表之后指定
create table t_user3(
	id int primary key auto_increment,
	name varchar(20)
);
alter table t_user3 auto_increment = 200;

三:非空約束 not null

MySQL 非空約束(not null)指字段的值不能為空。對于使用了非空約束的字段,如果用戶在添加數(shù)據(jù)時沒有指定值,數(shù)據(jù)庫系統(tǒng)就會報錯。

注意:

1.添加非空約束

-- 1.創(chuàng)建表時指定非空約束
create table t_user6(
	id int,
	name varchar(20) not null,
	address varchar(20) not null
);
insert into t_user6(id) values (1007);  -- 不可以
insert into t_user6(id,name,address) values(1001,null,null); --不可以
insert into t_user6(id,name,address) values(1001,'NULL','NULL');  --可以(字符串null)
insert into t_user6(id,name,address) values(1001,'','');  -- 可以(空串)

-- 2.創(chuàng)建非空約束,創(chuàng)建表之后指定
create table t_user7(
	id int,
	name varchar(20),  -- 指定非空約束
	address varchar(20)
);
alter table t_user7 modify name varchar(20) not null;

2.刪除非空約束

-- 刪除非空約束
alter table t_user7 modify name varchar(20);
alter table t_user7 modify address varchar(20);

四: 唯一性約束

默認(rèn)約束 default

零填充約束 zerosfill

外鍵約束 foreign key

總結(jié)

到此這篇關(guān)于MySQL約束constraint用法詳解的文章就介紹到這了,更多相關(guān)MySQL約束constraint內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL查詢用戶權(quán)限的方法總結(jié)

    MySQL查詢用戶權(quán)限的方法總結(jié)

    這篇文章主要介紹了MySQL查詢用戶權(quán)限的方法總結(jié)內(nèi)容,需要的朋友們可以參考下。
    2020-03-03
  • mysql如何將表結(jié)構(gòu)導(dǎo)出到excel

    mysql如何將表結(jié)構(gòu)導(dǎo)出到excel

    這篇文章主要介紹了mysql如何將表結(jié)構(gòu)導(dǎo)出到excel,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • mysql從5.7平滑升級到8.0.27的實現(xiàn)

    mysql從5.7平滑升級到8.0.27的實現(xiàn)

    mysql8.0已經(jīng)到了穩(wěn)定期,本文主要介紹了mysql從5.7平滑升級到8.0.27的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 一個簡單的MySQL備份Shell腳本

    一個簡單的MySQL備份Shell腳本

    這篇文章主要介紹了一個簡單的MySQL備份Shell腳本,本文直接給出代碼實例,需要的朋友可以參考下
    2015-07-07
  • MySQL架構(gòu)設(shè)計思想詳解

    MySQL架構(gòu)設(shè)計思想詳解

    這篇文章主要介紹了MySQL架構(gòu)設(shè)計思想詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • MySQL外鍵約束(FOREIGN KEY)的具體使用

    MySQL外鍵約束(FOREIGN KEY)的具體使用

    MySQL外鍵約束是表的一個特殊字段,經(jīng)常與主鍵約束一起使用,本文主要介紹了MySQL外鍵約束(FOREIGN KEY)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record version Unknown-0.0問題

    Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record 

    這篇文章主要介紹了Mysql數(shù)據(jù)庫連接失敗SSLException: Unsupported record version Unknown-0.0問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Mysql 執(zhí)行一條語句的整個過程詳細(xì)

    Mysql 執(zhí)行一條語句的整個過程詳細(xì)

    這篇文章主要介紹了Mysql 執(zhí)行一條語句的整個詳細(xì)過程,Mysql的邏輯架構(gòu)整體分為兩部分,Server層和存儲引擎層,下面文章內(nèi)容具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • SQL實現(xiàn)LeetCode(184.系里最高薪水)

    SQL實現(xiàn)LeetCode(184.系里最高薪水)

    這篇文章主要介紹了SQL實現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mysql數(shù)據(jù)庫太大了如何備份與還原

    mysql數(shù)據(jù)庫太大了如何備份與還原

    今天小編就為大家分享一篇關(guān)于mysql數(shù)據(jù)庫太大了如何備份與還原,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論

酉阳| 保山市| 满洲里市| 淳化县| 启东市| 当阳市| 昌乐县| 威远县| 福贡县| 麻江县| 红原县| 政和县| 循化| 宾川县| 县级市| 桐梓县| 金乡县| 桐城市| 麻阳| 固始县| 科技| 青川县| 西乌珠穆沁旗| 北京市| 安化县| 鄂托克旗| 永仁县| 密山市| 剑河县| 左云县| 宝丰县| 玛多县| 沙洋县| 富平县| 广宗县| 肥东县| 庆城县| 宁海县| 清远市| 陇西县| 邢台市|