標籤:
1. 表的基本概念
在資料庫中,表是一種非常重要的資料庫物件,是組成資料庫的基本對象,由若干個欄位組成,主要用來儲存資料記錄。
表中的資料庫物件包含列,索引和觸發器。
列:也稱屬性列,在具體建立表時必須指定列的名字和資料類型。
索引:是根據指定的資料庫表列建立起來的順序,提供了快速存取資料的途徑且可監督表的資料,使其索引所指向的列中的資料不重複。
觸發器:定義的事物命令的集合,當對一個表中的資料進行插入,更新或者刪除時這組命令就會自動執行,可以用來確保資料的完整性和安全性。
2.建立表
CREATE TABLE t_dept(deptno INT,dbname VARCHAR(20),loc VARCHAR(40));
3.查看錶結構
3.1 DESCRIBE(DESC是簡寫)語句查看錶定義
DESCRIBE t_dept;
3.2 SHOW CREATE TABLE語句查看錶詳細定義
SHOW CREATE TABLE t_dept;
在顯示詳細定義資訊時,可以使用";","\g"和"\G"符號來結束,為了讓結果美觀,便於查看,最好使用"\G"符號來結束,如下:
4. 刪除表
DROP TABLE t_dept;
5. 修改表
5.1 修改表名
ALTER TABLE old_table_name RENAME [TO] NEW _table_name
5.2 增加欄位
在表的最後一個位置增加欄位:
ALTER TABLE table_name ADD 屬性名稱 屬性類型
在表的第一個位置增加欄位:
ALTER TABLE table_name ADD 屬性名稱 屬性類型 FIRST
在表的指定欄位之後增加欄位:
ALTER TABLE table_name ADD 屬性名稱 屬性類型 AFTER 屬性名稱
5.3 刪除欄位
ALTER TABLE table_name DROP 屬性名稱
5.4 修改欄位
修改欄位的資料類型:
ALTER TABLE table_name MODIFY屬性名稱 屬性類型
修改欄位的名字:
ALTER TABLE table_name CHANGE 舊屬性名稱 新屬性名稱 舊資料類型
同時修改欄位的名字和屬性:
ALTER TABLE table_name CHANGE 舊屬性名稱 新屬性名稱 新資料類型
修改欄位的順序:
ALTER TABLE table_name MODIFY 屬性名稱1 資料類型 FIRST|AFTER 屬性名稱2
6. 動作表的約束
對於已經建立好的表,雖然欄位的資料類型決定了所能儲存的資料類型,但是表中所儲存的資料是否合法並沒有進行檢查。如果想針對錶中的資料做一些完整性檢查操作,可以通過表中的約束來完成。
6.1 MySQL支援的完整性條件約束
所謂表的完整性是指資料的準確性和一致性,而完整性檢查就是指檢查資料的準確性和一致性。
完整性條件約束
| 完整性條件約束關鍵字 |
含義 |
| NOT NULL |
限制欄位的值不可為空 |
| DEFAULT |
設定欄位的預設值 |
| UNIQUE KEY(UK) |
限制欄位的值是唯一 |
| PRIMARY KEY(PK) |
限制欄位為表的主鍵,可以作為該表記錄的唯一標識 |
| AUTO_INCREMENT |
限制欄位的值為自動增加 |
| FOREIGN KEY(FK) |
限制欄位為表的外鍵 |
MySQL資料庫管理系統不支援check約束,即可以使用check約束但是卻沒有任何效果。
根據約束資料列限制,約束可以分為單列約束(每個約束只約束一列資料)和多列約束(每個約束可以約束多列資料)。
6.2 設定非空約束(NOT NULL,NK)
create table table_name(屬性名稱 屬性類型 NOT NULL,...);
6.3 設定欄位的預設值(DEFAULT)
create table table_name(屬性名稱 屬性類型 DEFAULT 預設值,...);
6.4 設定唯一約束(UNIQUE,UK)
create table table_name(屬性名稱 屬性類型 UNIQUE,...);
如果想給設定唯一約束的欄位的約束取一個名字,可以執行SQL語句CONSTRAINT:
create table table_name(dbname 屬性類型,...CONSTRAINT uk_dbname UNIQUE(dbname));
6.5 設定主鍵約束(PRIMARY KEY,PK)
設定主鍵約束時,必須滿足主鍵欄位的值是唯一,非空的。
單欄位主鍵:
create table table_name(屬性名稱 屬性類型 PRIMARY KEY,...);
如果想給設定單一主鍵的欄位的約束取一個名字,可以執行SQL語句CONSTRAINT:
create table table_name(dbname 屬性類型,...CONSTRAINT pk_dbname PRIMARY KEY(dbname));
多欄位主鍵:
當主鍵由多個欄位組合而成時,需要通過SQL語句CONSTRAINT 來實現:
create table table_name(屬性名稱1 資料類型,屬性名稱2 資料類型,...CONSTRAINT 約束名 PRIMARY KEY(屬性名稱1,屬性名稱2));
6.6 設定欄位值自動成長(AUTO_INCREMENT)
AUTO_INCREMENT是MySQL唯一拓展的完整性條件約束,當為資料庫表中插入新紀錄時,欄位上的值會自動產生唯一的ID。一個資料庫表中只能有一個欄位使用該約束,該欄位的資料類型必須是整數類型。由於設定AUTO_INCREMENT約束後的欄位會產生唯一的ID,所以該欄位也經常會設定成PK主鍵。
create table table_name(屬性名稱 資料類型 AUTO_INCREMENT,...);
6.7 設定外鍵約束(FOREIGN KEY,FK)
前面的完整性條件約束都是在單表中進行設定,而外鍵約束則保證多個表(通常為兩個表)之間的參照完整性,即構建於兩個表的兩個欄位之間的參照關係。
create table table_name(屬性名稱 資料類型,屬性名稱 資料類型,...CONSTRAINT 外鍵約束名 FOREIGN KEY(屬性名稱1) REFERENCES 表名 (屬性名稱2));
mysql之對錶的操作