(1)聚合函数:
聚合分析是指对数据表中的一列或多列所进行的统计分析
1、统计计数函数---COUNT( ),调用方式可归结为三种:
COUNT(*)
SELECT COUNT(*) AS 当前表的总行数
FROM STUDENT5
COUNT(ALLCOLUMN)
SELECT COUNT(S_AVGRADE) AS 参加考试的人数
FROM STUDENT5
COUNT(DISTINCTCOLUMN)
SELECT COUNT(DISTINCT S_DEPT) AS 不同系别的个数
FROM STUDENT5
2、求和函数---SUM( )
SELECT SUM(S_AVGRADE) AS 所有平均成绩总和,SUM(DISTINCTS_AVGRADE) AS 非重复平均成绩的总和 FROM STUDENT5
说明:查询 sum(某一个字段) as 起个名字 从 哪个表
3、均值函数---AVG( )
SELECTAVG(S_AVGRADE) FROM STUDENT5 WHERE S_SEX =‘女’
SELECTAVG(DISTINCT S_AVGRADE) FROM STUDENT5
4、最大/最小函数---MAX()/MIN( )
函数MAX( )和MIN( )分别用于求组中列COLUMN的最大值,最小值.
SELECT MAX(S_AVGRADE) AS 平均成绩的最大值,MIN(S_AVGRADE) AS 平均成绩的最小值
FROM STUDENT5
(2)字符串函数:也可以结合到数据库表的查询中使用如下语句:
select LEFT(t_name,1) as 姓氏 from teacher 说明:就是查询教师表中某字段里面左侧最开始的一个字符。其它字符串函数用法类似
第二个示例:下面字符串练习的写法:
select charindex(‘be‘,‘aabecdefbeghi‘) 注意:字符串函数在练习的时候需要加上单引号
函数格式 |
功能描述 |
举例 |
ascii(character_expression) |
返回字符串表达式中的第一个字符的ascii值(int型) |
select ascii(‘bca’)返回98 |
char(integer_expression) |
将ascii值转换为相应的字符,并返回该字符 |
select char(65)返回‘a’, char(97)返回‘a’ |
charindex(expression1, expression2[srart_location]) |
返回字符串中指定表达式的开始位置。如果指定srart_location,则表示从位置start_location 开始查找的字符串以返回其开始位置。如果没有匹配则返回0 |
charindex(‘be’,aabecdefbeghi) 返回3,be在后面字符串中的第几个 charindex(‘be’,’aabecdefbeghi’,4)返回9 |
left(character_expression ,integer_expression) |
返回字符串character_exre ssion 中从做边开始的in teger_expression个字符 |
left(‘abcdef’,3)返回‘abc’ |
len(string_expression)左 right右 |
返回指定字符串表达式的字符(而不是字节)个数 其中不包含尾随空格 |
len(‘a bcdefg’)返回8 |
lower(character-_ express ion) |
将大写字符串数据转换为小写字符串数据后返回字符串表达式 |
lower(‘abcdefg’)返回‘abcdefg’ |
ltrim(character_expression) |
返回删除起始空格之后的字符串表达式 |
ltrim(‘ abcdef’)返回‘abcdef’ |
nchar(integer_expression) |
根据unicode标准的定义,返回具有指定的证书代码的unicode |
nchar(197)返回’a’ |
patindex(‘%pattern%’,ex pression) |
返回指定表达式中某模式第一次出现的其实位置。如果在全部有效的文本和字符串数据类型中没有找大该模式,则返回零。可以使用通配符 |
patindex(‘%defg%’,‘abcdefghidefg’)返回4 |
quotename(‘character_str ing’[,’quote_character’]) |
返回带有分隔符的unicode字符串 |
quotename(‘abcdef’,’’’’返回‘abcdef’,) quotename(‘abcdef’,’(’)返回‘(abcdef)’ |
replace(str_expression1, str_exppression2, str_expression3) |
用第三个表达式str_expression3替换第一个字符串表达式str_expression1中出现的所有第二个指定字符串表达式str_expression2的匹配项,并返回替换后的字符串表达式 |
replace(‘abcdefghicde’,’cd’,’china’)返回‘abchinaefghichinae’ |
reverse(character_expression) |
将字符串表达式中的字符首尾翻转,然后返回反转后的字符串 |
reverse(‘abcdefg’)返回‘gfedcba’ |
richt(character_expression, integer_expression) |
返回字符串character_expression中从右边开始的inerger_expression 个字符 |
right(‘abcdef’,3)返回‘def’ |
rtrim(character_expression) |
返回删除尾随空格之后的字符串表达式 |
rtrim(“ bcdef “)返回‘abcdef’ |
space(integer_expression) |
返回由integer_expression 个空格组成的字符 |
‘a’+space(4)+’b’返回‘a b’ |
str(float_expression[,length [,]]) |
返回由数字数据转换来的字符串数据 |
str(123.4588,10,4)返回‘123.4588’ |
stuff(character_expression,start, length,character_expression) |
在字符串character_expression中从位置start开始删除start,length个字符,然后又从该位置插入字符串character_expression,最后返回处理后的字符串 |
stuff(‘abcdefgh’,2,3,’xyz’)返回‘axyzefgh’ |
substring(expression,start ,length) |
返回给定字符expression中的一个子串,该子串是从位置start开始,长度为length的字符串 |
substring(“abcdef’,2,4)返回‘bcde’ |
unicode(ncharacter_expres sion,) |
按照unicode标准的定义,返回输入表达式的第一个字符的整数值 |
unicode(n‘akergatan24’) 返回197 |
upper(character_expression) |
返回小写字符串数据转换为大写的字符串表达式 |
upper(‘abcdefg‘)返回’abcefg‘ |
(3)日期相关的函数
获取当前日期时间---GETDATE( )
SQL语句:
SELECT GETDATE( )AS 当前日期和时间
DATEADD() 函数
用法:DATEADD() 函数在日期中添加或减去指定的时间间隔。
DATEADD(datepart,number,date)
datepart 参数可以是下列的值:
datepart |
缩写 |
年 |
yy, yyyy |
季度 |
qq, q |
月 |
mm, m |
年中的日 |
dy, y |
日 |
dd, d |
周 |
wk, ww |
星期 |
dw, w |
小时 |
hh |
分钟 |
mi, n |
秒 |
ss, s |
毫秒 |
ms |
微妙 |
mcs |
纳秒 |
ns |
示例:
select DATEADD(DD,3,‘2015-2-5‘)
最后结果:
2015-02-08 00:00:00.000
DATEPART() 函数
用于提取一个日期/时间的单独部分,比如年、月、日、小时、分钟等等
示例:
select DATEPART(yyyy,‘2015-2-5‘)
第一个参数同上面表一样。
我们在看一个示例:
我们先学三个关键字:DECLARE 在SQlserver中表示定义一个变量,相当于说定义一个空盒子。以后我就可以往空盒子中装东西。SET:表示给变量赋上一值。类似于给盒子装上东西
最后一个关键词是PRINT 表示直接输出结果出来
案例:提取日期并输出日期 不要复制代码。自己动手写一下。
DECLARE @DTDATETIME;
DECLARE @YYNINT,@QQN INT,@MMN INT,@DYN INT,@DDN INT,@WKN INT,@DWN INT,@HHN INT,@MININT,@SSN INT,@MSN INT,@MCSN INT,@NAN INT;
SET @DT=GETDATE( ); --获取当前日期,时间
[email protected]=DATEPART (YY, @DT); --提取年份
[email protected]=DATEPART (MM,@DT); --提取月份
[email protected]=DATEPART (DD,@DT); --提取日
[email protected]=DATEPART (QQ,@DT); --提取季度
[email protected]=DATEPART (DY,@DT); --提取当日在本年度中的天数
[email protected]=DATEPART (WK,@DT); --提取周数
SET @DWN=DATEPART(DW,@DT); --提取当前星期中的第几天
[email protected]=DATEPART (HH,@DT); --提取小时数
[email protected]=DATEPART (MI,@DT); --提取分数
[email protected]=DATEPART (SS,@DT); --提取秒数
[email protected]=DATEPART (MS,@DT); --提取毫秒数
[email protected]=DATEPART (MCS,@DT); --提取微秒数
SET @NSN=DATEPART(NS,@DT); --提取纳秒数
PRINT ‘年份:’+LTRIM(STR (@YYN));
PRINT ‘月份:’+LTRIM(STR (@MMN));
PRINT ‘日:’+LTRIM(STR (@DDN));
PRINT ‘季度:’+LTRIM(STR (@QQN));
PRINT ‘当前日在年中的第几天:’+LTRIM(STR(@DYN) );
PRINT ‘当前周在年中的第几几周:’+LTRIM(STR(@WKN) );
PRINT ‘当前日在星期中的第几天:’+LTRIM(STR(@DWN) );
PRINT ‘小时数:’+LTRIM(STR(@HHN) );
PRINT ‘分数:’+LTRIM(STR (@MIN));
PRINT ‘秒数:’+LTRIM(STR (@SSN));
PRINT ‘毫秒数:’+LTRIM(STR(@MSN) );
PRINT ‘微秒数:’+LTRIM(STR(@MCSN) );
PRINT ‘纳秒数:’+LTRIM(STR(@NSN) );