SQL語言
阿新 • • 發佈:2020-12-20
一、SQL語言
1.基本查詢
#建立一個數據庫
CREATE DATABASES 庫名 CHARACTER SET utf8;
#基本查詢 (執行查詢語句返回的結果集是一張虛擬表。)
SELECT 列名1,列名2,列名3... FROM 表名;
SELECT * FROM 表名; #查詢所有列
#對列中資料進行運算(+、-、*、/)以及別名
SELECT 列名+-*/n AS 別名 FROM 表名;
#查詢結果去重
SELECT DISTINCT 列名 FROM 表名;
2.排序查詢
#排序查詢 ASC升序 DESC降序 SELECT 列名1,列名2,列名3... FROM 表名 ORDER BY 列名1 ASC/DESC;#依據單列排序 SELECT 列名1,列名2,列名3... FROM 表名 ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC;#依據多列排序,在列名1排序相等的情況下,依據列名2進行排序
3.條件查詢
#條件查詢 SELECT 列名1,列名2,列名3... FROM 表名 WHERE 條件 SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 = n; #等值判斷(=) SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 = n1 AND 列名2 = n2; #邏輯判斷(與或非,and、or、not) SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 >= n1 AND 列名1 <= n2;#不等值判斷(<、>、>=、<=、!=、<>) #區間判斷(between and) SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 BETWEEN n1 AND n2;#閉區間,包含兩個邊界值 #NULL值判斷 SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 IS NULL /IS NOT NULL; #列舉查詢 IN(n1,n2,n3...) SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 IN(n1,n2,n3...); #模糊查詢 SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 LIKE '張_';#'_'代表單個任意字元,可填入多個 SELECT 列名1,列名2,列名3... FROM 表名 WHERE 列名1 LIKE '張%'; ##任意字元長度 #分支結構查詢CASE-WHEN-END SELECT 列名1,列名2,列名3... , CASE WHEN ... WHEN ... WHEN ... ELSE ... END FROM 表名;
4.時間查詢
#時間查詢 SELECT SYSDATE();#當前系統時間(年月日時分秒) SELECT CURDATE();#獲取當前日期(年月日) SELECT CURTIME();#獲取當前時間(時分秒) SELECT WEEK(DATE);#獲取指定日期為一年中的第幾周 SELECT YEAR(DATE);#獲取指定日期的年份 SELECT HOUR(TIME);#獲得指定時間的小時值 SELECT MINUTE(TIME);#獲得時間的分鐘值 SELECT DATEDIFF(DATE 1,DATE 2);#獲得兩個日期相隔的天數 SELECT ADDDATE(DATE,n);#計算DATE加上n天后的日期
5.字串查詢
#字串查詢
SELECT CONCAT(str1,str2,...);#將多個字串連線
SELECT INSERT(str,pos,len,newStr);#將str中指定pos位置開始len長度的內容替換為newStr
SELECT LOWER(str);#將指定字串轉換為小寫
SELECT UPPER(str);#將指定字串轉化為大寫
SELECT SUBSTRING(str,num,len);#將str字串指定num位置開始擷取len長度的內容
6.聚合函式
#聚合函式 SUM()求單列結果的總和、AVG()平均值、MAX()/MIN()最大值/最小值、COUNT()求總行數
SELECT SUM(列名1,列名2,列名3...) FROM 表名;
7.分組查詢、分組過濾查詢
#分組查詢 GROUP BY 分組依據必須在WHERE之後生效
SELECT 列名 FROM 表名 WHERE 條件 GROUP BY 分組依據(列);#注:分組查詢中,select顯示的只能是分組依據列,或者聚合函式列,不能出現其他列
#分組過濾查詢
SELECT 列名 FROM 表名 WHERE 條件 GROUP BY 分組依據 HAVING 過濾規則;#過濾規則定義對分組後的資料進行過濾
8.限定查詢
#限定查詢 LIMIT 起始行,查詢行數 注:起始行是從0開始
SELECT * FROM 表名 LIMIT 0,5;
#典型應用
#分頁查詢:一頁顯示10行,一共查詢三頁
#思路:第一頁從0行開始,顯示10條
SELECT * FROM 表名 LIMIT 0,10;
#第二頁從10行開始,顯示10條
SELECT * FROM 表名 LIMIT 10,10;
#第三頁從20行開始,顯示10條
SELECT * FROM 表名 LIMIT 20,10;
查詢總結
SQL語言編寫順序:SELECT 列名 FROM 表名 WHERE 條件 GROUP BY 分組依據 HAVING 過濾規則 ORDER BY 排序列(ASC/DESC) LIMIT 起始行,查詢行數;
9.進階查詢
#子查詢
SELECT 列名 FROM 表名 WHERE 條件(子查詢結果);#子查詢結果為一行一列
SELECT 列名 FROM 表名 WHERE 列名 IN(子查詢結果);#子查詢結果為多行一列
SELECT 列名 FROM 子查詢結果集 WHERE 條件;#子查詢結果為多行多列可視為表
#合併查詢 將兩個表的查詢結果合併在一起!!!列數必須相同
SELECT * FROM 表1 UNION SELECT * FROM 表2;#去除重複資料
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2;#不去除重複資料。顯示所有
#表連線查詢 將表連線起來再查詢!!!
#內連線
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 連線條件;#兩表連線
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 連線條件 INNER JOIN 表3 ON 連線條件;#三表連線
#左外連線 注:以左表為主
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 連線條件;
#右外連線 注:以右表為主
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 連線條件;
#DML操作
#新增 INSERT
INSERT INTO 表名 (列名1,列名2,列名3...) VALUES (值1,值2,值3,...);
#修改 UPDATE 不加WHERE語句則整表更新
UPDATE 表名 SET 列1=新值1,列2=新值2... WHERE 條件;
#刪除 DELETE 不加WHERE語句則刪除整張表 對錶中資料做操作
DELETE FROM 表名 WHERE 條件;
#清空整張表,對錶做操作
TRUNCATE TABLE 表名;
#資料表操作
#資料表的建立
CREATE TABLE 表名(
列名 資料型別 [約束],
列名 資料型別 [約束],
...
列名 資料型別 [約束]#最後一列的末尾不加逗號!
)[CHARSET = utf8];#可根據需要制定字元編碼集
#資料表的修改(ALTER)
ALTER TABLE 表名 ADD 列名 資料型別;#向表中新增列
ALTER TABLE 表名 MODIFY 列名 VARCHAR(10);#修改表中列的長度
ALTER TABLE 表名 DROP 列名;#刪除表中此列
ALTER TABLE 表名 CHANGE 舊列名 新列名 資料型別;#修改別名
#資料表的刪除
DROP TABLE 表名;
#約束
#實體完整性約束 標識每一行資料不重複,實體唯一
#主鍵約束 PRIMARY KEY
#唯一約束 UNIQUE
#自動增長列 AUTO_INCREMENT
CREATE TABLE 表名(
列名 資料型別 PRIMARY KEY,#標識唯一,不可重複且不能為NULL
列名 資料型別 UNIQUE,#標識唯一,不可重複可以為NULL
...
列名 資料型別 PRIMARY KEY AUTO_INCREMENT#不可單獨使用,和主鍵配合,給主鍵數值列新增自動增長!!!
)CHARSET = utf8;
#域完整性約束 限制列的單元格的資料正確性。
#非空約束 NOT NULL
#預設值約束 DEFAULT N
#引用完整性約束 CONSTRAINT 引用名 FOREIGN KEY (列名) REFERENCES 被引用表名(列名)
CREATE TABLE 表名(
列名 資料型別 PRIMARY KEY,
列名 資料型別 UNIQUE NOT NULL,#非空,必須有值
列名 INT DEFAULT 20,#為列賦予預設值
...
列名 資料型別 PRIMARY KEY AUTO_INCREMENT#不可單獨使用,和主鍵配合,給主鍵數值列新增自動增長!!!
)CHARSET = utf8;
#事務
#事務特性 Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)、Durability(永續性)
START TRANSACTION;
...#事務內資料操作語句
COMMIT;#事務內資料操作語句成功,執行COMMIT提交
ROLLBACK;#事務內資料操作語句失敗,執行ROLLBACK回滾
#許可權管理
#建立使用者
CREATE USER 使用者名稱 IDENTIFIED BY 密碼;
#授權
GRANT ALL ON 資料庫.表 TO 使用者名稱;
#撤銷許可權
REVOKE ALL ON 資料庫.表 FROM 使用者名稱;#使用者重新連線客戶端之後才會生效
#刪除使用者
DROP USER 使用者名稱;#使用者重新連線客戶端之後才會生效
#檢視 檢視的操作不會影響源表
CREATE VIEW 檢視名 AS 查詢資料來源表語句;