SQL 01-簡介 標準命令 基本語法 運算符 表達式

SQL(結構化查詢語言)是用於訪問和操作數據庫中的數據的標準數據庫編程語言。
SQL是關係數據庫系統的標準語言。所有關係數據庫管理系統(RDMS),如MySQL、MS Access、Oracle、Sybase、Informix、Postgres和SQL Server都使用SQL作爲它們的標準數據庫語言。

SQL標準命令

DDL(數據定義語言)
數據定義語言用於改變數據庫結構,包括創建、更改和刪除數據庫對象。用於操縱表結構的數據定義語言命令有:

  • CREATE TABLE–創建(在數據庫中創建新表、表視圖或其他對象)
  • ALTER TABLE– 更改 (修改現有的數據庫對象,如表)
  • DROP TABLE– 刪除 (刪除數據庫中的整個表、表或其他對象的視圖)

DML(數據操縱語言)
數據操縱語言用於檢索、插入和修改數據,數據操縱語言是最常見的SQL命令。

  • INSERT– 插入 (創建記錄)
  • DELETE– 刪除 (刪除記錄)
  • UPDATE– 修改(修改記錄)
  • SELECT – 檢索 (從一個或多個表檢索某些記錄)

DCL(數據控制語言)
數據控制語言爲用戶提供權限控制命令。

  • GRANT– 授予權限
  • REVOKE– 撤銷已授予的權限

SQL語法規則

  • SQL語句總是以關鍵字開始,如SELECT、INSERT、UPDATE、DELETE、DROP、CREATE。
  • SQL語句以分號結尾。
  • SQL不區分大小寫,意味着update與UPDATE相同。

SQL Select(選擇) 語法

SELECT 語法用於從數據庫中選擇數據。
返回的數據存儲在結果表中,稱爲結果集。
基本語法:SELECT和FROM
 在任何SQL查詢語句中都:SELECT和FROM他們必須按順序排列。SELECT指示要查看哪些列,FROM標識它們所在的表。

SQL SELECT 語法如下所示:

SELECT column1, column2, ...
FROM table_name;

這裏,column1,column2,…是要從中選擇數據的表的字段名稱。如果要選擇表中可用的所有字段,請使用以下語法:

SELECT * FROM table_name;

在這裏插入圖片描述
SELECT 檢索一列
 下面的 SQL 語句從 “Customers” 表中選取 “City” 列:

SELECT City FROM Customers; 

SELECT 檢索多列
 下面的 SQL 語句從 “Customers” 表中選取 “CustomerName” 和 “City” 列:

SELECT CustomerName, City FROM Customers;

注意:這兩個列名在查詢中用逗號分隔。每當選擇多個列時,它們必須用逗號分隔,但最後一列名稱之後不能添加逗號。

SELECT * 實例 - 檢索所有列
 下面的 SQL 語句從 “Customers” 表中選取所有列:

SELECT * FROM Customers;

如果要選擇表中的所有列,則可以使用 * 而不需要把所有列名羅列查詢。

SQL SELECT DISTINCT(選擇不同) 語法

SQL SELECT DISTINCT 語法
 SELECT DISTINCT語法用於僅返回不同的(different)值。在一張表內,一列通常包含許多重複的值; 有時你只想列出不同的(different)值。

SELECT DISTINCT語句用於僅返回不同的(different)值。

SQL SELECT DISTINCT語法如下所示:

SELECT DISTINCT column1, column2, ...
FROM table_name;

在這裏插入圖片描述
以下SQL語句僅從"Customers" 表中的 “Country” 列中選擇DISTINCT值:

SELECT DISTINCT Country FROM Customers;

在這裏插入圖片描述

SQL WHERE Clause(查詢子句)

SQL WHERE 子句
 WHERE 子句用於過濾記錄。
 WHERE 子句用於提取滿足指定標準的記錄。
SQL WHERE 語法

SELECT column1, column2, ...
FROM table_name
WHERE condition;

注意: WHERE子句不僅用於SELECT語法,還用於UPDATE,DELETE語法等!

WHERE子句可以與以下類型的SQL語句一起使用:

  • UPDATE
  • DELETE
  • UPDATE語句
UPDATE "table_name"
SET "column_1" = [new value]
WHERE "condition";

DELETE語句:

DELETE FROM "table_name"
WHERE "condition";

在這裏插入圖片描述
以下SQL語句從"Customers"表中選擇其國家爲"Mexico"的所有客戶:

SELECT * FROM Customers
WHERE Country='Mexico';

也可以使用OR運算符的查詢子句:

SELECT * FROM Customers
WHERE Country='Mexico' OR PostalCode='05021';

WHERE 子句中的運算符
在這裏插入圖片描述

SQL AND, OR and NOT(與,或不是運算符)

SQL AND & OR 運算符
 AND&OR運算符用於根據一個以上的條件過濾記錄,即用於組合多個條件以縮小SQL語句中的數據。

WHERE子句可以與AND,OR和NOT運算符結合使用。

AND和OR運算符用於根據多個條件篩選記錄:

  • 如果由AND分隔的所有條件爲TRUE,則AND運算符顯示記錄。
  • 如果使用AND運算符組合N個條件。對於SQL語句執行的操作(無論是事務還是查詢),所有由AND分隔的條件都必須爲TRUE。
  • 如果由OR分隔的任何條件爲真,則OR運算符顯示記錄。
  • 如果使用OR運算符組合N個條件。對於SQL語句執行的操作(無論是事務還是查詢),OR分隔的任何一個條件都必須爲TRUE。
  • 如果條件不爲TRUE,則NOT運算符顯示記錄。

AND語法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR語法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT語法

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

在這裏插入圖片描述
AND 運算符實例
以下SQL語句從 “Customers” 表中選擇其國家爲 “Germany” 、其城市爲"Berlin" 的所有客戶:

SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';

OR 運算符實例
 以下SQL語句選擇城市爲“Berlin”或“München”的“Customers”的所有字段:

SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

NOT 運算符實例
 以下SQL語句選擇國家不是 "Germany"的"Customers"的所有字段:

SELECT * FROM Customers
WHERE NOT Country='Germany';

結合 AND & OR
還可以組合AND和OR(使用括號來組成成複雜的表達式)。

以下SQL語句從國家 “Germany” 且城市爲"Berlin" 或"München"的"Customers" 表中選擇所有客戶:

SELECT * FROM Customers
WHERE Country='Germany'
AND (City='Berlin' OR City='München');

結合AND,OR和NOT
也可以結合AND,OR和NOT運算符。

以下SQL語句選擇國家是“德國”的“客戶”的所有字段,城市必須是“柏林”或“慕尼黑”(用括號形成複雜表達式):

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');

以下SQL語句選擇來自"Customers" 的國家不是 “Germany” 且不是 "USA"的所有字段:

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

SQL ORDER BY Keyword(按關鍵字排序)

SQL ORDER BY 關鍵字
ORDER BY 關鍵字用於按升序或降序對結果集進行排序。
ORDER BY 關鍵字默認情況下按升序排序記錄。
如果需要按降序對記錄進行排序,可以使用DESC關鍵字。

SQL ORDER BY 語法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

可以在ORDER BY子句中使用多個列,但要確保用於對該列進行排序的列應該在列表中。

在這裏插入圖片描述
ORDER BY 實例
下面的 SQL 語句從 “Customers” 表中選取所有客戶,並按照 “Country” 列排序:

SELECT * FROM Customers
ORDER BY Country;

ORDER BY DESC 實例
下面的 SQL 語句從 “Customers” 表中選取所有客戶,並按照 “Country” 列降序排序:

SELECT * FROM Customers
ORDER BY Country DESC;

ORDER BY 多列 實例1
下面的 SQL 語句從 “Customers” 表中選取所有客戶,並按照 “Country” 和 “CustomerName” 列排序:

SELECT * FROM Customers
ORDER BY Country, CustomerName;

ORDER BY 多列 實例2
 以下SQL語句從"Customers" 表中選擇所有客戶,按 “Country” 升序排列,並按 “CustomerName” 列降序排列:

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

SQL INSERT INTO 語句(在表中插入)

SQL INSERT INTO 語句

INSERT INTO 語句用於向表中插入新的數據行。

SQL INSERT INTO 語法
INSERT INTO 語句可以用兩種形式編寫。

第一個表單沒有指定要插入數據的列的名稱,只提供要插入的值,即可添加一行新的數據:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

第二種,如果要爲表中的所有列添加值,則不需要在SQL查詢中指定列名稱。但是,請確保值的順序與表中的列順序相同。INSERT INTO語法如下所示:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

在這裏插入圖片描述
假設我們想在"Customers"表中插入一個新行。
我們可以使用以下SQL語句:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

注意:CustomerID列是一個自動遞增字段,在將新記錄插入到表中時自動生成。

僅在指定的列中插入數據
我們還可以只在指定的列中插入數據。
以下SQL語句插入一個新行,但只在“CustomerName”、“City”和“Countryn”列中插入數據(CustomerID字段將自動更新):

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');


SQL NULL Values(空值)

什麼是SQL NULL值?
SQL 中,NULL 用於表示缺失的值。數據表中的 NULL 值表示該值所處的字段爲空。

具有NULL值的字段是沒有值的字段。

如果表中的字段是可選的,則可以插入新記錄或更新記錄而不向該字段添加值。然後,該字段將被保存爲NULL值。

值爲 NULL 的字段沒有值。尤其要明白的是,NULL 值與 0 或者包含空白(spaces)的字段是不同的。

注意:理解NULL值與零值或包含空格的字段不同是非常重要的。具有NULL值的字段是在記錄創建期間留空的字段!

如何測試NULL值?
使用比較運算符(例如=,<或<>)來測試NULL值是不可行的。

我們將不得不使用IS NULL和IS NOT NULL運算符。

IS NULL語法

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL語法

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

在這裏插入圖片描述
以下SQL語句使用IS NULL運算符來列出所有沒有地址的人員:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NULL;

在這裏插入圖片描述

IS NOT NULL運算符
以下SQL語句使用IS NOT NULL運算符來列出所有具有地址的人員:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;

創建表的時候,NULL 的基本語法如下:

 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

這裏,NOT NULL表示對於給定列,必須按照其數據類型明確賦值。有兩列並沒有使用 NOT NULL 來限定,也就是說這些列可以爲 NULL。
值爲 NULL 的字段是在記錄創建的過程中留空的字段。

NULL 值會給選取數據帶來麻煩。不過,因爲 NULL 和其他任何值作比較,其結果總是未知的,所以含有 NULL 的記錄不會包含在最終結果裏面。

必須使用 IS NULL 或者 IS NOT NULL 來檢測某個字段是否爲 NULL。

SQL UPDATE 語句(更新表中的記錄)

SQL UPDATE 語句

  • UPDATE 語句用於更新表中已存在的記錄。
  • 還可以使用AND或OR運算符組合多個條件。

SQL UPDATE 語法
 具有WHERE子句的UPDATE查詢的基本語法如下所示:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

注意
更新表中的記錄時要小心!
要注意SQL UPDATE 語句中的 WHERE 子句!
WHERE子句指定哪些記錄需要更新。如果省略WHERE子句,所有記錄都將更新!

SQL Delete 語句(刪除表中的記錄)

SQL DELETE 語句
 DELETE語句用於刪除表中現有記錄。

SQL DELETE 語法

DELETE FROM table_name
WHERE condition;

注意
刪除表格中的記錄時要小心!
注意SQL DELETE 語句中的 WHERE 子句!
WHERE子句指定需要刪除哪些記錄。如果省略了WHERE子句,表中所有記錄都將被刪除!

刪除所有數據
可以刪除表中的所有行,而不需要刪除該表。這意味着表的結構、屬性和索引將保持不變:

DELETE FROM table_name;

或者

DELETE * FROM table_name;

注意:在沒有備份的情況下,刪除記錄要格外小心!因爲你刪除了不能重複!

SQL 運算符

SQL 運算符
運算符是保留字或主要用於SQL語句的WHERE子句中的字符,用於執行操作,例如:比較和算術運算。 這些運算符用於指定SQL語句中的條件,並用作語句中多個條件的連詞。

常見運算符有以下幾種:

  • 算術運算符
  • 比較運算符
  • 邏輯運算符
  • 否定條件運算符
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

SQL 表達式

SQL 表達式
表達式是計算值的一個或多個值、運算符和SQL函數的組合。這些SQL表達式類似於公式,它們是用查詢語言編寫的。

還可以使用它們查詢數據庫中的特定數據集。

句法
 考慮SELECT語句的基本語法,如下所示:

SELECT column1, column2, columnN 
FROM table_name 
WHERE [CONDITION|EXPRESSION];

有不同類型的sql表達式,如下所示:

  • 布爾型
  • 數值型
  • 日期
    布爾表達式
     SQL布爾表達式基於匹配單個值獲取數據。
    在這裏插入圖片描述

數值表達式
 數值表達式用於在任何查詢中執行任何數學運算。

句法:

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;

這裏,數值表達式用於數學表達式或任何公式。下面是一個簡單的示例,展示了SQLNDigitic表達式的用法:
在這裏插入圖片描述
有幾個內置函數,如avg()、sum()、count()等,用於對錶或特定表列執行所謂的聚合數據計算。
在這裏插入圖片描述
日期表達式
 日期表達式返回當前系統日期和時間值:
 在這裏插入圖片描述
 另一個日期表達式如下所示:
 在這裏插入圖片描述

SQL 選擇數據庫 USE語句

SQL 選擇數據庫 USE語句
 當SQL Schema中有多個數據庫時,在開始操作之前,需要選擇一個執行所有操作的數據庫。

SQL USE語句用於選擇SQL架構中的任何現有數據庫。

句法
 USE語句的基本語法如下所示 :

USE DatabaseName;

數據庫名稱在RDBMS中必須是唯一的。

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