第二章SQLServer数据库表管理1ACCPV4.0回顾数据库的作用数据库的发展过程以及当前流行的数据库数据库基本概念:数据存储方式、实体和记录、数据库和数据库表、数据冗余和数据完整性使用企业管理器创建组、注册、用户在企业管理器中创建数据库收缩、移动和配置数据库的选项2ACCPV4.0本章目标使用企业管理器创建数据库表设置表的主键、外键和建立表之间的关系为表增加约束3ACCPV4.0再论数据完整性2-1可靠性准确性数据完整性4ACCPV4.0再论数据完整性2-2数据存放在表中“数据完整性的问题大多是由于设计引起的”创建表的时候,就应当保证以后数据输入是正确的——错误的数据、不符合要求的数据不允许输入创建表:创建表:保证数据的完整性=实施完整性约束5ACCPV4.0完整性包括…2-1输入的类型是否正确?——年龄必须是数字输入的格式是否正确?——身份证号码必须是18位列值要求(约束)是否在允许的范围内?——性别只能是”男”或者”女”是否存在重复输入?——学员信息输入了两次是否符合其他特定要求?——信誉值大于5的用户才能够加入会员列表整行要求(约束)……6ACCPV4.0完整性包括…2-2域完整性实体完整性自定义完整性引用完整性7ACCPV4.0实体完整性学号00100120010013001001400100150010016姓名李山吴兰雷铜张丽鹃赵可以地址山东定陶湖南新田江西南昌河南新乡河南新乡…..×0010014雷铜江西南昌约束方法:唯一约束、主键约束、约束方法:唯一约束、主键约束、标识列8ACCPV4.0域完整性学号00100120010013001001400100150010016姓名李山吴兰雷铜张丽鹃赵可以地址山东定陶湖南新田江西南昌河南新乡河南新乡…..×8700000000李亮湖北江门约束方法:限制数据类型、检查约束、外键约束、约束方法:限制数据类型、检查约束、外键约束、默认值、默认值、非空约束9ACCPV4.0引用完整性学号00100120010013001001400100150010016姓名李山吴兰雷铜张丽鹃赵可以地址山东定陶湖南新田江西南昌河南新乡河南新乡…科目数学数学语文语文数学学号分数…001001288001001374001001267001001381001001698×约束方法:约束方法:外键约束10数学001002198ACCPV4.0自定义完整性用户编号AV0012AV0013AV0014CV0015CV0016用户姓名孙悟空猪悟能沙悟净玄痛乔峰会员证AV378289AV378290AV378291AV372133AV121322…..×触发器:检查信用值帐号0019200288123339011193000姓名信用76840-10….…孙悟空猪悟能段誉虚竹岳不群约束方法:规则、存储过程、触发器约束方法:规则、存储过程、11ACCPV4.0表操作在企业管理器中演示打开表、数据输入等操作…12ACCPV4.0创建数据库表-113ACCPV4.0SQLServer的数据类型分类文本数据类型备注和说明字符数据包括任意字母、符号或数字字符的组合数据类型ImageCharVarcharNcharNvarcharTextNtext日期和时间数字数据日期和时间在单引号内输入该数据仅包含数字,包括正数、负数以及分数Datetimeintsmallintfloatreal货币数据类型Bit数据类型14说明可用来存储图像固定长度的非Unicode字符数据可变长度非Unicode数据固定长度的Unicode数据可变长度Unicode数据存储长文本信息存储可变长度的长文本日期和时间整数数字二进制数据类型存储非子符和文本的数据用于十进制货币值表示是/否的数据MoneyBit存储布尔数据类型ACCPV4.0思考电话号码一般使用什么数据类型存储?性别一般使用什么数据类型存储?年龄信息一般使用什么数据类型存储?照片信息一般使用什么数据类型存储?薪水一般使用什么数据类型存储?15ACCPV4.0创建数据库表-216ACCPV4.0思考学员姓名允许为空吗?家庭地址允许为空吗?电子邮件信息允许为空吗?考试成绩允许为空吗?17ACCPV4.0创建数据库表-318ACCPV4.0思考在主键列输入的数值,允许为空吗?一个表可以有多个主键吗?在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?19ACCPV4.0选择主键的原则最少性尽量选择单个键作为主键稳定性尽量选择数值更新少的列作为主键20ACCPV4.0创建数据库表-4表中没有合适的列作为主键怎么办?21ACCPV4.0思考标识列允许为字符数据类型吗?如果标识列A的初始值为1,增长量为2,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?22ACCPV4.0创建数据库表-523ACCPV4.0创建数据库表-6演示建立主-外键关系……24ACCPV4.0关系图演示关系图……25ACCPV4.0主表和从表1、当主表中没有对应的记录时,不能将记录添加到子表——成绩表中不能出现在学员信息表中不存在的学号;2、不能更改主表中的值而导致子表中的记录孤立——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;3、子表存在与主表对应的记录,不能从主表中删除该行——不能把有成绩的学员删除了4、删除主表前,先删子表——先删学员成绩表、后删除学员信息表26ACCPV4.0创建数据库表-7演示建立检查约束……27ACCPV4.0创建数据库表完毕!输入数据项,验证主键、主外键关系、检查约束……输入数据项,验证主键、主外键关系、检查约束28ACCPV4.0导入-导出数据演示导出数据为EXCEL文件……29ACCPV4.0总结SQLServer创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程实体完整性数据行不能存在重复,引用完整性要求子表中的相关项必须在主表中存在域完整性实现了对输入到特定列的数值的限制SQLServer中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束(唯一性约束将在后续课程中使用SQL语句实现)30ACCPV4.0总结创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定主键、必要的默认值、标识列和检查约束如果建立了主表和子表的关系,则:——子表中的相关项目的数据,在主表中必须存在;——主表中相关项的数据更改了,则子表对应的数据项也应当随之更改;——在删除子表之前,不能够删除主表;31ACCPV4.0第三章SQLServer数据管理1ACCPV4.0回顾数据完整性包括了实体完整性、引用完整性、域完整性和自定义完整性创建数据库表的过程实际上就是实施完整性约束的过程创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和关系、检查约束等表中没有合适的列作为主键,可以创建标识列数据的导入/导出操作属于DTS(数据转换服务)2ACCPV4.0目标理解T-SQL及其作用使用SQLServer中的逻辑表达式和运算符使用T-SQL向表中插入数据使用T-SQL更新表中的数据使用T-SQL删除表中的数据3ACCPV4.0SQLWHAT(SQL是什么?)——StructuredQueryLanguage:结构化查询语言WHY(为何要使用SQL?)——难道仅仅使用企业管理器操作SQLServer数据库?——应用程序如何与数据库打交道?WHEN(何时使用?)——对SQLServer执行所有的操作都可以——程序中的增删改查HOW(怎么使用?)——…4ACCPV4.0SQL和T-SQLT-SQL=Transact-SQLT-SQL是SQL的加强版对功能进行了扩充:如变量说明、流程控制、功能函数5ACCPV4.0思考ORACLE数据库支持标准SQL,在SQLServer中编写的T-SQL语句他也支持吗?6ACCPV4.0T-SQL的组成DML(数据操作语言)——查询、插入、删除和修改数据库中的数据;——SELECT、INSERT、UPDATE、DELETE等;DCL(数据控制语言)——用来控制存取许可、存取权限等;——GRANT、REVOKE等;DDL(数据定义语言)——用来建立数据库、数据库对象和定义其列——CREATETABLE、DROPTABLE等变量说明、流程控制、功能函数——定义变量、判断、分支、循环结构等——日期函数、数学函数、字符函数、系统函数等7ACCPV4.0T-SQL中的运算符运算符===!等于大于小于大于或等于小于或等于不等于非含义语言中的一样,与C语言中的一样,很难写错语言中的一样8ACCPV4.0通配符通配符‘_’%[][^]一个字符任意长度的字符串括号中所指定范围内的一个字符不在括号中所指定范围内的一个字符解释示例ALike'C_'BLike'CO_%'CLike'9W0[1-2]'DLike‘%[A-D][^1-2]'9ACCPV4.0通配符使用说明通常与LIKE关键字一起来使用可以用在检查约束中使用LIKE在后面的查询语句中还会经常使用到思考:身份证号码的约束表达式怎么写?思考:身份证号码的约束表达式怎么写?10ACCPV4.0逻辑表达式逻辑表达式ANDORNOT说明逻辑与逻辑或逻辑非示例1AND1=;1AND0=0;0AND0=0;1OR1=1;1OR0=1;0OR0=0;NOT1=0;NOT0=1;NOT(付款方式='信用卡OR(信用卡'阳光卡信用卡')阳光卡')付款方式信用卡信用卡阳光卡11ACCPV4.0讲述T-SQL之前…数据库对象语法检查执行选择数据库T-SQL执行结果12ACCPV4.0插入数据行7-1INSERT[INTO]表名表名表名[列名VALUES值列表列名]值列表列名值列表INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁','上海松江',6,'ZQC@Sohu.com',0)13ACCPV4.0插入数据行7-2注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,1:每次插入一行数据因此,插入的数据是否有效将按照整行的完整性的要求来检验;因此,插入的数据是否有效将按照整行的完整性的要求来检验;INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁')×14ACCPV4.0插入数据行7-3注意事项2:每个数据值的数据类型、注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的2:每个数据值的数据类型列匹配;列匹配;INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁','上海松江',ZQC,'ZQC@Sohu.com','ZG')×15ACCPV4.0插入数据行7-4注意事项3:不能为标识列指定值,因为它的数字是自动增长的;INSERTINTOStudents(SCode,SName,SAddress,SGrade,SEmail,SSEX)VALUES(32,'张青裁','上海松江',6,'ZQC@Sohu.com',0)×16ACCPV4.0插入数据行7-5注意事项4:如果在设计表的时候就指定了某列不允许为空,注意事项4:如果在设计表的时候就指定了某列不允许为空,则必须4:如果在设计表的时候就指定了某列不允许为空插入数据;插入数据;INSERTINTOStudents(SAddress,SGrade,SEmail,SSEX)VALUES('上海松江',6,'ZQC@Sohu.com',0)×17ACCPV4.0插入数据行7-6注意事项5:插入的数据项,注意事项5:插入的数据项,要求符合检查约束的要求5:插入的数