平時實際開發的時候,其實並不太依賴 MySQL 做爲 關係型數據庫 中的 「關係」 這一屬性,更多地只是把 MySQL 做爲數據存儲的介質。所以 MySQL 語句其實不多寫,因此本文用於記錄一些 MySQL 在常規數據操做中的經常使用語法,備查。少用或者不用的知識就不列了。mysql
本文地址:http://www.javashuo.com/article/p-euigtheb-ku.htmlsql
INSERT INTO 表名 (列名, 列名, ...) VALUES (值, 值)
UPDATE 表名 SET 列名=值, 列名=值, ... WHERE 條件 ...
SELECT 列名, 列名, ... WHERE 條件 ...
SELECT DISTINCT 列名, 列名, ... WHERE 條件 ...
DELETE FROM 表名 WHERE 條件 ...
這是一個很實際的需求,業務須要依據條件獲取一個條目,若是不存在,則建立該條目。若是用 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 列名 新列名 數據類型 ...
tinyint
:至關於 int8_t
smallint
:至關於 int16_t
int
:至關於 int32_t
bigint
:至關於 int64_t
,建議用 bigint 存 timestamp 類型unsigned
表示無符號數,好比 tinyint unsigned
至關於 uint8_t
定義整型數值時,能夠在後面加上括號,寫一個數字,如 int(11)
,這個數字僅僅表示顯示長度(十進制),不影響實際數據位寬。segmentfault
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 國際許可協議 進行許可。ui
原做者: amc,歡迎轉載,但請註明出處。spa
原文標題:MySQL 速查筆記code
發佈日期:2019-07-02blog
原文連接:https://cloud.tencent.com/developer/article/1455009。開發