AS(别名):
表中的列和字段可以用as给他们在结果集中设置一个别名。
select后面也可跟常量,索引这个常量结果中显示没有列名,但是用as可以为这个常量设置一个列名。
例如:select '香烟' as 烟.....但注意这里是列只是在结果集里面的而已不是一个真正的表列
也可以给表设置别名(联合查询时候需要):
如:select * from 厂家信息 as c....这样就给表厂家信息设置一个别名为c
注意:索引出来的信息是放在一个虚拟的结果集里面的,不是真正的原始表
......................................................................
获取系统当前时间:select getdate()
获取一个GUID编码(全球唯一之别编码):select newid()
可以查询一个常量:select '常量',常量查询和表、列查询可以通过逗号一同进行,有时候能起到在结果集中给行“命名的效果”
比如:select '常量',* from 厂家信息,这样就在厂家信息的结果集合前面加上列值为'常量'的无名列
获取指定字符的ASCII编码:SELECT ASCII('a')
......................................................
聚合汇总(聚合函数):MAX最大,MIN最小,AVG平均,SUM求和,COUNT数量
例如:
某列最大值:select MAX(编号) from 厂家信息
某列最小值:select MIN(编号) from 厂家信息
某列平均值:select AVG(编号) from 厂家信息
某列合计值:select SUM(编号) from 厂家信息
某列数量(有几行):select COUNT(编号) from 厂家信息.....注意哦,如果某列中的某个值为null这样的话就不算一行,所以不能用这个查询表的行数
表中行数:select COUNT(*) from 厂家信息
某列最大和最小值:select MAX(编号),MIN(编号) from 厂家信息
某列最大和最小值(设置别名):select MAX(编号) as 最大,MIN(编号) as 最小 from 厂家信息
.....................................................................................
分组:group by 条件
如:select COUNT(*) from dbo.厂家列表 group by 厂家编号
select 厂家编号,COUNT(*) from dbo.厂家列表 group by 厂家编号..........根据条件(厂家编号)来进行分组(编号一样的是同组),查询每个分组的行数,
在COUNT(*)前面带上厂家编号是在结果集中显示厂家编号的信息。如果是多个条件则用逗号分开
.....................................................................................
union合并结果集(这个查询会把重复的去掉)
联通查询就是两张表的查询结果集合并到一起显示,所以前提就是两张表的列数和数值类型(相容就行)要一样,一样的表才能合并在一起称为一张结果集表
列联合查询例如:select 价格 from dbo.厂家列表 union select 编号 from dbo.厂家信息
表联合查询例如:select * from dbo.厂家列表 union select * from dbo.厂家信息
union all联合查询(这个不会去除重复)
例如:select 价格 from dbo.厂家列表 union all select 编号 from dbo.厂家信息
...............................................................................
数字函数
abs()求绝对值,如:select ABS(-4).......返回一个4
ceiling()舍入到最大整数数,“天花板函数”。如:select CEILING(3.1).......返回一个4
floor()舍入到最小整数,“地板函数”,如:select FLOOR(3.9)..........返回一个3
round()四舍五入,如(第是四舍五入参数,需要精确度参数):select ROUND(3.411,2).....得到3.41,因为精度到小数点位数位2
................................................................................................................
字符串函数
len(),计算字符串长度(个数)....text保存是字节,不能用len()
datalength(),计算字节长度(处理了英文和数字,其他字符都是两个字节(UN...编码))
转小写:select LOWER('A').....得到a
转大写:select UPPER('a').....得到A
去掉左侧空格:select LTRIM(' a a ')......trim()编程中去空格的函数
去掉右侧空格:select RTRIM(' a a a ')
去掉字符串左右两边的空格:select LTRIM(RTRIM(' a '))
select SUBSTRING('早上好啊各位',1,2).....取得字符串('早上好啊各位')按指定位置'1'开始后取'2'位数,返回一个新字符串,这方法起始位置1开始算
select right('abcdfed',2)....获取后2位
select left('abcde',2).....获取前2位
...................................................................................................................................
日期函数
getdate(),获取当前时间
dateadd(计算单位(年月日等),增量(正数为加负数为减),时间计算基数),计算增加后的日期,
如:select DATEADD(D,2,GETDATE()),YEAR是年,MONTH是月,DAY是日,HOUR小时,N是分,
datediff(计算单位,时间,时间(‘20xx-xx-xx’标准年的写法)),获取时间差,
如:select DATEDIFF(YEAR,GETDATE(),'2010-10-10')
datepart(计算单位,时间),获取日期的指定部分
如:select DATEPART(DAY,GETDATE())
用加减号计算:数据库时间一般是以天为基本计算单位
select GETDATE()+1,加一天
select GETDATE()-1,减一天
select year('2010-11-11')....获取时间的年,mout,day都可以简单暴力
.......................................................................
case(相当于与switch case)
当case指定的列中的某个值等于when指定的值,则会输出then指定的值
select .............不要括号也可以,但严谨最好加括号,阅读性
(
case 价格
when 20 then '正好'
when 33 then '贵了'
when 13 then '便宜'
else '不买'
end
) from dbo.厂家列表
.................................
当case不指定列由when指定列的时候when相当于(if()else())
select
case
when 价格<20 then '正好'.........如果价格小于20则输出正好,否则下一个判断,知道else和end
when 价格>33 then '贵了'
when 价格=13 then '便宜'
else '不买'
end
from dbo.厂家列表
......................................................
类型转换函数
cast(待转换 as 类型),select CAST(1111 as CHAR)....数字转换字符类型,select CAST('11' as integer)....字符转换数字类型
convert(类型,待转类型), select CONVERT(datetime,'2012-11-10')
...................................................................
空值处理:isnull(列,'处理显示明'),会把出现null地方替换称为指定字符显示
如:select ISNULL(null,'未知')
如:select ISNULL(价格,'未知')
......................
where条件(where后面可以使用逻辑运算符)
或者:or
并且:and
小于和大于:<,>
大于等于:>=
小于等于:<=
不等于:!=
not in():不包含,如果 a not in(c)...表示a中不包含c的部分
............................
top限制结果集行数
例如:select top 2 * from dbo.厂家信息....这样就限制显示的结果集行数为2行
.....................................
having条件
在group by分组之后的结果集里面再次进行条件查询
如:select a,count(*) from MYabc where group by a having count(*)<=1
意思是根据a列的内来进行分组,查询a中每组的行数,并查询出a列的名称。然后在结果集中根据行数(having筛选的是结果集里的表不是原始表)进行条件筛选行数小于等于1的结果集。
............................................
排序(语句最后面):
升序用ORDER BY ASC:select * from 厂家信息 order by 编号 ASC..............根据编号这一列进行排序
降序用ORDER BY DESC:select * from 厂家信息 order by 编号 desc
多次排序排序(放前面的先排,后面在前面排序的结果里面再进行排序):select * from 厂家信息 order by 编号 desc,代码 ASC
............................................
distinct去掉重复
例如:select distinct 厂家编号 from dbo.厂家列表.....这样就在结果集中去掉厂家编号重复的部分了
select distinct 厂家编号,价格 from dbo.厂家列表.....这里是组合(厂家编号,价格)看成一个元素是否重复
............................................
通配符,
过滤关键字like(像的意思)
*,表示所有,但一般*不和like一起用,下面的才和like一起用
%,表示任意长度的任意字符.包括0个,如:select * from 厂家信息 where 厂家名称 like '%华%'....索引厂家名称这个列中包含'华'子符的信息
-(单个下划线),表示一个字符长度,如:select * from 厂家信息 where 厂家名称 like '_华%'....索引厂家名称这个列中包含第二个字符为'华'的信息
[^a],表示非什么什么的,如:select * from 厂家信息 where 厂家名称 like '[^华]%'....表示非'华'开头的
[a-b],表示包含,从a到b之间的所有,例如:select * from 厂家信息 where 厂家名称 like '[a-b]'....多用于数字和字母,因为电脑就识别这些