㈠ 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語言的理解
IN
確定給定的值是否與子查詢或列表中的值相匹配。
語法
test_expression [ NOT ] IN
(
subquery
| expression [ ,...n ]
)
參數
test_expression
是任何有效的 Microsoft® SQL Server™ 表達式。
subquery
是包含某列結果集的子查詢。該列必須與 test_expression 有相同的數據類型。
expression [,...n]
一個表達式列表,用來測試是否匹配。所有的表達式必須和 test_expression 具有相同的類型。
結果類型
布爾型
結果值
如果 test_expression 與 subquery 返回的任何值相等,或與逗號分隔的列表中的任何 expression 相等,那麼結果值就為 TRUE。否則,結果值為 FALSE。
使用 NOT IN 對返回值取反。
推薦使用:
select pub_name from publishers
where exists
(select 1 from titles where pub_id=publishers.pub_id and type='business')
來查詢,in的查詢效率很低的
以上,希望對你有所幫助!
㈢ 談談我對SQL索引的理解
樓主的整理正確!
1、索引是根據查詢語句來建立的;
2、通常後一次有索引的會比前一次快,之於快多少取決於數據量。
比如:100條數據,沒有索引時平均需要查詢50次(從頭到尾逐個比較),有索引則只需要比較大約7次(類似二分查找法);
如果是1000條數據的話,沒有索引時平均需要查詢500次,有索引則只需要比較大約11~12次。
當然對於數據量巨大(超百萬行)的數據表,資料庫中的索引可能用B+樹,那麼通常約4次比較就可確定數據范圍(在200條以內)。
另,要注意的是查詢語句寫得不好,系統就無法利用索引,比如:把欄位名放在了一個函數中、某些「<>」、等等,這方面的內容可以在網上搜到不少的。
㈣ 談談如何從本質上理解sql語句, 存儲過程,ORM之間的聯系和取捨。
所以我們需要來理解這些技術的本質。一,演變 剛開始的時候,只有sql語句,即可以用交互模式一句一句執行, 也可以用批模式執行,多行sql語句一次提交執行。 很快人們發現用批模式執行的一堆sql語言可以用過程的形式,事先存放到資料庫裡面,這就變成了存儲過程。 隨著面向對象技術的成熟,從程序中可以自動生成sql語句,這就是ORM 二,性能 很多人會說存儲過程比sql語句性能好,其實這個說法並不精確。 如果我們把一堆sql,以批的方式一次送入到伺服器,那麼伺服器,會對這一堆sql進行緩存,當下一次再度執行的時候,就好像調用一個」匿名「的存儲過程一樣。在這種情況下,性能差不多。 但是,如果我們不注意,很有可能,把可以一次提交的sql,變成了多次提交,甚至是每個循環做了一次提交,那麼性能就很差了。 也就是說如果使用sql,只要寫法得當,性能和sp區別不大。 同樣的道理,ORM的性能取決於ORM的Sql生成演算法, 和用戶使用的時候,對生成演算法的控制,比如利用好Lazy laoding等,在某些情況下,甚至可以不通過sql,畢竟沒有sql比最優化的sql還要快。三,可維護性 可維護性是選擇sql,sp,orm最主要的因素。 這裡面有點」玄「,因為不同的場景會得出不同的結論,俗稱「It depends" 剛開始的時候,sql的維護性看起來是最差,因為它往往散布在程序的每個角落。而存儲過陳都放在資料庫中,有清晰介面。 但是如果我們做一次重構,情況居然會顛倒過來。 首先,存儲過程完全可以照搬到C#中,sp的名字直接變成method的名字,sp的參數表直接變成method的參數表,(其實就是Command模式)。 其次,把這些methdod放到一個文件或者文件夾中。(所謂的DAL層,如果喜歡層的話) 通過這個重構,我們獲得了以下的好處, 1,首先是過程的調用和過程的定義放到了一起,修改起來比較方便。IDE都有定義跳轉功能。 2,過程的調用和定義同時進行版本控制,不會出現不匹配的情況。減少了sp的參數表和調用的不匹配,包括拼寫,類型,參數次序 3,單元測試非常方便 當然sp也有存在的價值,比如所謂的安全性,後面會提到。比如友好的調試環境,對於中小型項目,和初級程序員來說,也是很好的選擇。 ORM則將可維護性提升身到了一個新的高度,它試圖將sql屏蔽起來,在操作對象的同時,自動就把資料庫的事情給辦了。 ORM有兩種模式,一種是ActiveRecord, 一種是Datamapper,前者從資料庫中讀取定義,後者在程序中定義。不過由於前者往往用migration來生成資料庫,其實也是定義在程序裡面的。好的ORM都有"leaking"的設計,也就是留了個」後門「,讓你有機會用sql來控制。 微軟的linq從某個角度類說,也是一種ORM, 它的設計思想可能是因為它覺得寫sql語句比寫c#代碼效率高,所以提供直接在C#中寫sql語句的機制,再自動生成真正的sql。不過,ORM真正價值在於它可以在恰當的時候,完全拋棄sql,比如比如讀用cache,寫用queue。而微軟的linq,完全是「無厘頭」的風格,在O中用R的寫法,難道是RRM, 唯一的好處只是鎖定程序和程序員在微軟的平台上。 三,安全性 對企業來說,安全性有的時候比性能更重要,由於存儲過程在資料庫上多加了一道屏障,所以很多企業會把存儲過程作為首選。 ORM可以說是安全性最差的, 因為只有到程序運行起來,你才能知道,會產生什麼樣的sql。 但是保證安全有許多方法和方面,比如部署前的測試, 資料庫的備份,對表的許可權的設置。等。用sp來保證安全,只是多個選項中的一個。 在startup型企業中,高級程序員往往起到主導作用, 所以他們會不猶豫的選擇ORM。
㈤ sql資料庫怎麼學好
先大概的了解下常見的語法和語句,因為sql學習的東西太多了,你是記不完的。之後邊學習邊實踐,最好找個工作去實踐。把每次的問題都記錄下來,下一次遇到的時候,能想起來不用查,想不起來,再去自己記錄的內容里查找,其實主要學的是學習和使用的方法以及編程的思想,語法和一些概念把常見的記下,其餘的可以去網路上找到。我使用的是OneNote 這款軟體記錄平常遇到的問題,分類記錄。
祝君成功!
㈥ 大家說怎麼才能學好 sql 我看著查詢根本看不懂啊 能看懂的時候但是自己想不出來
大段復雜的SQL都是用最基本的select where 語句拼成的,你可以把無關的內容先去掉,就能看出最基本的框架,知道主要是干什麼
然後這些語句裡面會有很多union left join in 之類的以及一些轉換函數
你要一點點學習select基本句式和擴展句式,以及這些連接詞都是有什麼作用
再回想這個語句的基本任務,通過一段時間的學習,就能越來越明白了
沒有什麼捷徑,所謂的捷徑,就是牢固掌握最基本的語法和各種用法。
任何高深的語句都是這些基本元素堆砌的
㈦ SQl指的是什麼
SQL全稱是「結構化查詢語言(Structured Query Language)」
SQL(STructured Query Language)是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統。
SQL同時也是資料庫文件格式的擴展名。
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。他不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語言可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的一個單獨事件只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
結構化查詢語言(Structured Query Language)最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
美國國家標准局(ANSI)與國際標准化組織(ISO)已經制定了 SQL 標准。ANSI 是一個美國工業和商業集團組織,發展美國的商務和通訊標准。ANSI 同時也是 ISO 和 International Electrotechnical Commission(IEC)的成員之一。ANSI 發布與國際標准組織相應的美國標准。1992年,ISO 和 IEC 發布了 SQL 的國際標准,稱為 SQL-92。ANSI 隨之發布的相應標準是 ANSI SQL-92。ANSI SQL-92 有時被稱為 ANSI SQL。盡管不同的關聯式資料庫使用的 SQL 版本有一些差異,但大多數都遵循 ANSI SQL 標准。SQL Server 使用 ANSI SQL-92 的擴展集,稱為 T-SQL,其遵循 ANSI 制定的 SQL-92 標准。
SQL語言包含4個部分:
數據定義(DDL)語言(如CREATE, DROP,ALTER等語句)
數據操縱(DML)語言(INSERT, UPDATE, DELETE語句)
數據查詢語言(SELECT語句)
數據控制語言(如GRANT,REVOKE,COMMIT, ROLLBACK等語句)
SQL 語言包括兩種主要程式設計語言類別的陳述式: 資料定義語言 (DDL)與資料操作語言 (DML)。
㈧ 如何從零開始學習SQL
先熟悉基本的SQL語句,比如四個基本的語句比如下表,表名為a : 姓名 卡號 性別 班級 張三 001 男 1 李四 002 男 2 林采兒 003 女 2 劉靜 004 女 11,查詢語句 select * from 表名 where 條件,比如查詢性別為男的全部信息語句:select * from a where 性別='男'2,插入語句 insert into 表名 values(『','','',''),比如插入一條記錄 insert into a values (『貓三','005','男','1')2,修改語句 update 表名 set 更改值 where 條件 比如把卡號為003的性別修改為男 update a set 性別='男' where 卡號='003'4 刪除語句 delete from 表名 where 條件 ,比如刪除卡號為002的信息 :delete from a where 卡號='002'先把基本的語句掌握了,然後再深入學習復雜的語句,像 連接查詢,SQL函數的用法,一步步的學下去,慢慢就精通SQL語句了。。。