2.SQL語句


基礎

  • 模式定義了數據如何存儲、存儲何種數據以及數據如何分解等信息,數據庫和表都有模式。
  • 主鍵的值不允許修改,也不允許複用(不能使用已經刪除的主鍵值賦給新數據行的主鍵)。
  • SQL(Structured Query Language),標準 SQL 由 ANSI 標準委員會管理,從而稱爲 ANSI SQL
    • 各個 DBMS 都有自己的實現,如 PL/SQL、Transact-SQL 等。
  • SQL 語句不區分大小寫,但是數據庫表名、列名和值是否區分依賴於具體的 DBMS 以及配置

在這裏插入圖片描述

創建和修改表

在這裏插入圖片描述

增刪改查

增加

在這裏插入圖片描述

修改

在這裏插入圖片描述

刪除

在這裏插入圖片描述

查詢

distinct和limit

在這裏插入圖片描述

排序與過濾

排序

SELECT *
FROM mytable
ORDER BY col1 DESC, col2 ASC;

過濾

在這裏插入圖片描述

  • AND和OR用於連接多個過濾條件,優先處理AND,可食用()來決定優先級

通配符(❤)

  • 只能用於文本字段
  • % 匹配 >=0 個任意字符;
  • _ 匹配 ==1 個任意字符;
  • 可以匹配集合內的字符,例如 [ab] 將匹配字符 a 或者 b。用脫字符 ^ 可以對其進行否定,也就是不匹配集合
    內的字符。
  • 使用 Like 來進行通配符匹配
    在這裏插入圖片描述

計算字段

  • as關鍵字與concat連接兩個字段 在這裏插入圖片描述

函數

在這裏插入圖片描述

文本處理

在這裏插入圖片描述

日期時間處理

  • 日期格式:YYYY-MM-DD
  • 時間格式:HH:MM:SS
    在這裏插入圖片描述## 科學數據計算
    在這裏插入圖片描述

分組

  • 分組就是把具有相同的數據值的行放在同一組中。
  • 可以對同一組數據使用匯總函數進行處理,例如求分組數據的平均值等。
  • 指定的分組字段除了能按該字段進行分組,也會自動按該字段進行排序
  • 大多數 SQL 實現不支持 GROUP BY 列具有可變長度的數據類型
    在這裏插入圖片描述

子查詢

在這裏插入圖片描述

連接

  • 連接用於連接多個表,使用 JOIN 關鍵字,並且條件語句使用 ON 而不是 WHERE。
  • 連接可以替換子查詢,並且比子查詢的效率一般會更快。
  • 可以用 AS 給列名、計算字段和表名取別名,給表名取別名是爲了簡化 SQL 語句以及連接相同表

內連接

在這裏插入圖片描述

自連接

  • 自連接可以看成內連接的一種,只是連接的表是自身而已。
  • 一張員工表,包含員工姓名和員工所屬部門,要找出與 Jim 處在同一部門的所有員工姓名
    在這裏插入圖片描述

自然連接

在這裏插入圖片描述

外連接

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

組合查詢

在這裏插入圖片描述

視圖

  • 視圖是虛擬的表,本身不包含數據,也就不能對其進行索引操作
  • 對視圖的操作和對普通表的操作一樣。
  • 視圖好處:
    • 簡化SQL 操作,比如複雜的連接;
    • 只使用實際表的一部分數據
    • 通過只給用戶訪問視圖的權限,保證數據的安全性
    • 更改數據格式和表示

在這裏插入圖片描述

存儲過程(?)

  • 存儲過程可以看成是對一系列 SQL 操作的批處理
  • 使用存儲過程的好處:
    • 代碼封裝,保證了一定的安全性;
    • 代碼複用;
    • 由於是預先編譯,因此具有很高的性能。
  • 命令行中創建存儲過程需要自定義分隔符,因爲命令行是以 ; 爲結束符,而存儲過程中也包含了分號,因此會錯誤把這部分分號當成是結束符,造成語法錯誤。
  • 包含 in、out 和 inout 三種參數。
  • 給變量賦值都需要用 select into 語句。
  • 每次只能給一個變量賦值,不支持集合的操作

在這裏插入圖片描述

遊標(?)

  • 在存儲過程中使用遊標可以對結果集進行移動遍歷
  • 遊標主要用於交互式應用,其中用戶需要對數據集中的任意行進行瀏覽和修改。
  • 使用遊標的四個步驟:
  1. 聲明遊標,這個過程沒有實際檢索出數據;
  2. 打開遊標;
  3. 取出數據;
  4. 關閉遊標;

在這裏插入圖片描述在這裏插入圖片描述

事務處理

  • 基本術語:
  • 事務(transaction)指一組 SQL 語句;
  • 回退(rollback)指撤銷指定 SQL 語句的過程;
  • 提交(commit)指將未存儲的 SQL 語句結果寫入數據庫表;
  • 保留點(savepoint)指事務處理中設置的臨時佔位符(placeholder),你可以對它發佈回退(與回退整個事務處理不同)。
  • 不能回退 SELECT 語句,回退 SELECT 語句也沒意義;也不能回退 CREATE 和 DROP 語句。
  • MySQL 的事務提交默認是隱式提交,每執行一條語句就把這條語句當成一個事務然後進行提交。
  • 當出現 STARTTRANSACTION 語句時,會關閉隱式提交
  • 當 COMMIT 或 ROLLBACK 語句執行後,事務會自動關閉,重新恢復隱式提交
  • 通過設置 autocommit 爲 0 可以取消自動提交;autocommit 標記是針對每個連接而不是針對服務器的。
  • 如果沒有設置保留點,ROLLBACK 會回退到 START TRANSACTION 語句處;如果設置了保留點,並且在 ROLLBACK中指定該保留點,則會回退到該保留點
START TRANSACTION
// ...
SAVEPOINT delete1
// ...
ROLLBACK TO delete1
// ...
COMMIT

字符集

在這裏插入圖片描述

權限管理

在這裏插入圖片描述- myuser是賬戶名

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章