MySQL神功3.2 數(shù)據(jù)表基本操作(上)
一、創(chuàng)建表
創(chuàng)建表之前,先要告訴MySQL你使用哪個(gè)數(shù)據(jù)? ?USE 數(shù)據(jù)庫名稱;
否則,MySQL不一定會(huì)把這張表創(chuàng)建到你希望的數(shù)據(jù)庫中。
語法
CREATE TABLE 表名(
? ? 字段名1 數(shù)據(jù)類型 [該列的約束條件] [默認(rèn)值],
? ? 字段名2 數(shù)據(jù)類型 [該列的約束條件] [默認(rèn)值],
? ? 字段名3 數(shù)據(jù)類型 [該列的約束條件] [默認(rèn)值],
? ? ......
? ? [該表的約束條件1],[該表的約束條件2],....);
語法中,紅色字為必選項(xiàng),其它字為可選項(xiàng)。接下來我們先看必選項(xiàng)部分

在計(jì)算機(jī)中,Table和Chart的區(qū)別
(1)Table通常指表格:由行列組成,每個(gè)單元格以文字或數(shù)字形式顯示數(shù)據(jù),適合存放大量的詳細(xì)數(shù)據(jù)為進(jìn)一步分析的底層數(shù)據(jù)。
(2)Chart通常指圖表:用圖形、圖像或圖形符號等方式展示數(shù)據(jù),強(qiáng)調(diào)數(shù)據(jù)之間的關(guān)系、趨勢、分布等。

Ps: 我們在MySQL里,只要不寫分號(;),就默認(rèn)這句還沒結(jié)束,為了語句易讀,你可以在寫分號前使用回車換行。
同一數(shù)據(jù)庫中,表的名稱也是不能重復(fù)的,所以 IF NOT EXISTS 也可以用到這里,只需要把創(chuàng)建表語句第一行的
Create table 花名冊? 改成? Create table if not exists 花名冊
當(dāng)數(shù)據(jù)表重名時(shí),就不會(huì)創(chuàng)建,也不會(huì)報(bào)錯(cuò)。
二、顯示表結(jié)構(gòu)
語法: show create table 表名;

但是,這種顯示我個(gè)人看上去眼花繚亂!想整齊還有以下幾種方法,雖然以下方法可以實(shí)現(xiàn)同一結(jié)果,但是它們各自有存在的原因。

語法:? ?desc 表名;

語法:? ?describe 表名;

說明:desc是describe的縮寫,常用于提供某個(gè)對象、函數(shù)、變量或數(shù)據(jù)結(jié)構(gòu)的描述信息。
返回字段說明,如下圖所示

desc還有一個(gè)用法(降序): select * from 表名 order by 字段名 desc? ?

語法:explain?表名;

說明:explain這個(gè)關(guān)鍵字還可以用來解釋查詢執(zhí)行計(jì)劃,并提供關(guān)于如何 優(yōu)化查詢的有用信息。假設(shè)花名冊這張表,我填寫了3行數(shù)據(jù),如下圖所示

使用explain 配合我們的基礎(chǔ)查詢語句,返回如下圖所示


這些知識以后講優(yōu)化時(shí)詳細(xì)聊。
上面我們介紹了explain除了可以看到表結(jié)構(gòu)還有更高級的用途。
那問題來了,既然有了describe(縮寫desc)又何必要有下面的columns和fields呢?

語法:Show columns from? 表名;

語法:Show fields from? 表名;

即存在的東西,一定有他存在的道理!當(dāng)我們在語句中加上full可以顯示完整的信息
為什么一定要提到這兩個(gè)關(guān)鍵詞,因?yàn)樗鼈兛梢允褂胒ull顯示全部信息,其中,Commnet 列注釋就是我們接下來要用到的。



其中,show columns 和 show fields 在這里結(jié)果是等效的。

但是,列(column)和字段(field)定義是不一樣的
1、列:就是數(shù)據(jù)庫某個(gè)列的整體,比如花名冊中的學(xué)號這一列;
2、字段:就是指定數(shù)據(jù)列具體的名稱,如花名冊中學(xué)號這個(gè)字段;
拓展:記錄(Record)
記錄就是數(shù)據(jù)表中的某一行數(shù)據(jù),是由多個(gè)列組成的。
我要表達(dá)的意思是:一只老鼠被貓或狗抓到了,結(jié)果等效,但是貓和狗不屬于一個(gè)科目。
三、表注釋與列注釋
不同企業(yè)有不同的規(guī)范,大多數(shù)企業(yè)是不允許使用中文做表名和字段名的
假設(shè)單詞你不認(rèn)識,可以查詞典。但是,一個(gè)單詞有N種中文詞義時(shí),你又如何是好?
還有一種更可怕的就是使用縮寫的情況,這時(shí)候注釋的作用就體現(xiàn)出來了。
例如:PE是代表體育還是市盈率?你肯定會(huì)說,根據(jù)表內(nèi)容來猜,假設(shè)你猜錯(cuò)了呢?
知道我為什么要在分享代碼時(shí)堅(jiān)持使用中文變量嗎和中文函數(shù)名嗎?如下圖所示

我是過來人,我還年輕的時(shí)候,就發(fā)現(xiàn)了一個(gè)問題,假設(shè)我使用 Function? abc()
會(huì)有兩類人告訴我,不對,沒有abc這個(gè)函數(shù),報(bào)錯(cuò)了
第一類人:沒學(xué)會(huì)呢,就想找答案,所以不理解。
第二類人:學(xué)會(huì)了,甚至專家級的,故意找點(diǎn)話題,刷存在感。
當(dāng)我預(yù)判了他們,使用中文時(shí),第三類人出現(xiàn)了,后面的事情你們都知道了,而第三類人和第二類人是同一類人。
(1)列注釋

然后我們查詢列注釋

(2)表注釋

查看表的注釋

現(xiàn)在是不是有個(gè)疑問,如果我們有一個(gè)表,當(dāng)初創(chuàng)建時(shí)忘記加列注釋與表注釋,能不能補(bǔ)?
那肯定可以,這個(gè)我們稍候來講。

MySQL神功文字版合集:https://www.bilibili.com/read/readlist/rl581425
更多免費(fèi)教程:https://www.bilibili.com/read/cv10222110