SQL回顧總結

整理自菜鳥教程

什么是SQL

SQL 指結構化查詢語言,全稱是 Structured Query Language,是用于訪問和處理數據庫的標準的計算機語言。

SQL能做什么

  • SQL 面向數據庫執行查詢
  • SQL 可從數據庫取回數據
  • SQL 可在數據庫中插入新的記錄
  • SQL 可更新數據庫中的數據
  • SQL 可從數據庫刪除記錄
  • SQL 可創建新數據庫
  • SQL 可在數據庫中創建新表
  • SQL 可在數據庫中創建存儲過程
  • SQL 可在數據庫中創建視圖
  • SQL 可以設置表、存儲過程和視圖的權限

SQL語法匯總

  • 選擇數據庫
use database;
  • 設置使用的字符集
set name utf8;
  • 讀取表中信息
SELECT * FROM table;
  • 返回唯一不同的值
SELECT DISTINCT column_name FROM table;
  • 提取滿足要求的記錄
SELECT column_name,
FROM table
WHERE column_name operator value;

WHERE子句中的運算符

WHERE子句中的運算符
  • 基于一個以上的條件對記錄進行過濾
SELECT * FROM table
WHERE country='CN'
AND|OR alexa > 50;

如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。
如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄

  • 對結果集進行排序。
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC; #默認升序,DESC降序
  • 向表中插入新記錄
INSERT INTO table_name
VALUES (value1,value2,value3,...);#無需指定要插入數據的列名,只需提供被插入的值即可:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);#指定列名及被插入的值
  • 更新表中的記錄
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
  • 刪除表中的記錄
DELETE FROM table_name
WHERE some_column=some_value;
  • 規定要返回的記錄的數目
SELECT TOP number|percent column_name(s)
FROM table_name;#SQL Server / MS Access 語法
SELECT column_name(s)
FROM table_name
LIMIT number;#MySQL 語法
  • LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

SQL 通配符
通配符可用于替代字符串中的任何其他字符,常與LIKE一起使用

通配符

MySQL 中使用 REGEXP 或 NOT REGEXP 運算符 (或 RLIKE 和 NOT RLIKE) 來操作正則表達式。

  • IN 操作符允許在 WHERE 子句中規定多個值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
  • BETWEEN 操作符用于選取介于兩個值之間的數據范圍內的值。
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
  • 為表名稱或列名稱指定別名
SELECT column_name AS alias_name
FROM table_name;#列的 SQL 別名語法
SELECT column_name(s)
FROM table_name AS alias_name;#表的 SQL 別名語法
  • SQL JOIN 子句用于把來自兩個或多個表的行結合起來(基于這些表之間的共同字段)

INNER JOIN:如果表中有至少一個匹配,則返回行

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

LEFT JOIN:關鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 NULL。

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

RIGHT JOIN:關鍵字從右表(table2)返回所有的行,即使左表(table1)中沒有匹配。如果左表中沒有匹配,則結果為 NULL。

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

FULL JOIN:只要其中一個表中存在匹配,則返回行

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
  • UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
    !注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT 語句中的列的順序必須相同
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
  • SELECT INTO 語句從一個表復制數據,然后把數據插入到另一個新表中
SELECT *
INTO newtable [IN externaldb]
FROM table1;
SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;
  • INSERT INTO SELECT 語句從一個表復制數據,然后把數據插入到一個已存在的表中。目標表中任何已存在的行都不會受影響。
INSERT INTO table2
SELECT * FROM table1;
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
  • CREATE DATABASE 語句用于創建數據庫。
CREATE DATABASE dbname;
  • CREATE TABLE 語句用于創建數據庫中的表。
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
  • SQL 約束用于規定表中的數據規則。
    如果存在違反約束的數據行為,行為會被約束終止。
    約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之后規定(通過 ALTER TABLE 語句)
CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

在 SQL 中,有如下約束:

  • NOT NULL - 指示某列不能存儲 NULL 值。
  • UNIQUE - 保證某列的每行必須有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標識,有助于更容易更快速地找到表中的一個特定的記錄。
  • FOREIGN KEY - 保證一個表中的數據匹配另一個表中的值的參照完整性。
  • CHECK - 保證列中的值符合指定的條件。
    DEFAULT - 規定沒有給列賦值時的默認值。
  • CREATE INDEX 語句用于在表中創建索引。
CREATE INDEX index_name
ON table_name (column_name)
  • DROP INDEX 語句用于刪除表中的索引
ALTER TABLE table_name DROP INDEX index_name;
  • DROP TABLE 語句用于刪除表
DROP TABLE table_name;
  • DROP DATABASE 語句用于刪除數據庫
DROP DATABASE database_name;
  • TRUNCATE TABLE 語句用于只刪除表內的數據,但并不刪除表本身
TRUNCATE TABLE table_name;
  • ALTER TABLE 語句用于在已有的表中添加、刪除或修改列。
ALTER TABLE table_name
ADD column_name datatype;#在表中添加列
ALTER TABLE table_name
DROP COLUMN column_name;#刪除表中的列
ALTER TABLE table_name
ALTER COLUMN column_name;#修改表中的列
  • AUTO INCREMENT 字段會在新記錄插入表中時生成一個唯一的數字,與SQL約束用法相似,在創建表時添加
ALTER TABLE Persons AUTO_INCREMENT=100;#設定起始值
  • SQL CREATE VIEW 語句用于創建視圖
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
  • SQL 更新視圖
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
  • SQL 撤銷視圖
DROP VIEW view_name;

SQL日期

MySQL 中的內建日期函數

SQL Date 數據類型:


MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY

SQL 函數


SQL Aggregate 函數計算從列中取得的值,返回一個單一的值。

  • AVG() - 返回平均值
  • COUNT() - 返回行數
  • FIRST() - 返回第一個記錄的值
  • LAST() - 返回最后一個記錄的值
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回總和

SQL Scalar 函數基于輸入值,返回一個單一的值。

  • UCASE() - 將某個字段轉換為大寫
  • LCASE() - 將某個字段轉換為小寫
  • MID() - 從某個文本字段提取字符
  • LEN() - 返回某個文本字段的長度
  • ROUND() - 對某個數值字段進行指定小數位數的四舍五入
  • NOW() - 返回當前的系統日期和時間
  • FORMAT() - 格式化某個字段的顯示方式
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容