SQLServer复习(自己的笔记,想在这里做个记录,新手噢)
数据库概述
-
数据库的概念和作用
数据库是指长期存储在计算机内,有组织的、可共享的数据集合。
数据库的特点:数据独立性、数据共享、减少数据冗余度、数据的集中控制、维护了数据的完整性、提高了数据的可恢复性。 -
数据库类型
数据库的类型是根据数据模型来划分的,而任何一个数据库管理系统也是根据数据模型有针对性的设计出来的。
层次模型数据库、网状模型数据库、关系模型数据库。 -
数据模型
数据模型主要是确定系统中数据的定义和格式。
数据模型的类型:概念数据模型、逻辑数据模型、物理数据模型。
它的三要素:描述系统的数据结构(静态)、数据操作(动态)、完整性约束条件。 -
数据库管理系统
数据库管理系统可以创建、使用和维护数据库。对数据定义,增删改查,对数据进行组织等等。
常见的关系模型数据库:Oracle、DB2、SQL Server. -
数据库系统
数据库系统的构成:硬件、软件、数据库、用户。
硬件:主机、存储器、显示器等等。
软件:应用程序、操作系统、数据库管理系统。
用户:终端用户、程序开发人员、数据库管理员。
结构化查询语言 数据定义语句:DDL \ 数据操作语句:DML \ 数据控制语句:DCL
数据库的创建命令:CREATE DATABASE 数据库名;
数据库的删除命令:DROP DATABASE 数据库名;
数据库的切换(当前使用的数据库)命令:USE 数据库名;
向表中添加数据:insert into 表名 values 查看表中的数据:select * from 表名;
给表添加一个字段:alter table 表名 add 字段名 数据类型;
修改字段的数据类型:alter table 表名 modify 字段名 数据类型;
更新指定字段的值: update 表名 set 字段名=值; 更新某条记录(指定一个满足条件的范围,并更新该记录): update 表名 set 字段字=值 where 条件表达式;
主键约束(primary key)
非空约束(not null)
唯一约束(unique)
检查约束(check)
默认约束(default)
外键约束(foreign key)
内连接用inner join 关键字指定 语法:select * from 表1 inner join 表2 on 条件表达式;
外连接,是连接查询的扩展,可以处理缺失信息,又分为左外连接,右外连接,全外连接三种。
数据库概念设计(ER建模)
- 实体集用矩形框来,属性用椭圆,码(在实体集中例如学号,就叫做码),联系用菱形来表达。
- 画图时在每个实体的主码上加上下划线。
- 它们之间的联系:1:1(一对一),1:n(一对多),m:n(多对多)。
数据库逻辑设计
- ER图转化关系模式要说明主码和外码。多对多之间的联系需要单独定义(菱形框)。
- m:n联系转成关系模式,主码和外码都是联系中的主码(例如学号,课程号)。
- 1:n转换成关系模式,一端并入到多端中,说明外码即可,不必定义联系。
- 1:1的任意端可以并入到任意端中去。
数据库物理设计
- 索引设计:有序索引and散列索引。
三级常考填空
- UML的定义是由语义和表示法组成
- 语义是定义在一个四层建模概念框架中,这四层分别是:元元模型层,,元模型层,模型层,用户模型层。
- 活动图:主要用于描述系统、用例和程序模块中逻辑流程的先后执行次序,并行次序。
- 用例模型是把满足用户需求的所有功能表示出来的工具。
- 用例模型由:用例、角色、系统三部分组成。
- 用例之间的关系包括扩展、使用、组合。
- 顺序图主要用于描述系统内对象之间的消息发送和接收序列。顺序图有两个坐标轴:纵向表示时间的持续过程,横向表示对象,每个对象用矩形框表示,纵向的虚线表示对象在序列中的执行情况,称为对象的“生命线”。
- 协作图:用于描述对象在空间中如何交互,即除了动态交互,它也直接描述了对象是如何链接在一起的。
- 部署图:描述系统中硬件和软件的物理配置情况和系统体系结构。
SQL高级数据查询
-
Top n:取查询结果前的n行数据。
-
Top n precent:去查询结果的前%行数据。
-
With Ties:表示包括最后一行取值并列的结果。
-
注意:在使用top时,应该与ORDER BY子句一起使用,这样前几名才有意义。Desc表示降序,Asc表示降序。
简单case函数:可以在查询语句中使用case函数,达到分情况显示不同类型的数据。相当于C语言中的swich().
-
CASE WHEN 简单表达式1 THEN 结果表达式1
-
WHEN 简单表达式2 THEN 结果表达式2
-
Else 结果表达式 END
-
搜索case函数:区别在于WHEN子句的表达式可以使用比较和逻辑运算符。其格式跟简单函数一样。
-
Case WHEN 简单表达式1 THEN 结果表达式1 Else 结果表达式 End
-
将查询结果永久保存在一个表中:通过在select语句中使用into子句实现。
-
Select 查询列表序列 INTO 新表名
-
局部临时表的表名前+ #,全局临时表的表名前+ ##,永久表不加。
查询结果的并、交、差运算
- 并运算:关键字为UNION,并为一个结果集 格式:Select 语句1 UNION select 语句2.
交运算:各列的相同的值,构成的结果集。关键字:intersect 其格式同上。
差运算:在第一个集合中有但第二个集合中没有的数据。关键字:EXCEPT
相关子查询
- 子查询的语句通常为一下三种:
- Where 表达式 IN/NOT IN
- 将它们和外查询进行等于或者不同于的比较 例:select address IN(select address from tabo where came=’洪可’)
- Where 表达式 比较运算符(子查询),比较运算符==、>、<。
- where 表达式 EXISTS (子查询)
- EXISTS:当子查询中有满足条件的数据时返回真值,否则假值。
- Not exists:当子查询中有满足条件的数据时返回假值,否则真值。
替代表达式的子查询
派生表:由子查询产生的新表叫派生表,也就是在子查询的括号外面as 新表名。
注意:这里into是保存整个查询结果的表,可以分为永久表和临时表。而as是临时表,是对于子查询的派生表。在生成派生表后,其操作和普通表一样。
Sql server数据库的组成
-
数据文件分为:主要数据文件.mdf,次要数据库文件.ndf
-
事务日志文件:.ldf
-
数据库文件组: 分为用户自定义和主文件组,主文件组是系统定义好的,用户自定义使用关键字filegroup指定任何的文件组。
-
定义架构: 就是定义了一个命名空间,在这个空间可以定义该架构的数据库对象,比如表,视图等。
-
格式: create schema 架构名 authorization 用户名
-
删除架构: drop schema 架构名
数据库后台编程技术
-
使用T-SQL语言编写代码时,可以用两种方法存储和执行代码:一种时在客户端存储,第二种是以子程序的形式将程序模块存储在数据库中。
-
存储过程:就是以子程序的形式将程序存在数据库中。
定义存储过程: Create PROC 存储过程名 如果有参数在此行声明(@...) AS … 执行存储过程: EXEC 存储过程名 参数 删除存储过程:drop proc 存储名
-
用户自定义函数:标量函数和表值函数。
-
标量函数:返回单个数据。表值函数:返回一个表 定义标量函数:
Create function 函数名 RETURN 返回值类型 <mark>除了timeestamp以外所有类型都可以</mark> AS Begin Return 参数 End Begin-end是函数体 调用标量函数: 函数名(); 例如: select name_hongke(参数)
-
触发器:是一种特殊的存储过程,其特殊性在于它不需要用户直接调用,而是在对表中的数据进行update、insert、delect操作时自动触发执行的。
CREATE trigger 触发器名称 ON 表名 FOR|AFTER|INSTEAD OF (触发操作INSERT) AS BEGIN END
-
Deleted将更改前的数据保存到deleted表中。
-
Inserted将更改后的数据保存到deleted表中, 这两个表驻留在内存中。
-
删除触发器:drop trigger 触发器名称
-
游标的定义 : declare 名称 cursor for
-
打开游标: open 名字
-
Close 关闭游标
-
Deallocate 名 释放游标
-
@@fetch_ATATUS=0 这句的意思时返回游标的最终值