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】分別使用DESCRIBE
和DESC
查看錶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資料庫計有所幫助。