sql反模式
❶ 如何學好sql
先學SQL,把子查詢,group by, order by, having, union, exists, in, join, left join, inner join 搞得明明白白
裝個SQL 2005,裝兩個實例。裝service pack。裝了卸,卸了裝,直到嘔吐(嘿嘿)
把login, user, schema, linked server這些基本概念搞清
把不同的系統許可權,用戶許可權學習一遍
建資料庫,備份資料庫,全備份,增量備份,日誌備份
建表,寫SQL建表,把常用數據類型搞懂,邊建表,學習update/delete邊插入/刪除記錄,邊做備份
然後恢復資料庫,恢復全備份,恢復到某個標記,恢復到某個時間點
用SQL命令把上面的這些操作做一遍(都有SQL的,不要只會用滑鼠點來點去)
DBCC的一些常用命令
好好學習一下索引,用SQL建索引,各種各樣的索引
建幾個表,分別有1千條記錄,1萬條記錄,10萬條記錄,100萬條記錄,500萬條記錄
每建一個表,就看看資料庫如何變大,日誌如何變大,如果沒看懂,恢復資料庫到前一個狀態再做....
把資料庫縮小,放大,增加數據文件,把數據文件放在不同硬碟上,把日誌截斷(雖然小了,但看看還能不能恢復)
把主鍵,外鍵,約束,默認值,數據類型等基本概念搞清楚
然後開始在上面玩索引和各種查詢,玩玩備份和恢復,刪除50萬條記錄,插入10萬條記錄,等等
看你的硬碟小燈亂閃,CPU冒煙,你就對性能和速度開始關注了(嘿嘿)
就會想著怎麼優化一下你的SQL,怎麼優化索引等這些問題了。
學習T-SQL的一些基本東西,學習一下存儲過程,觸發器
到這里多回答別人的問題,幫別人寫點存儲過程,觸發器的代碼,多看別人怎麼寫的,怎麼解決問題的。
到這里,你應該有不錯的基本功了。
如果對資料庫開發有興趣呢,T-SQL要熟悉,會分析execution plan,對索引比較精通,然後就是要使用的程序語言
如果要做DBA,我覺得一個好的DBA應該有很好的開發方面的經驗,
主動爭取維護一下開發環境下的資料庫,首先是每天都備份,然後看看有沒有可以優化的地方。
多關注性能,安全,備份/恢復,高可用性方面的東西。試試資料庫復制,日誌轉移,數據鏡像,如果有機會再試試集群
❷ SQL書籍推薦
1、《SQL必知必會》
福達著, 鍾鳴、劉曉霞譯
這本書由淺入深地講解了SQL的基本概念和語法,涉及數據的排序、過濾和分組,以及表、視圖、聯結、子查詢、游標、存儲過程和觸發器等內容,實例豐富,便於查閱。新版增加了針對ApacheOpenOfficeBase、MariaDB、SQlite等DBMS的描述,並根據新版本的Oracle、SQLServer、MySQL和PostgreSQL更新了相關示例,非常適合初學者。
2、《SQL基礎教程》
MICK 著, 孫淼、羅勇 譯
這本書豆瓣評分9.0,重印13次,第2版基於新版本RDBMS全面升級,並新增一章介紹從應用程序執行SQL語句的方法。本書從資料庫、表的結構到查詢、更新表的語法,常用的函數,表的聯結等,內容逐步深入。對於初學者常見的疑難點,均通過專欄進行講解。各章節後精心設計了練習題,幫助讀者鞏固理解
3、《SQL Cookbook》
Anthony Molinaro 著
本書是一本指南,其中包含了一系列SQL 的常用問題以及它們的解決方案,希望能對讀者的日常工作有所幫助。有150 多個小節,這還僅僅是SQL 所能做的事情的一鱗半爪,而這本書更主要的是讓讀者看到,SQL 能夠做多少一般認為是SQL 問題范圍之外的事情。
4、《深入淺出SQL(中文版)》
貝里 著,O『Reilly Taiwan 譯
這本對所有沒SQL基礎的人來說都是本好書,幽默的語言,緊湊的內容,而且還有生動的圖畫,這無非給了初學者一個很好的開始,不僅會信心大增,也會提高學習興趣,同時對後續的提高也打下了基礎。著重基本語法的理解和基本概念的闡述,穿插在各個章節的練習題恰好提供了鞏固作用,如果你正苦於尋找一本SQL入門書籍,那麼它一定是不二之選
5、《SQL 反模式》
Bill Karwin 著,譚振林 / Push Chen 譯
《SQL反模式》是一本廣受好評的SQL圖書。它介紹了如何避免在SQL的使用和開發中陷入一些常見卻經常被忽略的誤區。它通過講述各種具體的案例,以及開發人員和使用人員在面對這些案例時經常採用的錯誤解決方案,來介紹如何識別、利用這些陷阱,以及面對問題時正確的解決手段。另外,《SQL反模式》還涉及了SQL的各級範式和針對它們的正確理解。
❸ SQL書籍推薦
1、《SQL必知必會》
福達著, 鍾鳴、劉曉霞譯
這本書由淺入深地講解了SQL的基本概念和語法,涉及數據的排序、過濾和分組,以及表、視圖、聯結、子查詢、游標、存儲過程和觸發器等內容,實例豐富,便於查閱。新版增加了針對ApacheOpenOfficeBase、MariaDB、SQlite等DBMS的描述,並根據新版本的Oracle、SQLServer、MySQL和PostgreSQL更新了相關示例,非常適合初學者。
2、《SQL基礎教程》
MICK 著, 孫淼、羅勇 譯
這本書豆瓣評分9.0,重印13次,第2版基於新版本RDBMS全面升級,並新增一章介紹從應用程序執行SQL語句的方法。本書從資料庫、表的結構到查詢、更新表的語法,常用的函數,表的聯結等,內容逐步深入。對於初學者常見的疑難點,均通過專欄進行講解。各章節後精心設計了練習題,幫助讀者鞏固理解
3、《SQL Cookbook》
Anthony Molinaro 著
本書是一本指南,其中包含了一系列SQL 的常用問題以及它們的解決方案,希望能對讀者的日常工作有所幫助。有150 多個小節,這還僅僅是SQL 所能做的事情的一鱗半爪,而這本書更主要的是讓讀者看到,SQL 能夠做多少一般認為是SQL 問題范圍之外的事情。
4、《深入淺出SQL(中文版)》
貝里 著,O『Reilly Taiwan 譯
這本對所有沒SQL基礎的人來說都是本好書,幽默的語言,緊湊的內容,而且還有生動的圖畫,這無非給了初學者一個很好的開始,不僅會信心大增,也會提高學習興趣,同時對後續的提高也打下了基礎。著重基本語法的理解和基本概念的闡述,穿插在各個章節的練習題恰好提供了鞏固作用,如果你正苦於尋找一本SQL入門書籍,那麼它一定是不二之選
5、《SQL 反模式》
Bill Karwin 著,譚振林 / Push Chen 譯
《SQL反模式》是一本廣受好評的SQL圖書。它介紹了如何避免在SQL的使用和開發中陷入一些常見卻經常被忽略的誤區。它通過講述各種具體的案例,以及開發人員和使用人員在面對這些案例時經常採用的錯誤解決方案,來介紹如何識別、利用這些陷阱,以及面對問題時正確的解決手段。另外,《SQL反模式》還涉及了SQL的各級範式和針對它們的正確理解。
❹ MySQL中SQL模式的特點總結
前言
SQL模式影響MySQL支持的SQL語法和執行的數據驗證檢查。
MySQL伺服器可以在不同的SQL模式下運行,並且可以針對不同的客戶端以不同的方式應用這些模式,具體取決於sql_mode系統變數的值。DBA可以設置全局SQL模式以匹配站點伺服器操作要求,並且每個應用程序可以將其會話SQL模式設置為其自己的要求。
模式會影響MySQL支持的SQL語法以及它執行的數據驗證檢查。這使得在不同環境中使用MySQL以及將MySQL與其他資料庫伺服器一起使用變得更加容易。
下面話不多說了,來一起看看詳細的介紹吧
設置SQL模式
要在運行時更改SQL模式,請sql_mode使用以下SET
語句設置全局或會話
系統變數
SET
GLOBAL
sql_mode
=
'modes';
SET
SESSION
sql_mode
=
'modes';
模式列表
模式
注釋
ALLOW_INVALID_DATES
無效日期會生成錯誤
ERROR_FOR_DIVISION_BY_ZERO
除0錯誤
NO_BACKSLASH_ESCAPES
禁止使用反斜杠字元(\)作為字元串中的轉義字元。啟用此模式後,反斜杠就像其他任何一個普通字元一樣。
NO_UNSIGNED_SUBTRACTION
在整數值之間減去(其中一個是類型)
UNSIGNED,默認情況下會產生無符號結果。如果結果否則為負,則會導致錯誤
NO_ZERO_IN_DATE
'0000-00-00'
則允許並且插入產生警告
ONLY_FULL_GROUP_BY
select
內指定欄位必須出現在
groupby
中,否則錯誤
STRICT_TRANS_TABLES
為事務存儲引擎啟用嚴格的SQL模式,並在可能的情況下為非事務性存儲引擎啟用。
STRICT_ALL_TABLES
為所有存儲引擎啟用嚴格SQL模式。無效的數據值被拒絕。
詳情請參考
https://dev.mysql.com/doc/ref...
嚴格SQL模式
MySQL伺服器可以在不同的SQL模式下運行,並且可以針對不同的客戶端以不同的方式應用這些模式,具體取決於sql_mode系統變數的值。在嚴格SQL模式下,伺服器會將某些警告升級為錯誤。
嚴格SQL模式適用於以下語句
ALTER
TABLE
CREATE
TABLE
CREATE
TABLE
...
SELECT
DELETE
INSERT
LOAD
DATA
LOAD
XML
SELECT
SLEEP()
UPDATE
在存儲的程序中,如果在嚴格模式生效時定義了程序,則列出的類型的單個語句將以嚴格的SQL模式執行。
嚴格的SQL模式適用於以下錯誤,表示輸入值無效或缺失的一類錯誤。如果值具有錯誤的列數據類型或可能超出范圍,則該值無效。如果要插入的新行不包含其定義中NOT
NULL沒有顯式DEFAULT子句的列的值,則缺少值。
ER_BAD_NULL_ERROR
ER_CUT_VALUE_GROUP_CONCAT
ER_DATA_TOO_LONG
ER_DATETIME_FUNCTION_OVERFLOW
ER_DIVISION_BY_ZERO
ER_INVALID_ARGUMENT_FOR_LOGARITHM
ER_NO_DEFAULT_FOR_FIELD
ER_NO_DEFAULT_FOR_VIEW_FIELD
ER_TOO_LONG_KEY
ER_TRUNCATED_WRONG_VALUE
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
ER_WARN_DATA_OUT_OF_RANGE
ER_WARN_NULL_TO_NOTNULL
ER_WARN_TOO_FEW_RECORDS
ER_WRONG_ARGUMENTS
ER_WRONG_VALUE_FOR_TYPE
WARN_DATA_TRUNCATED
致謝
感謝你看到這里,希望本篇文章可以幫到你,謝謝。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:如何開啟mysql中的嚴格模式學習SQL語句(強大的group
by與select
from模式)老生常談MYSQL模式匹配
REGEXP和like的用法Mysql
SQL伺服器模式介紹PHP基於單例模式實現的mysql類NoSQL反模式
-
文檔資料庫篇mysql中binlog_format模式與配置詳細分析mysql啟用skip-name-resolve模式時出現Warning的處理辦法