欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL約束constraint用法詳解

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

前言

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

常用約束:

添加約束的兩種方法:

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

一:主鍵約束 primary key

注意:

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

1.添加單列主鍵

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

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

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

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

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

-- 聯(lián)合主鍵,就是由多個(gè)字段組成一個(gè)主鍵約束
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)主鍵定義為自增長后,這個(gè)主鍵的值就不再需要用戶輸入數(shù)據(jù)了,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動(dòng)賦值。每增加一條記錄,主鍵會(huì)自動(dòng)以相同的步長進(jìn)行增長。通過給字段添加 auto_increment 屬性來實(shí)現(xiàn)主鍵自增長

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

1.添加自增長約束

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

2. 指定自增字段初始值

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

-- 方式一:創(chuàng)建表的時(shí)候指定
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)指字段的值不能為空。對(duì)于使用了非空約束的字段,如果用戶在添加數(shù)據(jù)時(shí)沒有指定值,數(shù)據(jù)庫系統(tǒng)就會(huì)報(bào)錯(cuò)。

注意:

1.添加非空約束

-- 1.創(chuàng)建表時(shí)指定非空約束
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 8.0用戶和角色管理原理與用法詳解

    MySQL 8.0用戶和角色管理原理與用法詳解

    這篇文章主要介紹了MySQL 8.0用戶和角色管理,結(jié)合實(shí)例形式分析了MySQL 8.0用戶和角色管理相關(guān)概念、功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 詳解mysql不等于null和等于null的寫法

    詳解mysql不等于null和等于null的寫法

    這篇文章主要介紹了詳解mysql不等于null和等于null的寫法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MySQL中隔離級(jí)別RC與RR的區(qū)別及說明

    MySQL中隔離級(jí)別RC與RR的區(qū)別及說明

    這篇文章主要介紹了MySQL中隔離級(jí)別RC與RR的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略

    Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略

    這篇文章主要介紹了Mysql?redo?log?寫入策略和binlog?寫入策略,通過本文學(xué)習(xí)可以了解redo?log的寫入策略是由InnoDB提供了innodb_flush_log_at_trx_commit參數(shù),binlog的寫入策略,write?和fsync的時(shí)機(jī),是由參數(shù)sync_binlog控制的,需要的朋友可以參考下
    2022-04-04
  • mysql啟動(dòng)提示mysql.host 不存在,啟動(dòng)失敗的解決方法

    mysql啟動(dòng)提示mysql.host 不存在,啟動(dòng)失敗的解決方法

    我將s9當(dāng)眾原來的mysql4.0刪除后,重新裝了個(gè)mysql5.0,啟動(dòng)過程中報(bào)一下錯(cuò)誤,啟動(dòng)失敗,查了一下群里面的老帖子也沒有個(gè)具體的明確說明
    2011-10-10
  • MySql日期查詢數(shù)據(jù)的實(shí)現(xiàn)

    MySql日期查詢數(shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了MySql日期查詢數(shù)據(jù)的實(shí)現(xiàn),詳細(xì)的介紹了幾種日期函數(shù)的具體使用,及其具體某天的查詢,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-01-01
  • mysql?數(shù)據(jù)備份與恢復(fù)使用詳解(超完整詳細(xì)教程)

    mysql?數(shù)據(jù)備份與恢復(fù)使用詳解(超完整詳細(xì)教程)

    這篇文章主要介紹了mysql?數(shù)據(jù)備份與恢復(fù)使用詳解,根據(jù)實(shí)際的業(yè)務(wù)需求,經(jīng)驗(yàn)參考可以據(jù)數(shù)據(jù)規(guī)模大小,服務(wù)器磁盤容量,大致是分為全備和增備,差異備份,本文給大家詳細(xì)講解需要的朋友可以參考下
    2022-11-11
  • CentOS 7 下使用yum安裝MySQL5.7.20 最簡單方法

    CentOS 7 下使用yum安裝MySQL5.7.20 最簡單方法

    這篇文章主要介紹了CentOS 7 下使用yum安裝MySQL5.7.20 最簡單 方法,需要的朋友可以參考下
    2018-11-11
  • 詳解MySQL數(shù)據(jù)庫設(shè)置主從同步的方法

    詳解MySQL數(shù)據(jù)庫設(shè)置主從同步的方法

    最近一直在研究mysql的主從同步問題,現(xiàn)在網(wǎng)上也有很多資料,現(xiàn)在感覺寫的都很好(當(dāng)初感覺寫的很差,是因?yàn)樽约旱念I(lǐng)悟較差),于是想跟大家分享一下自己配置的整個(gè)過程和經(jīng)驗(yàn)。有需要的朋友歐美可以參考借鑒,感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • Linux系統(tǒng)MySQL8.0.19快速安裝配置教程圖解

    Linux系統(tǒng)MySQL8.0.19快速安裝配置教程圖解

    這篇文章主要介紹了Linux系統(tǒng)MySQL8.0.19快速安裝配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論