MySQL參考文檔:https://dev.mysql.com/doc/refman/8.0/en/
新建用戶并獲取全部權(quán)限:
GRANT ALL ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
常用SQL語法:
創(chuàng)建數(shù)據(jù)庫
CREATE database database_name;
顯示所有數(shù)據(jù)庫
show databases;
進(jìn)入數(shù)據(jù)庫
use database_name;
顯示數(shù)據(jù)庫中的表
show tables;
查看數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)
DESC table_name;
刷新數(shù)據(jù)庫信息
flush privileges;
查看數(shù)據(jù)表的內(nèi)容
SELECT * FROM 表名稱;
SELECT 列名稱 FROM 表名稱;
SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值;
SELECT * FROM table_name;
創(chuàng)建數(shù)據(jù)表
CREATE TABLE 表名稱
(
列名稱1 數(shù)據(jù)類型,
列名稱2 數(shù)據(jù)類型,
列名稱3 數(shù)據(jù)類型,
....
);
CREATE TABLE table_name(
-> id INT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
-> username VARCHAR(50) NOT NULL,
-> password VARCHAR(20) NOT NULL,
-> PRIMARY KEY (id)
-> );
在數(shù)據(jù)表中添加數(shù)據(jù)
INSERT INTO 表名稱 VALUES (值1, 值2,....);
INSERT INTO 表名稱 (列1, 列2,...) VALUES (值1, 值2,....);
INSERT INTO table_name VALUES('', '', '',……);
刪除數(shù)據(jù)
DELETE FROM 表名稱 WHERE 列名稱 = 值;
DELETE FROM table_name WHERE id = '';
更新數(shù)據(jù)
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值;
UPDATE table_name SET username = '', password = '' WHERE id = '';
范圍查詢
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
*SQL語法對大小寫不敏感,但關(guān)鍵字通常采用大寫形式。
SQL常見約束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
NOT NULL 約束強(qiáng)制列不接受 NULL 值。
NOT NULL 約束強(qiáng)制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。
UNIQUE 約束唯一標(biāo)識數(shù)據(jù)庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
值得注意的是:每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
PRIMARY KEY 約束唯一標(biāo)識數(shù)據(jù)庫表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 NULL 值。
每個表都應(yīng)該有一個主鍵,并且每個表只能有一個主鍵。
一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY。
FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動作。
FOREIGN KEY 約束也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€表中的值之一。
CHECK 約束用于限制列中的值的范圍。
如果對單個列定義 CHECK 約束,那么該列只允許特定的值。
如果對一個表定義 CHECK 約束,那么此約束會在特定的列中對值進(jìn)行限制。
DEFAULT 約束用于向列中插入默認(rèn)值。
如果沒有規(guī)定其他的值,那么會將默認(rèn)值添加到所有的新記錄。
MySQL 數(shù)據(jù)類型
在 MySQL 中,有三種主要的類型:文本、數(shù)字和日期/時(shí)間類型。
Text 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| CHAR(size) | 保存固定長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的長度。最多 255 個字符。 |
| VARCHAR(size) | 保存可變長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的最大長度。最多 255 個字符。注釋:如果值的長度大于 255,則被轉(zhuǎn)換為 TEXT 類型。 |
| TINYTEXT | 存放最大長度為 255 個字符的字符串。 |
| TEXT | 存放最大長度為 65,535 個字符的字符串。 |
| BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節(jié)的數(shù)據(jù)。 |
| MEDIUMTEXT | 存放最大長度為 16,777,215 個字符的字符串。 |
| MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節(jié)的數(shù)據(jù)。 |
| LONGTEXT | 存放最大長度為 4,294,967,295 個字符的字符串。 |
| LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節(jié)的數(shù)據(jù)。 |
| ENUM(x,y,z,etc.) | 允許你輸入可能值的列表??梢栽?ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。注釋:這些值是按照你輸入的順序存儲的。可以按照此格式輸入可能的值:ENUM('X','Y','Z') |
| SET | 與 ENUM 類似,SET 最多只能包含 64 個列表項(xiàng),不過 SET 可存儲一個以上的值。 |
Number 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| TINYINT(size) | -128 到 127 常規(guī)。0 到 255 無符號*。在括號中規(guī)定最大位數(shù)。 |
| SMALLINT(size) | -32768 到 32767 常規(guī)。0 到 65535 無符號*。在括號中規(guī)定最大位數(shù)。 |
| MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規(guī)定最大位數(shù)。 |
| INT(size) | -2147483648 到 2147483647 常規(guī)。0 到 4294967295 無符號*。在括號中規(guī)定最大位數(shù)。 |
| BIGINT(size) | -9223372036854775808 到 9223372036854775807 常規(guī)。0 到 18446744073709551615 無符號*。在括號中規(guī)定最大位數(shù)。 |
| FLOAT(size,d) | 帶有浮動小數(shù)點(diǎn)的小數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。 |
| DOUBLE(size,d) | 帶有浮動小數(shù)點(diǎn)的大數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。 |
| DECIMAL(size,d) | 作為字符串存儲的 DOUBLE 類型,允許固定的小數(shù)點(diǎn)。 |
* 這些整數(shù)類型擁有額外的選項(xiàng) UNSIGNED。通常,整數(shù)可以是負(fù)數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個負(fù)數(shù)。
Date 類型:
| 數(shù)據(jù)類型 | 描述 |
|---|---|
| DATE() | 日期。格式:YYYY-MM-DD注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31' |
| DATETIME() | *日期和時(shí)間的組合。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' |
| TIMESTAMP() | *時(shí)間戳。TIMESTAMP 值使用 Unix 紀(jì)元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC |
| TIME() | 時(shí)間。格式:HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59' |
| YEAR() | 2 位或 4 位格式的年。注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。 |
* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設(shè)置為當(dāng)前的日期和時(shí)間。TIMESTAMP 也接受不同的格式,比如YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。