mysql之對錶的操作

來源:互聯網
上載者:User

標籤:

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之對錶的操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.