一、数据库基础
1.主键 PrimaryKey
主键是数据行的唯一标识。不会重复的列才能当主键,一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键
主键有两种选用策略:业务主键和逻辑主键、业务主键是使用有业务意义的字段做主键,比如身份证、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号码重复)、不会变化(账号升为),因此推荐使用逻辑主键。
主键选择策略:
SQLServer中的两种常用主键数据类型:int(或Bigint)+标识列(又称自动增长字段);uniquedentifier(又称Guid、UUID)
用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在Insert的时候不用指定主键的值
Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID等算出来的,这样保证每次生成的Duid永远不会重复,无论是同一个计算机上还是不用计算机上。在公元3400年以前产生的GUID与任何其他产生的GUID都不用。SQLServerf中生成GUID的函数newid(), .net中生成Guid的方法:Guid.NewGuid(),返回值是Guid类型。
int自增字段的优点:站用户空间小、无需开发人员干预、易读、;缺点:效率低、数据导入导出的时候很痛苦。
Guid的优点:效率高、数据导入导出方便;缺点:占用空间大、不易读。
业界主流倾向于使用Guid,
2. sqlserver 使用
常用字段类型:bit(可选值0 1)、 datatime、int、 varchar、 nvarchar(可能含有中文用nvarchar)
Char 和varchar、nvarchar的区别:char(n)不足长度n的部分用空格填充 Var:variable 可变的。
二、常用语句
1. 数据插入
1>insert 语句可以省略表名后的列名,但是不推荐
2>如果插入的行中有些字段不确定,那么Insert的时候不指定列即可
3>可以给字段默认值,如果Guid类型主键的默认值设为 newid()就会自动生成,很少这么干
4>主键:inset intoPerson3(Name,age)values(‘lily’,38);
Insert into Person4(Id,Name,Age)values(newid(),’tom’,30);
2.数据更新:
1>更新一个列:update T_Person Set Age=30
2>更新多个列:update T_Person Set Age=30,Nam=’tom’
3>更新一部分数据:update T_Person Set Age=30 where Name=’tom’,用where语句表示只更新Name是’tom’的行,注意SQL中等于判断用单个=而不是==。
4>where 中还可以使用复杂的逻辑判断update T_Person Set Age=30 where Name=’tom’ or Age <25,or相当于C#中的||(或者)
5>where中可以使用的其他逻辑符:or and not < > >= <= !=等
3.数据删除: