mysql 語法1

虚拟式發表於2024-09-23

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 '使用者名稱'@'主機名';

相關文章