平時實際開發的時候,其實並不太依賴 MySQL 作爲 關係型數據庫 中的 “關係” 這一屬性,更多地只是把 MySQL 作爲數據存儲的介質。因此 MySQL 語句其實很少寫,所以本文用於記錄一些 MySQL 在常規數據操作中的常用語法,備查。少用或者不用的知識就不列了。
本文地址:https://segmentfault.com/a/1190000019659700
基礎 CURD
Create,添加數據
INSERT INTO 表名 (列名, 列名, ...)
VALUES (值, 值)
Update,更新數據
UPDATE 表名 SET 列名=值, 列名=值, ...
WHERE 條件 ...
Read,讀取
基本操作
SELECT 列名, 列名, ... WHERE 條件 ...
獲取數據並去掉重複項
SELECT DISTINCT 列名, 列名, ... WHERE 條件 ...
Delete,刪除
DELETE FROM 表名 WHERE 條件 ...
Find or Create 邏輯
這是一個很實際的需求,業務需要依據條件獲取一個條目,如果不存在,則創建該條目。如果用 select + insert 組合,那麼這個操作並不原子。理想情況下是使用 UNIQUE,但很多時候並不行。那麼可以採用以下的語句:
INSERT INTO 表名 (列名1, 列名2, 列名3, ...)
SELECT * FROM (SELECT 值1 AS 列名1, 值2 AS 列名2, 值3 AS 列名3, ...) AS tmp
WHERE NOT EXISTS (
SELECT id FROM 表名
WHERE 條件 ...
) LIMIT 1
數據表操作、調整
獲取表信息
desc 表名
獲取表創建語句
show create table 表名
添加字段
# 非空、帶默認值:
ALTER TABLE 表名 ADD 列名 數據類型 NOT NULL DEFAULT 默認值 COMMENT 註釋
# 不帶默認值:
ALTER TABLE 表名 ADD 列名 數據類型 COMMENT 註釋
# 指定添加字段的位置
ALTER TABLE 表名 ADD 列名 數據類型 COMMENT 註釋 AFTER 前一列名
修改字段
# 修改字段類型
ALTER TABLE 表名 MODIFY 列名 數據類型 ... # 後面的 ... 需要和前面添加字段的 “數據類型” 後面的那些項一致
# 修改字段名
ALTER TABLE 表名 CHANGE 列名 新列名 數據類型 ...
MySQL 常用數據類型
整型數值
-
tinyint
:相當於int8_t
-
smallint
:相當於int16_t
-
int
:相當於int32_t
-
bigint
:相當於int64_t
,建議用 bigint 存 timestamp 類型 - 上述四種數據,可以加上
unsigned
表示無符號數,比如tinyint unsigned
相當於uint8_t
定義整型數值時,可以在後面加上括號,寫一個數字,如 int(11)
,這個數字僅僅表示顯示長度(十進制),不影響實際數據位寬。
字符串
-
char(n)
:固定長度字符串,長度爲n
,最大爲 255。 -
varchar(n)
:變長字符串,最長長度爲n
,最大爲 65535。
日期和時間
-
date
:日期,格式爲 "2008-12-2" -
time
:僅時間,格式爲 "13:15:55" 或 "13:15:55:123" -
datetime(m)
:日期和時間,m
表示秒小數點後的位數 -
timestamp
:不建議用,該值相當於int32_t
,有 2038 年問題
參考資料
本文章採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。
原作者: amc,歡迎轉載,但請註明出處。
原文標題:MySQL 速查筆記
發佈日期:2019-07-02
原文鏈接:https://cloud.tencent.com/developer/article/1455009。