导航

黑马程序员----sql学习笔记

Posted on 2011-12-01 17:11  asp.net 开发  阅读(204)  评论(0)    收藏  举报

今天学完了sql视频,又学到了不少的新知识,笔记又写了不少:

1、  Nvarchar、char和char(n)的区别:char(n)不足长度n的部分用空格填充。Var:variable,可变的。

2、  创建一个guid类型的数据:Guid id=Guid.NewGuid();

3、  在定义表的时候主键设置成uniqueidentifier类型,添加数据的时候要用newuid()方法添加。给Guid类型为主键的列设定默认值:在设默认值的地方填newid(),就会自动生成,但是在向表中插入数据的时候,默认值列不会立即显示出来,需要刷新(很少这么干)。

4、  删除表中的全部数据:delete from t_person

5、  把两个查询结果结合到一个表中用union:select fname from t_Employee union select fname from t_TempEmployee(会自动取消重复的记录,如果不想取消重复的记录用union all)

6、  Sql中也有substring用法:selectsubstring(‘qwew’,2,3)从第二个字符开始,截取长度为3的字符串,注意,开始是从1开始的,和c#中不一样,c#中是从0开始

7、  Dateadd(day,3,getdate())在原来的基础上加3天

8、  DateDiff(year,,FInDate,getdate())计算两个时间差,单位是年

9、  Select Datepart(year,cast(‘2008-11-23’ as datetime)),结果是2008,其中cast是类型转换,datepart是取一部分

10、              Select isnull(FName,’佚名’)as 姓名 from t_employee,其中isnull的意思是如果记录不为空,就返回结果中的姓名,如果为空就返回“佚名”

11、              Case的用法:和c#中的switch一样

Select FName

(

 Case FLeval

When 1 then ‘普通用户’

When 2 then ‘会员’

When 3 then ‘VIP’

Else ‘未知客户类型’

end

) as 客户类型

From T_Customer

12、              高效分页方法:在强类型DataSet中增加取得所有数据条数的方法QueryCount,增加取得指定行数范围数据的方法GetPageData:select * from (select…Row_Number() over(order by….) rownum from T_Links) t where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows。红色的部分不能改;代码部分:先按照正常的流程配置ObjectDataSource,让ListView自动生成Template,再修改ObjectDataSource的EnablePageing=”true”,SelectCountMethod设置为取得的方法。

13、              如何建立外键:在另一个表设一个与主表中的主键(或有唯一索引)有联系的字段,再建立关系,此字段就是外键了。

设置表mybbs中的authorid为外键,参照author表的id字段,直接使用transact sql语句,过程如下:

--增加表mybbs(authorid)的外键约束fk_mybbs_author,表mybbs中的authorid受表author中的主键id约束:

begin transaction

alter table dbo.mybbs add constraint fk_mybbs_author

  foreign key (authorid)

  references  dbo.author([id]) on update cascade on delete cascade

 

--删除外键约束fk_mybbs_author:

--alter table dbo.mybbs drop constraint fk_mybbs_author

--rollback

commit transaction

 

上面on update cascade,on delete cascade两个选项,指明以后author表的id字段有delete,update操作时,mybbs表中的id也会被级联删除或更新。如果没有选中,是不可以对author表中已被mybbs表关联的id进行update或者delete操作的。

14、              建立一对一关系:A和B一对一时,假设A是主表,B是从表。A的主键是B外键。最关键的是,B中的外键,也做主键。这样就实现一对一了。

15、              建立一对多关系:例如有课程表(一)(cource)和教师表(多)(teacer),cource表中cId为主键,则teacher表中必须有cId字段,此字段不能为该表的主键,然后再建立外键关系,主键表为cource(cId),外键表为teacher(cId),这样就建立了一对多关系了。

16、              建立多对多关系:例如,a表和c表要建立多对多关系,a表中的主键为A,c表中的主键为C。需要在a和c之间建立另一张b表,b表中的字段必须包括A和C,并且A和C必须也是b表中的主键,这样就建立了a表和c表的多对多关系了。

17、              如何为一张表的多个字段设置主键:单击“管理索引和键”à列右边的按钮,选择要设置主键的字段。