SQL的語法 SQL通用語法 SQL語句可以單行或多行書寫,以分號(“;”)結尾。 SQL語句可以使用空格或縮進增強可讀性。 MySQL資料庫的SQL語句不區分大小寫(建議關鍵字大寫)。 註釋 單行註釋: -- 內容 # 內容(MySQL特有) 多行註釋: /* 內容 */ SQL語句分類 分類 全 ...
SQL的語法
-
SQL通用語法
-
SQL語句可以單行或多行書寫,以分號(“;”)結尾。
-
SQL語句可以使用空格或縮進增強可讀性。
-
MySQL資料庫的SQL語句不區分大小寫(建議關鍵字大寫)。
-
註釋
單行註釋:
-- 內容
# 內容(MySQL特有)
多行註釋:
/* 內容 */
-
-
SQL語句分類
分類 全稱 說明 DDL Data Definition Language 數據定義語言,用於定於資料庫對象(資料庫、表、欄位) DML Data Manipulation Language 數據操作語言,用來對資料庫表中數據進行增加、刪除、修改 DQL Data Query Language 數據查詢語言,用於查詢資料庫表中的記錄 DCL Data Control Language 數據控制語言,用於創建資料庫、操控資料庫的訪問許可權
數據定義語言
-
資料庫操作 —— 數據定義(DDL)
-
查詢:
查詢所有資料庫:
show databases;
查詢當前資料庫:
select database();
-
創建:
create database [if not exists] 資料庫名稱 [default charset 字元集] [collate 排序規則];
(PS:方括弧("[]")內的為可選項;字元集推薦使用utf8mb4;)
(意義:[if not exists]意義為若資料庫內已存在該名稱的資料庫則不執行;)
-
刪除:
drop database [if exists] 資料庫名稱;
(PS:方括弧("[]")內的為可選項;)
(意義:[if exists]意義為若資料庫存在則執行刪除;)
-
使用:
use 資料庫名稱;
-
-
資料庫操作 —— 數據定義(DDL)- 查詢
-
查詢當前資料庫所以的表:
show table;
-
查詢表結構:
desc 表名;
-
查詢指定表的建表語句:
show create table 表名;
-
-
數資料庫操作 —— 數據定義(DDL)- 創建
<資料庫操作(DDL)- 創建 - 資料庫:tb_user>
create table 表名( 欄位1 欄位1的類型 [comment 欄位1註釋], 欄位2 欄位2的類型 [comment 欄位2註釋], 欄位3 欄位3的類型 [comment 欄位3註釋] ) [comment 表註釋]
(PS:方括弧("[]")內的為可選項;)
-
資料庫操作 —— 數據定義(DDL)- 數據類型
<資料庫操作(DDL)- 數據類型 - 案例:08案例.txt>
MySQL主要資料庫類型:
-
數值類型:
(PS:DOUBLE需要設置精度、標度;)
(意義:精度意義為數值總長度;標度意義為小數點位數;)
(案例:[欄位名 TINYINT UNSIGNED] 意義為當前使用的TINYINT數據類型使用的是無符號的;)
-
字元串類型:
(PS:帶BLOB的為二進位存儲數據類型;CHAR類型若存儲沒有達到設定的長度則會用空格填充;VARCHARA類型為所占用的長度則為所占用的空間;)
(案例:[char(10)] 意義為最大長度為10的字元;)
-
日期時間類型:
-
-
資料庫操作 —— 數據定義(DDL)- 修改
-
添加欄位:
alter table 表名 add 欄位名 類型(長度) [comment 註釋] [約束]
(PS:方括弧("[]")內的為可選項;)
-
修改數據類型:
alter table 表名 modify 欄位名 新數據類型(長度);
-
修改欄位名和欄位類型:
alter table 表名 change 舊欄位名 新欄位名 類型(長度) [comment 註釋] [約束];
(PS:方括弧("[]")內的為可選項;)
-
刪除欄位:
alter table 表名 drop 欄位名;
-
修改表名:
alter table 表名 rename to 新表名;
-
-
資料庫操作 —— 數據定義(DDL)- 刪除
-
刪除表:
drop table [if exists] 表名;
(PS:方括弧("[]")內的為可選項;)
(意義:[if exists]意義為若資料庫存在則執行刪除;)
-
刪除指定表,並重新創建該表:
truncate table 表名;
-
數據操作語言
-
資料庫操作 —— 數據操作(DML)- 添加數據
-
給指定欄位添加數據:
insert into 表名(欄位1,欄位2,欄位3) values(值1,值2,值3);
-
給全部欄位添加數據:
insert into 表名 values(值1,值2,值3);
-
批量給指定欄位添加數據:
insert into 表名(欄位1,欄位2) values(值1,值2),(值1,值2);
-
批量給全部欄位添加數據:
insert into 表名 values(值1,值2),(值1,值2),(值1,值2);
(PS:添加的數據類型為字元串、日期應該包含在引號('')中;添加的字元串類型大小應該在欄位規定的範圍內;)
-
-
資料庫操作 —— 數據操作(DML)- 修改數據
-
修改表的數據:
update 表名 set 欄位名1 = 值1,欄位名2 = 值2,欄位名3 = 值3 [where 條件];
(PS:方括弧("[]")內的為可選項;)
-
-
資料庫操作 —— 數據操作(DML)- 刪除數據
-
刪除表的數據:
delete from 表名 [where 條件];
(PS:方括弧("[]")內的為可選項;)
-
數據查詢語言
-
資料庫操作 —— 數據查詢(DQL)
語法:
語法: 解釋: select 欄位列表 from 表名列表 where 條件列表 group by 分組欄位列表 having 分組後條件列表 order by 排序欄位列表 limit 分頁參數 -
資料庫操作 —— 數據查詢(DQL)- 基本查詢
-
查詢多個欄位:
select 欄位1,欄位2,欄位3 from 表名;
-
查詢所有欄位:
select * from 表名;
(PS:在開發中建議不要使用星號“※”;)
-
設置別名:
select 欄位1 as 別名1,欄位2 as 別名2 from 表名;
-
去除重覆記錄:
select distinct 欄位列表 from 表名;
-
-
資料庫操作 —— 數據查詢(DQL)- 條件查詢(where)
-
語法:
select 欄位列表 from 表名 where 條件列表;
-
條件:
比較運算符 功能 > 大於 >= 大於等於 < 小於 <= 小於等於 = 等於 <> 或 != 不等於 detween ... and ... 在某個範圍之內(最小值、最大值) in(...) 在in之後的列表中的值,多選一 like 占位符 模糊匹配(“_”匹配單個字元,“%”匹配任意個字元) is null 是null 邏輯運算符 功能 and 或 && 並且(多個條件同時成立) or 或 || 或者(多個條件任意一個成立) not 或 ! 非、不是
-
-
資料庫操作 —— 數據查詢(DQL)- 聚合函數(count、max、min、avg、sum)
-
介紹:
將一列數據作為一個整體,進行縱向運算。
-
常見的聚合函數:
函數 功能 count 統計數量 max 最大值 min 最小值 avg 平均值 sum 求和 -
語法:
select 聚合函數(欄位列表) from 表名;
(PS:null值不參與聚合函數運算;)
-
-
資料庫操作 —— 數據查詢(DQL)- 分組查詢(group by)
-
語法:
select 欄位列表 from 表名 [where 條件] group by 分組欄位名 [having 分組後過濾條件];
(PS:方括弧("[]")內的為可選項;)
-
where與having的區別:
執行時間不同:where是分組之前進行過濾(不滿足條件的不參與分組),而having是分組之後對結果進行過濾。
判斷條件不同:where不能對聚合函數進行判斷,而having可以。
-
-
資料庫操作 —— 數據查詢(DQL)- 排序查詢(order by)
-
語法:
select 欄位列表 from 表名 order by 欄位1 排序方式1,欄位2 排序方式2;
-
排序方式:
ASC:升序排序(預設值)。
DESC:降序排序。
(PS:若是多欄位排序,當第一個欄位值相同時,才會根據第二個欄位進行排序;)
-
-
資料庫操作 —— 數據查詢(DQL)- 分頁查詢(limit)
-
語法:
select 欄位列表 from 表名 limit 起始索引,查詢記錄數;
(PS:起始索引從0開始;起始索引=(查詢頁面 - 1) * 每頁顯示記錄數;分頁查詢是資料庫的方言(limit是MySQL的);)
-
-
資料庫操作 —— 數據查詢(DQL)- 執行順序
-
執行順序:
執行順序: 語法: 解釋: 4 select 欄位列表 1 from 表名列表 2 where 條件列表 3 group by 分組欄位列表 5 having 分組後條件列表 5 order by 排序欄位列表 6 limit 分頁參數
-
數據控制語言
-
資料庫操作 —— 數據控制(DCL)- 管理用戶
-
查詢用戶:
use mysql;
select * from user;
-
創建用戶:
create user '用戶名'@'主機名' identified by '密碼';
-
修改用戶密碼:
alter user '用戶名'@'主機名' identified with mysql_native_password by '新密碼';
-
刪除用戶:
drop user '用戶名'@'主機名';
(PS:主機名可以使用百分號"%"通配符,來表示任意主機都可以訪問;)
-
-
資料庫操作 —— 數據控制(DCL)- 許可權控制
-
常用的許可權控制:
許可權: 說明; all、all privileges 所有許可權 select 查詢數據 insert 插入數據 update 修改數據 delete 刪除數據 alter 修改表 drop 刪除資料庫、表、視圖 create 創建資料庫、表 -
查詢許可權:
show grants for '用戶名'@'主機名';
-
授予許可權:
grant 許可權列表 on 資料庫名.表名 to '用戶名'@'主機名';
-
撤銷許可權:
revoke 許可權列表 on 資料庫名.表名 from '用戶名'@'主機名';
(PS:多個許可權之間要使用逗號(",")分隔;)
-