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

MySQL約束constraint用法詳解

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

前言

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

常用約束:

添加約束的兩種方法:

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

一:主鍵約束 primary key

注意:

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

1.添加單列主鍵

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

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

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

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.通過修改表結構添加主鍵

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

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

1.添加自增長約束

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

2. 指定自增字段初始值

如果第一條記錄設置了該字段的初始值,那么新增加的記錄就從這個初始值開始自增。例如,如果表中插入的第一條記錄的 id 值設置為 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);

四: 唯一性約束

默認約束 default

零填充約束 zerosfill

外鍵約束 foreign key

總結

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

相關文章

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

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

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

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

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

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

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

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

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

    mysql啟動提示mysql.host 不存在,啟動失敗的解決方法

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

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

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

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

    這篇文章主要介紹了mysql?數(shù)據(jù)備份與恢復使用詳解,根據(jù)實際的業(yè)務需求,經(jīng)驗參考可以據(jù)數(shù)據(jù)規(guī)模大小,服務器磁盤容量,大致是分為全備和增備,差異備份,本文給大家詳細講解需要的朋友可以參考下
    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ù)庫設置主從同步的方法

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

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

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

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

最新評論