《2022年软件工程师数据库培训1.doc》由会员分享,可在线阅读,更多相关《2022年软件工程师数据库培训1.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 SQL Server数据库表治理1ACCP V4.0回忆数据库的作用 数据库的开展过程以及当前流行的数据库 数据库根本概念:数据存储方式、实体和记录、 数据库和数据库表、数据冗余和数据完好性 使用企业治理器创立组、注册、用户 在企业治理器中创立数据库 收缩、挪动和配置数据库的选项2ACCP V4.0本章目的使用企业治理器创立数据库表 设置表的主键、外键和建立表之间的关系 为表增加约束3ACCP V4.0再论数据完好性 2-1可靠性精确性数据完好性4ACCP V4.0再论数据完好性 2-2数据存放在表中 “数据完好性的咨询题大多是由于设计引起的” 创立表的时候,就应当保证以后数据输入是正
2、确的 错误的数据、不符合要求的数据不同意输入创立表: 创立表:保证数据的完好性 = 施行完好性约束5ACCP V4.0完好性包括2-1输入的类型是否正确?年龄必须是数字输入的格式是否正确?身份证号码必须是18位列值要求(约束)是否在同意的范围内?性别只能是”男”或者”女”是否存在重复输入?学员信息输入了两次是否符合其他特定要求?信誉值大于5的用户才能够参加会员列表整行要求(约束)6ACCP V4.0完好性包括2-2域完好性实体完好性自定义完好性援用完好性7ACCP V4.0实体完好性学号 0010012 0010013 0010014 0010015 0010016 姓名 李山 吴兰 雷铜 张
3、丽鹃 赵能够 地址 山东定陶 湖南新田 江西南昌 河南新乡 河南新乡 . .0010014 雷铜 江西南昌约束方法:唯一约束、主键约束、 约束方法:唯一约束、主键约束、标识列8ACCP V4.0域完好性学号 0010012 0010013 0010014 0010015 0010016 姓名 李山 吴兰 雷铜 张丽鹃 赵能够 地址 山东定陶 湖南新田 江西南昌 河南新乡 河南新乡 . .8700000000 李亮 湖北江门约束方法:限制数据类型、检查约束、外键约束、 约束方法:限制数据类型、检查约束、外键约束、 默认值、 默认值、非空约束9ACCP V4.0援用完好性学号 0010012 00
4、10013 0010014 0010015 0010016 姓名 李山 吴兰 雷铜 张丽鹃 赵能够 地址 山东定陶 湖南新田 江西南昌 河南新乡 河南新乡 科目 数学 数学 语文 语文 数学学号分数0010012 88 0010013 74 0010012 67 0010013 81 0010016 98约束方法: 约束方法:外键约束10数学0010021 98ACCP V4.0自定义完好性用户编号 AV0012 AV0013 AV0014 CV0015 CV0016 用户姓名 孙悟空 猪悟能 沙悟净 玄痛 乔峰 会员证 AV378289 AV378290 AV378291 AV372133
5、AV121322 . .触发器:检查信誉值帐号 00192 00288 12333 90111 93000姓名信誉 7 6 8 40 -10. 孙悟空 猪悟能段誉 虚竹 岳不群约 束方法:规则、存储过程、触发器 约束方法:规则、存储过程、11ACCP V4.0表操作在企业治理器中演示打开表、数据输入等操作12ACCP V4.0创立数据库表-113ACCP V4.0SQL Server的数据类型分类 文本数据类型 备注和说明 字符数据包括任意字母、符 号或数字字符的组合 数据类型 Image Char Varchar Nchar Nvarchar Text Ntext 日期和时间 数字数据 日期
6、和时间在单引号内输入 该数据仅包含数字,包括正 数、负数以及分数 Datetime int smallint float real 货币数据类型 Bit数据类型14说明 可用来存储图像 固定长度的非 Unicode 字符 数据 可变长度非 Unicode 数据 固定长度的 Unicode 数据 可变长度 Unicode 数据 存储长文本信息 存储可变长度的长文本 日期和时间 整数 数字二进制数据类型 存储非子符和文本的数据用于十进制货币值 表示是/否的数据Money Bit 存储布尔数据类型ACCP V4.0考虑号码一般使用什么数据类型存储? 性别一般使用什么数据类型存储? 年龄信息一般使用什
7、么数据类型存储? 照片信息一般使用什么数据类型存储? 薪水一般使用什么数据类型存储?15ACCP V4.0创立数据库表-216ACCP V4.0考虑学员姓名同意为空吗? 家庭地址同意为空吗? 电子邮件信息同意为空吗? 考试成绩同意为空吗?17ACCP V4.0创立数据库表-318ACCP V4.0考虑在主键列输入的数值,同意为空吗? 一个表能够有多个主键吗? 在一个学校数据库中,假如一个学校内同意重名的学员, 但是一个班级内不同意学员重名,能够组合班级和姓名两 个字段一起来作为主键吗?19ACCP V4.0选择主键的原则最少性尽量选择单个键作为主键稳定性尽量选择数值更新少的列作为主键20ACC
8、P V4.0创立数据库表-4表中没有适宜的列作为主键如何办?21ACCP V4.0考虑标识列同意为字符数据类型吗? 假如标识列A的初始值为1,增长量为2,则输入三行数据 以后,再删除两行,下次再输入数据行的时候,标识值从 多少开场?22ACCP V4.0创立数据库表-523ACCP V4.0创立数据库表-6演示建立主-外键关系24ACCP V4.0关系图演示关系图25ACCP V4.0主表和从表1、当主表中没有对应的记录时,不能将记录添加到子表成绩表中不能出如今学员信息表中不存在的学号;2、不能更改主表中的值而导致子表中的记录孤立把学员信息表中的学号改变了,学员成绩表中的学号也应当随之 改变;
9、3、子表存在与主表对应的记录,不能从主表中删除该行不能把有成绩的学员删除了4、删除主表前,先删子表先删学员成绩表、后删除学员信息表26ACCP V4.0创立数据库表-7演 示建立检查约束27ACCP V4.0创立数据库表完毕!输入数据项,验证主键、主外键关系、检查约束 输入数据项,验证主键、主外键关系、检查约束28ACCP V4.0导入-导出数据演示导出数据为EXCEL文件29ACCP V4.0总结SQL Server创立表的过程是规定数据列的属性的过程,同 时也是施行数据完好性(包括实体完好性、援用完好性和 域完好性等)保证的过程 实体完好性数据行不能存在重复,援用完好性要求子表中 的相关项
10、必须在主表中存在 域完好性实现了对输入到特定列的数值的限制 SQL Server中存在五种约束,分别是:主键约束、外键约 束、检查约束、默认约束和唯一性约束(唯一性约束将在 后续课程中使用SQL语句实现)30ACCP V4.0总结创立数据库表需要:确定表的列名、数据类型、是否同意 为空,还需要确定主键、必要的默认值、标识列和检查约 束 假如建立了主表和子表的关系,则:子表中的相关工程的数据,在主表中必须存在; 主表中相关项的数据更改了,则子表对应的数据项也应当随之 更改; 在删除子表之前,不能够删除主表;31ACCP V4.0 第三章 SQL Server数据治理1ACCP V4.0回忆数据完
11、好性包括了实体完好性、援用完好性、域 完好性和自定义完好性 创立数据库表的过程实际上确实是施行完好性约束 的过程 创立表包括选择字段名称、数据类型、定义是否 为空、设置默认值、主键和关系、检查约束等 表中没有适宜的列作为主键,能够创立标识列 数据的导入/导出操作属于DTS(数据转换效劳)2ACCP V4.0目的理解T-SQL及其作用 使用SQL Server中的逻辑表达式和运算符 使用T-SQL向表中插入数据 使用T-SQL更新表中的数据 使用T-SQL删除表中的数据3ACCP V4.0SQLWHAT(SQL是什么?)Structured Query Language:构造化查询语言WHY(为
12、何要使用SQL?)难道仅仅使用企业治理器操作SQL Server数据库? 应用程序如何与数据库打交道?WHEN(何时使用?)对SQL Server执行所有的操作都能够 程序中的增删改查HOW(如何使用?)4ACCP V4.0SQL和T-SQLT-SQL = Transact-SQL T-SQL是SQL的加强版 对功能进展了扩大:如变量说明、流程操纵、功 能函数5ACCP V4.0考虑ORACLE数据库支持标准SQL,在SQL Server中 编写的T-SQL语句他也支持吗?6ACCP V4.0T-SQL的组成DML(数据操作语言)查询、插入、删除和修正数据库中的数据; SELECT、INSER
13、T、 UPDATE 、DELETE等;DCL(数据操纵语言)用来操纵存取许可、存取权限等; GRANT、REVOKE 等;DDL(数据定义语言)用来建立数据库、数据库对象和定义其列 CREATE TABLE 、DROP TABLE 等变量说明、流程操纵、功能函数定义变量、推断、分支、循环构造等 日期函数、数学函数、字符函数、系统函数等7ACCP V4.0T-SQL中的运算符运算符 = = = ! 等于 大于 小于 大于或等于 小于或等于 不等于 非 含义语言中的一样, 与C语言中的一样,非常难写错 语言中的一样8ACCP V4.0通配符通配符_ % 一个字符 任意长度的字符串 括号中所指定范围
14、内的一个字符 不在括号中所指定范围内的一个字符解释例如A Like C_ B Like CO_% C Like 9W01-2 D Like %A-D1-29ACCP V4.0通配符使用说明通常与LIKE关键字一起来使用 能够用在检查约束中使用LIKE 在后面的查询语句中还会经常使用到考虑:身份证号码的约束表达式如何写? 考虑:身份证号码的约束表达式如何写?10ACCP V4.0逻辑表达式逻辑表达式AND OR NOT说明逻辑与 逻辑或 逻辑非例如1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0; 1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0; NO
15、T 1 = 0; NOT 0 = 1;NOT (付款方式 = 信誉卡 OR (信誉卡 阳光卡 信誉卡) 阳光卡) 付款方式 信誉卡 信誉卡 阳光卡11ACCP V4.0讲述T-SQL之前数 据库对象 语法检查 执行 选择数据库T-SQL执行 结果12ACCP V4.0插入数据行 7-1INSERT INTO 表名 列名 VALUES 列名 值列表INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (张青裁,上海松江,6,ZQCSohu,0)13ACCP V4.0插入数据行 7-2考前须知1:每次插入一行数据,不可能只插
16、入半行或者几列数据, 考前须知1:每次插入一行数据,不可能只插入半行或者几列数据, 1:每次插入一行数据 因而,插入的数据是否有效将按照整行的完好性的要求来检验; 因而,插入的数据是否有效将按照整行的完好性的要求来检验;INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (张青裁)14ACCP V4.0插入数据行 7-3考前须知2:每个数据值的数据类型、 考前须知2:每个数据值的数据类型、精度和小数位数必须与相应的 2:每个数据值的数据类型 列匹配; 列匹配;INSERT INTO Students (SName,SA
17、ddress,SGrade,SEmail,SSEX) VALUES (张青裁,上海松江,ZQC,ZQCSohu, ZG)15ACCP V4.0插入数据行 7-4考前须知3:不能为标识列指定值,由于它的数字是自动增长的;INSERT INTO Students (SCode,SName,SAddress,SGrade,SEmail,SSEX) VALUES (32,张青裁,上海松江,6,ZQCSohu,0)16ACCP V4.0插入数据行 7-5考前须知4:假如在设计表的时候就指定了某列不同意为空, 考前须知4:假如在设计表的时候就指定了某列不同意为空,则必须 4:假如在设计表的时候就指定了某列
18、不同意为空 插入数据; 插入数据;INSERT INTO Students (SAddress,SGrade,SEmail,SSEX) VALUES (上海松江,6,ZQCSohu,0)17ACCP V4.0插入数据行 7-6考前须知5:插入的数据项, 考前须知5:插入的数据项,要求符合检查约束的要求 5:插入的数据项INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (张青裁,上海松江,6,ZQC,0)18ACCP V4.0插入数据行 7-7考前须知6:具有缺省值的列,能够使用DEFAULT(缺省) 考前须知6:具有
19、缺省值的列,能够使用DEFAULT(缺省)关键字来代 6:具有缺省值的列 DEFAULT 替插入的数值INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES (张青裁,DEFAULT,6,ZQCSohu,0)19ACCP V4.0插入多行数据 4-1INSERT INTO (列名) SELECT FROM INSERT INTO TongXunLu (姓名,地址,电子邮件) SELECT SName,SAddress,SEmail FROM Students20ACCP V4.0插入多行数据 4-2SELECT (列名)
20、INTO FROM SELECT Students.SName,Students.SAddress,Students.SEmail INTO TongXunLu FROM Students猜一猜:该语句能够执行两次吗? 猜一猜:该语句能够执行两次吗?21ACCP V4.0插入多行数据 4-3SELECT INTO插入多行数据的时候,如何插入新的标 识 列?SELECT IDENTITY(数据类型,标识种子,标识增长量) AS 列名 INTO 新表 FROM 原始表SELECT Students.SName,Students.SAddress,Students.SEmail, IDENTITY(
21、int,1,1) As StudentID INTO TongXunLuEX FROM Students22ACCP V4.0插入多行数据 4-4INSERT INTO (列名) SELECT UNION SELECT UNION INSERT STUDENTS (SName,SGrade,SSex) SELECT 测试女生1,7,0 UNION SELECT 测试女生2,7,0 UNION SELECT 测试女生3,7,0 UNION SELECT 测试女生4,7,0 UNION SELECT 测试女生1,7,0 UNION SELECT 测试男生2,7,1 UNION SELECT 测试男
22、生3,7,1 UNION SELECT 测试男生4,7,1 UNION SELECT 测试男生5,7,123ACCP V4.0更新数据行UPDATE SET WHERE UPDATE Students SET SSEX = 0 UPDATE Students SET SAddress =北京女子职业技术学校家政班 WHERE SAddress = 北京女子职业技术学校刺绣班 UPDATE Scores SET Scores = Scores + 5 WHERE Scores = 9524ACCP V4.0删除数据行 3-1DELETE FROM WHERE 学号 姓名 地址 0010012 李
23、山 山东定陶 0010013 吴兰 湖南新田 雷铜 江西南昌 0010014 DELETE FROM Students 0010015 张丽鹃 河南新乡 WHERE SName =张青裁 0010016 赵能够 河南新乡 . .科目学号分数.DELETE FROM 学员信息表 WHERE 学号 =0010012数学 数学 语文 语文 数学0010012 88 0010013 74 0010012 67 0010013 81 0010016 98ACCP V4.025删除数据行 3-2考虑:以下的删除语句能够执行吗? 考虑:以下的删除语句能够执行吗?DELETE SCode FROM Students26ACCP V4.0删除数据行 3-3TRUNCATE TABLE TRUNCATE TABLE Students=DELETE FROM Students27ACCP V4.0总结SQL(构造化查询语言)是数据库能够识别的通用指令集 SQL Server中的通配符经常和LIKE结合使用来进展不精确 的限制 WHERE用来限制条件,其后紧跟条件表达式 一次插入多行数据,能够使用INSERTSELECT、 SELECTINTO或者UNION关键字来实现 使用UPDATE更新数据,一般都有限制条件 使用DELETE删除数据时,不能删除被外键值所援用的数 据行28ACCP V4.0
限制150内