首先,祝贺自己在一周的时间内完成了数据库视频的学习。在此次学习的过程中,整体上是把SQL server的各个客户端软件都整体的说了一遍,并且有实际操作的视频。在这里面,除了MS我能理解,其他的都能理解其中的意义,像BIDS,从功能上和MS区别很大,但是结果上感觉两者略有重复,不明白为什么,配置管理器只能跟着人家走,和网络配置还有SQL client有关。
导图:在画导图的时候,我的理解是从几个方面开始的,首先是介绍了SQL server的一些前因后果,及其体系结构和规则。然后从管理工具的角度去一一详述各个模块的功能和实践操作在这个基础上。并把其中的事务和安全单独出来着重的讲解了一番。因为其本身是数据库为基础,所以从数据库这也着重讲解了其中的增改删。在这个整体的基础上,所有的功能实现都有着一个基本的特征,可以增改删,以保证可以优化,为这个数据库续命,虽然后生命周期一说,但是不断的优化,明显是一种延长数据库寿命的一种方法。
下面是一张汇总导图和一些看视频中我自己的记录,基本上每一章都有记录,是自己的一点当时不成熟的理解,如果有误,请谅解并说明一下,方便我下次不犯同样的错误!
常见数据库模型
层次模型,网状模型更紧密,关系模型独立数据表目标根据关键字关联。
关系数据库
键,完整性规则,实体,参照,用户定义。
范式
1234,Boyce-Codd(BVNF)。
E-R模型
(实体-联系数据模型):语义数据模型,面型问题的概念性数据模型,用图反映现实中存在的事物或数据及它们之间的关系,
实体
描述世界中具体事务(可见,可抽象)
关系
一对一,一对多,多对多关联。
SQL server 2008体系结构
数据库引擎可以创建数据库,表,视图,数据查询,访问数据库。
Analysis services
提供联机分析处理(Online Analytical Processing,OLAP)和数据挖掘功能。
Reporting services
用于创建和发布报表及报表模型的图形工具和想到对其对象模型进行编程和客栈的应用程序编程接口(API)。
Integration Services
是一个数据集成平台,负责完成有关数据的提取,转换和加载等操。
IIS,安装和卸载
第二章
Management Studio
是一个集成环境,用于访问,配置,管理和开发SQL server的所有组件。可以协同工作。
新建查询:use Student
select * from dbo.student_Info
模板资源管理器
提供脚本模板-提供编写查询的起点。Stored Procedure(存储过程)
SQL server联机丛书
新的帮助查看器,新教程,基于角色的导航,帮助,目录,数据库引擎,索引,帮助收藏夹
配置管理器
包含色,服务,网络配置和SQL Client配置,这个是单独打开的服务于电脑上的服务互通。
BIDS
开发包括()在内的商业解决方案的主要环境,提供各种设计器,工具和向导。(独立客户端)
外围应用配置器
这个在SQL server2008里,在方面里边。
Sqlcmd工具
用cmd查看数据库Student的数据,更改,并用Sqlcmd -?查看所有方法。
总结:各个客户端的应用以及工具位置
第三章:
数据库组成
表,视图,存储过程,触发器,用户与角色,其他数据库部分
使用管理工具创建数据库
建立数据库过程,
使用语句创建数据库
语法格式,使用SQL语句创建数据库在G盘下载里。
CREATE DATABASE 教务管理系统
ON
(
NAME=教务管理系统_DATA,
FILENAME='G:\下载\教务管理系统_DATA.mdf',
SIZE = 5MB,
MAXSIZE = 20MB,
FILEGROWTH = 5%
)
LOG ON
(
NAME =教务管理系统_LOG,
FILENAME='G:\下载\教务管理系统_log.ldf',
SIZE = 2MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB
)
查看数据库状态
目录视图,使用函数,系统存储过程。sp_helpdb查询现有数据库
修改数据库
重命名,容量大小,添加新的数据文件SQL语句改名。
删除数据库
注意数据文件,DROP DATABASE 教务管理系统(SQL语句删除)在数据库下建立的查询,无法删除自己。
分离和附加数据库
分离数据库,都不会删除文件和事务日志文件。无法分离状态:已复制并发布数据库,数据库中存在数据库快照,数据库处于未知状态。附加数据库:将当前数据库以外的数据库附加到当前数据库实例中。使用中无法复制,在任务中分离,断开连接。
收缩数据库
整个数据收缩或某个文件收缩。
数据库快照
静态呈现,只读,静态视图。不会随数据库变化,优点,维护历史数据以生成报表,可以查询快照,加快恢复操作效率。但是会丢失一些数据。限制:不能删除,分离或还原。源数据库的性能受到影响,不能从源数据库或任何快照中删除文件,源数据库必须处于在线状态,除非是镜像数据库。
创建数据库快照
语句创建,语句删除。未实验成功 as附近有错误
复制数据库
分离和附加方法不能连接用户,SQL管理对象方法可以保持连接。
第四章
字段的数据类型
整数数据类型,精度类型,货币类型,浮点类型,Bit。字符数据类型:char,Varchar,Text,NcharNcarchar,ntext.日期和时间数据累心:datetime—smalldatetime.二进制数据类型:binary,varbinay,image.专用数据类型。
CREATE TABLE语句
语法格式。SQL语句实验。
创建数据表
列名,数据类型,允许空?图像数据类型。
临时表
系统表,用户自定义表,数据表,临时表。不能永久保存。本地和全局。全局临时表##打头,所有用户可见。无连接的时候被删除。
设置标识字段
数据表,设计,标识,更改。
使用默认值
数据表,设计,默认值绑定。减少输入项。
创建约束
当不符合约束时,报错,作为规则使用。
修改表
直接修改或者SQL语句修改。
用户自定义数据类型
基于系统数据类型。必须提供三个数,数据类型的名称,所基于的系统数据类型,数据类型的可空性。数据库-可编程性-类型-自定义通过数据类型保护数据库的完整性
使用规则
作用于CHECK约束的部分功能相同,用来限制输入的新值得取值范围。前者需要单独的数据库对象来实现,后置用语句在常见表时指定,前者一列一规则,后者可以多个。前者可以用于多个列,后者只能用于定义的列。
解除和删除规则
解除:sp_unbindrule{@objectname=}
[,[@futureonly=]
Sp_unbindrule (删除规则绑定)
数据关系图
实操数据关系图:每一个表之间关系明确,并要求跟随主键,不能自己做多余的生成。
第五章
创建视图
两种方法:图形界面或语法:
修改和删除视图
与创建一样
DROP VIEW V_STUDENTINFO(删除语句)
通过视图修改数据
注意:SELECT列表中含有DISTINCT。SELECT列表中含有表达式,例如计算列,函数等。在FROM子句中引用多个表。引用不可更新的视图。GROUP BY或HAVING子句。添加时,注意非空项,如果不注入数据会报错。
索引概述
索引是一个单独的,物理的数据库结构。依赖数据表。可以把索引看做书的目录。索引创建,将有数据库自动管理和维护。索引只是提供一种快速锁定访问指定记录。优点,唯一性,不重复。加快数据检索速度。加快表与表之间的链接速度。使用语句检索数据时,减少分组和排序的时间。在检索数据过程中使用优化隐藏器,提高性能。
创建索引
语法:
关键字关键字红线。类型UNIQUE微型索引,CLUSTERED聚集索引(包含一个)NONCLUSTERED非聚集索引(可以包含多个)index_name索引名称。界面创作,语句创作
管理索引
直接实操,不能修改,只能删除和添加。界面删除,语句删除:drop index 前名称.附名称
全文索引和目录
直接实操:有向导。更新分为自动,手动,不跟踪更改。
创建构架
相当于一个一个容器。两种方式,语句或视图。在安全里面创建构架
create schema admins(名字) AUTHORIZATION teacher
修改和删除机构
实操:系统表(dbo的更改)在属性里。使用中无法删除。语句:create schema admins AUTHORIZATION teacher
聚集索引和非聚集索引
聚集索引确定表中的物理顺序。可以组合索引。对于经常搜索范围值特别有效。使用场景:含有大量非重复值得列。使用BETWEEN,>,>=,<或<=返回一个范围值得列。被连续访问的列。返回大型结果集的查询。经常被使用连接或GROUP BY自己的查询访问的了(分组)。
非聚集索引:数据存储在一个位置,索引存储在另一个位置,索引带有指针指向数据存储位置。两个索引有相同的B-Tree结构,担忧两个区别:数据行不按非聚集索引键的顺序排列和组合。非聚集索引的叶层不包含数据页,相反,节点包含索引行。非聚集索引可常见249个之多。不能用XML索引。
第六章 查询和管理
简单的SELECT语句
SELECT [ALL|DISTINCT] select_list
[INTO new_table]
FROM table_source
[WHERE (搜索条件)search_conditions]
[GROUP BY group_by_expression]按组查询
[HAVING search_conditions]
[ORDER BY order_expression [ ASC|DESC]]排序
SELECT * FROM (表名称)查询全部信息。可以,查单列(列名字)
Select 12*13 AS 计算结(计算)AS,输入列名。
DELECT 民族 from 学生信息
设置查询条件
实操:
SELECT * FROM 学生信息(表的所有列)
SELECT * FROM 学生信息 WHERE 姓名=“张苗苗”单独查询。
SELECT * FROM 写生信息 WHERE 民族=‘汉族’只列有民族的表中汉族。
SELECT * FROM 写生信息 WHERE 民族=‘汉族’AND 性别=‘女’
SELECT * FROM 写生信息 WHERE 民族=‘汉族’OR性别=‘男’(多个OR或AND)
SELECT * FROM 写生信息 WHERE 家庭住址 like ‘河南%’(家庭住址中河南在前的所有)<>=
排序
删选结果排序:
SELECT * FROM 成绩信息 where 考试编号=‘0801’ AND ‘1’
ORDER BY 分数,DESC学生编号DESC 降序排数(双排序)
分组
SELECT 课程编号,AVG(分数) FROM 成绩信息WHERE 考试编号=‘0801’GROUP BY rollup课程编号 列对行分组(rollup平均数) cube编序
使用函数
SELECT top 3 FROM 成绩信息 WHERE 考试编号=‘0801’ AND 课程编号=‘2’
MIN最大 AVG平均 SUM求和 数学函数
ORDER BY 分数 top 3 要前三名信息
使用HAVING子句
HAVING AVG (分数)>=90
ORDER BY 考试编号(排序)
插入数据
INSERT语法:新增记录
INSERT[INTO] table_or_view [(columm_list)] VALUES data_values
Table or_view用于指定想数据表中添加数据的表或视图名称
Column_list用于指定改数据表的列名,可以指定一列或多列,必须放在()中
Data_values用于指定向数据表中插入的数据值
INSERT INTO 学生信息 VALUEX(‘2019100101’,’黎明’,男’,1986-06-01,’汉族’,’20050101’,’河南郑州’如果有非空,那就必须输入数据
INSERT…SELECT语句
格式:
INSERT table_name[column_list](列名)
SELECT column_list
FROM table_list(从其他数据表要数据)
WHERE search_condirions(查询)
INSERT 学生信息1
SELECT * FROM 学生信息 插入数据 受影响有几条插入几条
INSERT 学生信息1
SELECT * FROM 学生信息 where 家庭住址 like ‘河南%’ 指定信息插入
SELECT…INTO语句
另一种插入插入数据
语句语法
SELECT
INTO new _table
FROM{
WHERE
Select * from学生信息 where 性别=’男’ 筛选所有男性数据
Select *
Into $student
from学生信息
where 性别=’男’
SELECT * from #STUDENT 信息临时存放表
UPDATE语句
修改数据语句:
UPDATE[TOP]{table_name|view_name}
SET
{column_name={expression|DEFAULT|NULL}|@Variable=expression}[,...n]
WHERE{search_conditions}
Select * from 学生信息 改名
Update 学生信息 set 姓名=‘李俊’ 一列改变
Update 学生信息 set 姓名=‘李俊’,出生日期=‘1999-11-11’ where 学号=’2005050101’ 单行改里多个列更改
在UPDATE语句使用FROM子句:
Select * from studentInfo
Update studentInfo set s sex=b。性别,s_address=b.家庭住址,s_id=b.学号
From studentinfo a join 学生信息 b on a.s_name=b.姓名
Where b.性别=‘女’ 插入数据更新。从其他表找出单列指定数据
DELETE语句:
删除操作:DELETE FROM
[WHERE
SELECT * FROM 学生信息1????????????????????
TOP关键字和Top表达式:
语法:
[ 返回记录,前几条
TOP(expression)[PERCENT]
[WITH TIES] 最后一个值相等返回
]
实操:
Select top 10 peercent * from 成绩信息 查询前十条记录,百分比查询记录
Declare @i int
Set @i=20
Select top (6)* from 成绩信息 order by 分数 排序显示
Select top (6)with ties * from 成绩信息 order by 分数 排序显示
当数据相同时,会多出现几个
Update top(6)学生信息 set 民族=‘满足’ 修改
Select * from 学生信息 修改前六行数据
COMPUTE子句:
语法格式:
[
COMPUTE
{{AVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM}
(expression)}[,…n]
[ BY expression [,….n]
]
实操:
Select * from 成绩信息 where 课程编程=2 ORDER BY 考试编号 排序(筛选数据)
Compute sum(分数),AVG(分数),MIN(分数) 查询分数总 平均 最大 最小,
Where子句中使用运算符:
实操:
Select * from成绩信息 where 考试编号=‘0802’ AND 课程编号=1
Select * from成绩信息 where 考试编号=‘0802’ AND (分数 between 90 and 95)
Select * from成绩信息 where 考试编号=‘0802’ AND (分数 % 5=0)
In (85,90)查询规定值 not in () 指定之外的数据
第七章 连接
基本链接
多表查询,多表链接。
规则:SELECT子句列表中,每个目标列前都要加上基本表名称。FROM子句应该包裹所有使用的基表。WHERE子句应定义一个同等连接。
实操:
SELECT A.姓名,A。性别,A。出生日期,A。民族
FROM 学生信息 a,班级信息 B
WHERE A.所属班级=B.班级班号
两个表的信息连接到共同的一个临时表中。以方便查看。这个属于一个表内的一个信息等于另一个表内的信息
内连接
格式:
SELECT select list
FROM table1 INNER JOIN table2 [ON join conditions]
[WHERE search_conditions]
[ORDER BY order_expression]
实操:
SELECT A.班级名,A.班级人数, B.姓名
FROM 班级信息 A inner[A1] join 辅导员信息 B
ON A.辅导员=B.辅导员编号 AND B.=’女’ [A2]
两个表的信息组件一个临时表,各自抽取一列信息,并一个表内的信息等于另一个表的信息。可以为后者添加条件限制。
左外连接:
外连接与内连接的区别:内连接消除另一个表的任何行不匹配的行。仅为,在外连接中参与连接的表有主从之分,以主表为主。
实操:
SELECT A.班级名,A.班级人数, B.姓名
FROM 班级信息 A LEFT outer [A3] join 辅导员信息 B
ON A.辅导员=B.辅导员编号 AND A.班级人数>20[A4] 会出现空值,不符合数据也返回 即使加上规则条件也一样
右外连接
SELECT A.班级名,A.班级人数, B.姓名
FROM 班级信,a RIGHT outer [A5] join 辅导员信息.b
ON A.辅导员=B.辅导员编号
作用基本相同,主从表互换。
全外连接
SELECT A.班级名,A.班级人数, B.姓名
FROM 班级信,b FULL outer [A6] join 辅导员信息.a
ON A.辅导员=B.辅导员编号
可以出来全部信息。不匹配的也会出现。
SELECT A.班级名,A.班级人数, B.姓名
FROM 班级信,a FULL outer [A7] join 辅导员信息.b
ON A.辅导员=B.辅导员编号
顺序排列,先出现匹配,在出现不匹配
交叉连接
不带WHERE子句。顺序连接1,2.a,b 会出现1a,1b,2a,2b
语法格式:
SELECT select_list
FROM table1 CROSSJOIN table2
[WHERE search_conditions]
[ORDER BY ORDER_expression]
实操:
SELECT A.班级名称,A.人数,B.姓名
FROM 班级信息 A CROSS JOIN[A8] 辅导员信息 B 符合情况全排列出现。
WHERE A.辅导员=B.辅导员编号 符合条件的留下,不在全排列。
自连接
SELECT A.班级名,A.班级人数,B.班级名
FROM 班级信息 A,班级信息 B AND A.班级班号<>b.班级班号(添加后,去重)
WHERE A.班级人数=B.班级人数 AND A.班级名=‘艺术系2班’(只查询=后相符的班级) 人数相等班级出现,但是同一个班重复出现
联合查询
多个查询合并。使用UNION查询时,连接的连个结果集必须有相同数目的表达式,且数据内容尽量保持一致。
语法格式:
SELECT select_list
FROM table_source
[WHERE search_conditions]
{union[all]
SELECT select_list
FROM table_source
[WHERE search_conditions]}
[ORDER BY order_expression]
实操:
SELECT A.成绩编号,A.分数,B.姓名
FROM 成绩信息 A.学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号=‘2’ AND A. 考试编号=‘0801’
UNION 联合上下数据成一个表
SELECT SUM(分数),’合计’
FROM 成绩信息 A.学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号=‘2’ AND A. 考试编号=‘0801’
UNION 可以继续联合(视频添加了一个平均)
ORDER BY 分数 排序
使用子查询
包含在where之下。
实操:
SELECT A.成绩编号,A.分数,B.姓名
FROM 成绩信息 A.学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号=‘2’ AND A. 考试编号=‘0801’
AND A.分数<( (可以使用in,用学号,班级编号,所属班级,)
SELECT ABG(分数) FROM 成绩信息 A.学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号=‘2’ AND A. 考试编号=‘0801’
)个性化需求 在多个数据中通过限制多个条件,精确查找其中所需数据
嵌套子查询
直接实操:
SELECT A.成绩编号,A.分数,B.姓名
FROM 成绩信息 A.学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号=‘2’ AND A. 考试编号=‘0801’
AND B.学号 IN(
SELECT 学号 FROM 班级信息 A.学生信息 B
WHERE A.班级编号=B.所属班级 AND A.辅导员=(
SELECT 辅导员编号 FROM 辅导员信息 WHERE 姓名=’王艳’
)
)多个查询,好比一个地址,每一次查询缩小一次范围,例如:中国河北省石家庄市,第一个查询中国,第二个查询河北省,第三个是石家庄,每一次所需要的范围不断的缩小。
Xml查询
查询具体信息。
CREATE TABLE STUDENT
(
S_IF INT,
S_data xml
)
INSERT INTO STUDENT VALUES(
1,
‘<学生信息><姓名>刘倩姓名><性别>女性别><班级>计算机科学与技术1班班级>
<职位>班长职位>学生信息>’
前期准备
SELECT * FROM STUDENT
Declare @data xml
Set @data=(SELECT S_data FROM STUDENT where S_ID=1)
SELECT @data.query(‘学生信息/姓名’_,@data.query(‘学生信息/’性别’) ,@data.query(‘学生信息/姓名’)
FOR XML子句
可以将从表中检索出来的数据自动表示成XML格式。
SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 班级信息 A,辅导员信息 B
WHERE A.辅导员= B.辅导员编号
FOR XML RAW (AUOT)
EXISTS关键字查询
判断子查询。
实操:
Select a.* from 成绩信息 a
Where exists(select * from 考试安排 b where b.考试编号=a.考试编号 and b.考试编号=’0801’ 筛选一个,
Declare @username varchar(20)
Declare @pwd varchar(20)
Set @username=’2005040102’
Set @pwd=’苏某某’
If exists(select * from 学生信息 where 学号=@username AND 姓名=@pwd)
Print ‘登录成功’
Else
Print’登录失败’
交查询INTERSECT
Select a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
Where a.学生编号=b.学号 and a.课程编号=2 and a.考试编号=’0801’ 分类查询
INTERSECT
SELECT a.成绩编号,a.分数,A.姓名 FROM
(
Select top 10 a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
Where a.学生编号=b.学号 and a.考试编号=‘0801’ order by a.分数 DESC
)A 分类查询
组合查询
差查询EXCEPT
列必须固定和相同。语句与前几个基本相同。
Select a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
Where a.学生编号=b.学号 and a.课程编号=2 and a.考试编号=’0801’ 分类查询
EXCEPT
INTERSECT
SELECT a.成绩编号,a.分数,A.姓名 FROM
(
Select top 10 a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
Where a.学生编号=b.学号 and a.考试编号=‘0801’ order by a.分数 DESC
)A
第八章 函数
Transact-SQL概述
分类:
T-SQL语言基本分为三类
其他常用类型
常量与变量
变量声明:
DECLADE(声明)
{@名称[AS]数据类型
|@cursor_variable_nameCURSOR
}[,…n]
局部变量赋值
SET@local_variable=expression
SELECT@local_variable=expression[,...n]
运算符
+-*/%(取模)&(为与逻辑运算。同1为1,不同取0)|(位或逻辑运算同0为0,不同为1)^(位异或运算。相同为同,不同为1)。= <> < > !=
逻辑运算符:两组相对ALL和ANY AND 和OR not 去反值 in匹配等true。
赋值=。链接+。一元:+正,-负,~返回数字的逻辑非
表达式
变量和常量也是表达式。
DECLARE @STR NVARCHAR(50)
SELECT @STR=’姓名:’+ 姓名+’性别:’+性别 FROM 学生信息 WHERE 学号=’2005050101’
SELECT @STR
注释
养成良好的开发习惯。为了同别人合作开发或转移工作时方便别人接受。不被执行的文本执行,注释方法1,(--)。2,(/*…*/)在SQL中使用。
IF…ELSE语句
流程控制语句。
语法格式:
IF Boolean_expression
{sql_statement|statement_block}
ELSE
{sql_statement|statement_block}
实操:
Declare @num int ‘定义类型数字
Select @num=AVG(分数) ‘求分数平均值
From 成绩信息 ‘从成绩信息中提取数据
WHERE 考试编号=’0802’ AND 课程编号=’2’ ‘子查询规则
SELECT @num
IF @num>80 ‘当平均分大于80时
BEGIN ‘开始
PRINT ‘老师教课非常成功。’ ‘打印出 ’&’
END
ELSE
PRINT ‘还需要继续努力。’ ‘打印出 ‘&’
IF…ELSE语句嵌套
实操:
DECLARE @NUM INT ‘声明变量
SELECT @num=AVG(分数) ‘求平均数
FROM 成绩信息 ‘从成绩信息提出数据
Where 课程编号=’2’ AND 考试编号=’0802’ ‘子查询规则
IF @NUM>=60 ‘如果大于等于60
BEGIN ‘开始
IF @NUM<70 ‘如果小于70
PRINT ‘成绩刚刚及格,还要继续努力’ ‘打印
ELSE IF @NUM<80 ‘如果小于80
PRINT ‘成绩中等’ ‘打印
ELSE IF @NUM<90 ‘如果小于90
PRINT ‘成绩良好’ ‘打印
ELSE PRINT ‘成绩优秀’ ‘或者-打印
END ‘结束
ELSE ‘或者小于60
PRINT’这个老师教学方法需要改进’ ‘打印
Case语句
语法格式:
CASE input_expression
WHEN when_expression THEN result_expression
[…n]
[ELSE else_result_expression]
END
Case语句示例
实操:
SELECT * 员工姓名,所在职位,员工职称= ‘选中表中的列
case 所在职位 ‘判断职位
when ‘经理’ then ‘高级职称’ ‘在经理时,高级
when ‘主管’ then ‘中级职称’
when ‘职员’ then ‘初级职称’
else ‘其他职称’ ‘或者不是以上三者时
end
FROM 员工信息 ‘从员工信息表中提取数据
While语句
语法格式:
WHILE Boolean_expression
{sql_statement | statement_block}
[BREAK]
{sql_statement | statement_block}
[CONTINUE]
{sql_statement | statement_block}
实操:
DECLARE @i int,@num int ‘声明
SET @i=1 ‘赋值
Set @num=1
While @i<10 ‘在这段时间内
Begin
@num=@num*@i
@i=@i+1
End
Print @num
While语句示例
实操:
可以从公司级别中挑选选中级别。并分等级。用While语句控制
While语句中使用其他语句
实操:
Declare @i int ‘定义变量i,j为整数
Declare @j int
Set @i=3 ‘赋值
While @i<=100 ‘当i≤100
Begin ‘开始
Declare @bol int ‘定义bo1为整数
Set @bo1=1 ‘赋值
Set @j=2
While @j<=SQRT(@i) ‘当j≤平方根j时
Begin ‘开始
If @i%@j=0 ‘整除为0时
Begin ‘开始
Set @bo1=0 ‘所以不是素数
Break ‘跳出循环
End
set@j=@j+1 ‘变量递增
end
if @bo1=1 print @i ‘如果是1,则输出
set @i=@i+1 ‘外部循环
end
WAITFOR延迟语句
语法格式:
WAITFOR
{
DELAT time
|TIME time
}
实操:
Waitfor delay ’00:00:05’ ‘5秒后执行
Exec sp_help ‘存储过程
Waitfor time ’21:11:05’ ‘到点执行
Exec sp_help ‘存储过程
Select GETDATE
Goto语句
选择语句。
实操:
DECLARE @ Counter int; ‘定义
SET @Counter = 1; ‘赋值
WHILE @Counter < 10 ‘如果Counter小于10
BENGIN ‘开始
Print @Counter ‘打印
SET @Counter = @Counter + 1 ‘使赋值+1
IF @Counter = 4 GOTO Branch_One ‘跳转到One
IF @Counter = 5 GOTO Branch_Two ‘跳转到Two
END
Branch_One: ‘分支1
Print ‘Jumping To Branch One.’ ‘打印
GOTO Branch_Three; ‘去分支3
Branch_Two: ‘分支2
Print ‘Jumping To Branch Two.’ ‘打印
Branch_Three: ‘分支三
Print ‘Jumping To Branch Three.’ ‘打印
TRY…CATCH错误处理语句
格式:
BEGIN TRY
{sql_statement | statemet_block}
FND TRY
BEGIN CATCH
{sql_ statement | statemet_block}
END CATCH ‘不出错前,出错后。
实操:
Begin try ‘try语句块
Declare @num int ‘赋值
Set @num=1/0
Select @num ‘查询
End try ‘结束try语句块
Begin catch ‘开始捕捉
Select ERROR_LINE() AS ‘错误行书’,ERROR_MESSAGE() ‘错误消息’ ‘查询
End catch
数学函数
返回函数:ABS(绝对值),EXP(以e为底的指数),OEILING(≥最小整数),FLOOR(≤最大整数),LN(自然对数),LOG(以10为底的对数),POWER(幂运算结果),ROUND(指定长度或精度的数值表达式),SIGN(正负或零),SQUARE(平方),SQRT(平方根).
实操
Declare @i float,@j int,@a decimal(18,2) ‘定义
Set @i = -12.2124 ‘赋值
Set @j=100
Print 返回函数(@i,2) ‘打印结果 2,运算为@i的2次方
字符串函数
返回函数:
ASCII(返回左侧的字符的ASCII代码值),CHAR(ASCII代码转换函数,返回指定ASCII代码的字符),LEFT(左子串函数),LEN(字符串函数,返回指定字符数),LOWER(小写字母),LTRIM(删除前导空格字符串),REPLACE(替换函数),REPLLCATE(复制函数),RICHT(右子串函数),RTRIM(删除尾随空格函数),STR(数字变字符函数),SUBSTRING(子串函数)UPPER(大写函数)
实操:
Declare @str nvarchar(20)
Set @str=’hello world!’
Print left(@str,5) ‘打印 截取左前5个
字符串函数使用示例:
查找类的两个,CHARINDEX,不能是TEXT和IMAGE数据类型
PATINDEX指定开始位置
聚合函数:
AVG平均数,COUNT 返回记录 MAX MIN SUM总和
列函数,对列使用
日期和时间函数:
返回函数,间隔,边界,整数,当前,UTC时间。时差。
Year(geantent)
标量值函数:
返回一个确定类型的标量值。
其返回值类型为除TEXT、NTEXT 、IMAGE、CURSOR、 TIMESTAMP 和TABLE 类型外的其它数据类型。
实操:求成绩平均值,比AVG单用的方式更合适大量使用
表值函数
表值函数返回 table。对比数据,查找指定的表内数据,列表显示!
游标概述
一种数据访问机制。只要有,游标结果集,游标位置。可以当做一个指针,允许用户对指定位置的数据进行处理。
游标的声明
DECLARE STUDENT _CURSOR SCROLL CURSR 声明
FOR
操作游标
FETCH ABSOLUTE 10[A9] FROM 游标声明的变量 ‘可以打开指定的行数。
Deallocate 游标声明的变量 ‘释放游标
判断游标提取状态
全局变量判断:
@@FETCH_STATUS
返回值,0,成功。-1,失败或行不在结果集中。-2,提取的行不存在。
可以在检索游标中添加if来判断
事务
语句:
BEGIN TRANSACTION 开始
COMMIT TRANSACTION 提交或结束
ROLLBACK TRANSACTION 回滚
SAVE TRANSACTION 逐步处理
锁
限制访问,并对其解锁才能访问访问访问
类型:共享S锁,独占X锁,更新U锁。
系统与元(原)数据集函数[A10]
BEGNG..END语句块
流程控制语句,把多条语句形成组。在bengin end之间
SQL Server 2008事务模式
自动提交事务。显式事务。隐式事务。批处理级事务
XACT_ABORT选项
死锁
产生条件:
两个以上程序争夺资源造成等待,并非外力不可解决。
由于资源互斥,非外力协助得不到资源而无法继续云心
A锁住了记录1等待记录2,B锁住了记录2等待记录1
必要条件:
互斥,请求与保持条件,不剥夺条件,循环等待条件。死锁发生必然有以上条件。
接触和预防:
按同一顺序访问对象
避免事务中的用户交互
保持事务简短并在一个批处理中
使用低隔离级别
使用绑定连接
死锁建议:
嵌套事务
封装嵌套。间接涉及多个服务器的客户事务。在某些情况下,一个服务器的一个操作可能触发另一个服务器的某个操作,通常后者可能又进一步请求操作,依此类推。处理这种情况时,每个客户事务由一系列嵌套事务构成。
第九章 存储过程
存储过程概述
完成一定操作的一组SQL语句。
为什么为什么为什么要用:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权
种类:
用户自定义,系统,扩展。
创建存储过程
可以不需要参数
Create procedure proc_student 创建。
Exec proc_student 调用
使用带默认值的参数
调用
使用输出参数
如何在存储执行输出参数返回值。
存储过程示例
不一样的存储过程方式。
可以实现多种事情。
删除存储过程
DROP PROCEDURE{名称}[,…n] 终止程序 界面删除。代码删除:drop proc proc_student
设计存储过程的规则
https://yq.aliyun.com/articles/572172
可以引用临时表。
在存储过程内创建本地临时表,则临时表仅为该存储过程而存在;退出后,临时表将消失。
执行的存储过程将调用另一个存储过程,则被调用的存储过程可以访问由第一个存储过程创建的所有对象,包括临时表在内。
如果执行对远程 Microsoft SQL Server 实例进行更改的远程存储过程,则不能回滚这些更改。远程存储过程不参与事务处理。
存储过程中的参数的最大数目为 2100。
存储过程中的局部变量的最大数目仅受可用内存的限制。
根据可用内存的不同,存储过程最大128 MB。
系统存储过程
记录操作过程,exe sp_who 用户名,查询记录 帮助db, monitor,实时监视占用资源
临时存储过程
与创建临时表相同,局部和全局略有区别。##
嵌套存储过程
最多嵌套32个
查看存储过程
exe sp_helptext get_student
第十章 触发器
什么是触发器
修改数据时的存储过程,通过事件进行触发。
种类:DDL(数据定义语言),DML(数据操作语言)(INSERT,UPDATE ,DELETE)
优点:自动执行。层叠更改。强制限制。
1、触发器可以更快更高效的维护数据,节省人力。
2、触发器可以用于加强数据的完整性约束和业务规则。
缺点:
1、可移植性差。
2、占用服务器资源,给服务器造成压力。
3、执行速度主要取决于数据库服务器的性能与触发器代码的复杂程度。
4、触发器会使编程时源码的结构被迫打乱,为将程序修改、源码阅读带来困难。
创建INSERT触发器
所有的格式。
创建DELETE触发器
删除后返回信息的应用。可以调用其他触发器
创建UPDART触发器
删除数据,新增数据。显示更改成不成功。
创建DDL触发器
与其前边三个有不同之处。
管理触发器
增,删,改,禁用。
嵌套触发器
无法操作本身。
递归触发器
嵌套触发器的特例。任何触发器都可以影响同或另一个表。如果触发,可以通过递归在此执行自己。
复杂特性:
必须经过有条理的设计和全面测试。任意点数据修改,会触发一系列触发器。所有触发器构成的事务。最多递归16层,否则清除。
第十一章 安全机制
安全机制
五个等级:客户机,网络传输(加密),实例级别(用户权限),数据库级别(控制权限),对象级别()。
身份验证模式
Windows。BS结构无法连接。混合模式。BS可以连接。用哪个有网络库决定。修改验证模式,实操。
创建Windows登录账号
创建数据库用户
数据库用户即使用和共享数据库资源的人,有在当前数据库中创建数据库对象及进行数据库备份的权限、用户对数据库表的操作权限及执行存储过程的权限以及用户数据库中指定表字段的操作权限三种权限。
新建登录名,可以访问系统数据,个人做的无法访问。登入属性,用户映射,设置访问。数据库下的登录,只能访问该数据库
固定服务器角色:
进入数据库后,确定角色为固定服务器角色或固定数据库角色
固定数据库角色:
针对数据库用户
单独数据库访问权限。不可更改基础信息,只读。权限可以调整
用户自定义数据库角色:
对于权限可以自由选择,细致到列。 与 固定服务器角色和数据库角色的固定级别不同
应用程序角色:
创建方式与固定角色类似。权限细致到列。用户表不显示应用程序角色。
权限:
管理角色:
增,改,删。
DENY否决优先权:
可以对拥有权限的用户进行否决访问?
第十二章 备份与恢复数据库
备份概述
类型:
完整数据库,差异数据库,事务日志(依赖完整数据库),文件组。
备份恢复模式:
简单恢复模型,完全恢复模式,大容量日志恢复模式
创建备份设备
备份设备类型:磁盘,磁带,其他。
服务器对象下的备份设备
常见完整备份
数据库,任务,备份。
用文件备份需要不断创建文件,备份设备不用。 备份压缩,软件新增功能。
完整备份包括对整个数据库,部分事务日志,数据库结构和文件结构的备份,完整备份代表的是备份完成时刻的数据库,完整备份是备份的基础,他提供了任何其他备份的基准,其他备份如差异备份只是在执行完整备份之后才能被执行的。
1.他备份数据及数据库中所有表的架构和相关的文件结构;
2.备份在备份期间发生的所有活动;
3.备份在事务日志中未确定的事务。
创建其他备份
差异备份,事务备份,确保数据执行过完整备份才能使用。可以备份到备份设备。单文件备份。
常规恢复
根据出错的,从完整恢复基础,然后差异恢复更改,事务日志恢复到出错当天。
时间点恢复
精确时间很重要,时点还原,在数据库还原位置。
其他备份选项
控制备份空间和时间,需要多个备份设备同时使用才能使用。空间靠压缩。
第十三章 自动化概述
自动化概述
用代理实现自动化,在SQL配置管理器。
配置数据库邮件
为了报告给用户。在管理 数据库邮件中有数据库邮件配置向导。
发送测试电子邮件
测试是否正常工作。可以查询错误信息,在新建查询位置。
创建操作员
从代理下创建操作员。
创建方故障操作员
与操作员互补,同时可以增改删。
可以禁用。通知故障需维护。
创建作业
代理下创建自动作业,代码控制:
多步骤创建,形成循环,然后跳出循环结束。
执行创建的作业
类型,代理启动,CPU,执行一次,重复执行(间隔)。警报(触发式,通知操作员)定时启动
警报概述
警报由名称,响应事件(性能),触发事件组成(性能),基本元素:错误号,错误严重级别,性能计算器
级别:
创建警报
类型:事件,性能,WMI事件,错误号的选择,可以自己编译。严重性是系统给划分好的。
数据库维护
优化,管理。
按需执行
维护计划向导
创建维护计划自动化。
和作业执行方式一样。
可以自动化执行项
执行顺序,
完整,差异,事务备份也需要设置。
第十四章 集成服务
SQL Server Business Intelligence Development Studio
集成服务概述应用改换
集成服务(Integration Services)是用于生成高性能数据集成和工作流(包括针对数据仓库的提取、转换和加载 (ETL) 操作)。
创建SSIS项目
SQL BIDS客户端里边创建
运行SSIS项目
在SQL上运行,连接时注意选项。貌似是导入功能?
使用导入和导出向导
创建的包(SSIS)导入导出(复制)数据?
包配置
???
包安装
第十五章 报表服务
报表服务概述
使用报表向导设计报表
SQL Server Business Intelligence Development Studio
与关系设计类似。
使用报表设计器
可以自动化,
设计参数化报表
发布报表
管理报表
可看见报表属性,历史记录,数据,有查找功能,改换到处格式,还可以订阅,可以移动。有管理的基本功能,增改删。
第十六章 分析服务
分析服务概述
创建分析服务项目:
创建多维数据:
以上一项为基础继续深入。
处理和浏览多维数据集:
酒店住房管理系统,从各方面查看欢迎度。
添加筛选条件
通过方式不同,筛选出不同的表,有指定的类型编号,可以直接拖拽。
使用数据挖掘向导
第十七章 使用.NET访问SQL server
ADO.NET基本知识
用-连接数据库。
Sql onnection
Sqlcommand
SqlDateAdapter
SqlDateReader
DataSet
DataTable
实操为完成
调用存储过程
.NET事务处理
与SQL事务功能一致。
第十八章 监视SQL Server 2008
创建跟踪
SQL server profiler 工具里跟踪属性。
数据库优化向导
数据库引擎优化顾问。工具里
跟踪应用程序
应用监视器。
第十九章 使用CLR访问SQL Server 2008
CLR函数
Microsoft,新建项目,新建数据库引用
CLR存储过程
与其他存储过程有很大差别,应用为Microsoft,在属性页面右键,实操未完。
CLR触发器
与存储过程位置相同。
第二十章 使用SMO访问SQL Server 2008
创建SMO项目
从Microsoft中新建项目,Windows 窗体应用程序。
连接SQL Server
用SMO连接 SQL server数据库。与上节路径相同。需要添加引用。
使用SMO创建数据表
通过编程创建。
使用SMO创建表
用SMO创建SQL的表。
使用SMO创建存储过程
???在SQL显示。
使用SMO创建触发器
用SMO实现SQL上的触发器功能。
第二十一章 SQL Server其他操作
SQL 2008内存分配
属于一个小技巧,可以分别使用,不超限。多线程使用。
PowerShell 1.0
复制概念
创建快照发布
有向导。在SQL 复制,本地发布,发布类型有详细介绍,还有添加筛选器。作业计划属性,快照代理
创建快照订阅
有向导。在SQL 复制,本地订阅
APPLY运算符
SQL 2008四个新的排序函数
SQL 2008的同义词