--------------Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------
数据分组
Group by列名 按列名分组出现在where之后
在数据分组的时候不能出现没有在group by后面的列名的聚合函数除外
聚合函数是不能出现在where语句中的如果要使用则需要用having语句
Having 语句出现在group by 语句之后,它后面出现的字段必须在select中出现过的
Having是对分组后信息的过滤无法代替where
Top 值取出某一段数据
子查询(in 、 not in)
Select top 3 from Users where age not in(select top 5 from Users order by age DESC)取出年龄排6到9位的的信息
Distinct针对整行的,取出不重复的值的行
Union 链表查询上下两个字段个数一样、数据类型必须要相容如果不同要补足其结果 会将重复的数据去掉
Union all不去掉重复数据
Union 执行效率低因为执行的时候要判断数据是否重复因此如果不确定是否去掉重复数据就使用union all
ABS()求绝对值 CEILING()舍入到最大整数 FLOOR()舍入到最小整数 ROUND()四舍五入 LEN()取长度 ltrim()去掉左边的空格 rtrim()去掉右边的空格没有trim()。。
Substring()截字符串,Substring(string,start_position,length) string为主字符串,start_position为主字符串中的起始位置,length为子字符串的最大长度
Getdate()获得当前日期
Dateadd()计算增加以后的日期
Datediff()计算两个日期的差额
DatePart()返回一个日期的某个部分
类型转换
Cast()
Convert()
Select cast(’123’ as int),convert(datetime,’2009-02-09’)
空值处理函数
Select isnull(列名) from表名
Case相当于switch中的case
Case i
When value1 then returnvalue1
When value2 then returnvalue2
。。。。与switch case一样
Select 列名,
(case 列名
When value1 then returnvalue1
When value2 then returnvalue2
。。
Else returnvalue
End
)
索引index
全盘扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条条的找.
创建索引的方式,在表设计器中点击右键,选择”索引/键”→添加→在列表中选择索引包含的列.
使用索引能提高查询效率,但是索引也是占据空间的,而且添加\更新\删除数据的时候也需要同步更新索引,因此会降低insert\update\delete的速度.只在经常检索的字段上创建索引.
即使创建了索引,仍然有可能全表扫描,比如like/函数/类型转换等.
Join 表连接
表与表之间存在某种关系(外键)在链表查询的时候需要用到join
Select 表1列1,表2列2 from 表1 join 表2 on列1=列2 (表1与表2存在关联的键)
可以用as简化表1表2
子查询:将一个查询语句作为一个结果供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询.所有可以使用表的地方几乎都可以使用子查询代替.
只有返回且返回一行、一列数据的子查询才能当成单值子查询.
Row_Number() over (排序规则) as别名 SQLSERVER 2005以后出现的函数相当于top的作用结合子查询用
数据库设计的三大范式:
1. 第一范式(1NF,Normal Formate)
第一范式的目标是确保每列的原子性即不可分性;如果每列(或每个属性值)都是不可再分的最小数据单元(也称为最小的原子弹元)。则满足第一范式(1NF)-----不可分性
2. 第二范式(2NF)
第二范式在第一范式的基础上,更进一层,其目标是确保表中的关系满足1NF,并且出了主键以外的其他列,都依赖于改主键,则满足第二范式。(2NF)----都与主键相关
3. 第三范式
第三范式在第二范式的基础上,更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关:如果一个关系满足2NF,并且除了主键以外的其他列都不依赖于主键列,则满足第三范式。(3NF)---------不存在传递依赖
--------------Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------