4.SQL学习笔记

  Sql语句入门:

1.SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认Sql语法。
2.SQL语句中字符串用单引号。
3.SQL语句是大小写不敏感的,不敏感是指SQL关键字,字符串的值还是大小写敏感的。
4.创建表和删除表不仅可以手工完成,还可以执行SQL语句完成。
5.SQL主要分DDL(数据定义语言),和DML(数据操作语言)两类。Create Table、Drop Table等属于DDL,Select、Insert等属于DML。

  数据库基本的增删改查省略。。。。。。

  数据分组:
1.按照年龄进行分组统计各个年龄段的人数:
select Fage,Count(*) from T_Employee group by Fage
2.group by子句必须放到where语句之后
3.没有出现group by子句中的列是不能放到select语句后的列名列表中的(聚合函数中除外)
错误:select Fage,Fsalary from T_Employee group by Fage
正确:select Fage,AVG(Fsalary) from T_Empaloyee group by Fage

  限制结果集范围:
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.Row_Number函数简化实现数据分组。

  去掉重复数据:
1.select distinct Fage,Fname from Table;
2.distinct是对整个结果集进行数据重复处理的,而不是针对每一个列。

  联合结果集:
1.简单的结果集联合:
select Fnumber,Fname,Fage from T_Employee
UNION
select FIdCardNumber,Fname,Fage from T_TempEmployee
2.基本原则:每个结果集必须有相同的列数,每个结果集的列必须类型相容。
3.只有UNION的联合会合并重复数据,UNION ALL的联合不会合并重复数据。
注意:如果没有特殊理由,请不要丢掉ALL。

  数据库函数:
1.数字函数:
(1)ABS():求绝对值。
(2)CEILING():舍入到最大整数。如:3.33将被舍入为4,2.89将被舍入为3,-3.61将被舍入为-3。
(3)FLOOR():舍入到最小整数。如3.33将被舍入为3,2.89将被舍入为2,-3.61将被舍入为-4.
(4)ROUND():四舍五入。舍入到离我半径最近的数。注意:还有一个带两个参数的ROUND()函数,其中第二个参数代表精度。
2.字符串函数:
(1)LEN():计算字符串长度。
(2)LOWER()、UPPER():转小写,大写。
(3)LTRIM():字符串左侧的空格去掉。
(4)RTRIM():字符串有侧的空格去掉。
(5)SUBSTRING(string,start_position,length):参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度。select SUBSTRING('abcdef111',2,3)
3.日期函数:
(1)GETDATE():取得当前日期时间。
(2)DATEADD(datepart,number,date):计算增加以后的日期数。参数date为待计算的日期,参数date为增量,参数datepart为计量单位。DATEADD(DAY,3,date)为计算日期date的三天后的日期,DATEADD(MONTH,-8,date)为计算日期date的八个月之前的日期。
(3)DATEDIFF(datepart,startdate,enddate):计算两个日期之间的差额,datepart为计量单位,可取值参考DATEADD。
(4)DATEPART(datepart,date):返回一个日期的特定部分。
4.类型转换函数:
(1)CAST(expression AS data_type)
expression将要被转换的表达式,data_type将要被转换成的类型。
(2)CONVERT(data_type,expression)

5.空值处理函数
(1)ISNULL(expression,value):如果expression不为空则返回expression,否则返回value。如:select ISNULL(Fname,'佚名') as 姓名 from Table

6.CASE()函数用法1
单值判断,相当于switch case
CASE exoression
WHEN value1 THEN return value1
WHEN value2 THEN return value2
WHEN value3 THEN return value3
ELSE default return value
END
例子:
SELECT Fname,
(CASE Flevel
WHEN 1 THEN 'VIP客户'
WHEN 2 THEN '高级客户'
WHEN 3 THEN '普通客户'
ELSE '客户类型错误'
END) as FlevelName FROM Table

posted on 2011-11-27 18:08  Barclay.Xu  阅读(675)  评论(2编辑  收藏  举报