您的位置:首页 > 职场人生

黑马程序员sql 函数使用下篇

2012-04-25 09:51 162 查看
---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! -----------------

数字函数(收集)//一般做报表时候用

abs()求绝对值

ceiling()舍入到最大整数 (汉字意味天花板) ceiling(3.33)=4 ceiling(-3.2)=3

floor()舍入到最小整数(汉字意味地板)

round(number,精度)四舍五入 即舍入到离我最近的数

字符串函数

len(字符串) ;//计算字符串的长度 select name,len(name) from users

lower() upper() //转换 小写 、大写

ltrim() //去掉字符串左侧的空格

rtrim()//去掉字符串右侧的空格 ltrim(rtrim(" s "))

substring(string,start_position,length)//string主字符串,start_position为子字符串在主字符串中开始位置,length为子字符串的最大长度

如:select substring("abcdefg",2,4)

日期函数

getdate() 获取当前日期

dateadd(datepart,number,date) //计算增加以后的日期 参数date为待计算的日期,参数Number为要增加的量,参数datepart为以这个计量单位开始加 Number个量

datepart 年,季度,周,天,小时,秒 等片段

dateadd(month,-8,getdate())

datediff(datepart,startdate,enddate)//计算两个日期之间的差额 以datepart这个时间格式表示

员工入职时间select name,indate,datediff(year,indate,gatedate()) from users

某年入职员工个数select datediff(year,indate,gatedate()) 入职年数 ,count(*) 个数 from users group by datediff(year,indate,gatedate())

datepart(datepart,date)//返回一个日期的特定部分

当前的年份 select datepart(year,getdate())

每年入职员工个数select datepart(year,indate) 年,count(*) 个数 from users group by datepart(year,indate)

类型转换函数

cast(被转换表达式 as 数据类型)//select cast('2008-1-2' as datetime )

convert(数据类型,被转换的数据表达式)

空值处理函数

isnull(列名,要替代的值) //如果列名为空则用 要替换的值替换 ,否则还是列名的值//select isnull(name,佚名) from users

索引

创建方法:在表设计器中点击右键->选择 索引/健->添加->在列中选择索引包含的列

优缺点:使用索引能够提到查询效率, 但是索引是占用空间的 ,它是在磁盘上重新建了一张表 把索引字段放到里面了 所以查询比较快 而且在添加、更新、删除数据的时候也要同时更新索引表 因此针对 insert update delete 这样的语句速度是慢的,只是在经常检索的字段上如where语句条件 上创建索引

注意:并不是创建了索引查询就会快的 例如针对 (*)这样的查询,任然还要全表扫描,有如 like 函数 类型转换等都是不怎么快的

join

inner join ,left join,right join

select o.billno,c.name,c.age

from t_order as o join t_customer as c on o.custemid=c.id

例如:要求显示出年龄大于15的客户购买的订单号,客户姓名,客户年龄

select o.orderid, c.name,c.age from t_custemers as c join t_order as on

o.custemersid=c.id where c.age>15

显示年龄大于平均年龄的顾客买的订单

select o.orderid,c.name from t_custemers as c join t_orders as 0 on o.custenmsid=c.id where c.age>(select avg(age) from t_custemers)//为什么不能直接用avg(age) 还要用子查询 这些函数只能放在from 之前用的

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: