第1章 数据库基础
数据访问技术—— ADO.NET 2.0 第1章: 数据库基础 第 2 章: ADO.NET 2.0概述 第 3 章: 数据源连接 第1章: 数据库基础 第 2 章: ADO.NET 2.0概述 第 3 章: 数据源连接 第 4 章: 在连接环境中获取数据 第 5 章: 构建DataSet 第 6 章: 类型化DataSet 第 7 章: 在断开连接的环境中编辑和更新数据 第 8章: 数据的排序、搜索和过滤 第 9 章: 事务 第 10 章: ADO.NET和XML 2
目标 本章学习目标: 掌握数据库的基本概念 掌握基本的SQL语言 理解数据库之间的关系 理解并掌握存储过程的概念及其创建方法 初步了解数据库应用程序和数据库之间的关系 3
第1章 数据库基础 数据存储 数据库的基础知识 数据库应用程序 小结 习题
数据存储 1.1 数据存储 通过使用数据库,可以高效且条理分明地存储数据,如公司营销人员需要了解所在地区的居民人数、年龄层次及日常喜好,以制定有针对性的销售策略。 搜集相关信息 将信息存储到相关表中 对不同的表进行整合或区分 删除除冗余信息 做出正确的决策
第1章 数据库基础 数据存储 数据库的基础知识 数据库应用程序 小结 习题 6
数据库的基础知识 表、行、列和约束 在Microsoft SQL Server 2005中创建表 对创建表的步骤进行总结 设置列属性和约束 1.2 数据库的基础知识 表、行、列和约束 在Microsoft SQL Server 2005中创建表 对创建表的步骤进行总结 设置列属性和约束 SQL语言 关系 存储过程
表、行、列和约束 1.2.1 表、行、列和约束 关系数据库是以一定的方式将数据组织起来的集合。 下图是一个企业的员工表所包含的员工信息。
表、行、列和约束(续) 表中的列称作属性或字段,它表示对象的属性。下图红框中的 员工出生日期 即为员工表中的一个属性。 1.2.1 表、行、列和约束 表中的列称作属性或字段,它表示对象的属性。下图红框中的 员工出生日期 即为员工表中的一个属性。
表、行、列和约束(续) 根据主键、列名和列所在行中的主键值以及表名即可访问数据库中的任意列。下图示例为查询某员工的出生日期。 1.2.1 表、行、列和约束 根据主键、列名和列所在行中的主键值以及表名即可访问数据库中的任意列。下图示例为查询某员工的出生日期。
1 创建表 在Microsoft SQL Server 2005 中创建表的步骤如下。 2005中创建表 在Microsoft SQL Server 2005 中创建表的步骤如下。 打开SQL Server Management Studio,可以看到如下图所示的登录对话框, 选择“连接”按钮 。 1
2 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 在“数据库”列表项上单击鼠标右键,在弹出的快捷菜单中,选择“新建数据库” 命令。 2
3 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 在“新建数据库”对话框中,在“数据库名称”文本框中输入“ MySample ” 。 3
4 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 当设置完成后,单击“确定”按钮,您可以看到已成功添加了MySample数据库。但是如果此时展开MySample,可以看到数据库中尚无数据。 4
5 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 在“对象资源管理器”窗口中,如图所示展开MySample数据库,右键单击“表”结点,在弹出的快捷菜单中,选择“新建表”命令。 5
6 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 首先创建“员工编号”列,并将其设置为主键。在列名中输入“员工编号” ,并在“数据类型”下拉式列表中选择“int” 。 6
7 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 向员工表中添加其余的六列 。当向表中的某列填写详细信息时,一行新的空行会自动添加到列表的末端,允许添加下一行的详细信息 。 7
8 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 在右侧的“属性”窗口中,选择“员工编号”作为标识列 。 8
9 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 通过单击工具栏上的“保存”按钮来保存这张表,在“选择名称”对话框中,输入表名称“员工”,随后单击“确定”按钮。 9
10 创建表(续) 1.2.2 在Microsoft SQL Server 2005中创建表 为了确认表已经被创建,在“对象资源管理器”中展开表结点,将在列表中看到新创建的员工表 。 10
创建表的多媒体演示 多媒体演示
对创建表的步骤 进行总结 1.2.3 对创建表的步骤进行总结 创建新数据库 在数据库中创建新表 在表中创建列
设置列属性和约束 1.2.4 设置列属性和约束 列名 数据类型 数值长度 允许空值 主键
设置列属性和约束(续) 标识列 (是标识):表示该列为标识列, 并将具有自动递增的值。 标识种子:设置表中所输入的第一行的值。默认值为1。 1.2.4 设置列属性和约束 标识列 (是标识):表示该列为标识列, 并将具有自动递增的值。 标识种子:设置表中所输入的第一行的值。默认值为1。 标识增量:设置对表中最近创建的行的标识列所增加的增量值。
SQL语言 1.2.5 SQL语言 SQL语言包括以下三种: 数据定义语言(DDL) 数据控制语言(DCL) 数据操纵语言(DML)
数据定义语言(DDL) 1.2.5.1 数据定义语言(DDL) 1 CREATE:CREATE TABLE 员工 (员工编号 INT, 员工姓名 NVARCHAR(20),员工职位 NVARCHAR(20), 员工出生日期 Datetime, 所属部门编号INT,员工性别 NVARCHAR(2), 员工聘用日期 Datetime) ALTER: ALTER TABLE 员工 ADD 员工所属部门NVARCHAR(20) DROP: DROP TABLE 员工 2 3
数据控制语言(DCL) 1 2 3 GRANT: GRANT INSERT, SELECT ON 员工 TO Damien DENY: DENY DELETE, DROP ON 员工 TO Jill REVOKE: REVOKE ALL FROM exEmployee 2 3
数据操纵语言(DML) 1.2.5.3 数据操纵语言(DML) 1 INSERT:INSERT INTO 员工 (员工姓名, 员工职位, 员工出生日期, 员工性别, 员工聘用日期) VALUES ('张宇', '职员', ' 1975-6-28 ', '男‘, '2005-2-8') UPDATE: UPDATE 员工 SET 员工姓名 = '王东' WHERE 员工姓名 = '王海' DELETE: DELETE FROM 员工 WHERE 员工姓名 = '王东' SELECT: SELECT 员工姓名, 员工聘用日期 FROM 员工 2 3 4
关系 1.2.6 关系 关系的类型 外键和外键约束
关系的类型 1.2.6.1 关系的类型 一对一关系 一对多关系 多对多关系
一对一关系 1.2.6.1 关系的类型 当一个表中的某一行只能与另一个表中的某一行相关,而且第二个表中的某一行也只能与第一个表中的某一行相关时,这两个表之间存在一对一(1:1)关系。如下图所示。
一对多关系 当一个表中的单行可与另一个表中的多行相关联,但是第二个表中的单行只能与第一个表中的单行相关联时,可以得到一对多(1:n)关系。 1.2.6.1 关系的类型 当一个表中的单行可与另一个表中的多行相关联,但是第二个表中的单行只能与第一个表中的单行相关联时,可以得到一对多(1:n)关系。
多对多关系 1.2.6.1 关系的类型 当一个表中的某一行可与另一个表中的多行相关联,同时另一个表中的某一行又可与第一个表中的多行相关联时, 这两个表之间存在多对多(m:n)关系。
外键和外键约束 外键约束允许定义以下三种特定问题。 哪些列是主键和外键。 数据库是否应对照约束条件来检查新输入的数据。 1.2.6.2 外键和外键约束 外键约束允许定义以下三种特定问题。 哪些列是主键和外键。 数据库是否应对照约束条件来检查新输入的数据。 在修改或删除数据所在列时,数据库是否应实施此约束。如果是,数据库应如何实施。
外键和外键约束(续) 1.2.6.2 外键和外键约束 接下来体会一下关系。如下图所示为员工表、分公司表、部门表,公司部门设置表等之间的关系。
1 2 3 外键和外键约束(续) 下面,来学习如何在SQL Server 2005中添加关系。 1.2.6.2 外键和外键约束 启动SQL Server Management Studio,连接到本地服务器。 1 在“对象资源管理器”中,展开数据库结点,选择MySample数据库所包含的表结点。 2 鼠标右键单击员工表,从上下文菜单中选择“修改”命令项。 3
外键和外键约束(续) 1.2.6.2 外键和外键约束 在表定义窗口单击鼠标右键,从上下文菜单中选择“关系”,打开“外键关系”对话框。单击“添加”按钮来创建一个新的关系, 这会在对话框中添加一个新的关系。如下图所示。 4
5 6 外键和外键约束(续) 1.2.6.2 外键和外键约束 单击“表和列规范”结点右侧的省略号,打开“表和列”对话框。 选择部门表作为主键表,并将部门编号设置为主键,所属部门编号设置为外键,如下图所示。 6
7 8 外键和外键约束(续) 1.2.6.2 外键和外键约束 单击“确定”按钮来关闭“表和列”对话框。 在“外键关系”对话框中,展开“表和列规范”结点,将看到关系的详细信息,如下图所示。 8
外键和外键约束(续) 1.2.6.2 外键和外键约束 单击“关闭”按钮来关闭“外键关系”对话框,随后在工具栏上单击“保存”按钮来保存对数据库所做的修改,在“保存”对话框中单击“是”按钮来确认改变。 9 在“对象资源管理器”中,展开员工表结点,随后展开键结点,如下图所示。 10 按照上述步骤对所有的关系进行设置,最后单击“保存” 按钮。 11
添加关系的多媒体演示 多媒体演示
存储过程 创建存储过程 在SQL Server 2005中创建存储过程 对存储过程授予权限 更改和删除存储过程 创建带输入参数的存储过程 1.2.7 存储过程 创建存储过程 在SQL Server 2005中创建存储过程 对存储过程授予权限 更改和删除存储过程 创建带输入参数的存储过程 使用输出参数返回数据
创建存储过程 必须使用数据定义语言(DDL)来创建存储过程。 1.2.7.1 创建存储过程 必须使用数据定义语言(DDL)来创建存储过程。 创建存储过程的DDL命令为 CREATE PROCEDURE。对于 SQL Server 2005,CREATE PROCEDURE 最简单的形式如下: CREATE PROCEDURE <name> AS <queries>
1 在SQL Server 2005中 创建存储过程 在SQL Server 2005中创建存储过程的步骤如下: 打开 SQL Server Management Studio。 1
在SQL Server 2005 中创建存储过程 (续) 鼠标右键单击“存储过程”结点,并从上下文菜单中选择“新建存储过程”命令。 2
3 在SQL Server 2005 中创建存储过程 (续) 用以下存储过程的声明替换自动生成的模板。 CREATE PROCEDURE spGetEmployees AS SELECT 员工姓名 FROM 员工 ORDER BY 员工姓名
4 5 在SQL Server 2005 中创建存储过程 (续) 单击工具栏上的“执行” 命令,并创建存储过程。 返回“对象资源管理器”并展开“存储过程”结点。 5
6 7 在SQL Server 2005 中创建存储过程 (续) 鼠标右键单击spGetEmployees,并从上下文菜单中选择“执行”命令。 6 在“对象资源管理器”中,鼠标右键单击MySample数据库结点,并从上下文菜单中选择“新建查询”命令。 7
8 在SQL Server 2005 中创建存储过程 (续) 工具栏上的单击“执行”命令以对数据库执行GRANT命令。
创建存储过程的多媒体演示 多媒体演示
对存储过程授予权限 1.2.7.3 对存储过程授予权限 在 SQL Server 2005中,存储过程不具备 SELECT、INSERT、UPDATE 或 DELETE 权限,但是具有 EXEC权限。可如下授予 EXEC 权限: GRANT EXEC ON spGetEmployees TO band
对存储过程授予权限(续) 与此类似,如果要删除现有权限,可使用REVOKE命令来查询删除。 1.2.7.3 对存储过程授予权限 与此类似,如果要删除现有权限,可使用REVOKE命令来查询删除。 对于SQL Server 2005,REVOKE语句的语法如下: REVOKE EXEC ON spGetEmployees FROM band
对存储过程授予权限(续) SQL Server 2005 还允许使用下面的 DENY 查询语句来显式地拒绝存储过程的 EXEC 权限: 1.2.7.3 对存储过程授予权限 SQL Server 2005 还允许使用下面的 DENY 查询语句来显式地拒绝存储过程的 EXEC 权限: DENY EXEC ON spGetEmployees TO band
1 2 更改和删除存储过程 更改和删除存储过程的一般步骤如下。 1.2.7.4 更改和删除存储过程 打开 SQL Server Management Studio , 并使用sa账户连接到本地数据库服务器 。 1 依次展开“数据库”、“MySample”、“可编程性”结点,然后展开“存储过程”结点 。 2
3 更改和删除存储过程 (续) 更改该存储过程的相关语句如下 。 1.2.7.4 更改和删除存储过程 ALTER PROCEDURE dbo.spGetEmployees AS SELECT 员工编号, 员工姓名 FROM 员工 ORDER BY 员工姓名
4 5 更改和删除存储过程 (续) 在“对象资源管理器”中,选择该存储过程并在相应的结点上单击鼠标右键,选择“执行存储过程”命令。 1.2.7.4 更改和删除存储过程 在“对象资源管理器”中,选择该存储过程并在相应的结点上单击鼠标右键,选择“执行存储过程”命令。 4 在弹出的对话框中单击“确定”按钮。可以看到执行查询的结果出现在“输出”窗口中,如下图所示。 5
更改已创建的存储过程的多媒体演示 多媒体演示
1 2 3 创建带输入参数 的存储过程 创建带输入参数的存储过程的一般步骤如下。 1.2.7.5 创建带输入参数的存储过程 打开SQL Server Management Studio, 并使用sa账户连接到本地数据库服务器 。 1 依次展开“数据库”、“MySample”和“可编程性”结点。从“存储过程”结点的上下文菜单中选择“新建存储过程”命令。 2 为存储过程提供声明 。 3
4 5 6 创建带输入参数 的存储过程 (续) 1.2.7.5 创建带输入参数的存储过程 单击“执行“命令运行查询,并创建存储过程。 在“对象资源管理器”中,展开“存储过程”结点,然后展开spGetEmployeesByID 存储过程 。 5 选择spGetEmployeesByID 存储过程,并从上下文菜单中选择“执行存储过程”命令, 将得到信息提示输入参数 。 6
7 8 创建带输入参数 的存储过程 (续) 1.2.7.5 创建带输入参数的存储过程 对 @EmployeeID参数输入“ 1 ”并单击“确定”按钮。 7 在“对象资源管理器”中,鼠标右键单击MySample数据库结点,并从上下文菜单中选择“新建查询” 命令。 8
创建带输入参数的存储过程的多媒体演示 多媒体演示
1 2 3 使用输出参数返回数据 使用输出参数返回数据的一般步骤如下。 1.2.7.6 使用输出参数返回数据 打开SQL Server Management Studio, 并使用sa账户连接到本地数据库服务器 。 1 依次展开“数据库”、“MySample”、“可编程性”结点,然后从“存储过程”结点上下文菜单中选择“新建存储过程” 命令。 2 添加存储过程声明。 3
4 5 6 使用输出参数 返回数据(续) 1.2.7.6 使用输出参数返回数据 单击“执行”命令运行查询,并将修改后的存储过程保存到数据库中 。 4 展开spGetEmployeesWithCount存储过程所包含的“参数”结点。 5 在“对象资源管理器”中,鼠标右键单击MySample数据库结点,并从上下文菜单中选择“新建查询” 命令。 6
使用输出参数返回数据的多媒体演示 多媒体演示
第1章 数据库基础 数据存储 数据库的基础知识 数据库应用程序 小结 习题 65
数据库应用程序 应用程序就是通常所说的数据库应用程序。 数据库应用程序就是企业根据自身的需要, 1.3 数据库应用程序 应用程序就是通常所说的数据库应用程序。 数据库应用程序就是企业根据自身的需要, 使用数据库来完成企业内部一些必要工作的一组实用程序。
第1章 数据库基础 数据存储 数据库的基础知识 数据库应用程序 小结 习题 67
小结 1.4 小结 本章简单介绍了基本的数据库概念、多个数据库之间的关系、基本SQL语言,另外还介绍了数据库的另一种存储过程查询方式及对它的创建、更改、删除等操作和相关的参数知识。 68
第1章 数据库基础 数据存储 数据库的基础知识 数据库应用程序 小结 习题 69
习题 1.5 习题 1. 在关系数据库中,主键(1) 。当运用SQL语句创建主键时,可以是(2) 。 ⑴ A. 为标识表中唯一的实体 B. 是创建的唯一索引,允许空值 C. 只允许以表中的第一字段建立 D. 允许有多个 ⑵ A. Create Table table1(column1 char(13) Not Null PRIMARY key,column2 int Not Null) On [PRIMARY] B. Alter Table table1 With nocheck Add Constraint [PK_table1] Primary key nonclustered ( column1) On [primary] C. Alter Table table1 column1 Primary key 70
习题(续) 2. 在SQL语法中,用于插入数据的命令是___,用于更新数据的命令是___。 A. INSERT,UPDATE 1.5 习题 2. 在SQL语法中,用于插入数据的命令是___,用于更新数据的命令是___。 A. INSERT,UPDATE B. UPDATE, INSERT C. DELETE,UPDATE D. CREATE,INSERT INTO 71
习题(续) 3. 在SQL语法中,SELECT语句的完整语较为复杂,通常包括___。 A. SELECT,INTO 1.5 习题 3. 在SQL语法中,SELECT语句的完整语较为复杂,通常包括___。 A. SELECT,INTO B. SELECT,FROM C. SELECT,GROUP D. 仅SELECT 72
习题(续) 4. 在SQL Server服务器上,存储过程是一组预先定义并___的SQL语句。 A. 保存 B. 编译 C. 解释 1.5 习题 4. 在SQL Server服务器上,存储过程是一组预先定义并___的SQL语句。 A. 保存 B. 编译 C. 解释 D. 编写 73
习题(续) 5. 现有一销售表,其结构如下 。 id int ( 标识号 ) codno char(7) ( 商品编码 ) 1.5 习题 5. 现有一销售表,其结构如下 。 id int ( 标识号 ) codno char(7) ( 商品编码 ) codname varchar(30) ( 商品名称 ) spec varchar(20) (商品规格 ) price numeric(10,2) (商品价格) sellnum int (销售数量) deptno char(3) (售出分店编码) selldate datetime (销售时间) 要求:写出查询销售时间段在2002-2-15到2002-4-29之间、分店编码是01的所有记录。 74
习题(续) 1.5 习题 6. 创建一个存储过程spGetEmployeesByID,从员工表中查询与@EmployeeID参数相一致的员工编号和员工姓名。如果所输入ID是0,列出所有员工的员工编号和员工姓名信息。 75