1、註釋
單行 --
多行 /**/
2、SQL 分類
主要分為四類DDL、DML、DQL、DCL
DDL
Data Definition Language,資料定義語言,用來定義資料庫物件(資料庫,表,欄位)
常用指令
CREATE:在資料庫中建立物件
ALTER:更改資料庫的結構
DROP:從資料庫中刪除物件
TRUNCATE:從表中刪除所有記錄,包括為記錄分配的所有空間
COMMENT:向資料字典新增註釋
RENAME:重新命名一個物件
DML
DML英文全稱是Data Manipulation Language(資料操作語言),用來對資料庫中表的資料記錄進行增、刪、改操作
常用指令
SELECT:從資料庫檢索資料(也有說法認為 SELECT 是 DRL:資料檢索語言)
INSERT:將資料插入表中
UPDATE:更新表中已存在的資料
DELETE:刪除表中的所有記錄,但記錄的空間仍然保留
MERGE:UPSERT 操作(插入或更新)
CALL:呼叫 PL/SQL 或 Java 子程式
EXPLAIN PLAN:解釋訪問資料的路徑
LOCK TABLE:控制併發性
DCL
DCL英文全稱是Data Control Language(資料控制語言),用來管理資料庫使用者、控制資料庫的訪問許可權
常用指令
GRANT:賦予使用者資料庫訪問許可權
REVOKE:撤銷使用 GRANT 命令賦予的訪問許可權
TCL
TCL英文全稱是Transaction Control Language,用於管理資料庫事務的語句集
常用指令
COMMIT:儲存所做的工作。
SAVEPOINT:確定一個事務中的點,以便之後可以回滾到這一點。
ROLLBACK:將資料庫恢復到最後一次 COMMIT 之前的狀態。
SET TRANSACTION:更改事務選項,如隔離級別和回滾段的使用
3、mysql 資料型別
數值型別
- 整型:
- TINYINT:1位元組
- SMALLINT:2位元組
- MEDIUMINT:3位元組
- INT 或 INTEGER:4位元組
- BIGINT:8位元組
- 浮點數:
- FLOAT:單精度浮點數
- DOUBLE:雙精度浮點數
- 定點數:
- DECIMAL或 NUMERIC:用於儲存精確的小數
字串型別
- 固定長度字串:
- CHAR:固定長度的字串
- 可變長度字串:
- VARCHAR:可變長度的字串
- 文字資料型別:
- TINYTEXT:最大長度 255 字元
- TEXT:最大長度 65,535 字元
- MEDIUMTEXT:最大長度 16,777,215 字元
- LONGTEXT:最大長度 4,294,967,295 字元
- 二進位制資料型別:
- BINARY:固定長度二進位制字串
- VARBINARY:可變長度二進位制字串
- BLOB:二進位制大物件
- MEDIUMBLOB:中等長度二進位制大物件
- LONGBLOB:長二進位制大物件
日期和時間型別
- DATE:日期 YYYY-MM-DD
- TIME:時間 HH:MM:SS
- DATETIME:日期和時間 YYYY-MM-DD HH:MM:SS
- TIMESTAMP:時間戳 YYYY-MM-DD HH:MM:SS
- YEAR:年份 1901-2155
列舉型別
- ENUM:一個字串物件,只能有一個值,從列表中選擇
集合型別
- SET:一個字串物件,可以有 0 或多個值,從列表中選擇
空間資料型別
- GEOMETRY:表示空間資料
- POINT:表示一個點
- LINESTRING:表示一系列點構成的線
- POLYGON:表示一個多邊形
- 等等...
JSON 資料型別
- JSON:用於儲存有效的 JSON 文件
其他資料型別
- BIT:二進位制位欄位
- BOOLEAN:邏輯布林值 TRUE 或 FALSE
4、常用語句
4-1、資料庫相關
查詢所有資料庫
show databases;
建立資料庫
create database [ if not exists ] 資料庫名
刪除資料庫
drop database [ if exists ] 資料庫名 ;
切換資料庫
use 資料庫名 ;
4-2、表相關
查詢當前資料庫所有表
show tables;
檢視指定表的表結構
desc 表名
檢視指定表的建表結構
show create table 表名 ;
建立表結構
create table tb_user(
id int comment '編號',
name varchar(50) comment '姓名',
age int comment '年齡',
gender varchar(1) comment '性別'
) comment '使用者表';
表修改
1)新增表欄位
ALTER TABLE 表名 ADD 欄位名 型別 (長度) [ COMMENT 註釋 ] [ 約束 ];
2)修改表欄位
ALTER TABLE 表名 MODIFY 欄位名 新資料型別 (長度);
3)修改欄位名和欄位型別
ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 型別 (長度) [ COMMENT 註釋 ] [ 約束 ];
4)刪除欄位
ALTER TABLE 表名 DROP 欄位名;
5)修改表名
ALTER TABLE 表名 RENAME TO 新表名;
表刪除
1)刪除指定表
DROP TABLE [ IF EXISTS ] 表名;
2)刪除指定表, 並重新建立表
TRUNCATE TABLE 表名;
插入資料
INSERT INTO 表名 (欄位名1, 欄位名2, ...) VALUES (值1, 值2, ...);
INSERT INTO 表名 VALUES (值1, 值2, ...);
INSERT INTO 表名 (欄位名1, 欄位名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
1、插入資料時,指定的欄位順序需要與值的順序是一一對應的
2、字串和日期型資料應該包含在引號中
修改資料
UPDATE 表名 SET 欄位名1 = 值1 , 欄位名2 = 值2 , .... [ WHERE 條件 ] ; 1
1、修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有資料。
刪除資料
DELETE FROM 表名 [ WHERE 條件 ] ;
1、DELETE 語句的條件可以有,也可以沒有,如果沒有條件,則會刪除整張表的所有資料。
2、DELETE 語句不能刪除某一個欄位的值(可以使用UPDATE,將該欄位值置為NULL即可)。
查詢
SELECT
欄位列表
FROM
表名列表
WHERE
條件列表
GROUP BY
分組欄位列表
HAVING
分組後條件列表
ORDER BY
排序欄位列表
LIMIT
分頁引數
1)設定別名
SELECT 欄位1 [ AS 別名1 ] , 欄位2 [ AS 別名2 ] ... FROM 表名;
SELECT 欄位1 [ 別名1 ] , 欄位2 [ 別名2 ] ... FROM 表名;
2)去除重複記錄
SELECT DISTINCT 欄位列表 FROM 表名;
3)條件查詢
SELECT 欄位列表 FROM 表名 WHERE 條件列表 ; 1
常見條件查詢運算子
<>,!=,不等於
in(...),在in之後的列表中的值,多選一
between ... and ...,
like 佔位符, 模糊匹配(_匹配單個字元, %匹配任意個字元)
is null,是NULL
常用的邏輯運算子
AND 或 && ,並且 (多個條件同時成立)
OR 或 || 或者 (多個條件任意一個成立)
NOT 或 ! 非 , 不是
4)聚合函式
將一列資料作為一個整體,進行縱向計算
SELECT 聚合函式(欄位列表) FROM 表名 ;
常見的聚合函式
count 統計數量
max 最大值
min 最小值
avg 平均值
sum 求和
5)分組查詢
SELECT 欄位列表 FROM 表名 [ WHERE 條件 ] GROUP BY 分組欄位名 [ HAVING 分組
後過濾條件 ];
where 和 having 區別
1、執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組之後對結果進行過濾。
2、判斷條件不同:where不能對聚合函式進行判斷,而having可以
6)排序查詢
SELECT 欄位列表 FROM 表名 ORDER BY 欄位1 排序方式1 , 欄位2 排序方式2 ;
7)分頁查詢
SELECT 欄位列表 FROM 表名 LIMIT 起始索引, 查詢記錄數 ;
1、起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數。
2、分頁查詢是資料庫的方言,不同的資料庫有不同的實現,MySQL中是LIMIT。
3、如果查詢的是第一頁資料,起始索引可以省略,直接簡寫為 limit 10。
4-3 使用者相關
查詢使用者
select * from mysql.user;
建立使用者
CREATE USER '使用者名稱'@'主機名' IDENTIFIED BY '密碼';
修改使用者密碼
ALTER USER '使用者名稱'@'主機名' IDENTIFIED WITH mysql_native_password BY '新密碼' ;
刪除使用者
DROP USER '使用者名稱'@'主機名' ;
示例
CREATE USER 'JaShin'@'localhost' IDENTIFIED BY '密碼';
許可權相關
常見許可權名
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE
查詢許可權
SHOW GRANTS FOR '使用者名稱'@'主機名' ;
授予許可權
GRANT 許可權列表 ON 資料庫名.表名 TO '使用者名稱'@'主機名'; 1
撤銷許可權
REVOKE 許可權列表 ON 資料庫名.表名 FROM '使用者名稱'@'主機名';