Windows Phone 7手机开发、.Net培训、期待与您交流!
数据sql杂碎
一个项目也许可以有多个数据库,把数据库按业务分类的话,就可以实现简单的分布式存储
primarykey 主键 数据行的唯一标示
主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,如身份证,银行账户等;这种就需要手工增加;逻辑主键是使用没有任何业务意义的字段做主键,而且他是自动生成的 。业务主键很难保证不会变化,所以推荐使用逻辑主键
每为表插入一条数据的,数据库会首先在数据库的系统表中增加一个记录。所以在删除一条数据后,主键id还是会从删除id+1开始.而不是从删除id开始。
Foreignkey 外键 记录表与表的关系。
char 类型会用空格将数据补满到定义的字符长度
varchar 则会是实际的长度,不会补满。一个字符占用一个字节
nvarchar 是将一个字符占用两个字节,存储除了英文和数字外的复杂字体。
不使用列名的插入时必须对除标示列的其他有默认值的列使用default
Truncate 关键字删除表中的数据,并将标示列还原,而使用delete删除数据时标示列是不会还原的
级联删除,设置级联关系以后,当删除外键列时,主键表中的相应数据也会被删掉。
级联更新。也是可以自动更新
count()中的列如果有空值的话,是不会计算的。
[^0]在sql中标示非O
据说子类的构造函数隐式的调用了父类的构造函数,所以说,是子类的构造函数先执行,但是确实是父类的构造函数先执行完,然后子类的构造函数才能执行完。父类在子类构造函数之中
between X and Y 表示 包括X和Y之间的数据,含X和Y
分了组的结果集可以用having()去做筛选,但是普通的结果集就应该用where去筛选。
distinct 后边可以跟多个列 ,用列的组合去除重复值,也就是说
distinct 后边可以跟多个条件。
union all 合并结果集时不会去除重复的数据,如果没有all就会去掉重复的数据 如果在实际中并不要考虑去掉重复数据的话,最好用all,这样效率会高,因为没有all的话需要扫描重复数据。效率低
select DatePart(year,FInDate),count(*) from T_Employee
group by DatePart(year,FInDate) 说明group by 可以和函数一起用,只要函数中的参数包括相应的分组列。
类型转换函数
CAST ( expression AS data_type) 使用as 转换
CONVERT ( data_type, expression) CONVERT 在做时间转换时要用到第三个参数,用来确定输出的时间格式。
join 中 应该是大表在前,小表在后,尽量不要使用别名,最好用前缀区分。
transaction
首先定义
begion transaction
然后判断是否有错误,使用@@error(系统级错误号)
if(无错误)
commit transaction
else
rollback transaction
存储过程 proc
可以带有输出参数
row_number() over(order by 列) 这一个函数在利用存储过程来分页很有用的,主要使用页吗 和页容量两个参数来实现分页功能