MySQL數(shù)據(jù)表基本操作實(shí)例詳解
本文實(shí)例講述了MySQL數(shù)據(jù)表基本操作。分享給大家供大家參考,具體如下:
數(shù)據(jù)表的基本操作
1.主鍵約束要求主鍵列的數(shù)據(jù)唯一,并且不允許為空。主鍵能夠唯一地識(shí)別表中的一條記錄,可以結(jié)合外鍵來(lái)定義不同數(shù)據(jù)表之間的關(guān)系,并且可以加快數(shù)據(jù)庫(kù)查詢(xún)的速度。主鍵和記錄之間的關(guān)系如同身份證和人之間的關(guān)系。
2.字表的外鍵必須關(guān)聯(lián)父表的主鍵,且關(guān)聯(lián)字段的數(shù)據(jù)類(lèi)型必須匹配。如果類(lèi)型不一樣。創(chuàng)建子表時(shí),就會(huì)出現(xiàn)錯(cuò)誤:ERROR 1005(HY000):can't create table 'databases.tablesname'(error:150)
3.非空約束指字段的值不能為空。
4.唯一性約束:要求該列唯一,允許為空,但只能出現(xiàn)一個(gè)空值。唯一約束可以確保一列或者幾列不出現(xiàn)重復(fù)值。
5.unique和primary key 的區(qū)別:一個(gè)表中可以有多個(gè)字段聲明為unique,但只能有一個(gè)primary key聲明:聲明為關(guān)鍵字的列不允許為空值,但是聲明為unique的字段允許空值null的存在。
【例.1】創(chuàng)建員工表tb_emp1
選擇創(chuàng)建表的數(shù)據(jù)庫(kù):
USE test_db;
創(chuàng)建tb_emp1表:
CREATE TABLE tb_emp1 ( id int(11), name varchar(25), deptId int(11), salary float );
【例.2】定義數(shù)據(jù)表tb_emp 2,其主鍵為id:
CREATE TABLE tb_emp2 ( id int(11) PRIMARY KEY, name varchar(25), deptId int(11), salary float );
【例.3】定義完所有列之后指定主鍵
定義數(shù)據(jù)表tb_emp 3,其主鍵為id:
CREATE TABLE tb_emp3 ( id int(11), name varchar(25), deptId int(11), salary float, PRIMARY KEY(id) );
【例.4】定義數(shù)據(jù)表tb_emp4,創(chuàng)建多字段聯(lián)合主鍵SQL語(yǔ)句為:
CREATE TABLE tb_emp4 ( name varchar(25), deptId int(11), salary float, PRIMARY KEY(name,deptId) );
【例.5】定義數(shù)據(jù)表tb_emp5,并在tb_emp5表上創(chuàng)建外鍵約束
創(chuàng)建一個(gè)部門(mén)表tb_dept1:
CREATE TABLE tb_dept1 ( id int(11) PRIMARY KEY, name varchar(22) NOT NULL, location varchar(50) );
定義數(shù)據(jù)表tb_emp5,讓它的鍵deptId作為外鍵關(guān)聯(lián)到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】定義數(shù)據(jù)表tb_emp6,指定員工的名稱(chēng)不能為空,SQL語(yǔ)句為:
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】定義數(shù)據(jù)表tb_dept2,指定部門(mén)的名稱(chēng)唯一,SQL語(yǔ)句為:
CREATE TABLE tb_dept2 ( id int(11) PRIMARY KEY, name varchar(22) UNIQUE, location varchar(50) );
【例.8】定義完所有列之后唯一約束,
定義數(shù)據(jù)表tb_dept3,指定部門(mén)的名稱(chēng)唯一,SQL語(yǔ)句為:
CREATE TABLE tb_dept3 ( id int(11) PRIMARY KEY, name varchar(22), location varchar(50), CONSTRAINT STH UNIQUE(name) );
【例.9】定義數(shù)據(jù)表tb_emp7,指定員工的部門(mén)編號(hào)默認(rèn)為1111,SQL語(yǔ)句為:
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】定義數(shù)據(jù)表tb_emp8,指定員工的編號(hào)自動(dòng)遞增,SQL語(yǔ)句為:
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的表結(jié)構(gòu),操作過(guò)程如下:
DESCRIBE tb_dept; DESC tb_emp1;
【例.12】使用SHOW CREATE TABLE
查看表tb_emp1的詳細(xì)信息,SQL語(yǔ)句及相應(yīng)的執(zhí)行結(jié)果如下示:
SHOW CREATE TABLE tb_emp1; SHOW CREATE TABLE tb_emp1\G;
查看數(shù)據(jù)表的結(jié)構(gòu)
1.查看表基本結(jié)構(gòu)語(yǔ)句describe或者desc +表名。
2.查看表詳細(xì)結(jié)構(gòu)語(yǔ)句 show create table
。 如果不加‘\G'參數(shù),顯示的結(jié)果可能非?;靵y,加上參數(shù)‘\G'之后,可使顯示結(jié)果更加直觀,易于查看。
修改數(shù)據(jù)表
1.修改表名
【例.13】將數(shù)據(jù)表tb_dept3改名為tb_deptment3
ALTER TABLE tb_dept3 RENAME tb_deptment3;
2.修改字段的數(shù)據(jù)類(lèi)型
【例.14】將數(shù)據(jù)表tb_dept1中name字段的數(shù)據(jù)類(lèi)型由VARCHAR(22)的修改成VARCHAR(30)
ALTER TABLE tb_dept MODIFY name VARCHAR(30);
3.修改該字段名
【例.15】將數(shù)據(jù)表tb_dept1中的location字段名稱(chēng)改為loc,數(shù)據(jù)類(lèi)型保持不變。
ALTER TABLE tb_dept1 CHANGE location loc varchar(50);
【例.16】將數(shù)據(jù)表tb_dept1中的loc字段名稱(chēng)改為location,同時(shí)將數(shù)據(jù)類(lèi)型保持變?yōu)関archar(60)。
ALTER TABLE tb_dept1 CHANGE loc location varchar(60);
4.添加字段
【例.17】在數(shù)據(jù)表tb_dept中添加一個(gè)沒(méi)有完整性約束的int類(lèi)型的字段managerId(部門(mén)經(jīng)理編號(hào)),輸入SQL語(yǔ)句如下:
ALTER TABLE tb_dept ADD managerId int(10);
【例.18】在數(shù)據(jù)表tb_dept1中添加一個(gè)不能為空的varchar(12)類(lèi)型的字段column1。輸入如下SQL語(yǔ)句,并執(zhí)行:
ALTER TABLE tb_dept1 ADD column1 varchar(12) not null;
【例.19】在數(shù)據(jù)表tb_dept中添加一個(gè)int類(lèi)型的字段column2。輸入如下SQL語(yǔ)句,并執(zhí)行:
ALTER TABLE tb_dept ADD column2 int(11) FIRST;
【例.20】在數(shù)據(jù)表tb_dept1中name列后添加一個(gè)int類(lèi)型的字段column3。輸入如下SQL語(yǔ)句,并執(zhí)行:
ALTER TABLE tb_dept1 ADD column3 int(11) AFTER name;
5.刪除字段
【例.21】刪除數(shù)據(jù)表tb_dept1表中的column2字段
ALTER TABLE tb_dept1 DROP column2;
6.修改字段的排列位置
【例.22】將數(shù)據(jù)表tb_dept1中的column1字段修改為表的第一個(gè)字段
ALTER TABLE tb_dept1 MODIFY column1 varchar(12) FIRST;
【例.23】將數(shù)據(jù)表tb_dept1中的column1字段插入到location字段后面
ALTER TABLE tb_dept1 MODIFY column1 varchar(12) AFTER location;
7.刪除數(shù)據(jù)的外鍵約束
【例.25】刪除數(shù)據(jù)表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;
刪除數(shù)據(jù)表
【例.26】刪除數(shù)據(jù)表tb_dept2,輸入如下SQL語(yǔ)句并執(zhí)行:
DROP TABLE IF EXISTS tb_dept2;
【例.27】刪除被數(shù)據(jù)表tb_emp關(guān)聯(lián)的數(shù)據(jù)表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;
解除關(guān)聯(lián)子表tb_emp的外鍵約束
ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
相關(guān)文章
IDEA連接MySQL數(shù)據(jù)庫(kù)并執(zhí)行SQL語(yǔ)句使用數(shù)據(jù)圖文詳解
使用idea連接本地MySQL數(shù)據(jù)庫(kù),就可以很方便的看到數(shù)據(jù)庫(kù)的內(nèi)容,還可以進(jìn)行基本的增加,刪除,修改操作,下面這篇文章主要給大家介紹了關(guān)于IDEA連接MySQL數(shù)據(jù)庫(kù)并執(zhí)行SQL語(yǔ)句使用數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2023-03-03MySQL數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理,文章主要內(nèi)容就是在不同的項(xiàng)目中,給不同的角色(開(kāi)發(fā)者)不同的操作權(quán)限,保證數(shù)據(jù)庫(kù)數(shù)據(jù)的安全,需要的朋友可以參考一下2022-06-06MySQL函數(shù)sysdate()與now()的區(qū)別測(cè)試用例對(duì)比
這篇文章主要為大家介紹了MySQL函數(shù)sysdate()與now()的區(qū)別測(cè)試用例對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12高并發(fā)狀態(tài)下Replace Into造成的死鎖問(wèn)題解決
本文主要介紹了高并發(fā)狀態(tài)下Replace Into造成的死鎖問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01MySQL高級(jí)開(kāi)發(fā)中視圖的詳細(xì)教程
對(duì)MySQL數(shù)據(jù)庫(kù)的查詢(xún),除了基本的查詢(xún)外,有時(shí)候需要對(duì)查詢(xún)的結(jié)果集進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)基本SQL語(yǔ)句教程之高級(jí)操作中視圖的相關(guān)資料,需要的朋友可以參考下2023-01-01關(guān)于mysql查詢(xún)字符集不匹配問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于mysql查詢(xún)字符集不匹配問(wèn)題的解決方法,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)同樣遇到這個(gè)問(wèn)題的朋友們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08使用Python的Django框架中的壓縮組件Django Compressor
這篇文章主要介紹了使用Python的Django框架中的壓縮組件Django Compressor,這個(gè)工具主要用于實(shí)現(xiàn)js/css的壓縮,需要的朋友可以參考下2015-05-05