MySQL/MariaDB 語句速查筆記

平時實際開發的時候,其實並不太依賴 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章