當前位置:首頁 » 編程語言 » sql程序員寶典
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql程序員寶典

發布時間: 2022-06-22 19:54:16

sql 語句,求金典SQL語句 鄙人是JAVA程序員,但一碰到資料庫就亂了,SQL語句很難找。

Group by語句

需求:現在想求,求每個部門的平均薪水.
select avg(sal) from emp group by deptno;
select deptno avg(sal) from emp group by deptno;

select deptno,job,max(sal) from emp group by deptno,job;

求薪水值最高的人的名字.
select ename,max(sal) from emp;出錯,因為max只有一個值,但等於max值的人可能好幾個,不能匹配.
應如下求:
select ename from emp where sal=(select max(sal) from emp);

Group by語句應注意,

出現在select中的欄位,如果沒出現在組函數中,必須出現在Group by語句中.

Having 對分組結果篩選

Where是對單條紀錄進行篩選,Having是對分組結果進行篩選.

select avg(sal),deptno from emp
group by deptno
having avg(sal)>2000;

查詢工資大於1200雇員,按部門編號進行分組,分組後平均薪水大於1500,按工薪倒充排列.
select * from emp
where sal>1200
group by deptno
having avg(sal)>1500
order by avg(sal) desc;

誰掙的錢最多(誰:這個人的名字, 錢最多)

select 語句中嵌套select 語句,可以在where,from後.

問那些人工資,在平均工資之上.

select ename,sal from emp where sal>(select avg(sal) from emp);

查找每個部門掙錢最多的那個人的名字.
select ename ,deptno from emp where sal in(select max(sal) from ename group by deptno) 查詢會多值.

應該如下:

select max(sal),deptno from emp group by deptno;當成一個表.語句如下:
select ename, sal from emp join(select max(sal) max_sal,deptno from emp group
by deptno) t on(emp.sal=t.max_sal and emp.deptno=t.deptno);

每個部門的平均薪水的等級.
分析:首先求平均薪水(當成表),把平均薪水和另外一張表連接.

② 關於資料庫的書是不是清華大學出的比較好

我覺得不能簡單地說哪個出版社出得書好,雖然我一直比較喜歡清華大學出版社出的計算機類的書,因為他們的書寫的比較淺顯易懂,不像上學時用的教科書,好多都是填鴨式的理論說教;
要根據你的目的去選書:
如果想考資料庫工程師,那就必須多看理論方面的,有《資料庫系統概論》清華大學 史嘉權
如果偏於實用,就是做網站或者程序的時候寫一些訪問資料庫的代碼,可以選《程序員的SQL金典》(SQL Server方面)—寫給程序員的資料庫寶典,楊中科;
綜合類的:DBA,資料庫初學者,程序員都可以用的有
《SQL.Server.2008寶典》劉智勇、劉徑舟,電子工業出版社;
《SQL.Server.2008編程入門經典(第3版)》Robert Vieria (美) 清華大學出版社出版 這個看起來更是深入淺出;
以上都是關於SQL Server的,Oracle方面我了解的不多;
《ORACLE.10G入門與實踐》林慧龔濤 中國鐵道工業出版社出版
資料庫綜合類的(包括SQL Server 、Oracle、DB2等主流資料庫):
《SQL.Cookbook》Antbony Molinaro 清華大學出版社出版 偏重於資料庫的實際操作;
《SQL寶典》人民郵電出版社,這個比較全,入門了以後可以做參考書;

③ 如何書寫高效的SQL語句

優化SQL查詢:如何寫出高性能SQL語句
1、首先要搞明白什麼叫執行計劃?
執行計劃是資料庫根據SQL語句和相關表的統計信息作出的一個查詢方案,這個方案是由查詢優化器自動分析產生欀如一條SQL語句如果用來從一個10萬條記錄的表中查1條記錄,那查詢優化器會選擇「索引查找」方式,如果該表進行了歸檔,當前只剩下5000條記錄了,那查詢優化器就會改變方案,採用 「全表掃描」方式。
可見,執行計劃並不是固定的,它是「個性化的」。產生一個正確的「執行計劃」有兩點很重要:
(1) SQL語句是否清晰地告訴查詢優化器它想干什麼?
(2) 查詢優化器得到的資料庫統計信息是否是最新的、正確的?
2、統一SQL語句的寫法
對於以下兩句SQL語句,程序員認為是相同的,資料庫查詢優化器認為是不同的。
select * from al
select * From al
其實就是大小寫不同,查詢分析器就認為是兩句不同的SQL語句,必須進行兩次解析。生成2個執行計劃。
所以作為程序員,應該保證相同的查詢語句在任何地方都一致,多一個空格都不行!
3、不要把SQL語句寫得太復雜
我經常看到,從資料庫中捕捉到的一條SQL語句列印出來有2張A4紙這么長。一般來說這么復雜的語句通常都是有問題的。我拿著這2頁長的SQL語句去請教原作者,結果他說時間太長,他一時也看不懂了。可想而知,連原作者都有可能看糊塗的SQL語句,資料庫也一樣會看糊塗。
一般,將一個Select語句的結果作為子集,然後從該子集中再進行查詢,這種一層嵌套語句還是比較常見的,但是根據經驗,超過3層嵌套,查詢優化器就很容易給出錯誤的執行計劃。因為它被繞暈了。像這種類似人工智慧的東西,終究比人的分辨力要差些,如果人都看暈了,我可以保證資料庫也會暈的。
另外,執行計劃是可以被重用的,越簡單的SQL語句被重用的可能性越高。而復雜的SQL語句只要有一個字元發生變化就必須重新解析,然後再把這一大堆垃圾塞在內存里。可想而知,資料庫的效率會何等低下。
4、使用「臨時表」暫存中間結果
簡化SQL語句的重要方法就是採用臨時表暫存中間結果,但是,臨時表的好處遠遠不止這些,將臨時結果暫存在臨時表,後面的查詢就在tempdb中了,這可以避免程序中多次掃描主表,也大大減少了程序執行中「共享鎖」阻塞「更新鎖」,減少了阻塞,提高了並發性能。
5、 OLTP系統SQL語句必須採用綁定變數
select * from orderheader where changetime > 』2010-10-20 00:00:01′
select * from orderheader where changetime > 』2010-09-22 00:00:01′
以上兩句語句,查詢優化器認為是不同的SQL語句,需要解析兩次。
如果採用綁定變數
select * from orderheader where changetime > @chgtime
@chgtime變數可以傳入任何值,這樣大量的類似查詢可以重用該執行計劃了,這可以大大降低資料庫解析SQL語句的負擔。一次解析,多次重用,是提高資料庫效率的原則。
6、綁定變數窺測

④ 程序員工作常用的sql存儲過程

給兩個例子,有問題在追問吧。(sqlserver環境)

CREATEPROCEDUREproc_stu/*proc_stu為存儲過程的名稱*/
AS
DECLARE@writtenAvgfloat,@labAvgfloat/*筆試平均分和機試平均分變數*/
SELECT@writtenAvg=AVG(writtenExam),
@labAvg=AVG(labExam)FROMstuMarks
print'筆試平均分:'+convert(varchar(5),@writtenAvg)
print'機試平均分:'+convert(varchar(5),@labAvg)
IF(@writtenAvg>70AND@labAvg>70)
print'本班考試成績:優秀'/*顯示考試成績的等級*/
ELSE
print'本班考試成績:較差'
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,labExam/*顯示未通過的學員*/

stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<60ORlabExam<60
GO


CREATEPROCEDUREproc_stu
@writtenPassint=60,/*輸入參數:筆試及格線*/
@labPassint=60/*輸入參數:機試及格線*/
AS
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,/*查詢沒有通過考試的學員*/
labExamFROMstuInfo
INNERJOINstuMarksON
stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<@writtenPass
ORlabExam<@labPass
GO

⑤ 程序員的sql金典,這本書怎麼樣,入門學sql,

不太好,幾種資料庫混合講的,不適合初學者

⑥ 如何學習SQL語句,才能達到精通的標准

SQL語言,資料庫基礎電子資料:

SQL語法大全中文版
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148128
SQL語言案頭完全參考手冊
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146159
SQL - A Practical Introction
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148095
O'Reilly SQL Tuning
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=159156
O'Reilly The Art of SQL
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=163611
資料庫綜合資料庫
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146238
資料庫設計指南
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148082
Wrox Beginning Database Design
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=145206
SQL Puzzles and Answers
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=160834
SQL Queries for Mere Mortals
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=162978
SQL Puzzles and Answers
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=160834
Apress出版 The Berkeley DB Book
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=168290
The Handbook of Data Mining
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=176600
資料庫系統概論 浙江大學張軍教授主講(全32講)
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=154299

MS SQL Server電子資料:

Transact-SQL Cookbook
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=163150
SQL Server 2005寶典
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=149644
Microsoft SQL Server 2005完全參考
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152872
O'Reilly Learning SQL on SQL Server 2005
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=163464
Beginning SQL Server 2005 Programming
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=153216
Pro SQL Server 2005 High Availability
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=162981
Beginning SQL Server 2005 Administration
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152863
SQL Server 2005 Management and Administration
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=176845
SQL Server 2005 Unleashed
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152874
Pro SQL Server 2005
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152325
A Developer's Guide to SQL Server 2005
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=145565
Pro T-SQL 2005 Programmer's Guide
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=154245
Beginning Transact-SQL with SQL Server 2000 and 2005
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152868
SQL Server 2005報表服務
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148376
Wrox Professional SQL Server 2005 Programming
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=151270
Scaling Out SQL Server 2005權威指南
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=162785
Sql Server 2005 Performance Optimiztion and Tuning Handbood
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=165048
Microsoft SQL Server 2005編程傻瓜書
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152864
Pro SQL Server 2005 Assemblies
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=151269
MS SQL Server 2005 Reporting Essentials
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=147862
SQL Server 2005工具箱內幕
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152321
SQL Server 2005管理員手冊
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152347
SQL Server 2005工具箱內幕
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152321
SQL Server 2005數據挖掘
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148099
Pro SQL Server 2005 Service Broker
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=159656
Pro SQL Server 2005 Replication
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=160606
Sql server 2005的XML最佳實施策略
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152278
Microsoft SQL Server Black Book
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=163457
MS SQL Server2000 寶典
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=145853
SQL Server 2000存儲過程和XML編程
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152873
SQL Server 2005高級數據分析視頻教程系列
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=162737
SQL Server 2005盛宴系列視頻 全52講
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=151642

MySQL電子資料:

MySQL寶典
http://bbs.topsage.com/dispbbs_122_159157_1.html
SQL for MySQL Developers
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152862
MySQL教程
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146824
Teach Yourself MySQL in 10 Minutes
http://bbs.topsage.com/dispbbs_122_174432_1.html
O'Reilly MySQL Pocket Reference 第二版 PDF
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=175014
MySQL 5 權威指南(第三版)
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148867
MySQL培訓經典教程
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146795
MySQL Cookbook 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=175972
The Definitive Guide to MySQL
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=175382
O'Reilly MySQL Pocket Reference 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=175014
MySQL Essential Skills
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146749
MySQL Administrators Guide
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=146580
MySQL權威指南 中文版+英文版
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148870
MySQL 4.1.0 中文參考手冊
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148869
MySQL in a Nutshell
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=148868
Export MySQL
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152865
MySQL and PHP from Scratch
http://bbs.topsage.com/dispbbs.asp?boardID=122&ID=152162

⑦ SQL Server 2012寶典與SQL Server 2012寶典(第4版)區別,哪個更適合初學者

如果說適合初學者,只要書中不是不要講高級的東西,哪本書都是可以的,畢竟是入門。

再看上面兩本書,名字幾乎相同,還以為第二本是第一本的升級版本,但仔細一看,作者不一樣,第一本是國人寫的,第二本是外國人著的。

我個人比較喜歡外國人寫的書,因為外國人寫的內容真的是邏輯嚴謹,循序漸進,有的好書,看著看著,真的可以用「有趣」一詞形容。

對比國人寫的書,都比較簡單,套用其他格式內容。但確實比較適合入門。

所以,這兩本書,各有各的好。選哪本,我覺得問題都不大。

⑧ 想學習一下SQL編程,高手幫忙介紹一本書!

Microsoft SQL Server 2000寶典
【原書名】 Microsoft SQL Server 2000 Bible [原書信息]
【原出版社】 Wiley Publishing
【作者】 (美)Paul Nielsen[同作者作品] [作譯者介紹]
【譯者】 劉瑞[同譯者作品] 陳微 閆繼忠 劉文
【出版社】 中國鐵道出版社 【書號】 7-113-05709-8
【開本】 16開 【頁碼】 792
【出版日期】 2004-3-1 【版次】 1-1

內容簡介】
只要SQL Server 2000能夠做到,你就可以做到 本書全面介紹了有關利用SQL Server 2000、Microsoft的高性能、支持Web的客戶/伺服器資料庫和數據分析軟體包所需的各種知識。在這本書中,資料庫專家Paul Nielsen以性能和數據完整性為中心,向用戶展示了從資料庫項目開始的第一天起就開始性能設計的方法。從基本的安裝操作到使用XML、監控資料庫和性能調優(一個非常熱門的話題,它本身就值得用整整一部書來加以討論)、Paul Nielsen都給出了清晰的操作說明、充分而詳實的理論知識以及完成給定任務最有效的方法——「最佳實踐」。本書不僅僅是一本普通的指南;它提供了開發和使用SQL Server所需的一切知識和方法。 這本書覆蓋了有關SQL Server開發的所有知識 ·掌握資料庫模式設計的方法,以提高資料庫系統的性能、完整性和靈活性 ·理解ACID、事務完整性並創建穩固的資料庫系統 ·理解關系代數以編寫功能強大的查詢 ·對索引進行調優,使其成為數據和查詢之間的橋梁 ·分析查詢執行計劃以提高性能 ·創建T-SQL存儲過程、觸發器和用戶定義函數 ·使用DTS、分布式查詢、XML和ADO.NET共享數據 ·使用Analysis Services分析數據 ·使資料庫系統具有高級的可伸縮性、可用性、性能和可移植性

【目錄信息】
第一部分 SQL Server基礎

第1章 SQL Server簡介

1-1 客戶/伺服器資料庫模型
1-1-1 桌面資料庫
1-1-2 客戶/伺服器資料庫
1-1-3 客戶/伺服器角色
1-1-4 多層客戶/伺服器模型設計
1-2 SQL Server的優點
1-2-1 ACID特性與高可用性
1-2-2 SQL Server已經成為標准
1-2-3 SQL Server的安全性
1-2-4 SQL Server的性能與可伸縮性
1-2-5 均衡與完備
1-2-6 「盒子」以外的經驗
1-2-7 開發的靈活性
1-2-8 價格與性能
1-3 選擇合適的SQL Server 2000版本
1-3-1 企業版(Enterprise Edition)與開發版(Developer Edition)
<< 查看詳細目錄