一、數(shù)據(jù)庫(kù)表概述
在數(shù)據(jù)庫(kù)中,數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最重要、最基本的操作對(duì)象,是數(shù)據(jù)存儲(chǔ)的基本單位。數(shù)據(jù)表被定義為列的集合,數(shù)據(jù)在表中是按照行和列的格式來存儲(chǔ)的。每一行代表一條唯一的記錄,每一列代表記錄中的一個(gè)域。
二、數(shù)據(jù)表的創(chuàng)建語句
通常在創(chuàng)建表時(shí),應(yīng)該使用語句USE 數(shù)據(jù)庫(kù)名,指定在哪個(gè)數(shù)據(jù)庫(kù)中操作,如果沒有指定庫(kù)時(shí)我們也可以在創(chuàng)建時(shí),用 <數(shù)據(jù)庫(kù)名.數(shù)據(jù)表>來進(jìn)行創(chuàng)建。
創(chuàng)建數(shù)據(jù)表語句:
create table <表名>
(
字段名1,數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
字段名2,數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
…………
[表級(jí)別約束條件]
);
創(chuàng)建表的注意事項(xiàng):
1、創(chuàng)建表的名稱不區(qū)分大小寫,不能使用SQL語句中的關(guān)鍵字。
2、數(shù)據(jù)表中的一個(gè)字段(列)的名稱和數(shù)據(jù)類型要?jiǎng)?chuàng)建多列(個(gè)),要用逗號(hào)分割。
三、約束條件
1、主鍵約束
主鍵,也成為主碼,時(shí)表中一列或多列的組合,主鍵約束(Primary Key Constraint)要求主鍵列的數(shù)據(jù)唯一,并且不允許為空。主鍵能夠唯一地標(biāo)識(shí)表中的一條記錄,可以結(jié)合外鍵來定義不同數(shù)據(jù)表之間的關(guān)系,并且可以加快數(shù)據(jù)庫(kù)查詢的速度。主鍵和記錄之間的關(guān)系如同身份證和人之間的關(guān)系,他們之間是一一對(duì)應(yīng)的。主鍵分為兩種類型:?jiǎn)巫侄沃麈I和多字段聯(lián)合主鍵。
主鍵從功能上來看相當(dāng)于非空且唯一。
① 直接在定義字段時(shí)在后面進(jìn)行定義,也稱為行級(jí)主鍵約束、單字段主鍵。
create table <表名>
(
字段名1,數(shù)據(jù)類型 primary key [默認(rèn)值],
…………
);
② 在定義完表時(shí),在后面進(jìn)行定義,也稱為表級(jí)主鍵約束,可以多個(gè)字段聯(lián)合組成。
create table <表名>
(
字段名1,數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
字段名2,數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
…………
primary key 字段名1 [,字段名2,……字段名n]
);
2、外鍵約束
外鍵用來兩個(gè)表的數(shù)據(jù)之間建立連接,它可以是一列或者都多列,一個(gè)表可以有一個(gè)或者多個(gè)外鍵,外鍵對(duì)應(yīng)的是參照完整性,一個(gè)表的外鍵可以為空值,若不為空值,則每一個(gè)外鍵值必須等于另一個(gè)表中主鍵的某一個(gè)值。
外鍵:首先它是表中的一個(gè)字段,它可以不是本表的主鍵,但對(duì)應(yīng)另一個(gè)表的主鍵。外鍵主要作用是保證數(shù)據(jù)引用的完整性,定義外鍵之后,不允許刪除另一個(gè)表中具有關(guān)聯(lián)關(guān)系的行。外鍵的作用是保持?jǐn)?shù)據(jù)一致性、完整性。
主表(父表):對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的那個(gè)表即是主表。
從表(子表):對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中外鍵所在的那個(gè)表即是從表。
[constraint <外鍵名>] foreign key 字段名1 [,字段名2,……]
peferences <主表名> 主鍵列1 [,主鍵列2,……]
“外鍵名”為定義的外鍵約束的名字,一個(gè)表中不能有相同名稱的外鍵,"字段名"表示子表需要添加外鍵約束的字段列;"主表名"即被子表外鍵所依賴的表的名稱;"主鍵列" 表示主表定義的主鍵列,或列組合。
3、非空約束
非空約束就是指該字段的值不能為空。用戶在添加數(shù)據(jù)的時(shí)候必須指定值,否則會(huì)報(bào)錯(cuò)。
create table <表名>
(
字段名1,數(shù)據(jù)類型 not null [默認(rèn)值],
…………
);
4、唯一約束
唯一性約束要求該列唯一,允許為空,但只能出現(xiàn)一個(gè)空值。唯一約束可以確保一列或者幾列不出現(xiàn)重復(fù)值。如果不給唯一約束起名,默認(rèn)與列名相同。
語法如下:
create table <表名>
(
字段名1,數(shù)據(jù)類型 unique [默認(rèn)值],
…………
);
或者
create table <表名>
(
字段名1,數(shù)據(jù)類型 [行級(jí)約束] [默認(rèn)值],
…………
unique <字段名>
);
unique和primary key的區(qū)別:一個(gè)表中可以有多個(gè)字段聲明為unique,但只能有一個(gè)primary key聲明;聲明為primary key的列不允許有空值,但是聲明為unique的字段允許為空值(NULL)的存在。
5、默認(rèn)值約束
默認(rèn)值約束指定某一列的默認(rèn)值,當(dāng)一個(gè)值出現(xiàn)比較多就可以用次約束,方便輸入數(shù)據(jù)提高速度。
語法如下:
create table <表名>
(
字段名1,數(shù)據(jù)類型 [行級(jí)約束條件] default 默認(rèn)值,
…………
);
6、自動(dòng)增加
auto_increment關(guān)鍵字來實(shí)現(xiàn),不指定步長(zhǎng)時(shí),默認(rèn)自動(dòng)加1,一個(gè)表中只能有一個(gè)字段使用自定增加約束,且該字段必須為主鍵的一部分,該約束的字段類型只能是整型類型。
create table <表名>
(
字段名1,數(shù)據(jù)類型 primary key auto_increment [默認(rèn)值],
…………
);
四、查看數(shù)據(jù)表結(jié)構(gòu)
1、查看基本結(jié)構(gòu)
mysql> desc books;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| bk_id | int(11) | NO | PRI | NULL | |
| bk_title | varchar(50) | NO | | NULL | |
| copyright | year(4) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> describe books;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| bk_id | int(11) | NO | PRI | NULL | |
| bk_title | varchar(50) | NO | | NULL | |
| copyright | year(4) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
2、查看表的創(chuàng)建詳細(xì)結(jié)構(gòu)
mysql> show create table books;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| books | CREATE TABLE `books` (
`bk_id` int(11) NOT NULL,
`bk_title` varchar(50) NOT NULL,
`copyright` year(4) NOT NULL,
PRIMARY KEY (`bk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
五、修改表的操作
1、修改表名
alter table <舊表名> [to] <新表名>;
2、修改字段的數(shù)據(jù)類型
alter table <表名> modefiy <字段名> <數(shù)據(jù)類型>;
3、修改字段名
alter table <表名> change <舊字段名> <新字段名> <新數(shù)據(jù)類型>;
4、添加字段
在最后一列添加一個(gè)字段名
alter table <表名> add <新字段名> <數(shù)據(jù)類型>;
?在第一列增加一個(gè)字段或者指定在已經(jīng)存在的字段后增加一個(gè)字段
alter table <表名> add <新字段名> <數(shù)據(jù)類型> <first | after 已經(jīng)存在的字段名>;
5、刪除字段
alter table <表名> drop <字段名>;
6、修改字段的排列位置
alter table <表名> modifiy <字段名1> <數(shù)據(jù)類型> first | after <字段名2>;
"字段名1" 指定要修改位置的字段,"數(shù)據(jù)類型"指"字段名1"的數(shù)據(jù)類型,"first"為可選參數(shù),將指定"字段1"修改為表的第一個(gè)字段,"after 字段2"指將"字段1 "插入到"字段2"后面。
7、修改表的存儲(chǔ)引擎
alter table <表名> engine=存儲(chǔ)引擎類型;
8、刪除表的外鍵約束
alter table <表名> drop foreign key <外鍵約束名>;
9、刪除數(shù)據(jù)表
?一次可以刪除一個(gè)或者多個(gè)數(shù)據(jù)庫(kù)表文章來源:http://www.zghlxwxcb.cn/news/detail-661991.html
drop table [if exists] <表名>;
?參考書籍:MySQL5.7從入門到精通-清華大學(xué)出版社文章來源地址http://www.zghlxwxcb.cn/news/detail-661991.html
到了這里,關(guān)于MySQL 數(shù)據(jù)庫(kù)表的基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!