`
javamvp
  • 浏览: 38893 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

葵花宝典之SQL篇(1)

阅读更多

前言

刚放假,电脑出了毛病,重装系统也就罢了,所有的资料全部丢失,编程的环境没了,什么都没了,很是伤心,不得已,更是增加了电脑联网的决心,话说申请了宽带还要2-3天才能装上。在次期间JSP是不能搞了,于是决定把SQL再看一边,于是就有了此宝典的由来。

(话说欲炼此功必先自宫,如果你非要那样做,我也不会阻拦。但是找个安静的环境还是必要的,我喜欢在看书的时候手机关机。)

第一招:数据的检索

1SELECT * FROM Table_name

2、带别名的检索

SELECT FNumber AS ,FName AS 姓名,FAge AS 年龄,FSalary AS 工资 FROM

T_Employee AS可以省略)

3SELECT * FROM T_Employee

WHERE FSalary<5000 OR FAge>25

4、数据数据汇总:

MAX 计算字段最大值

MIN 计算字段最小值

AVG 计算字段平均值

SUM 计算字段合计值

COUNT 统计数据条数

1查询年龄大于25岁的员工的最高工资:

SELECT MAX(FSalary) FROM T_Employee

WHERE FAge>25

结果:6200

2统计一下工资大于3800 元的员工的平均年龄:

SELECT AVG(FAge) FROM T_Employee

WHERE FSalary>3800

结果:25

3公司每个月应支出工资总额:

SELECT SUM(FSalary) FROM T_Employee

结果:34302.04

4统计公司的最低工资和最高工资:

SELECT MIN(FSalary),MAX(FSalary) FROM T_Employee

结果:1200.00 8300.00

5 SELECT COUNT(*),COUNT(FNumber) FROM T_Employee

结果:8 8

思考:COUNT(*),COUNT(FNumber) 是否等价?

T_Employee表中插入一条数据:

INSERT INTO T_Employee(FNumber,FAge,FSalary) VALUES('IT002',27,2800)

很显然Fname为空,执行下面SQL语句:

SELECT COUNT(*),COUNT(FNumber),COUNT(FName) FROM T_Employee

结果:9 9 8

很显然COUNT(Fname)是统计Fname不为空的记录总条数

5、排序

1按照年龄从大到小排序

SELECT * FROM T_Employee

ORDER BY FAge ASC

ASC代表升序、DESC 代表降序

2按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序

SELECT * FROM T_Employee

ORDER BY FAge DESC,FSalary DESC

数据库系统首先按照第一个排序规则进行排序;如果按照第一个排序规则无法区分两条记录的顺序,则按照第二个排序规则进行排序;如果按照第二个排序规则无法区分两条记录的顺序,则按照第三个排序规则进行排序;……

3WHERE语句连用

SELECT * FROM T_Employee

WHERE FAge>23

ORDER BY FAge DESC,FSalary DESC

注意WHEREORDER BY 的顺序是不可以颠倒的

第二招:高级数据过滤

6通配符过滤 使用关键字 LIKE

1单字符匹配_

SELECT * FROM T_Employee

WHERE FName LIKE '_erry'

2多字符匹配 %

SELECT * FROM T_Employee

WHERE FName LIKE 'T%'

3集合匹配“[]

SELECT * FROM T_Employee

WHERE FName LIKE '[SJ]%'

还可以使用否定符“^”来对集合取反,它匹配不与字符集中任意一个字符相匹配的字

SELECT * FROM T_Employee

WHERE FName LIKE '[^SJ]%'

7空值检测

1 SELECT * FROM T_Employee

WHERE FNAME=null

执行这个语句后没有任何结果!

原因:要使用IS NULL关键字

SELECT * FROM T_Employee

WHERE FNAME IS NULL

2 IS NULL/IS NOT NULL可以和其他的过滤条件一起使用

SELECT * FROM T_Employee

WHERE FNAME IS NOT NULL AND FSalary <5000

8反义运算符

!”取反 如:

!=”表示“不等于”

!<”表示“不小于”

!>”表示“不大于”

1检索所有年龄不等于22岁并且工资不小于2000

SELECT * FROM T_Employee

WHERE FAge!=22 AND FSALARY!<2000

然而!”运算符的方式由于只能运行在MSSQLServerDB2两种数据库系统上

如果要增加数据库的可移植性,可以使用NOT来表示“非”

9多值检测

1 公司要为年龄为23岁、25岁和28岁的员工发福利,请将他们的年龄、工号和姓名检索出来

SELECT FAge,FNumber,FName FROM T_Employee

WHERE FAge=23 OR FAge=25 OR FAge=28

OR SELECT FAge,FNumber,FName FROM T_Employee

WHERE FAge IN (23,25,28)

10范围值检测

1SELECT * FROM T_Employee

WHERE FAGE>=23 AND FAGE <=27

OR SELECT * FROM T_Employee

WHERE FAGE BETWEEN 23 AND 27

2检索所有工资介于2000元到3000元之间以及5000元到8000元的员工信息

SELECT * FROM T_Employee

WHERE (FSalary BETWEEN 2000 AND 3000)

OR (FSalary BETWEEN 5000 AND 8000)

注意:BETTWEEN AND是闭区间

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics