MySQL資料庫欄位參數的完整性條件約束

來源:互聯網
上載者:User

標籤:ima   rds   tab   err   sign   欄位   dep   extra   default   

一.分類 

PRIMARY KEY (PK)    標識該欄位為該表的主鍵,可以唯一的標識記錄FOREIGN KEY (FK)    標識該欄位為該表的外鍵NOT NULL    標識該欄位不可為空UNIQUE KEY (UK)    標識該欄位的值是唯一的AUTO_INCREMENT    標識該欄位的值自動成長(整數類型,而且為主鍵)DEFAULT    為該欄位設定預設值UNSIGNED 無符號ZEROFILL 使用0填充#說明1. 是否允許為空白,預設NULL,可設定NOT NULL,欄位不允許為空白,必須賦值2. 欄位是否有預設值,預設的預設值是NULL,如果插入記錄時不給欄位賦值,此欄位使用預設值sex enum(‘male‘,‘female‘) not null default ‘male‘age int unsigned NOT NULL default 20 必須為正值(無符號) 不允許為空白 預設是203. 是否是key主鍵 primary key外鍵 foreign key索引 (index,unique...)

二.not null 與default使用

 是否可空,null表示空,非字串
    not null - 不可空
    null - 可空

    預設值,建立列時可以指定預設值,當插入資料時如果未主動設定,則自動添加預設值
    create table tb1(
    nid int not null defalut 2,
    num int not null

三.uniqle

 設定唯一約束的兩種方法

 

============設定唯一約束 UNIQUE===============方法一:create table department1(id int,name varchar(20) unique,comment varchar(100));方法二:create table department2(id int,name varchar(20),comment varchar(100),constraint uk_name unique(name));mysql> insert into department1 values(1,‘IT‘,‘技術‘);Query OK, 1 row affected (0.00 sec)mysql> insert into department1 values(1,‘IT‘,‘技術‘);ERROR 1062 (23000): Duplicate entry ‘IT‘ for key ‘name‘

 

四.primary key

 

primary key欄位的值不為空白且唯一

一個表中可以:

單列做主鍵
多列做主鍵(複合主鍵)

但一個表內只能有一個主鍵primary key

============單列做主鍵===============#方法一:not null+uniquecreate table department1(id int not null unique, #主鍵name varchar(20) not null unique,comment varchar(100));mysql> desc department1;+---------+--------------+------+-----+---------+-------+| Field   | Type         | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+-------+| id      | int(11)      | NO   | PRI | NULL    |       || name    | varchar(20)  | NO   | UNI | NULL    |       || comment | varchar(100) | YES  |     | NULL    |       |+---------+--------------+------+-----+---------+-------+rows in set (0.01 sec)#方法二:在某一個欄位後用primary keycreate table department2(id int primary key, #主鍵name varchar(20),comment varchar(100));mysql> desc department2;+---------+--------------+------+-----+---------+-------+| Field   | Type         | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+-------+| id      | int(11)      | NO   | PRI | NULL    |       || name    | varchar(20)  | YES  |     | NULL    |       || comment | varchar(100) | YES  |     | NULL    |       |+---------+--------------+------+-----+---------+-------+rows in set (0.00 sec)#方法三:在所有欄位後單獨定義primary keycreate table department3(id int,name varchar(20),comment varchar(100),constraint pk_name primary key(id); #建立主鍵並為其命名pk_namemysql> desc department3;+---------+--------------+------+-----+---------+-------+| Field   | Type         | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+-------+| id      | int(11)      | NO   | PRI | NULL    |       || name    | varchar(20)  | YES  |     | NULL    |       || comment | varchar(100) | YES  |     | NULL    |       |+---------+--------------+------+-----+---------+-------+rows in set (0.01 sec)
==================多列做主鍵================create table service(ip varchar(15),port char(5),service_name varchar(10) not null,primary key(ip,port));mysql> desc service;+--------------+-------------+------+-----+---------+-------+| Field        | Type        | Null | Key | Default | Extra |+--------------+-------------+------+-----+---------+-------+| ip           | varchar(15) | NO   | PRI | NULL    |       || port         | char(5)     | NO   | PRI | NULL    |       || service_name | varchar(10) | NO   |     | NULL    |       |+--------------+-------------+------+-----+---------+-------+rows in set (0.00 sec)mysql> insert into service values    -> (‘172.16.45.10‘,‘3306‘,‘mysqld‘),    -> (‘172.16.45.11‘,‘3306‘,‘mariadb‘)    -> ;Query OK, 2 rows affected (0.00 sec)Records: 2  Duplicates: 0  Warnings: 0mysql> insert into service values (‘172.16.45.10‘,‘3306‘,‘nginx‘);ERROR 1062 (23000): Duplicate entry ‘172.16.45.10-3306‘ for key ‘PRIMARY‘

 

MySQL資料庫欄位參數的完整性條件約束

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.