您好,登錄后才能下訂單哦!
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, name varchar(25), deptId int(11), salary float );
【例.3】定義完所有列之后指定主鍵
定義數據表tb_emp 3,其主鍵為id:
CREATE TABLE tb_emp3 ( id int(11), name varchar(25), deptId int(11), salary float, PRIMARY KEY(id) );
【例.4】定義數據表tb_emp4,創建多字段聯合主鍵SQL語句為:
CREATE TABLE tb_emp4 ( name varchar(25), deptId int(11), salary float, 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, name varchar(25), deptId int(11), salary float, 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, deptId int(11), salary float, 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, name varchar(25) NOT NULL, deptId int(11) DEFAULT 1111, salary float, 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, name varchar(25) NOT NULL, deptId int(11), salary float, 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, name varchar(25), deptId int(11), salary float, 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, name varchar(22), location varchar(50) ); CREATE TABLE tb_emp ( id int(11) PRIMARY KEY, name varchar(25), deptId int(11), salary float, 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中怎么實現數據表基本操作問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。