MySQL基礎02-列屬性

一、簡介

MySql中,真正約束字段的是數據類型,但是數據類型的約束太單一,需要有一些額外的約束,來更加保證數據的合法性。

MySql中的常用列屬性有:null、not null、default、zerofill、primary key、auto_increment和comment。

二、列屬性

1、NULL與 NOT NULL

mysql數據庫默認字段都是爲null的,但是在實際開發過程中,儘可能保證所有的數據都不應該爲null,空數據沒有意義,空數據沒有辦法參加運算。

2、DEFAULT

用default表示,某一種數據會經常的出現某個具體值,可以在一開始指定好,在需要真實數據的時候,用戶可以選擇性地使用默認值。

3、AUTO_INCREMENT

當對應的字段不給值,或者說默認值,或者給null的時候會自動地被系統觸發,系統會從當前字段中已有的最大值再進行+1,得到一個新的不同的字段,通常和主鍵搭配。

特點:

  • 任何一個字段做自增長前提 --> 自身是一個索引(key一欄有值)。
  • 自增長字段通常是整型。
  • 一個表中只能有1個自增長。
  • 自增長如果對應的字段輸入了值,那麼自增長失效,但是下一次還是能夠正確的自增長(從最大值+1)。

查看自增長對應的變量: show variables like 'auto_increment%';

mysql> show variables like 'auto_increment%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |   //步長
| auto_increment_offset    | 1     |   //起始值
+--------------------------+-------+
2 rows in set (0.00 sec)

4、COMMENT

comment,實際沒有什麼含義,是專門用來描述字段的,方便程序員對數據表進行查看了解。

5、PRIMARY KEY

一般情況下,對主鍵的理解是唯一鍵,一張表中最多有1個主鍵。

1)添加主鍵
添加主鍵有4種方式。
①創建表的時候,在字段後加上 primary key。
②primary key(字段1,字段2…)
在創建表的時候,在所有的字段之後,使用primary key(字段1,字段2......)來創建主鍵(可以有多個字段作爲主鍵,來創建複合主鍵)。
③向表中的字段追加主鍵。
新建一個字段,添加主鍵:alter table 表名字 add 字段名 數據類型 primary key
字段已經存在要用修改的方式:alter table 表名字 modify 字段名 數據類型 primary key
④通過add primary key(字段名) 進行添加。
alter table 表名字 add primary key(要添加主鍵的字段名);

2)主鍵約束
主鍵對應的字段中的數據不允許重複,一旦重複,操作失敗。

3)更新主鍵,刪除主鍵。
主鍵沒有辦法更新,只能先刪除主鍵,然後再添加主鍵。
alter table 表名字 drop primary key

4)主鍵前提
表中字段對應的數據本身是獨立的(不重複)。

6、unique

一張表往往有很多字段需要具有唯一性,數據不能重複,這個時候用唯一鍵(unique)就體現出其優勢了,可以解決表中多個字段需要唯一性約束的問題,唯一鍵的本質與主鍵的性質差不多,唯一鍵默認的允許字段爲空,而且可以多個字段爲空(空字段不參與唯一性比較)。

1)添加唯一鍵
①創建表的時候,在字段後加上unique/unique key。
②unique key(字段1,字段2…)
③向表中的字段追加主鍵。
alter table 表名字 add unque key(字段名);

2)刪除唯一鍵
`alter table 表名字 drop index 索引名字(唯一鍵默認的使用字段名作爲索引名字)

3)特點

  • 唯一鍵和主鍵本質基本相同,唯一區別就是唯一鍵默認是允許爲空的,而且是多個爲空
  • 若是唯一鍵也不允許爲空,那麼唯一鍵和主鍵的約束作用是一致的

三、列操作

1、查看數據表中的列屬性

 show columns from table_name;

如:

mysql> show columns from ino_test;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| Id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| text  | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.20 sec)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章