sql 語言
DDL
DDL 全稱 Data Definition Language,即資料定義語言。
DATABASE
建立資料庫
CREATE DATABASE
語句用于建立資料庫。
CREATE DATABASE database_name;
撤銷資料庫
DROP DATABASE
語句用于撤銷資料庫。
DROP DATABASE database_name;
TABLE
建立表
CREATE TABLE
語句用于建立資料庫中的表。
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
撤銷表
DROP TABLE
語句用于撤銷資料庫中的表。
DROP 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
MODIFY COLUMN column_name datatype;
INDEX
建立索引
CREATE INDEX
語句用于在表中建立索引。
CREATE INDEX index_name
ON table_name (column_name)
建立唯一索引
CREATE UNIQUE INDEX
語句用于在表中建立唯一索引。
在表上建立一個唯一的索引。不允許使用重複的值:唯一的索引意味着兩個行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
撤銷索引
Oracle 方法:
DROP INDEX index_name
Mysql 方法:
ALTER TABLE table_name DROP INDEX index_name
VIEW
視圖是基于 SQL 語句的結果集的可視化的表。
視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個資料庫中的真實的表中的字段。
注:視圖總是顯示最新的資料!每當使用者查詢視圖時,資料庫引擎通過使用視圖的 SQL 語句重建資料。
建立視圖
CREATE VIEW
語句用于建立視圖。
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
撤銷視圖
DROP VIEW
語句用于撤銷視圖。
DROP VIEW view_name;
修改視圖
CREATE OR REPLACE VIEW
語句用于修改視圖。
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
DML
DML 全稱 Data Manipulation Language,即資料操縱語言。
INSERT
INSERT INTO
語句用于向表中插入新記錄。
第一種形式無需指定要插入資料的列名,隻需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二種形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
UPDATE
UPDATE
語句用于更新表中的記錄。
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
DELETE
DELETE
語句用于删除表中的記錄。
DELETE FROM table_name
WHERE some_column=some_value;
DQL
DQL 全稱 Data Query Language,即資料查詢語言。
SELECT
SELECT column_name(s)
FROM table_name
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
DISTINCT
WHERE
WHERE
子句用于過濾查詢條件。
下面的運算符可以在 WHERE 子句中使用:
運算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注釋:在 SQL 的一些版本中,該操作符可被寫成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
AND | 前後兩個條件都成立 |
OR | 前後兩個條件有一個成立 |
BETWEEN | 在某個範圍内 |
IN | 指定針對某個列的多個可能值 |
LIKE | 搜尋某種模式 |
AND & OR
AND & OR 運算符用于基于一個以上的條件對記錄進行過濾。
SELECT column_name(s)
FROM table_name
WHERE condition1 AND condition2;
SELECT column_name(s)
FROM table_name
WHERE condition1 OR condition2;
BETWEEN 操作符用于選取介于兩個值之間的資料範圍内的值。
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
IN 操作符允許您在 WHERE 子句中規定多個值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
LIKE 操作符用于在 WHERE 子句中搜尋列中的指定模式。
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
通配符
通配符可用于替代字元串中的任何其他字元。在 SQL 中,通配符與 SQL LIKE 操作符一起使用。
在 SQL 中,可使用以下通配符:
% | 替代 0 個或多個字元 |
_ | 替代一個字元 |
[charlist] | 字元列中的任何單一字元 |
[^*charlist*]或[!charlist] | 不在字元列中的任何單一字元 |
ORDER BY
ORDER BY
關鍵字用于對結果集進行排序。
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
注:表示升序;
ASC
表示降序。
DESC
GROUP BY
GROUP BY
語句用于結合聚合函數,根據一個或多個列對結果集進行分組。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
例:
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組資料。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
JOIN
JOIN
子句用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。
在我們繼續講解執行個體之前,我們先列出您可以使用的不同的 SQL JOIN 類型:
- INNER JOIN:如果表中有至少一個比對,則傳回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
- LEFT JOIN:即使右表中沒有比對,也從左表傳回所有的行
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
- RIGHT JOIN:即使左表中沒有比對,也從右表傳回所有的行
SELECT column_name(s)
FROM table1
RIGHT 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
UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 内部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料類型。同時,每個 SELECT 語句中的列的順序必須相同。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
--如果允許重複
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
FAQ
CRUD:是指Create、Retrieve、Update 和 Delete 的首字母,合指增删改查。