------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
(1)数据库
DBMS(DataBase Management System,数据库管理系统),
DB(Database DB)不同的数据库有不同的特点,大部分数据库都需要数据库服务器才能运行,学习开发是连接本机的数据库,上线运行时数据库运行在单独的服务器。
使用数据库的必要性:
①可以结构化存储大量的数据信息
②可以有效地保持数据信息的一致性,完整性,降低数据冗余
③可以满足应用的共享和安全方面的要求
④数据库技术能够方便智能化地分析,产生新的有用信息
数据库管理系统与数据库的关系:
数据库管理系统的主要功能是维护数据库,并有效的访问数据库中各个部分的数据,数据库系统是一个实际可运行的系统,可以对系统提供的数据进行存储,维护和应用,它是由存储介质,处理对象和管理系统共同组成的集合体,通常由软件,数据库和数据库管理员组成,数据库有数据库管理系统统一管理,数据的插入,修改和检索都要通过数据库管理系统运行。
Table:也称为表。
不同类型的资料放到不同的“格子”中,将这种区域叫做“表”,不同的表根据放的数据不同进行空间的优化,找起来也比价方便。
主键:如果我们在表中存储了很多数据,那么如何判断表中没有重复的数据行,如何判断有没有重复的数据。那么我们就需要有一个列,这个列的值用来唯一标识表中的每一行,用于强制表的实体完整性,这样的列定义为表的主键。
(2)SQL简介
使用SQL的好处?
SQL是针对数据库而言的一门语言,它可以创建数据库,数据表,可以针对数据库的数据进行增,删,改,查等操作,它可以创建视图,存储过程,可以赋予用户权限等。
SQL不同于其它编程语言,它是只能被数据库识别的指令。
SQL中提供了是中数据库备份方式:
完全备份:备份整个数据库的所有内容,包括事物日志
差异备份:只备份了上次完整备份后更改的数据部分
事物日志备份:只备份事务日志里的内容
文件和文件组备份:如果数据库创建了多个数据库文件或文件组,只备份数据库中的这些文件中的某些文件。
(3)SQL语句
①创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多:
CREATE TABLE T_Person
(
Id int NOT NULL primary key,identity,--primary key是指声明为主键形式,identity是设为标识列,标识列会自动增长
Name nvarchar(50),
Age int NULL
)
Drop table T_Person1 Truncate 删除数据的同时也删除了标识列,而delete只是删除数据 drop是删除了整个表
②使用INSERT插入数据
语法:INSERT [INTO] 表名 [(列名列表)] VALUES (值列表);
[INTO] 是可选的,也可省略。表明是必须的,标的列名是可选的,如果省略将依次插入所有列,多个列名和多个值列表用逗号分隔,分号不是必须的。
INSERT INTO Student(SName,SAddress,SGrade,SEmail,SSEX)
VALUES('张三','北京’,6,'xingkongqq.com',0)
③一次插入多行数据
通过三种方法来举例
通过INSERT SELECT
INSERT INTO AddressList (姓名,地址,电子邮件)
SELECT SName,SAddress,SEmail
FROM Srudents
通过SELECT INTO
SELECT Students.SName,Students.SAddress,Students,SEmail
INTO AddressList
FROM Students
通过UNION关键字
INSERT STUDENTS (SName,SGrade,SSex)
SELECT '张三’,3,1, UNION
SELECT '李四’,4,1 UNION
SELECT '王五’,3,1, UNION
SELECT '赵六’,3,1, UNION
④Delete和Table的区别
Drop table T_Person1 Truncate 删除数据的同时也删除了标识列,而delete只是删除数据 drop是删除了整个表
删除- delete [from] Table where col=data
删除表中全部数据:DELETE FROM T_Person。
Delete 也可以带where子句来删除一部分数据:DELETE FROM T_Person WHERE FAge > 20
(4)相关概念
索引Index:
全表扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条条的找。
如果没有目录,查汉语字典就要一页页的翻,而有了目录只要查询目录即可。为了提高检索的速度,可以为经常进行检索的列添加索引,相当于创建目录。
创建索引的方式,在表设计器中点击右键,选择“索引/键”→添加→在列中选择索引包含的列。
使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需要同步更新索引,因此会降低Insert、Update、Delete的速度。只在经常检索的字段上(Where)创建索引。即使创建了索引,仍然有可能全表扫描,比如like、函数、类型转换等。
数据分组:
按照年龄进行分组统计各个年龄段的人数:
SELECT FAge,Count(*) FROM T_Employee GROUP BY Fage
GROUP BY子句必须放到WHERE语句的之后
没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外)
错误:
SELECT FAge,FSalary FROM T_Employee GROUP BY FAge
正确:
SELECT FAge,AVG(FSalary) FROM T_Employee GROUP BY FAge--聚合函数是不受Group By分组限制的
数字函数:
ABS():求绝对值
Ceiling():舍入到最大整数
floor():舍入到最小整数
Round():四舍五入
Guid算法:
是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。在公元3400年以前产生的GUID与任何其他产生过的GUID都不相同。SQLServer中生成GUID的函数newid(),.Net中生成Guid的方法:Guid.NewGuid(),返回是Guid类型。
(*)Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
(*)Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。业界主流倾向于使用Guid。
知识点总结:
①SQL语句中字符串用单引号,并且所谓的对大小写不敏感仅仅针对于关键字,对字符串还是敏感的。
②主键的选择:
主键的选用有两种策略:业务主键和逻辑主键,业务主键使用有业务意义的字段做主键,逻辑主键是使用没有任何业务意义的字段做主键,因为很难保证业务主键不会重复,因此推荐使用逻辑主键。
③主键的唯一性
一个表只能有一个主键,主键约束确保了表中汗是唯一的。
④SQL语句中字符串用单引号,有char、varchar、nchar、nvarchar四种形式,其中带有var的是可变长度,带有n的一般多见于存储汉字
SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML
⑤空值处理
数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null,数据库中的null表示“不知道”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。
SELECT * FROM T_Employee WHERE FNAME=null ;
SELECT * FROM T_Employee WHERE FNAME!=null ;
都没有任何返回结果,因为数据库也“不知道”。
SQL中使用is null、is not null来进行空值判断:
SELECT * FROM T_Employee WHERE FNAME is null ;
SELECT * FROM T_Employee WHERE FNAME is not null ;
⑥Having语句(分组后查询条件)
在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后:
SELECT FAge,COUNT(*) AS 人数 FROM T_Employee
GROUP BY FAge
HAVING COUNT(*)>1
注意Having中不能使用未参与分组的列,Having不能替代where。作用不一样,Having是对组进行过滤。
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------