標籤: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資料庫欄位參數的完整性條件約束