select 列名 from 表;正則表達式
SQL語句不區分大小寫算法
在處理SQL語句的時候,空格是忽略的。sql
限制結果 只會輸出若干條,例如:SELECT 列名 FROM 表 LIMIT 5;數據庫
返回很少於5行,有助於性能提高。安全
LIMIT 5,5; 返回從行5開始的5行,新版本的LIMIT 5 OFFSET 5;函數
排序檢索數據性能
指定排序方向 默認升序ASC 若是要降序排列 DESCspa
通常狀況下排序不區分大小寫code
使用ORDER BY 和 LIMIT 找出一列的最大值或最小值排序
SELECT 列 FROM 表 WHERE 條件
支持 = <> != < <= >= BETWEEN
BETWEEN 常與 AND 連用
IN 和 OR 有相同的功能
可是IN具備以下優勢:
搜索是區分大小寫的
%能夠匹配0個、一個、多個字符,可是不能匹配到NULL
下劃線(_)通配符 只能匹配單個字符
LIKE 和 REGEXP 的差異 LIKE 不能匹配到行內的內容 可是REGEXP能夠匹配到行內的內容
正則表達式匹配不區分大小寫
若是要區分大小寫 須要使用BINARY關鍵字 如
WHERE prod_name REGEXP BINARY 'Jey .000'
複製代碼
進行OR匹配 如1000|200|300
匹配幾個字符之一 [123] Ton 匹配1或2或3
匹配範圍[1-3]
匹配特殊字符 '.'
定位符 ^ 文本的開始 $文本的結束
建立計算字段
拼接 將值聯結到一塊兒構成單個值
能夠使用Concat()函數實現
RTrim()函數去掉值右邊的全部空格
相似的還有LTrim() Trim()
AS 使用別名
Upper()將文本轉換爲大寫 對應的還有Lower()
Left() 返回串左邊的字符
Length() 返回串的長度
Locate() 找到串的一個子串
SubString() 返回子串的字符
Soundex() 返回串的SOUNDEX值
SOUNDEX是一個將任意文本字符串轉化爲描述其語音表示的字母數字模式的算法
Abs() 返回一個數的絕對值
Cos () 返回一個角度的餘弦
Exp 返回一個數的指數值
Mod 返回除操做的餘弦
Pi 返回圓周率
Rand() 返回一個隨機數
Sin() 返回一個角度的正弦
Sqrt() 返回一個數的平方根
Tan() 返回一個角度的正切
AVG() 返回某列的平均值 只能用於單列 忽略值爲NULL的行
COUNT() 返回某列的行數 COUNT(*) 對全部行的數目 進行統計 COUNT(column) 對指定列中具備值的行進行計數,忽略NULL值。
MAX() 返回某列的最大值
MAX() 對文本數據進行計算時 返回最後一行
MIN () 返回某列的最小值 MIN ()對文本數據進行計算時 返回最前面一行
SUM() 返回某列的值的和
DISTINCT()
GROUP BY
HAVING
HAVING和WHERE的差異
WHERE在數據分組前進行過濾
HAVING在數據分組後進行過濾
SELECT -> FROM -> WHERE -> GROUP BY ->HAVING -> ORDER BY -> LIMIT
SELECT 列 FROM 表 WHERE 條件 IN( SELECT 條件 FROM 表 WHERE 另外一個條件)
複製代碼
建議格式化SQL
相關子查詢 涉及到外部查詢的子查詢
Join
SELECT vend_name,prod_name,prod_price FROM vebdors INNER JOIN products ON vendirs.vend_id = products.vend_id
複製代碼
笛卡兒積 由沒有聯結條件的表關係返回的結果是笛卡兒積
SELECT p1.prod_id,p1.prod_name FROM products AS p1,products AS p2
WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR'
複製代碼
必須由兩條或者兩條以上的SELECT語句構成
每一個查詢必須包含相同的列表達式或聚合函數
UNION會從查詢結果中集中的自動去除了重複的行
兩個最常使用的引擎爲MyISAM和InnoDB,
前者支持全文本搜索,然後者不支持。
INSERT INTO Customers VALUES(***)
複製代碼
簡單 可是並不安全 不建議使用
在表名後的括號裏明確地給出列名是一種繁瑣而安全的方式,建議使用
爲了提高總體的性能
若是數據檢索是重要的,就能夠在INSERT 和 INTO 之間加入LOW_PRIORITY
提升INSERT的性能 由於MySQL用單條INSERT語句處理多個插入比使用多條INSERT語句快
由三部分組成
刪除的是表的內容而不是表
若是要刪除全部行 可以使用TRUNCATE TABLE 語句
CREATE TABLE 表名 IF NOT EXISTS
複製代碼
InnoDB 是一個可靠的事務處理引擎,不支持全文本搜索
MEMORY 在功能上等同於MyISAM 可是數據存儲在內存(不是磁盤),速度很快
MyISAM 是一個性能極高的引擎,支持全文本搜索,但不支持事務處理
DROP TABLE
複製代碼
RENAME TABLE
複製代碼
視圖僅僅是用於查看存儲在別處的數據的一種設施,視圖自己不包含數據
CREATE VIEW 語句來建立
複製代碼
所謂的存儲過程 就是爲之後的使用而保存的一條或者多條MySQL語句的集合
主要有三個好處, 簡單 安全 高性能
CREATE PROCEDURE productpricing()
BEGIN
SELECT ...
FROM
END;
複製代碼
CALL productpricing()
複製代碼
刪除相似表的刪除
只能用於存儲過程
使用遊標的步驟
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
END;
複製代碼
打開遊標 OPEN
關閉遊標 CLOSE
觸發器是MySQL響應一下任意語句而自動執行的一條MySQL語句
支持 DELETE INSERT UPDATE
使用CREATE TRIGGER 建立
例如
GREATE TRIGGER new AFTER INSERT ON products FOR EACH ROW SELECT 「***」
複製代碼
事務:指一組SQL語句
回退:指撤銷指定SQL語句的過程
提交:指將未存儲的SQL語句結果寫入數據庫表
保留點:指事務處理中設置的臨時佔位符
開始事務
START TRANSACTION
...
ROLLBACK
複製代碼