当前位置:首页 » 编程语言 » 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)
<< 查看详细目录