第一篇:网络数据库讲稿(概论)
网络数据库讲稿(1)
4/17/2013
一、SQL Server 2005简介。
P9 SQL(Structured Query Language)
1.SQL Server 2005是一个大型的、高效的关系数据库管理系统,它具有安全的、全面的数据和用户管理功能。2.SQL Server 2005体系结构
P10 由4个部分构成,每个部分对应一个服务。3.SQL Server 2005有6个版本
P12
二、SQL Server 2005的安装
1.软件环境要求:
①Windows Installer 3.0 或更高版本
Windows 2003 SP1 或 Windows XP SP2 ②安装 SQL Server 2005 之前,必须在操作系统级启用 TCP/IP。(通过网上邻居查看TCP/IP)
2.安装
①实例名
P14 在“实例名”对话框中,如果“默认”单选钮可用,就可以安装默认实例或命名实例;如果”默认”单选钮不可用,则表示已经安装了默认实例,且只能安装命名实例。
默认实例名为计算机名,是在安装Windows时命名的。(通过我的电脑查看计算机名)②身份验证模式
SQL Server 可以在两种安全(身份验证)模式之一下工作。
三、配置服务器
P16 操作:连接到服务器。服务器名称,身份验证。
连接网络服务器。
四、联机丛书
P20
五、系统数据库
P29 有5个同数据库 1.master 2.model 3.msdb 4.tempdb
网络数据库讲稿(1)
4/17/2013 5.resource
扩展练习
第2题
P26 第3题
P27 *下篇
实验指导
第1单元
练习1-3
P286
第二篇:网络数据库讲稿(查询)
网络数据库讲稿
一、简单的SELECT
P95 1.SELECT … FROM …(1)DISTINCT(2)TOP n [PERCENT](3)字段别名
有三种书写格式。
2.WHERE子句(SELECT … FROM … WHERE …)
P101(1)比较运算符(2)逻辑运算符
(3)范围运算符BETWEEN(4)列表(包含)运算符 IN(5)字符匹配运算符LIKE及通配符(6)空值NULL 3.ORDER BY子句(SELECT … FROM … WHERE … ORDER BY …)
P107 ORDER BY子句必须放在SELECT语句的最后。
4.GROUP BY子句(SELECT … FROM … WHERE …GROUP BY … ORDER BY …)P109(1)GROUP BY子句中的列名必须是原表中的列名,不能是别名。(2)当SELECT子句中有聚合函数时,GROUP BY子句实现分组统计。
(3)当SELECT子句中同时有字段名列和聚合函数列时,必须使用GROUP BY子句。例如
select 班级,SUM(已修学分)from 学生GROUP BY 班级
(4)在SELECT子句中出现的列名必须出现在GROUP BY子句中、或聚合函数中。GROUP BY子句中的列名则不一定出现在SELECT子句中。(5)ROLLUP返回第一个分组列的统计行。例如:
select 班级,性别,SUM(已修学分)from 学生GROUP BY 班级,性别WITH ROLLUP(6)CUBE是ROLLUP的扩展。(7)ALL短语
P109 select 班级,性别,SUM(已修学分)from 学生
WHERE已修学分>4 GROUP BY ALL 班级,性别
ALL不能与WITH同用。6.HAVING子句
(SELECT … FROM … WHERE …GROUP BY … HAVING … ORDER BY …)P111(1)HAVING应与GROUP BY配对使用,否则没必要使用。(2)HAVING的主要作用是第二次筛选。
(3)HAVING中可以包含聚合函数(WHERE中不可以)。
(4)HAVING中非聚合函数中的字段名,必须出现在GROUP BY中。(5)SELECT列表中命名的别名,不能在HAVING中使用。7.COMPUTE子句,按排序字段分组求和。
SELECT 姓名,分数FROM 学生,成绩WHERE 学生.学号=成绩.学号 ORDER BY 姓名COMPUTE SUM(分数)
SELECT 姓名,分数FROM 学生,成绩WHERE 学生.学号=成绩.学号 ORDER BY 姓名COMPUTE SUM(分数)BY 姓名
网络数据库讲稿
SELECT 姓名,分数FROM 学生,成绩WHERE 学生.学号=成绩.学号 ORDER BY 姓名COMPUTE SUM(分数)BY 姓名COMPUTE SUM(分数)
Compute By 必须与 Order By 子句一起使用,而且Compute By 子句中的统计列名列表也必须与之相同。
8.SELECT INTO,将查询结果保存到永久表中。
P136
二、多表查询
P112 1.内、外连接
内外连接中用ON<条件> 2.交叉连接
交叉连接中用WHERE<条件>,用WHERE<条件>的交叉连接等同于内连接。3.合并两个查询
(1)联合查询
P120 SELECT 员工编号,员工姓名,'员工信息表' FROM 员工信息WHERE 所任职位='经理' UNION SELECT 部门编号,部门名称,'部门信息表' FROM 部门信息
(2)INTERSECT
P305 SELECT 学号FROM 成绩表 INTERSECT SELECT 学号FROM 学生信息
(3)EXCEPT SELECT 学号FROM 学生信息 EXCEPT SELECT 学号FROM 成绩表
三、子查询
P121
第三篇:网络数据库讲稿(触发器)
网络数据库讲稿
3/26/2013
触发器
P191
一、触发器概述
1.是一种特殊的存储过程。
2.不能被显式调用,只能由一些特定的操作(命令)引发(激活),这些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每个触发器由三部分组成
①触发器名称:命名规则与变量名、存储过程名相同; ②激活该触发器的操作(命令动词)。③一个存储过程。
4.使用触发器可强制实现数据的一致性和完整性。
二、触发器的分类(按引发命令分类)及其工作原理
1.DML触发器(表级)(1)触发器必须依附于某一个表(触发器必须被包含在某一个表中)。(2)激活该触发器的操作:可以是INSERT、DELETE、UPDATE之一。(3)当上述操作发生在包含触发器的表上时,触发器中的过程被自动执行。(4)支持两种类型的触发器: ①AFTER 可以为同一表的同一操作定义多个该类型的触发器,并可定义执行顺序; ②INSTEAD OF 同一表的同一操作只能定义一个该类型的触发器。(5)工作原理
P193 临时逻辑表INSERTED和DELETED。2.DDL触发器(数据库级和服务器级)(1)触发器必须依附于某一个数据库(触发器必须被包含在某一个数据库中)。
(2)激活该触发器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。
(3)当上述操作发生在包含触发器的数据库上时,触发器中的过程被自动执行。(4)只有AFTER型触发器。
三、创建DML触发器
P194 用命令CREATE TRIGGER创建 例: 1.
CREATE TRIGGER 增加学生学分 ON 成绩
//只能增加一条记录
FOR INSERT AS DECLARE @XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)SELECT @XH=学号,@KCH=课程编号,@FS=分数 FROM INSERTED IF @FS>=60
网络数据库讲稿
3/26/2013
UPDATE 学生 SET 已修学分
=已修学分+(SELECT 学分 FROM 课程 WHERE 课程编号=@KCH)
WHERE 学号=@XH 2.
CREATE TRIGGER 减少学生学分 ON 成绩 FOR DELETE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)3.CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)UPDATE 学生 SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60)
4.“修改学生学分”也可改为:
CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN
网络数据库讲稿
3/26/2013(SELECT 课程编号 FROM 成绩
WHERE 学生.学号=成绩.学号 AND 分数>=60))
然后可执行下列命令,并检验执行结果。
--INSERT INTO 成绩 VALUES('200202','L2020308',83)--INSERT INTO 成绩 VALUES('200202','L2030501',80)--INSERT INTO 成绩 VALUES('200202','L2030506',75)--DELETE FROM 成绩 WHERE 学号='200202' AND LEFT(课程编号,1)='L'--UPDATE 成绩 SET 分数=80 WHERE 学号='200202' AND LEFT(课程编号,1)='L'
四、创建DDL触发器
P198 例: 1.P199 2.CREATE TRIGGER 禁删数据库ON ALL SERVER FOR DROP_DATABASE AS PRINT '请不要删除数据库!' ROLLBACK TRANSACTION
DROP DATABASE 订货管理
五、嵌套触发器和递归触发器
P199, P200
六、管理触发器
P201 1.查看 2.修改 3.禁用 4.删除
--根据成绩表计算每个学生的已修学分
update 学生set 已修学分=(select sum(学分)from 课程 where 课程编号in(select 课程编号from 成绩where 学生.学号=成绩.学号 and 分数>=60))
--修改插入触发器,使得向成绩表中插入多条记录,也能成功执行 CREATE TRIGGER 插入学生学分ON 成绩 FOR insert
网络数据库讲稿
3/26/2013 AS UPDATE 学生SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程 WHERE 课程编号IN(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60)
select * from 成绩
select 学号,已修学分from 学生
INSERT INTO 成绩VALUES('200202','L2020308',83)INSERT INTO 成绩VALUES('200202','L2030501',80)INSERT INTO 成绩VALUES('200202','L2030506',75)INSERT INTO 成绩VALUES('200201','L2020308',83)INSERT INTO 成绩VALUES('200201','L2030501',80)INSERT INTO 成绩VALUES('200201','L2030506',75)
select * into 备份成绩from 成绩 //备份成绩表 select 学号,姓名,已修学分from 学生
insert into 成绩 select * from 成绩
INSERT INTO 成绩VALUES('200212','L2030506',75)
第四篇:网络数据库讲稿(复制)
网络数据库讲稿
4/20/2013
一、复制的基本概念
SQL Server复制是在数据库之间对数据和数据库对象进行复制和分发并且对于数据的修改进行同步,以确保其一致性的一组技术。使用复制可以将数据分发到不同位置,通过局域网、Internet分发给多个远程服务器站点;还可将多个用户和站点的数据进行合并。
二、复制模型
复制技术采用发布(出版)——订阅模型分发数据。
SQL Server复制模型由下列对象组成:发布服务器,分发服务器,订阅服务器,发布,项目,订阅。还有几个负责在发布服务器和订阅服务器之间复制和移动数据的复制进程:快照代理程序,分发代理程序,日志读取器代理程序,队列读取器代理程序,合并代理程序。1.服务器角色
参与复制的服务器根据任务不同可划分为以下角色: ①发布服务器:数据源所在的服务器。
②分发服务器:将出版物从发布服务器移动到订阅服务器。③订阅服务器 2.项目
3.发布(出版物)4.订阅 5.复制的类型 ①快照复制 ②事务复制 ③合并复制 6.复制代理程序
①快照代理程序:与所有复制类型一起使用。
②分发代理程序:与快照复制和事务复制一起使用。③合并代理程序:与合并复制一起使用。
④日志读取器代理程序:与事务复制一起使用。
⑤队列读取器代理程序:与快照复制或事务复制一起使用。
三、服务器的连接方式
1.发布服务器与分发服务器为同一物理服务器 2.发布服务器与分发服务器为不同物理服务器 3.发布者与再次发布者连接方式
4.多发布服务器单订阅服务器连接方式
四、配置复制
复制一般包括以下几个阶段:配置发布和分发,生成和应用初始快照,修改复制数据,同步和传播数据。
复制过程中各代理程序的调度由SQL Server Agent服务管理,应配置SQL Server Agent服务能够在系统启动的时候自动启动,并且在意外停止时能够自动重新启动,由于复制操作跨越多个服务器传输数据,所以SQL Server Agent服务的启动帐号应使用域用户帐号。1.配置分发服务器
网络数据库讲稿
4/20/2013 分发服务器是快照复制和事务复制的首要组件。在企业管理器中运行向导,右击【复制】,单击【配置发布、订阅服务器和分发】启动【配置发布和分发向导】。然后按提示进行。
配置完成后,系统在分发服务器上创建distribution系统数据库、复制文件夹、复制监视器。
2.配置发布服务器和创建出版物
出版物是准备发布的表、表中数据的子集或其它数据库对象的集合。出版物是订阅的单元。
在企业管理器中运行向导,右击【复制】,单击【新建/发布】启动【创建发布向导】,然后按提示进行。
在“指定项目”步骤,单击“项目默认值”或“对象”右端的省略号按钮,可设置快照属性。
可循环创建多个发布。
可查阅和修改已建发布的属性。
3.订阅
订阅是对发布到指定订阅服务器的数据或数据库对象的请求。一个订阅服务器可以向不同发布请求多个订阅。
订阅可在发布服务器上创建(强制订阅)或在订阅服务器上创建(请求订阅)。(1)强制订阅
在企业管理器中:工具/向导,展开【复制】,启动【创建强制订阅向导】,然后按提示进行。
(2)请求订阅 在企业管理器中:工具/向导,展开【复制】,启动【创建请求订阅向导】,然后按提示进行。
也可按教材P175的例子,先创建发布,再配置发布和分发服务器,最后创建订阅。
第五篇:网络数据库讲稿(查询)
网络数据库讲稿
一、简单的SELECT
P95 1.SELECT … FROM …(1)DISTINCT(2)TOP n [PERCENT](3)字段别名
有三种书写格式。
2.WHERE子句(SELECT … FROM … WHERE …)
P101(1)比较运算符(2)逻辑运算符
(3)范围运算符BETWEEN(4)列表(包含)运算符 IN(5)字符匹配运算符LIKE及通配符(6)空值NULL 3.ORDER BY子句(SELECT … FROM … WHERE … ORDER BY …)
P107 ORDER BY子句必须放在SELECT语句的最后。
4.GROUP BY子句(SELECT … FROM … WHERE …GROUP BY … ORDER BY …)P109(1)GROUP BY子句中的列名必须是原表中的列名,不能是别名。(2)当SELECT子句中有聚合函数时,GROUP BY子句实现分组统计。
(3)当SELECT子句中同时有字段名列和聚合函数列时,必须使用GROUP BY子句。例如
select 班级编号,SUM(已修学分)from 学生 GROUP BY 班级编号
(4)在SELECT子句中出现的列名必须出现在GROUP BY子句中、或聚合函数中。GROUP BY子句中的列名则不一定出现在SELECT子句中。(5)ROLLUP返回第一个分组列的统计行。例如:
select 班级编号,性别,SUM(已修学分)from 学生GROUP BY 班级编号,性别 WITH ROLLUP(6)CUBE是ROLLUP的扩展。(7)ALL短语
P109 select 班级编号,性别,SUM(已修学分)from 学生
WHERE已修学分>4 GROUP BY ALL 班级编号,性别
ALL不能与WITH同用。6.HAVING子句
(SELECT … FROM … WHERE …GROUP BY … HAVING … ORDER BY …)P111(1)HAVING应与GROUP BY配对使用,否则不能使用。(2)HAVING的主要作用是第二次筛选。
(3)HAVING中可以包含聚合函数(WHERE中不可以)。
(4)HAVING中非聚合函数中的字段名,必须出现在GROUP BY中。(5)SELECT列表中命名的别名,不能在HAVING中使用。7.COMPUTE子句,按排序字段分组求和。
SELECT 姓名,分数 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 ORDER BY 姓名 COMPUTE SUM(分数)
SELECT 姓名,分数 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 ORDER BY 姓名 COMPUTE SUM(分数)BY 姓名
网络数据库讲稿
SELECT 姓名,分数 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 ORDER BY 姓名 COMPUTE SUM(分数)BY 姓名 COMPUTE SUM(分数)
Compute By 必须与 Order By 子句一起使用,而且Compute By 子句中的统计列名列表也必须与之相同。
8.SELECT INTO,将查询结果保存到永久表中。
P136
二、多表查询
P112 1.内、外连接
内外连接中用ON<条件> 2.交叉连接
交叉连接中用WHERE<条件>,用WHERE<条件>的交叉连接等同于内连接。3.合并两个查询
(1)联合查询
P120 SELECT 员工编号,员工姓名,'员工信息表' FROM 员工信息 WHERE 所任职位='经理' UNION SELECT 部门编号,部门名称,'部门信息表' FROM 部门信息
(2)INTERSECT
P305 SELECT 学号 FROM 成绩表 INTERSECT SELECT 学号FROM 学生信息
(3)EXCEPT SELECT 学号FROM 学生信息 EXCEPT SELECT 学号FROM 成绩表
三、子查询
P121