SQL Fiddle(在線執行SQL語句的網站)css
- http://www.sqlfiddle.com/
MySQLhtml
MySQL :: MySQL 5.7 Reference Manual :: 13 SQL Statement Syntaxmysql
- https://dev.mysql.com/doc/refman/5.7/en/sql-syntax.html
mySQL(關係型數據庫管理系統)_百度百科面試
- https://baike.baidu.com/item/mySQL/471251?fr=aladdin
MySQL 教程 | 菜鳥教程正則表達式
- http://www.runoob.com/mysql/mysql-tutorial.html
面試總結之Database / SQL - 浩然119 - 博客園sql
MySQL知識點總結數據庫
MySql語句大全:建立、受權、查詢、修改等segmentfault
- http://blog.csdn.net/evankaka/article/details/45580845
一份很是完整的MySQL規範安全
MySQL 索引原理及設計 - 數據庫開發性能優化
- https://mp.weixin.qq.com/s/1MNj9v3IfKR9FUiA92mXFA
- https://icell.io/how-mysql-index-works/
終於把MySQL索引的那些事兒說清楚了
圖解MySQL索引--B-Tree(B+Tree)
MySQL索引和SQL調優手冊
這種 SQL 寫法會致使索引失效?
我想說:MySQL的join真的很弱
史上最全SQL優化方案 - CSDN雲計算
- https://mp.weixin.qq.com/s/x5oguwfTC8fhqzFfR4Fpug
12 條 MySQL 優化技巧 - 數據分析與開發
- https://mp.weixin.qq.com/s/ykvH4HEGbG7FPG4AtnXwqQ
MySQL數據庫優化
- https://mp.weixin.qq.com/s/eBHM3YQ2vAZAN6xiY5fxWw
- https://segmentfault.com/a/1190000018631870
MySQL性能優化之神技
SQL 性能優化梳理
MySQL慢查詢記錄原理和內容解析
MySQL EXPLAIN結果集分析 - 附帶大量案例
億級用戶的分佈式數據存儲解決方案
架構祕笈:移花接木。使用MySQL模擬Redis
8種常被忽視的SQL錯誤用法 - 數據庫開發
- https://mp.weixin.qq.com/s/6_M-Z-XimG8DgkVW85-6Hw
- https://yq.aliyun.com/articles/72501
10種常見的MySQL錯誤,你可中招?
- MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。
- 如下爲在MySQL數據庫中查詢數據通用的 SELECT 語法:SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ] [LIMIT N]
- 你能夠經過OFFSET指定SELECT語句開始查詢的數據偏移量。默認狀況下偏移量爲0。
- 你可使用 LIMIT 屬性來設定返回的記錄數。
- WITH ROLLUP 能夠實如今分組統計數據基礎上再進行相同的統計(SUM,AVG,COUNT…)。
- 咱們可使用 coalesce 來設置一個能夠取代 NUll 的名稱
- 咱們已經知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句來讀取數據表中的數據,可是當提供的查詢條件字段爲 NULL 時,該命令可能就沒法正常工做。爲了處理這種狀況,MySQL提供了三大運算符:關於 NULL 的條件比較運算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
- IS NULL: 當列的值是 NULL,此運算符返回 true。
- IS NOT NULL: 當列的值不爲 NULL, 運算符返回 true。
- <=>: 比較操做符(不一樣於=運算符),當比較的的兩個值爲 NULL 時返回 true。
- 在 MySQL 中,NULL 值與任何其它值的比較(即便是 NULL)永遠返回 false,即 NULL = NULL 返回false 。
- MySQL 中處理 NULL 使用 IS NULL 和 IS NOT NULL 運算符。
- MySQL 一樣也支持其餘正則表達式的匹配, MySQL中使用 REGEXP 操做符來進行正則表達式匹配。
- 下表中的正則模式可應用於 REGEXP 操做符中。
模式 |
描述 |
^ |
匹配輸入字符串的開始位置。若是設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 以後的位置。 |
$ |
匹配輸入字符串的結束位置。若是設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 以前的位置。 |
. |
匹配除 "\n" 以外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。 |
[...] |
字符集合。匹配所包含的任意一個字符。例如, '[abc]' 能夠匹配 "plain" 中的 'a'。 |
[^...] |
負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 能夠匹配 "plain" 中的'p'。 |
p1|p2|p3 |
匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。 |
* |
匹配前面的子表達式零次或屢次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。 |
+ |
匹配前面的子表達式一次或屢次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。 |
{n} |
n 是一個非負整數。匹配肯定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',可是能匹配 "food" 中的兩個 o。 |
{n,m} |
m 和 n 均爲非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。
|
- MySQL 事務主要用於處理操做量大,複雜度高的數據。好比說,在人員管理系統中,你刪除一我的員,你即須要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操做語句就構成一個事務!
- 在 MySQL 中只有使用了 Innodb 數據庫引擎的數據庫或表才支持事務。
- 事務處理能夠用來維護數據庫的完整性,保證成批的 SQL 語句要麼所有執行,要麼所有不執行。
- 事務用來管理 insert,update,delete 語句
- 通常來講,事務是必須知足4個條件(ACID): Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(可靠性)在 MySQL 命令行的默認設置下,事務都是自動提交的,即執行 SQL 語句後就會立刻執行 COMMIT 操做。所以要顯式地開啓一個事務務須使用命令 BEGIN 或 START TRANSACTION,或者執行命令 SET AUTOCOMMIT=0,用來禁止使用當前會話的自動提交。
- 一、事務的原子性:一組事務,要麼成功;要麼撤回。
- 二、穩定性 :有非法數據(外鍵約束之類),事務撤回。
- 三、隔離性:事務獨立運行。一個事務處理後的結果,影響了其餘事務,那麼其餘事務會撤回。事務的100%隔離,須要犧牲速度。
- 四、可靠性:軟、硬件崩潰後,InnoDB數據表驅動會利用日誌文件重構修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 選項 決定何時吧事務保存到日誌裏。
- 若是須要修改字段類型及名稱, 你能夠在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
- 有四種方式來添加數據表的索引:你可使用 SHOW INDEX 命令來列出表中的相關的索引信息。能夠經過添加 \G 來格式化輸出信息。
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 該語句添加一個主鍵,這意味着索引值必須是惟一的,且不能爲NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 這條語句建立索引的值必須是惟一的(除了NULL外,NULL可能會出現屢次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出現屢次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):該語句指定了索引爲 FULLTEXT ,用於全文索引。
- 你也可使用 SHOW TABLES 或 SHOW DATABASES 語句來獲取數據庫和數據表列表。
- 如下命令語句能夠在 MySQL 的命令提示符使用,也能夠在腳本中 使用,如PHP腳本。
命令 |
描述 |
SELECT VERSION( ) |
服務器版本信息 |
SELECT DATABASE( ) |
當前數據庫名 (或者返回空) |
SELECT USER( ) |
當前用戶名 |
SHOW STATUS |
服務器狀態 |
SHOW VARIABLES |
服務器配置變量 |
- MySQL中最簡單使用序列的方法就是使用 MySQL AUTO_INCREMENT 來定義列。
- 如下咱們將統計表中 first_name 和 last_name的重複記錄數:SELECT COUNT(*) as repetitions, last_name, first_name FROM person_tbl GROUP BY last_name, first_name HAVING repetitions > 1;
- 若是你須要讀取不重複的數據能夠在 SELECT 語句中使用 DISTINCT 關鍵字來過濾重複數據。你也可使用 GROUP BY 來讀取數據表中不重複的數據:SELECT last_name, first_name FROM person_tbl GROUP BY (last_name, first_name);
- 固然你也能夠在數據表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重複記錄。
- 若是您經過網頁獲取用戶輸入的數據並將其插入一個MySQL數據庫,那麼就有可能發生SQL注入安全的問題。所謂SQL注入,就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
- 防止SQL注入,咱們須要注意如下幾個要點:
- 1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,能夠經過正則表達式,或限制長度;對單引號和 雙"-"進行轉換等。
- 2.永遠不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
- 3.永遠不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。
- 4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
- 5.應用的異常信息應該給出儘量少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
- 6.sql注入的檢測方法通常採起輔助軟件或網站平臺來檢測,軟件通常採用sql注入檢測工具jsky,網站平臺就有億思網站安全平臺檢測工具。MDCSOFT SCAN等。採用MDCSOFT-IPS能夠有效的防護SQL注入,XSS攻擊等。