黑马程序员_SQL Server学习第一季

来源:互联网 发布:台湾清华大学知乎 编辑:程序博客网 时间:2024/04/30 22:35

--------------------Windows Phone 7手机开发.Net培训、期待与您交流! --------------------

 

 

数据库就是为了解决用自定义文件格式保存数据的劣势、并发访问等情况。

DBMSDatabase Management System,数据管理系统)。平时谈到数据库可能有两种含义:MSSQLSeverOracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。

不同品牌的DBMS有自己的不同特点,对于开发人员来说,大同小异。

SQL指查询语句,SQLSERVER,MSSQLSERVER才指数据库。

除了ACCESSSQLSEVER等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。

 

Catalog(分类)(又叫数据库DataBase、表空间TableSpace),不同类的数据应该放到不同的数据库中。

便于对各个Catalog进行个性化管理

避免命名冲突

安全性更高

 

Table(表):不同类型的资料放到不同的格子中,将这种区域叫做“表”(table),不同的表根据放的数据不同进行空间的优化,找起来也方便。

 

列(column)、字段(feild)。

表→列→字段。包含关系。

 

主键(PrimaryKey)(就是数据的唯一标识),只有不会重复的列才能做主键。一个表可以没有主键,但是非常难以处理,以此没有特殊理由表都需要设定主键,主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键。比如身份证号、银行帐号等。逻辑主键是使用没有业务意义的的字段做主键,因为很难保证业务主键不会重复、不会变化,因此推荐使用逻辑主键。(自动增长列)

外键(ForeignKey)表与表之间有某种联系

 

SQLserver两种验证方式:Windows验证和用户名验证,一般开发时使用Windows验证就行。

服务器名称设置(连接本机):.localhostIP地址+\数据库实例名。

 

常用数据类型与C#对应:bitbool):01charchar),intint32),bigintlong nvarcharstring可能带汉字等),varcharstring纯字符串)、datatime

nvarcharvarcharchar的区别:char10)不足长度会用空格填充,varchar不会,超过长度char会报错,varvariable可变的。

Sql语句:

Select(查) insert(增) update(改) delete(删)

SQL字符串用单引号,大小写不敏感(数据除外)

Create 数据库名称(创建数据库)

Create table表名{字段结构(字段之间用,隔开)}(创建表)

Dorp table表名(删除表)

Alter 修改表的结构

 

SQL分为DDL(数据定义语言建库建表等)和DML(数据操作语言:增删改查。不影响表的结构)两种语言。

 

SQLServer中两种常用的主键数据类型:int(或bigint+标识列(又称自动增长字段);uniqueidentifier(又称GuidUUID

 

用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在insert的时候不用制定主键的值。将字段的“是标识列”设置为“是”,一个表只能有一个标识列。

 

GUID算法市一中可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID等算出来的,这样保证每次生成的GUID永运不会重复,无论是同一个计算机上还是不同的计算机。SQLServer中生成GUID的函数NEWID(),.NET中生成GUID的方法:GUID.NewGuid(),返回的是Guid类型。

两者之间的优劣:int自增字段:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。

GUID:效率高、数据导入导出方便;缺点占用空间大、不易读。

 

业界主流倾向与使用GUID

SQL查询语句

插数据:

Insert into表名(列名) values(值) 列名与值对应

可以省略列名(不推荐)

不推荐把GUID主键列的默认值设成NEWID()

示例:insert into usersidnameagevaluesnewid(),张三18

Update 更新

Update 表名 set 列名1=值,列名2=

SQLSERVER里面更新的时候如果出现汉字需要在汉字前加个N

EXAMupdate Users set Name=N’张三’ where Age=18

Delete 删除

Delete from表名删除表内所有数据可以加限制条件

Examdelete 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匹配arrayerray等只要前一个字符任意后面是rray的都匹配

多字符通配符%,匹配任意次数出现的任意字符 %K只要末尾是K的都匹配

SQLSEVERNull表示不知道的意思 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培训、期待与您交流! --------------------

 

详细请查http://net.itheima.com/

 

原创粉丝点击