--------------------Windows Phone 7手机开发、.Net培训、期待与您交流! --------------------
数据库就是为了解决用自定义文件格式保存数据的劣势、并发访问等情况。
DBMS(Database Management System,数据管理系统)。平时谈到数据库可能有两种含义:MSSQLSever、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。
不同品牌的DBMS有自己的不同特点,对于开发人员来说,大同小异。
SQL指查询语句,SQLSERVER,MSSQLSERVER才指数据库。
除了ACCESS、SQLSEVER等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。
Catalog(分类)(又叫数据库DataBase、表空间TableSpace),不同类的数据应该放到不同的数据库中。
便于对各个Catalog进行个性化管理
避免命名冲突
安全性更高
Table(表):不同类型的资料放到不同的格子中,将这种区域叫做“表”(table),不同的表根据放的数据不同进行空间的优化,找起来也方便。
列(column)、字段(feild)。
表→列→字段。包含关系。
主键(PrimaryKey)(就是数据的唯一标识),只有不会重复的列才能做主键。一个表可以没有主键,但是非常难以处理,以此没有特殊理由表都需要设定主键,主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键。比如身份证号、银行帐号等。逻辑主键是使用没有业务意义的的字段做主键,因为很难保证业务主键不会重复、不会变化,因此推荐使用逻辑主键。(自动增长列)
外键(ForeignKey)表与表之间有某种联系
SQLserver两种验证方式:Windows验证和用户名验证,一般开发时使用Windows验证就行。
服务器名称设置(连接本机):.、localhost、IP地址+\数据库实例名。
常用数据类型与C#对应:bit(bool):0与1,char(char),int(int32),bigint(long) nvarchar(string可能带汉字等),varchar(string纯字符串)、datatime。
nvarchar、varchar、char的区别:char(10)不足长度会用空格填充,varchar不会,超过长度char会报错,var:variable可变的。
Sql语句:
Select(查) insert(增) update(改) delete(删)
SQL字符串用单引号,大小写不敏感(数据除外)
Create 数据库名称(创建数据库)
Create table表名{字段结构(字段之间用,隔开)}(创建表)
Dorp table表名(删除表)
Alter 修改表的结构
SQL分为DDL(数据定义语言建库建表等)和DML(数据操作语言:增删改查。不影响表的结构)两种语言。
SQLServer中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在insert的时候不用制定主键的值。将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
GUID算法市一中可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID等算出来的,这样保证每次生成的GUID永运不会重复,无论是同一个计算机上还是不同的计算机。SQLServer中生成GUID的函数NEWID(),.NET中生成GUID的方法:GUID.NewGuid(),返回的是Guid类型。
两者之间的优劣:int自增字段:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
GUID:效率高、数据导入导出方便;缺点占用空间大、不易读。
业界主流倾向与使用GUID
SQL查询语句
插数据:
Insert into表名(列名) values(值) 列名与值对应
可以省略列名(不推荐)
不推荐把GUID主键列的默认值设成NEWID()
示例:insert into users(id,name,age)values(newid(),’张三’,18)
Update 更新
Update 表名 set 列名1=值,列名2=值
在SQLSERVER里面更新的时候如果出现汉字需要在汉字前加个N
EXAM:update Users set Name=N’张三’ where Age=18
Delete 删除
Delete from表名删除表内所有数据可以加限制条件
Exam:delete from Users where Id>80 and Id<90
Select 查询
Select * from表名
Select * from表名 where条件
Select 列名 from 表名
Select 列名 as 别名 from表名。。。。
内置函数 count() max() min()avg() sum() getdate()….
排序 order by
Order by列名1 ASC(DESC),列名2 ASC(DESC)……(升序/降序)默认升序(ASC)多条件排序越靠前的越优先
Where要在order by之前
模糊匹配
通配符:like
“_”单字符通配符,为半角下划线 _erry匹配array、erray等只要前一个字符任意后面是rray的都匹配
多字符通配符%,匹配任意次数出现的任意字符 %K只要末尾是K的都匹配
SQLSEVER中Null表示不知道的意思 select null+’123’为null,有null参与的运算都为null
查询列值为null的数据 select * from Users where Name is (not) null(=null,<>(!=)null都会没结果)
关键字 or in and between。。。and。。。 …..
--------------------Windows Phone 7手机开发、.Net培训、期待与您交流! --------------------