1. 程式人生 > 資料庫 >MySQL資料表基本操作例項詳解

MySQL資料表基本操作例項詳解

本文例項講述了MySQL資料表基本操作。分享給大家供大家參考,具體如下:

資料表的基本操作

1.主鍵約束要求主鍵列的資料唯一,並且不允許為空。主鍵能夠唯一地識別表中的一條記錄,可以結合外來鍵來定義不同資料表之間的關係,並且可以加快資料庫查詢的速度。主鍵和記錄之間的關係如同身份證和人之間的關係。

2.字表的外來鍵必須關聯父表的主鍵,且關聯欄位的資料型別必須匹配。如果型別不一樣。建立子表時,就會出現錯誤:ERROR 1005(HY000):can't create table 'databases.tablesname'(error:150)

3.非空約束指欄位的值不能為空。

4.唯一性約束:要求該列唯一,允許為空,但只能出現一個空值。唯一約束可以確保一列或者幾列不出現重複值。

5.unique和primary key 的區別:一個表中可以有多個欄位宣告為unique,但只能有一個primary key宣告:宣告為關鍵字的列不允許為空值,但是宣告為unique的欄位允許空值null的存在。

【例.1】建立員工表tb_emp1

選擇建立表的資料庫:

USE test_db;

建立tb_emp1表:

CREATE TABLE tb_emp1
(
id int(11),name varchar(25),deptId int(11),salary float
);

【例.2】定義資料表tb_emp 2,其主鍵為id:

CREATE TABLE tb_emp2
(
id int(11) PRIMARY KEY,salary float
);

【例.3】定義完所有列之後指定主鍵

定義資料表tb_emp 3,其主鍵為id:

CREATE TABLE tb_emp3
(
id int(11),salary float,PRIMARY KEY(id)
);

【例.4】定義資料表tb_emp4,建立多欄位聯合主鍵SQL語句為:

CREATE TABLE tb_emp4
(
name varchar(25),PRIMARY KEY(name,deptId)
);

【例.5】定義資料表tb_emp5,並在tb_emp5表上建立外來鍵約束

建立一個部門表tb_dept1:

CREATE TABLE tb_dept1
(
id int(11) PRIMARY KEY,name varchar(22) NOT NULL,location varchar(50)
);

定義資料表tb_emp5,讓它的鍵deptId作為外來鍵關聯到tb_dept1的主鍵id:

CREATE TABLE tb_emp5
(
id int(11) PRIMARY KEY,CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);

【例.6】定義資料表tb_emp6,指定員工的名稱不能為空,SQL語句為:

CREATE TABLE tb_emp6
(
id int(11) PRIMARY KEY,name varchar(25) NOT NULL,CONSTRAINT fk_emp_dept2 FOREIGN KEY (deptId) REFERENCES tb_dept(id)
);

【例.7】定義資料表tb_dept2,指定部門的名稱唯一,SQL語句為:

CREATE TABLE tb_dept2
(
id int(11) PRIMARY KEY,name varchar(22) UNIQUE,location varchar(50)
);

【例.8】定義完所有列之後唯一約束,

定義資料表tb_dept3,指定部門的名稱唯一,SQL語句為:

CREATE TABLE tb_dept3
(
id int(11) PRIMARY KEY,name varchar(22),location varchar(50),CONSTRAINT STH UNIQUE(name)
);

【例.9】定義資料表tb_emp7,指定員工的部門編號預設為1111,SQL語句為:

CREATE TABLE tb_emp7
(
id int(11) PRIMARY KEY,deptId int(11) DEFAULT 1111,CONSTRAINT fk_emp_dept3 FOREIGN KEY (deptId) REFERENCES tb_dept(id)
);

【例.10】定義資料表tb_emp8,指定員工的編號自動遞增,SQL語句為:

CREATE TABLE tb_emp8
(
id int(11) PRIMARY KEY AUTO_INCREMENT,CONSTRAINT fk_emp_dept5 FOREIGN KEY (deptId) REFERENCES tb_dept(id)
);
INSERT INTO tb_emp8 (name,salary) VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);
select * from tb_emp8;

【例.11】分別使用DESCRIBEDESC查看錶tb_dept和表tb_emp1的表結構,操作過程如下:

DESCRIBE tb_dept;
DESC tb_emp1;

【例.12】使用SHOW CREATE TABLE查看錶tb_emp1的詳細資訊,SQL語句及相應的執行結果如下示:

SHOW CREATE TABLE tb_emp1;
SHOW CREATE TABLE tb_emp1\G;

檢視資料表的結構

1.查看錶基本結構語句describe或者desc +表名

2.查看錶詳細結構語句 show create table。 如果不加‘\G'引數,顯示的結果可能非常混亂,加上引數‘\G'之後,可使顯示結果更加直觀,易於檢視。

修改資料表

1.修改表名

【例.13】將資料表tb_dept3改名為tb_deptment3

ALTER TABLE tb_dept3 RENAME tb_deptment3;

2.修改欄位的資料型別

【例.14】將資料表tb_dept1中name欄位的資料型別由VARCHAR(22)的修改成VARCHAR(30)

ALTER TABLE tb_dept MODIFY name VARCHAR(30);

3.修改該欄位名

【例.15】將資料表tb_dept1中的location欄位名稱改為loc,資料型別保持不變。

ALTER TABLE tb_dept1 CHANGE location loc varchar(50);

【例.16】將資料表tb_dept1中的loc欄位名稱改為location,同時將資料型別保持變為varchar(60)。

ALTER TABLE tb_dept1 CHANGE loc location varchar(60);

4.新增欄位

【例.17】在資料表tb_dept中新增一個沒有完整性約束的int型別的欄位managerId(部門經理編號),輸入SQL語句如下:

ALTER TABLE tb_dept ADD managerId int(10);

【例.18】在資料表tb_dept1中新增一個不能為空的varchar(12)型別的欄位column1。輸入如下SQL語句,並執行:

ALTER TABLE tb_dept1 ADD column1 varchar(12) not null;

【例.19】在資料表tb_dept中新增一個int型別的欄位column2。輸入如下SQL語句,並執行:

ALTER TABLE tb_dept ADD column2 int(11) FIRST;

【例.20】在資料表tb_dept1中name列後新增一個int型別的欄位column3。輸入如下SQL語句,並執行:

ALTER TABLE tb_dept1 ADD column3 int(11) AFTER name;

5.刪除欄位

【例.21】刪除資料表tb_dept1表中的column2欄位

ALTER TABLE tb_dept1 DROP column2;

6.修改欄位的排列位置

【例.22】將資料表tb_dept1中的column1欄位修改為表的第一個欄位

ALTER TABLE tb_dept1 MODIFY column1 varchar(12) FIRST;

【例.23】將資料表tb_dept1中的column1欄位插入到location欄位後面

ALTER TABLE tb_dept1 MODIFY column1 varchar(12) AFTER location;

7.刪除資料的外來鍵約束

【例.25】刪除資料表tb_emp9中的外來鍵約束

CREATE TABLE tb_emp9
(
id int(11) PRIMARY KEY,CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
);
ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;

刪除資料表

【例.26】刪除資料表tb_dept2,輸入如下SQL語句並執行:

DROP TABLE IF EXISTS tb_dept2;

【例.27】刪除被資料表tb_emp關聯的資料表tb_dept2

CREATE TABLE tb_dept2
(
id int(11) PRIMARY KEY,location varchar(50)
);
CREATE TABLE tb_emp
(
id int(11) PRIMARY KEY,CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept2(id)
);

直接刪除父表tb_dept2

DROP TABLE tb_dept2;

解除關聯子表tb_emp的外來鍵約束

ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。