---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
以下是学习SQL的笔记,整理出来费了不少时间,因为之前是用笔写在本子上的,后面的笔记得用word来记了,方便整理啊!文中所写的SQL语句实例都是在看视频时和练习中敲的,字段、表名等都可以在SQL Server Management Studio Express中查看到。
概念:
DBMS(数据库管理系统):MSSQLServer、Oracle、Access、DB2等。
DB(数据库):存放一堆数据表的一个分类(Catalog)。
1.Catalog(分类)(又叫数据库DataBase、表空间TableSpace),不同类的数据应该放到不同的数据库中:
(1)便于对各个Catalog进行个性化管理
(2)避免命名冲突
(3)安全性更高
2.Table(表):不同类型的资料放到不同的“格子”中,将这种区域叫做“表”(Table)。
不同的表根据放的数据不同进行空间的优化,找起来也方便。
3.列(Column)、字段(Field)
4.主键(PrimaryKey):
(1)主键就是数据行的唯一标识。不会重复的列才能当主键。
(2)主键有两种选用策略:业务主键和逻辑主键。
业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),所以推荐用逻辑主键。
SQLServer的管理:
1.SQLServer的两种验证方式:用户名验证和Windows验证,开发时用Windows验证就行。
2.创建数据库,创建表,设置主键
3.常用字段类型:bit(可选值0、1)、datetime、int、varchar、nvarchar(可能含有中文用nvarchar)、Nvarchar(50)、Nvarchar(MAX)
4.varchar、nvarchar 和char(n)的区别: char(n)不足长度n的部分用空格填充。Var:Variable,可变的。
SQL语句入门:
1.SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认Sql语法。
2.SQL语句中字符串用单引号(' ')。
3.SQL语句是大小写不敏感的,不敏感是指SQL关键字,字符串的值还是大小写敏感的。
4.创建表和删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多。
Create Table T_Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)、Drop Table T_Person1。
5.简单的Insert语句:
INSERT INTO T_Person(Id,Name,Age) VALUES(1,'Jim',20);
6.(*)SQL主要分DDL(数据定义语言),和DML(数据操作语言)两类。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML。
主键选择:
1.SQLServer中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
2.用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在Insert的时候不用指定主键的值。将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
3.Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。在公元3400年以前产生的GUID与任何其他产生过的GUID都不相同。SQLServer中生成GUID的函数newid(),.Net中生成Guid的方法:Guid.NewGuid(),返回是Guid类型。
4.(*)Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低,数据导入导出的时候很痛苦。
5.(*)Guid的优点:效率高、数据导入导出方便;缺点:占用空间大、不易读。
6. 业界主流倾向于使用Guid。
数据插入:
1.Insert语句可以省略表名后的列名,但是不推荐。
2.如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。
3.可以给字段默认值,如果Guid类型主键的默认值设定为newid(),就会自动生成,但很少这样做。
数据更新:
1.更新一个列:UPDATE T_Person