设为首页 加入收藏

TOP

浅谈SQL基本概念及其用法(三)
2014-11-24 02:59:32 来源: 作者: 【 】 浏览:7
Tags:浅谈 SQL 基本 概念 及其 用法

SELECT FAge,COUNT(*) AS 人数FROM T_Employee

GROUP BY FAge

HAVING COUNT(*)>1

2、注意Having中不能使用未参与分组的列,Having不能替代where。作用不一样,Having是对组进行过滤。

3、顺序:先where,后group by,再having.

十六、限制结果集行数

1、SELECT top 5 * FROM T_Employee order by FSalary Desc

2、(*)检索按照工资从高到低排序检索从第六名开始一共三个人的信息 :

SELECT top 3 * FROM T_Employee

WHERE FNumber NOT IN (SELECT TOP 5 FNumber FROM T_Employee ORDER BY FSalary DESC)

ORDER BY FSalary DESC

3、SQLServer2005后增加了Row_Number函数简化实现,后面会讲。

十七、DISTINCT:去掉数据重复

1、执行备注中的SQL语句,Alter和Insert单独执行

SELECT FDepartment FROM T_Employee

SELECT DISTINCT FDepartment FROM T_Employee

2、DISTINCT是对整个结果集进行数据重复处理的,而不是针对每一个列,因此下面的语句并不会只保留Fdepartment进行重复值处理:

SELECT DISTINCT FDepartment,FSubCompany

FROM T_Employee

十八、UNION:联合结果集

1、执行备注中的代码

2、简单的结果集联合:

3、SELECT FNumber,FName,FAge FROM T_Employee UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee

4、基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。

SELECT FNumber,FName,FAge,FDepartment FROM T_Employee UNION SELECT FIdCardNumber,FName,FAge,‘临时工,无部门' FROM T_TempEmployee

十九、UNION ALL

SELECT FName FROM T_Employee UNION

SELECT FName FROM T_TempEmployee

1.UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条

SELECT FName FROM T_Employee

UNION ALL

SELECT FName FROM T_TempEmployee

2.Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL

案例:

1)要求查询员工的最低年龄和最高年龄,临时工和正式员工要分别查询

SELECT '正式员工最高年龄',MAX(FAge) FROM T_Employee UNION ALL

SELECT '正式员工最低年龄',MIN(FAge) FROM T_Employee UNION ALL

SELECT '临时工最高年龄',MAX(FAge) FROM T_TempEmployee UNION ALL

SELECT '临时工最低年龄',MIN(FAge) FROM T_TempEmployee UNION ALL

2)查询每位正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资额合计。

SELECT FNumber,FSalary FROM T_Employee UNION ALL SELECT '工资合计',SUM(FSalary) FROM T_Employee

二十、数字函数:

执行备注中的代码:

1、ABS() :求绝对值。

2、CEILING():舍入到最大整数 。3.33将被舍入为4、2.89将被舍入为3、-3.61将被舍入为-3。Ceiling→天花板

3、FLOOR():舍入到最小整数。3.33将被舍入为3、2.89将被舍入为2、-3.61将被舍入为-4。Floor→地板。

4、ROUND():四舍五入。舍入到“离我半径最近的数” 。Round→“半径”。Round(3.1425,2)。

二十一、字符串函数:

1、LEN() :计算字符串长度

2、LOWER() 、UPPER () :转小写、大写

3、LTRIM():字符串左侧的空格去掉

4、RTRIM () :字符串右侧的空格去掉

LTRIM(RTRIM(' bb '))

5、SUBSTRING(string,start_position,length)

参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度。

SELECT SUBSTRING('abcdef111',2,3)

二十二、日期函数:

1、GETDATE() :取得当前日期时间

2、DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。DATEADD(DAY, 3,date)为计算日期date3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date8个月之前的日期

3、DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。datepart 为计量单位,可取值参考DateAdd。

统计不同工龄的员工的个数:

select DateDiff(year,FInDate,getdate()),count(*) from T_Employee group by DateDiff(year,FInDate,getdate())

4、DATEPART (datepart,date):返回一个日期的特定部分

统计员工的入职年份个数:

select DatePart(year,FInDate),count(*) from T_Employee

group by DatePart(year,FInDate)

二十三、类型转换函数:

1、CAST ( expression AS data_type)

2、CONVERT ( data_type, expression)

3、SELECT FIdNumber,

RIGHT(FIdNumber,3) as 后三位,

CAST(RIGHT(FIdNumber,3) AS INTEGER) as 后三位的整数形式,

CAST(RIGHT(FIdNumber,3) AS INTEGER)+1 as 后三位加1,

CONVERT(INTEGER,RIGHT(FIdNumber,3))/2 as 后三位除以2

FROM T_Person

二十四:空值处理函数:

1、执行备注中的代码

2、ISNULL(expression,value) :

如果expression不为空则返回expression,否则返

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL查询横表变竖表简析 下一篇SQL Server 2008 维护计划执行失..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【超详细】JDK 下载 (2025-12-24 18:19:32)
·Java_百度百科 (2025-12-24 18:19:29)
·简介 - Java教程 - (2025-12-24 18:19:27)
·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)