標籤:

Mysql常用操作總結(上)

Mysql常用操作總結(上)

SELECT 語句用於從表中選取數據,結果被存儲在一個結果表中(稱為結果集)

查詢部分列:select 列名稱 from 表名稱

查詢所有列:SELECT * FROM 表名稱

檢索不同的值(distinct):關鍵詞作用於所有的列

SELECT DISTINCT 列名稱 FROM 表名稱 ( 關鍵詞 DISTINCT 用於返回唯一不同的值。)

如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

AND 和 OR 運算符

AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結合起來。

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

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

SELECT * FROM Persons WHERE FirstName=Thomas AND LastName=Carter

SELECT * FROM Persons WHERE firstname=Thomas OR lastname=Carter

SELECT * FROM Persons WHERE (FirstName=Thomas OR FirstName=William)

AND LastName=Carter

ORDER BY 語句

ORDER BY 語句用於根據指定的列對結果集進行排序。

ORDER BY 語句默認按照升序對記錄進行排序。

如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字,關鍵字僅作用於前面的列

SELECT Company, OrderNumber FROM Orders ORDER BY Company

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

也可以按照列的相對位置進行排序:

select 列名 from 表名稱 Order By 2 , 3(表示先對表中第2,3列排序再選擇列)

INSERT INTO 語句

向表格中插入新的行:

INSERT INTO 表名稱 VALUES (值1, 值2,....)

也可以指定所要插入數據的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

Update 語句用於修改(更新)表中的數據

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

UPDATE Person SET FirstName = Fred WHERE LastName = Wilson

要更新多個列,只需要使用一條SET命令,每個『列=值』之間用逗號分隔(最後一列不用逗號)

DELETE 語句用於刪除表中的行。

DELETE FROM 表名稱 WHERE 列名稱 = 值

刪除所有行

DELETE FROM table_name 或者 DELETE * FROM table_name

限制檢索結果(LIMIT:返回不超過制定數據行數的數據)

SELECT column_name(s)

FROM table_name

LIMIT number

(Limit 5 OFFSET 5:返回第5行起的5行數據)

LIKE 操作符用於在 WHERE 子句中搜索列中的指定模式

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern

SQL 通配符

在搜索資料庫中的數據時,SQL 通配符可以替代一個或多個字元。

SQL 通配符必須與 LIKE 運算符一起使用。

在 SQL 中,可使用以下通配符:

% 替代一個或多個字元

_ 僅替代一個字元

[charlist] 字元列中的任何單一字元

[^charlist] 或者 [!charlist] 不在字元列中的任何單一字元

使用 % 通配符

SELECT * FROM Persons

WHERE City LIKE Ne%(以Ne開頭)

SELECT * FROM Persons

WHERE City LIKE %lond%(包含lond)

使用 _ 通配符

SELECT * FROM Persons

WHERE FirstName LIKE _eorge(第一個字元後是eorge)

使用 [charlist] 通配符

SELECT * FROM Persons

WHERE City LIKE [ALN]%(以 "A" 或 "L" 或 "N" 開頭)

SELECT * FROM Persons

WHERE City LIKE [!ALN]%(不以 "A" 或 "L" 或 "N" 開頭)

SQL IN 操作符允許我們在 WHERE 子句中規定多個值

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

IN 類似 OR 功能,上述語句等價於

WHERE columnname = value1 Or column_name=value2,...

BETWEEN 操作符 會選取介於兩個值之間的數據範圍。這些值可以是數值、文本或者日期。

SELECT column_name(s)

FROM table_name

WHERE column_name

BETWEEN value1 AND value2

顯示範圍之外的人,請使用 NOT 操作符:

SELECT * FROM Persons

WHERE LastName

NOT BETWEEN Adams AND Carter

註:NOT操作符有且只有一個功能,就是否定其後所跟的任何條件,WHERE語句中用來否定其後條件的關鍵字。

select * from 表格名

WHERE NOT Column_name=Value ,選擇列名不為某值的行

通過使用 SQL,可以為列名稱和表名稱指定別名(Alias)。

表的 SQL Alias 語法

SELECT column_name(s)

FROM table_name

AS alias_name

列的 SQL Alias 語法

SELECT column_name AS alias_name

FROM table_name

SQL join 用於根據兩個或多個表中的列之間的關係,從這些表中查詢數據。

Join 和 Key

有時為了得到完整的結果,我們需要從兩個或更多的表中獲取結果。我們就需要執行 join。

資料庫中的表可通過鍵將彼此聯繫起來。主鍵(Primary Key)是一個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重複每個表中的所有數據的情況下,把表間的數據交叉捆綁在一起。

引用兩個表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons, Orders

WHERE Persons.Id_P = Orders.Id_P

等價於SQL JOIN - 使用 Join

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

INNER JOIN Orders

ON Persons.Id_P = Orders.Id_P

ORDER BY Persons.LastName

不同的 SQL JOIN

除了我們在上面的例子中使用的 INNER JOIN(內連接),我們還可以使用其他幾種連接。

下面列出了您可以使用的 JOIN 類型,以及它們之間的差異。

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

? LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行

? RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行

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

SQL INNER JOIN 關鍵字

在表中存在至少一個匹配時,INNER JOIN (內鏈接)關鍵字返回行。(和JOIN相同)

SELECT column_name(s)

FROM table_name1

INNER JOIN table_name2

ON table_name1.column_name=table_name2.column_name

LEFT JOIN 關鍵字會從左表 (table_name1) 那裡返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。

RIGHT JOIN 關鍵字會右表 (table_name2) 那裡返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。

只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列、表達式或聚集函數列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。

SELECT column_name(s) FROM table_name1 (WHERE語句)

UNION(all)

SELECT column_name(s) FROM table_name2

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


推薦閱讀:

mysql表中查找和小於某個數的所有最前面的記錄?
Cross Apply 與 Inner Join 的對抗
一條LEFT JOIN+ORDER BY的sql語句優化問題?
SQL、NoSQL還是NewSQL? 未來誰將一統資料庫?

TAG:SQL |