欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2008 SQL Server 基础复习大纲

程序员文章站 2022-05-16 16:25:39
...
一、 数据库基础
1. 使用数据库的好处:
 数据按照固定的结构化的形式统一存放在一起,可以进行有效的检索和访问,并可以对数据集中进行控制;
 可以减少数据的冗余度,只包含较少的重复数据,能够有效的保持数据的一致性和完整性;
 实现数据共享和并发控制,数据可以被多个用户使用,可以同时存取数据库中的数据,可以通过不同程序设计语言来访问数据库,并在他们同时访问数据库的时候,互相之间不受影响;
 有助于维护数据的独立性,数据的存储形式和逻辑结构的变化尽可能不导致对应用程序的修改;
 加强对数据的保护,保证数据的完整性、有效性和一致性,对数据进行保密性控制以防止数据被非法使用,并提适当的数据恢复能力;
2. SQL:结构化查询语言,用来和数据库系统交互,以数据库能理解、分析和执行的形式来对数据做出处理;SQL具有国际标准;
3. 数据库技术的发展历史:
 数据库技术提出时间:20世纪60年代;
 时代背景:数据库技术没有提出时使用的是数据文件存放数据;该方式的不足:第一:不能对数据进行有效的统一管理;第二:不利于提供对数据的并发访问,无法充分发挥计算机系统的资源使用效率,也无法提供可靠的安全保证;
 数据库技术基本思想:解决用户数据共享的问题,实现对数据的集中统一管理,具有较高的数据独立性,并为数据提供各种保护措施;
 1964年,美国通用电气公司开发成功了世界上第一个数据库系统IDS(Integrated Data Store) – 奠定了网状数据库的基础;
 1969年,美国国际商用机器公司(IBM)推出第一个层次数据库系统IMS Information Management System ;
 关系型数据库的设计基础奠定:IBM 公司的E.F.Codd从1970年至1974年发表一系列的有关关系型模型的论文;
 世界范围内的主流应用:关系型数据库-例如:Oracle .SQL Server ,DB2,Sybase ,Informix;

4. 常见数据库系统简介:
 SQL Server:关系数据库;
a) 使用语言:T-SQL:不仅是一种查询语言,还是一种设计用于和关系数据库系统进行交互的编程语言;T-SQL 采用的是一种复杂的、功能全面的语法,能有效的实现数据访问;
b) 运行环境:Windows 平台;
 Oracle : 对象-关系型数据库,不是纯关系型数据库;
a) 使用语言:PL/SQL;
b) 运行环境:多种操作系统;
 MySQL : 关系型数据库
a) 运行环境:多平台
b) 特点:小型数据应用领域有很大的用户,结构简单,部署方便;


二、 第二章 使用SQL Server Management Studio管理数据库
1. 文件和文件组:事务日志文件不属于任何文件组;
 数据库存放数据方式:数据库存放数据,数据库以文件的形式存放在计算机硬盘中;
 数据库文件:存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库;
a) 主数据库文件:mdf,用来存储数据库的启动信息和部分或全部数据;一个数据库只能有一个主数据库文件;
b) 次数据库文件:ndf,用来存储主文件没有存储的其它数据;

 采用多个数据库文件存储数据的优点:
a) 数据库文件可以不断的扩充而不受操作系统文件大小的限制;
b) 可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高数据处理效率;

2. 数据完整性:指数据的精确性和可靠性;
 实体完整性:指表中行的完整性;要求表中所有行都有唯一的标识符,也称为主关键字;
 域完整性:表中的数据是合法的数据;
 引用完整性:某列的值必须与其他列的值匹配;

3. 约束:
 主键:满足实体完整性,设定主键约束;主键是指能够唯一标识表中一条记录的键;
 检查约束:为了保证域的完整性;
 外键:确保数据完整性,也能表现表之间的关系;
a) 特点:外键在定义外键的表(外键表)和外键引用的表(主键表)之间创建依赖关系,添加外键约束后,外键表的记录或者必须与主键表中被引用列的某个记录匹配,或者外键列的值为空;references 主键表(列)
b) 只有表的主键列或唯一列才能被其他表引用;
 默认约束:为表中的某列添加默认值;
 标识列:在没有主键的情况下使用标识列,由系统生成;
 列值是否允许为空:设置某列是否允许为空;
 唯一约束:用于指定一个或者多个列的组合具有唯一性,防止重复;


三、 第三章 查询分析器--数据库管理
1. SQL和T-SQL:
 SQL:数据库的指令,执行对应操作为程序提供数据;
a) 时间:1974年,Boyce和Chamberlin 提出;
b) 用途:SQL语言已成为关系型数据库的标准语言;

 T-SQL:Transact-SQL:标准SQL的加强版,除了基本的SQL命令之外还做了许多的补充,如:变量说明、流程控制、功能函数;
a) 用途:T-SQL 为.NET 语言;

2. 数据库管理:
 创建数据库:
a) 简写:create database 库名
 删除数据库:drop database 库名

3. 数据库表的管理:
 创建表:create table 表名(id int  primary key identity(1,1),name  varchar(10) not null)
 删除表:drop table 表名
 管理约束:
a) 主键约束:primary key constraint
b) 唯一约束:unique constraint
c) 检查约束:check constraint
d) 默认约束:default onstraint
e) 外键约束:foreign key constraint

 添加约束:
a) 语法:alter table 表名 add constraint 约束名  约束类型 具体约束说明
b) 例如:alter table t_user add constraint PK_ID primary key(ID)
c) 例如:alter table t_user add constraint UN_NAME unique (name)
d) 例如:alter table t_user add constraint DF_SEX default(1) for sex
e) 例如:alter table t_user add constraint CK_AGE check(age>10 and age<20)
f) 例如:alter table t_user add constraint FK_ID foreign key(ID) references student(ID)


四、 第四章 SQLServer 数据库管理
1. T-SQL 语言的组成:
 数据定义语言(DDL Data Definition Language) 
a) 用来建立数据库,数据库表和定义其列;
b) 如:create table , create database 等;
 数据操控语言(DML ,Data Manipulation Language )
a) 用途:用来操作数据库中数据的命令;
b) 例子:select ,updata ,insert,delete等
 数据控制语言(DCL, Data Control Language)
a) 用来控制数据库组件的存取许可,存取权限等命令;
b) 如:GRANT 、REVOKE等;
 流程控制语言 (FCL, Flow Control Language)
a) 用于设计应用程序的语句;
b) IF   WHILE   CASE 等;

 补充:T-SQL 还有变量说明,内嵌函数等命令;

2. T-SQL 条件表达式和逻辑运算符
 T-SQL 中的表达式是由:符号和运算符组成;
 简单表达式:可以是一个常量、变量、列或者函数组成,然后用逻辑运算符把两个或多个简单表达式连接成复杂表达式;
 条件表达式:
a) 比较运算符:= 、>、>=、<、<=、!= 等
b) 逻辑运算符:and 、or、 not
c) 算术运算符:+ 、-、 *、 /

3. 数据库操控语言(DML):
 Select  语句:select <列名> from 表名 where 条件表达式
 Insert  语句:insert into 表名[列名] values(值)
 Update 语句:update 表名 set 列1=更新值,列2=更新值 where 条件表达式
 Delete  语句:delete from 表名 where 条件表达式
 Truncate 语句:删除表中的记录
a) Truncate table 表名
 插入多行数据:select …into…语句
a) 该语句用于把查询的结果存放到一个新表中(不存在的表);
b) Into 后面直接跟上新建的表名称;
c) 注意:使用select ..into…向表中添加数据时,这个表必须是原数据库中不存在的新表,否则会出错;
d) 例如:select * into table2 from table1 where id=2  
 一次插入多行:insert into …select….语句:
a) 语法:insert into 表名[列名列表] select 语句
b) 例如:insert into table2(name,age) select name ,age from table1

五、 第五章 数据查询
1. 查询分为两大类:一类是用于数据检索的选择查询(select query),另一类是用于更新的行为查询(Action query);
2. 数据查询 概述:
 任何一种SQL语言中,SELECT 语句都是一个使用频率最高的查询语言;
 SQL Server 中:SELECT 语句是一个最基本和最重要的语句,功能是执行一个选择查询,查询的数据源可以是一个货多个表或视图;
 SELECT 用途:
a) 选择查询;
b) 对记录排序;
c) 对字段汇总计算;
d) 用检索到的记录创建新表;
 设置字段别名:显示选择查询的结果时,表头第一行显示的是各个输出字段的名称;
a) 例如:SELECT ID AS 学号,姓名=name,sex 性别 from t_user

 字段的计算:(用法与语言中一般字符拼接类似)
a) 例如:select name+”-”+sex as 姓名-性别 from t_user

 使用关键字限制记录行数:
a) All :返回全部记录
b) Distinct::过滤重复记录;select distinct id from t_user
c) Top :显示前面若干条记录:select top 4 * from t_user  //select top 40 percent * from t_user 获取40%条记录;

 对查询记录的选择与处理:
a) 对查询的结果进行筛选:
 使用where 语句: >   >=  =   <   <=  <>   !>   !<
 范围表达式:between….and…/// not between ….and ……select * from t_user id between 2 and 4
 列表运算符(判断表达式是否为列表中的指定项):in(项1,项2)    IN关键字可以选择与列表中的任意值匹配的行;                   not in(value1,value2,value3)
 空值判断符:判断表达式是否为空
i. Is null
ii. Is not null
 逻辑运算符:用于多条件的逻辑连接
i. Not
ii. And
iii. Or
 模式匹配符:判断值是否与指定的字符通配格式相符:
i. Like
ii. Not like
iii. LIKE 关键字搜索与指定模式匹配的字符串、日期或时间值;

 几种通配符的介绍:
通配符 含义
% 包含零或更多字符的任意字符串
_ 任何单个字符
[] 指定范围:[a-f] 或[abcdef] [1,2,3,5] 内的任何单个字符
[^] 不在指定的范围:[^a-f]内的任何单个字符


b) 对查询的结果排序:
 使用ORDER BY 子句:在order by 子句中可以使用一个或多个排序要求,优先级次序从左到右;使用asc 和desc 规定排序的方式:asc 升序 desc:降序; null 值被默认的为最小的值;
 例如:select * from t_User where name=’xiao’ order by age desc,id asc

c) 对查询结果计算:
 使用sum函数计算字段的累加和:sum函数用于统计数值型字段的综合,它只能用于数值型字段,而且null值将被忽略;              select sum(age) from t_user
 使用avg 函数计算字段的平均值:avg函数用于计算一个数值型字段的平均值,null值在计算过程中忽略;
 使用max 和 min 函数计算字段的最大值和最小值:
 使用count 函数用于统计字段中选取的项数或查询输出记录行数;

d) 对查询结果进行分组:
 使用group by 子句:将结果集内的记录分成若干个组来输出,每个组中记录的记录在指定的字段中具有相同的值;
i. 注意:当指定group by 时,字段列表中任一非聚合表达式内的所有字段都应包含在GROUP BY 列表中,或者group by  表达式必须与字段列表表达式完全匹配;
ii. 分组表达式是执行分组时所依据的一个表达式,通常是一个字段名。在字段列表中指定的字段别名不能作为分组表达式来使用;另外,text ,ntext ,image 以及bit数据类型的字段也不能在分组表达式中;
 使用having 子句:having 子句用于指定组或聚合的搜索条件,该子句通常与group by 子句一起使用,如果不使用group by 子句,则having 子句的行为与where 子句一样;不同的是,where 子句搜索条件在进行分组操作之前应用,而having 搜索条件在进行分组操作之后应用;
i. 特点:having 子句可以包含聚合函数;
ii. Having 子句可以引用字段表中出现的任意项;
iii. Having 是运算聚合后的数据进行条件筛选;
iv. 例如:统计平均成绩大于75分的科目

Select subject ,avg(score) from t_user group by subject having avg(score)>75
六、 第六章 联接查询
1. 内部联接查询:联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系型数据库的主要特征;
 内部联接基本语法:select 列 from 表1inner join 表2 on 条件表达式
 带条件的内部联接:select 列 from 表1inner join 表2 on 条件表达式 where 条件表达式
 Inner join—类似where子句:使用where实现内部联接查询:select 列 from 表1,表2 where 条件表达式
 更复杂的链接查询:select 字段列表 from 表1 inner join 表2 on 条件表达式1 inner join 表3 on 条件表达式2…..

2. 外部联接查询:分为左外部联接和右外部联接两种。以主表所在的方向区分外部联接,主表在join的左边,则称为左外部联接,反之..;
 外部联接语法:select 字段列表 from 表1 <left/right>[outer] join 表2 on 条件表达式

3. 使用union 和 union all 进行并集运算:对两组查询进行并集运算
 Union 是一个特殊的运算符,用于将两个或两个以上的查询产生一个结果集;;
 联合并不是真正的联接,作用更像是将一个查询返回的数据附加到另一个查询结果的末尾;join 将信息水平连接,而union 将数据垂直连接;
 使用union注意事项:
a) 两个查询select 必须有相同的列数;
b) 查询中对应列的数据类型必须隐士一致;
c) Union 查询默认返回选项为:distinct ,如需返回所有则使用:union all

4. 使用intersect 进行交集运算:将两个结果集中相同记录取出来形成一个新的集合;
5. 使用EXCEPT 进行减集运算:比较两个结果集,将except 关键字前的结果集除去交集部分而组成的新的集合;
 注意:减集的最后获得的结果与2个结果集放的顺序有密切的关系;
6. 提示:联接不仅可以在表之间进行,也可以使一个表同其自身进行联接,这种联接称为自联接,相应的查询称为自联接查询;