资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
4 结构化查询语言SQL4.5 常用函数4.5.1 数学函数 RAND()返回0到1之间的随机值。例如:Print rand()declare i Floatset i=rand()print iPRINT CONVERT(INT,RAND()*26) - 0 to 25PRINT CONVERT(INT,RAND()*26)+1 - 1 to 26规则:PRINT CONVERT(INT,RAND()*(N-M+1)+M - M to N (MN)ROUND(78.518, 2)按照指定精度四舍五入。78.520 FLOOR(-123.45)返回=参数的最小整数。-123PI()3.14159其他函数:弧度、角度DEGREES、RADIANS指数函数EXP、POWER对数函数LOG10、LOG三角函数COS、SIN、TAN、ATAN4.5.2 字符串函数LEN(abcd)计算串长SPACE(10) 返回由重复的空格组成的字符串。REPLICATE(abc,3)返回由重复的字符串组成的字符串。REVERSE(abcdef,3)字符串逆序declare s char(100)set s=REVERSE(abcdef)print sdeclare s char(100)set s=REVERSE(abcdef)print sRTRIM( abc )缩减右空格类型转换ASCII(abc)首字符转换为ASCII值。CHAR(97)ASCII值转换为字符STR(123.45, 8, 3)STR ( float_expression , length , decimal )数值转换为字符串float_expression 带小数点的近似数字 (float) 数据类型的表达式。length 总长度。它包括小数点、符号、数字以及空格。默认值为 10。decimal 小数点后的位数。decimal 必须小于或等于 16。如果 decimal 大于 16,则会截断结果,使其保持为小数点后具有十六位。CONVERT(real,12.34)CONVERT(decimal(9,4),12.34)字符串转换为实数(也可用于其他类型转换)子串操作LEFT(abcdefg,2) 取左子串RIGHT(abcdefg,2)取右子串SUBSTRING(abcdefg,2,4)取子串REPLACE(old is old!,old,new)子串替换STUFF(abcdef, 2, 3, 12345)位置替换子串/模式匹配CHARINDEX(Data,What is DataBase)子串匹配PATINDEX(%Data%,What is DataBase)模式匹配 字符串相似度SOUNDEX返回由四个字符的代码DIFFERENCE返回0,4,表示两串的相似性SOUNDEX(hello)H120SOUNDEX(what)0000SOUNDEX(water)0000DIFFERENCE(hello,what)0DIFFERENCE(what,water)4 4.5.3 日期函数GETDATE() 返回当前时间YEAR(GETDATE()取时间中的年 MONTH(GETDATE()取时间中的月DAY(GETDATE() 取时间中的日DATENAME(year,GETDATE()DATENAME(month,GETDATE()DATENAME(day,GETDATE()取部分日期(字符串)DATEPART(hour,GETDATE()DATEPART(minute,GETDATE()DATEPART(second,GETDATE()取部分日期(整数)DATEADD(day,2,2008-9-1)DATEADD(month,2,2008-9-1)DATEADD(year,2,2008-9-1)日期加法DATEDIFF(hour,1990-1-1,GETDATE() DATEDIFF(minute,1990-1-1,GETDATE()DATEDIFF(second,1990-1-1,GETDATE()日期减法4.6 数据查询 SELECT语句有太多的命令选项(子句):SELECT子句指定要显示的属性列 (相当于投影运算)FROM子句指定查询表WHERE子句指定查询条件(相当于选择运算)GROUP BY子句对查询结果按指定列的值分组。一般会在每组的若干记录上使用“集函数”。HAVING短语筛选出满足指定条件的组ORDER BY子句对查询结果按指定列值的排序4.6.1 单表查询1、选择表中的若干列(投影)SELECT Sname,Sno,Sdept FROM S;SELECT * FROM S;SELECT Sname as 姓名,year(GETDATE()-year(Sbirthday) as 年龄 FROM S;2、选择满足条件的元组(选择)查询1989-9-1以前出生的学生记录SELECT * FROM S WHERE Sbirthday90或SELECT S.*,Cno,SCscore FROM S INNER JOIN SCON S.Sno = SC.SnoWHERE Cno=1 AND SCscore90Cf:查询每个学生每门课的姓名、课程名、成绩Select s.sname,c.cname,scscore from scInner join s on sc.sno=s.snoInner join c on sc.cno=c.cno2 一个表的连接查询自身连接:一个表与其自己进行连接。由于所有属性名都是同名属性,因此必须使用别名。(/*例如一行查阅一位同学的几门课成绩*/)自身连接SELECT a.*, b.* FROM SC as a, SC as bWHERE a.sno = b.sno 查询选修了1号课程和3号课程的学生信息SELECT a.*, b.* FROM SC as a, SC as bWHERE a.sno = b.sno AND a.cno = 1 AND b.cno = 33 外连接查询外连接:以一个表为主体,将另一个表中“满足”和“不满足”连接条件的元组一起输出。左外连接:查询所有学生的选修情况(含未选修情况)SELECT S.*, SCscore FROM S LEFT OUTER JOIN SC ON S.SNO=SC.SNO
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号