天天看點

sql 語言sql 語言FAQ

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 的首字母,合指增删改查。