MySQL基礎-DDL&數據類型

此文章以MySQL 8.0版本為例

自測:

設計一張員工信息表,要求如下:

  1. 編號(純數字)
  2. 員工工號 (字符串類型,長度不超過10位)
  3. 員工姓名(字符串類型,長度不超過10位)
  4. 性別(男/女,存儲一個漢字)
  5. 年齡(正常人年齡,不可能存儲負數)
  6. 身份證號(二代身份證號均為18位,身份證中有X這樣的字符)
  7. 入職時間(取值年月日即可)

如果能直接寫出來,或者均已知曉該使用何種數據格式,則可以跳過本文了(你有更重要的內容要看,不要在這消費太多時間)。

零、本文綱要

  • 一、SQL
  • 二、DDL
  1. 數據庫操作
  2. 表操作
    ② 數據類型
  • 三、自測

一、SQL

1. 通用語法

1). SQL語句可以單行或多行書寫,以分號";"結尾。
2). SQL語句可以使用"空格/"縮進來增強語句的可讀性。
3). MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大寫。
4). 注釋:
單行注釋:-- 注釋內容 或 # 注釋內容
多行注釋:/* 注釋內容 */

2. SQL分類

SQL語句根據其功能,主要分為四類:DDL、DML、DQL、DCL。

二、DDL

1. 數據庫操作

Data Definition Language 數據定義語言,用來定義數據庫對象(數據庫,表,字段)

Ⅰ 查詢所有數據庫 show databases ;
Ⅱ 查詢當前數據庫 select database() ;
Ⅲ 創建數據庫 create database [ if not exists ] 數據庫名 [ default charset 字符集 ] [ collate 排序規則 ] ;
Ⅳ 刪除數據庫 drop database [ if exists ] 數據庫名 ;
Ⅴ 切換數據庫 use 數據庫名 ;

2. 表操作

  • ① 查詢創建

Ⅰ 查詢當前數據庫所有表 show tables;
Ⅱ 查看指定表結構 desc 表名 ;
Ⅲ 查詢指定表的建表語句 show create table 表名 ;
Ⅳ 創建表結構
CREATE TABLE 表名( 字段1 字段1類型 [ COMMENT 字段1注釋 ], 字段2 字段2類型 [COMMENT 字段2注釋 ], ... ... 字段n 字段n類型 [COMMENT 字段n注釋 ] ) [ COMMENT 表注釋 ] ;

  • ② 數據類型

Ⅰ 數值類型

分類 類型 大小 有符號(SIGNED)范圍 無符號(UNSIGNED)范圍 描述
數值類型 TINYINT 1 byte (-128,127) (0,255) 小整數值
SMALLINT 2 bytes (-32768,32767) (0,65535) 大整數值
MEDIUMINT 3 bytes (-8388608,8388607) (0,16777215) 大整數值
INT或INTEGER 4 bytes (-2147483648,2147483647) (0,4294967295) 大整數值
BIGINT 8 bytes (-263,263-1) (0,2^64-1) 極大整數值
FLOAT 4 bytes (-3.402823466 E+38,3.402823466351 E+38) 0 和 (1.175494351 E-38,3.402823466 E+38) 單精度浮點數值
DOUBLE 8 bytes (-1.7976931348623157 E+308,1.7976931348623157 E+308) 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) 雙精度浮點數值
DECIMAL 依賴于M(精度)和D(標度)的值 依賴于M(精度)和D(標度)的值 小數值(精確定點數)

Ⅱ 字符串類型

分類 類型 大小 描述
字符串類型 CHAR 0-255 bytes 定長字符串
VARCHAR 0-65535 bytes 變長字符串
TINYBLOB 0-255 bytes 不超過255個字符的二進制數據
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二進制形式的長文本數據
TEXT 0-65 535 bytes 長文本數據
MEDIUMBLOB 0-16 777 215 bytes 二進制形式的中等長度文本數據
MEDIUMTEXT 0-16 777 215 bytes 中等長度文本數據
LONGBLOB 0-4 294 967 295 bytes 二進制形式的極大文本數據
LONGTEXT 0-4 294 967 295 bytes 極大文本數據

CHAR、VARCHAR是常用的類型,其中VARCHAR(20)指的是20個字符(數字、字母、標點符號與漢字等的數量)
關于char和varchar的官方文檔介紹

注意:
a、其中CHAR比較特殊,長度范圍(0-255)。即如果指定CHAR(255),則可以存放255個漢字但字節數超過255bytes的限制,并不會報錯。
b、另外,VARCHAR存儲的內容小于等于255bytes需要1byte存儲長度,超過則需要2bytes存儲長度。

輸入值 CHAR(4)存儲內容 所需存儲空間 VARCHAR(4)存儲內容 所需存儲空間
'' ' ' 4 bytes '' 1 byte
'a' 'a ' 4 bytes 'a' 2 bytes
'ab' 'ab ' 4 bytes 'ab' 3 bytes
'abc' 'abc ' 4 bytes 'abc' 4 bytes
'abcd' 'abcd' 4 bytes 'abcd' 5 bytes

注意:
表格第一行存儲的是null值,不是一個空格。
char(4)在內容長度不足4時,右邊會以空格補齊缺失數量。內容長度n,則右邊補4-n個空格。

Ⅲ 日期類型

分類 類型 大小 范圍 格式 描述
日期類型 DATE 3 bytes 1000-01-01 至 9999-12-31 YYYY-MM-DD 日期值
TIME 3 bytes -838:59:59 至 838:59:59 HH:MM:SS 時間值或持續時間
YEAR 1 bytes 1901 至 2155 YYYY 年份值
DATETIME 8 bytes 1000-01-01 00:00:00 至 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時間值
TIMESTAMP 4 bytes 1970-01-01 00:00:01 至 2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和時間值,時間戳
  • ③ 修改

Ⅰ 添加字段 ALTER TABLE 表名 ADD 字段名 類型 (長度) [ COMMENT 注釋 ] [ 約束 ];
Ⅱ 修改數據類型 ALTER TABLE 表名 MODIFY 字段名 新數據類型 (長度);
Ⅲ 修改字段名和字段類型 ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型 (長度) [ COMMENT 注釋 ] [ 約束 ];
Ⅳ 刪除字段 ALTER TABLE 表名 DROP 字段名;
Ⅴ 修改表名 ALTER TABLE 表名 RENAME TO 新表名;

  • ④ 刪除

Ⅰ 刪除表 DROP TABLE [ IF EXISTS ] 表名;
Ⅱ 刪除指定表, 并重新創建表 TRUNCATE TABLE 表名;

三、自測

設計一張員工信息表,要求如下:

  1. 編號(純數字)
  2. 員工工號 (字符串類型,長度不超過10位)
  3. 員工姓名(字符串類型,長度不超過10位)
  4. 性別(男/女,存儲一個漢字)
  5. 年齡(正常人年齡,不可能存儲負數)
  6. 身份證號(二代身份證號均為18位,身份證中有X這樣的字符)
  7. 入職時間(取值年月日即可)

參考:

create table tb_emp(
id int comment '編號',
emp_id varchar(10) comment '工號',
name varchar(10) comment '姓名',
gender char(1) comment '性別',
age tinyint unsigned comment '年齡',
id_number char(18) comment '身份證號',
entry_date date comment '入職時間'
) comment '員工表';

注意:此處自測內容省略了編碼、索引、默認值等內容的設置,僅關注數據類型的使用。實際使用還需考慮其他內容設置。

四、結尾

以上即為MySQL基礎-DDL&數據類型的全部內容,感謝閱讀。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容