
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 清空表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期 & 時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字 & 圖片函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 語法
什麼是 SQL 語法?
SQL 語法是一套獨特的規則和指南,編寫 SQL 語句時必須遵循這些規則和指南。本教程透過列出所有基本的 SQL 語法,使您快速入門 SQL。
所有 SQL 語句都以 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOW 等關鍵字中的任何一個開頭,所有語句都以分號 (;) 結尾。
大小寫敏感性
這裡需要注意的最重要的一點是,SQL 不區分大小寫,這意味著SELECT 和Select 在 SQL 語句中具有相同的含義。然而,MySQL 會區分表名。因此,如果您使用的是 MySQL,則需要按照資料庫中存在的名稱提供表名。
SQL 表
讓我們考慮一個名為 CUSTOMERS 的表(如下所示),並將其用作參考,以便在同一個表上演示所有 SQL 語句。
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
SQL 語句
本教程列出了各種 SQL 語句。它們中的大多數與 MySQL、Oracle、Postgres 和 SQL Server 資料庫相容。
所有 SQL 語句都需要在每個語句的末尾使用分號 (;)。分號是分隔不同 SQL 語句的標準方法,允許在一行中包含多個 SQL 語句。
本教程中給出的所有 SQL 語句都已在 Linux 和 Windows 上的 MySQL 伺服器上進行了測試。
SQL CREATE DATABASE 語句
要在資料庫中儲存資料,您首先需要建立它。這對於區分屬於某個組織的資料是必要的。
您可以使用以下語法建立資料庫:
CREATE DATABASE database_name;
讓我們嘗試使用CREATE DATABASE 語句在 SQL 中建立一個示例資料庫sampleDB:
CREATE DATABASE sampleDB
SQL USE 語句
建立資料庫後,需要使用它才能開始相應地儲存資料。以下是將當前位置更改為所需資料庫的語法:
USE database_name;
我們可以透過在 SQL 中使用USE 語句將前面建立的 sampleDB 設定為預設資料庫:
USE sampleDB;
SQL DROP DATABASE 語句
如果資料庫不再需要,您也可以刪除它。要刪除/刪除資料庫,請使用以下語法:
DROP DATABASE database_name;
您也可以使用 SQL 中的DROP DATABASE 語句刪除 sampleDB 資料庫:
DROP DATABASE sampleDB;
SQL CREATE TABLE 語句
在 SQL 驅動的資料庫中,資料以結構化的方式儲存,即表格的形式。要建立表,使用以下語法:
CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ) );
下面的程式碼塊是一個示例,它建立了上面給出的 CUSTOMERS 表,其中 ID 作為主鍵,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) );
SQL DESC 語句
資料庫中的每個表都有其自身的結構。要顯示資料庫表的結構,我們使用 DESC 語句。以下是語法:
DESC table_name;
但是,DESC 語句僅適用於少數 RDBMS 系統;因此,讓我們透過在 MySQL 伺服器上使用 DESC 語句來看一個示例:
DESC CUSTOMERS;
SQL INSERT INTO 語句
SQL INSERT INTO 語句用於將資料插入資料庫表中。以下是語法:
INSERT INTO table_name( column1, column2....columnN) VALUES ( value1, value2....valueN);
以下示例語句將在空的 CUSTOMERS 表中建立七條記錄。
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500), (3, 'kaushik', 23, 'Kota', 2000), (4, 'Chaitali', 25, 'Mumbai', 6500), (5, 'Hardik', 27, 'Bhopal', 8500), (6, 'Komal', 22, 'Hyderabad', 4500), (7, 'Muffy', 24, 'Indore', 10000);
SQL SELECT 語句
為了從資料庫表中檢索儲存資料的 result-sets,我們使用 SELECT 語句。以下是語法:
SELECT column1, column2....columnN FROM table_name;
要從 CUSTOMERS 表中檢索資料,我們使用如下所示的 SELECT 語句。
SELECT * FROM CUSTOMERS;
SQL UPDATE 語句
當資料庫表中儲存的資料已過時且需要更新而無需刪除表時,我們使用 UPDATE 語句。以下是語法:
UPDATE table_name SET column1 = value1, column2 = value2....columnN=valueN [ WHERE CONDITION ];
為了檢視示例,以下查詢將更新 ID 號為 6 的客戶的地址。
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
SQL DELETE 語句
無需從資料庫中刪除整個表,您還可以透過應用條件來刪除資料的特定部分。這是使用 DELETE FROM 語句完成的。以下是語法:
DELETE FROM table_name WHERE {CONDITION};
以下程式碼包含一個查詢,該查詢將刪除 ID 為 6 的客戶。
DELETE FROM CUSTOMERS WHERE ID = 6;
SQL DROP TABLE 語句
當不再需要時,要從資料庫中完全刪除表,請使用以下語法:
DROP TABLE table_name;
此查詢將從資料庫中刪除 CUSTOMERS 表。
DROP TABLE CUSTOMERS;
SQL TRUNCATE TABLE 語句
TRUNCATE TABLE 語句在 SQL 中用於刪除表的資料,但不刪除表本身。使用此 SQL 語句時,表將像空表一樣保留在資料庫中。以下是語法:
TRUNCATE TABLE table_name;
以下查詢將刪除 CUSTOMERS 表的所有記錄:
TRUNCATE TABLE CUSTOMERS;
SQL ALTER TABLE 語句
ALTER TABLE 語句用於更改表的結構。例如,您可以使用此語句新增、刪除和修改列的資料。以下是語法:
ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_type};
以下是如何使用 ALTER TABLE 命令向 CUSTOMERS 表新增新列的示例:
ALTER TABLE CUSTOMERS ADD SEX char(1);
SQL ALTER TABLE 語句(重新命名)
ALTER TABLE 語句也用於更改表名。使用以下語法:
ALTER TABLE table_name RENAME TO new_table_name;
以下是如何使用 ALTER TABLE 命令重新命名 CUSTOMERS 表的示例:
ALTER TABLE CUSTOMERS RENAME TO NEW_CUSTOMERS;
SQL DISTINCT 子句
資料庫中的 DISTINCT 子句用於識別列中的非重複資料。使用 SELECT DISTINCT 語句,您可以從列中檢索不同的值。以下是語法:
SELECT DISTINCT column1, column2....columnN FROM table_name;
例如,讓我們將DISTINCT 關鍵字與 SELECT 查詢一起使用。重複的薪水 2000.00 只會檢索一次,而其他記錄將被忽略。
SELECT DISTINCT SALARY FROM CUSTOMERS ORDER BY SALARY;
SQL WHERE 子句
WHERE 子句用於透過應用條件來過濾表中的行。以下是用於從表中檢索已過濾行的語法:
SELECT column1, column2....columnN FROM table_name WHERE CONDITION;
以下查詢是一個示例,使用 SELECT 語句從 CUSTOMERS 表中獲取薪水大於 2000 的所有記錄:
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000;
SQL AND/OR 運算子
AND/OR 運算子用於在 WHERE 子句中應用多個條件。以下是語法:
SELECT column1, column2....columnN FROM table_name WHERE CONDITION-1 {AND|OR} CONDITION-2;
以下查詢是一個示例,使用 SELECT 語句從 CUSTOMERS 表中獲取薪水大於 2000 且年齡小於 25 的所有記錄:
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000 AND age < 25;
SQL IN 子句
IN 運算子用於使用 WHERE 子句檢查資料是否存在於列中。以下是語法:
SELECT column1, column2....columnN FROM table_name WHERE column_name IN (val-1, val-2,...val-N);
例如,我們想使用IN運算子顯示名稱等於'Khilan'、'Hardik'和'Muffy'(字串值)的記錄,如下所示:
SELECT * FROM CUSTOMERS WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');
SQL BETWEEN 子句
BETWEEN運算子用於使用WHERE子句從表中檢索落在特定範圍內的值。語法如下:
SELECT column1, column2....columnN FROM table_name WHERE column_name BETWEEN val-1 AND val-2;
讓我們嘗試使用BETWEEN運算子檢索AGE介於20到25之間的CUSTOMERS記錄。
SELECT * FROM CUSTOMERS WHERE AGE BETWEEN 20 AND 25;
SQL LIKE 子句
LIKE運算子用於使用WHERE子句從表中檢索與特定模式匹配的值。語法如下:
SELECT column1, column2....columnN FROM table_name WHERE column_name LIKE { PATTERN };
例如,讓我們嘗試顯示CUSTOMERS表中SALARY以200開頭的所有記錄。
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';
SQL ORDER BY 子句
ORDER BY子句用於按給定/指定的順序排列列值。語法如下:
SELECT column1, column2....columnN FROM table_name WHERE CONDITION ORDER BY column_name {ASC|DESC};
在下面的示例中,我們嘗試按客戶名稱的字母順序升序排列結果:
SELECT * FROM CUSTOMERS ORDER BY NAME ASC;
SQL GROUP BY 子句
GROUP BY子句用於將列的值組合在一起。語法如下:
SELECT SUM(column_name) FROM table_name WHERE CONDITION GROUP BY column_name;
我們嘗試按客戶的年齡對客戶進行分組,並使用以下查詢計算每個年齡組的平均工資:
SELECT ADDRESS, AGE, SUM(SALARY) AS TOTAL_SALARY FROM CUSTOMERS GROUP BY ADDRESS, AGE;
SQL COUNT 函式
COUNT函式給出指定列中非空值的個數。語法如下:
SELECT COUNT(column_name) FROM table_name WHERE CONDITION;
讓我們看一個例子:
SELECT AGE, COUNT(Name) FROM CUSTOMERS GROUP BY AGE;
SQL HAVING 子句
HAVING子句也用於透過應用條件來過濾一組行。語法如下:
SELECT SUM(column_name) FROM table_name WHERE CONDITION GROUP BY column_name HAVING (arithematic function condition);
在下面的示例中,我們嘗試檢索CUSTOMERS表中工資總和大於5000的所有記錄:
SELECT ADDRESS, AGE, SUM(SALARY) AS TOTAL_SALARY FROM CUSTOMERS GROUP BY ADDRESS, AGE HAVING TOTAL_SALARY >=5000 ORDER BY TOTAL_SALARY DESC;
SQL CREATE INDEX 語句
要建立資料庫表的索引,SQL提供CREATE INDEX語句。語法如下:
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...columnN);
讓我們使用以下查詢為現有CUSTOMERS表中名為'NAME'的列建立一個索引:
CREATE INDEX sample_index on CUSTOMERS(NAME);
SQL DROP INDEX 語句
DROP INDEX語句用於從表中刪除索引。語法如下:
DROP INDEX index_name ON table_name;
讓我們使用以下查詢刪除之前為現有CUSTOMERS表中名為'NAME'的列建立的索引:
DROP INDEX sample_index on CUSTOMERS;