您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > TP2 SQL Server数据库表管理
1第二章SQLServer数据库表管理2回顾数据库的作用数据库的发展过程以及当前流行的数据库数据库基本概念:数据存储方式、实体和记录、数据库和数据库表、数据冗余和数据完整性使用企业管理器创建组、注册、用户在企业管理器中创建数据库收缩、移动和配置数据库的选项3本章目标使用企业管理器创建数据库表设置表的主键、外键和建立表之间的关系为表增加约束4再论数据完整性2-1数据完整性可靠性准确性5再论数据完整性2-2数据存放在表中“数据完整性的问题大多是由于设计引起的”创建表的时候,就应当保证以后数据输入是正确的——错误的数据、不符合要求的数据不允许输入创建表:保证数据的完整性=实施完整性约束6完整性包括…2-1输入的类型是否正确?——年龄必须是数字输入的格式是否正确?——身份证号码必须是18位是否在允许的范围内?——性别只能是”男”或者”女”是否存在重复输入?——学员信息输入了两次是否符合其他特定要求?——信誉值大于5的用户才能够加入会员列表……列值要求(约束)整行要求(约束)7完整性包括…2-2域完整性实体完整性参照完整性自定义完整性8实体完整性河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012….地址姓名学号江西南昌雷铜0010014×约束方法:唯一约束、主键约束、标识列9域完整性河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012….地址姓名学号湖北江门李亮8700000000×约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束10参照完整性河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012…地址姓名学号980010021数学×约束方法:外键约束科目学号分数…数学001001288数学001001374语文001001267语文001001381数学00100169811自定义完整性AV121322乔峰CV0016AV372133玄痛CV0015AV378291沙悟净AV0014AV378290猪悟能AV0013AV378289孙悟空AV0012….会员证用户姓名用户编号约束方法:规则、存储过程、触发器帐号姓名信用….00192孙悟空700288猪悟能612333段誉890111虚竹4093000岳不群-10×触发器:检查信用值12表操作在企业管理器中演示打开表、数据输入等操作…13创建数据库表-114SQLServer的数据类型分类备注和说明数据类型说明二进制数据类型存储非子符和文本的数据Image可用来存储图像文本数据类型字符数据包括任意字母、符号或数字字符的组合Char固定长度的非Unicode字符数据Varchar可变长度非Unicode数据Nchar固定长度的Unicode数据Nvarchar可变长度Unicode数据Text存储长文本信息Ntext存储可变长度的长文本日期和时间日期和时间在单引号内输入Datetime日期和时间数字数据该数据仅包含数字,包括正数、负数以及分数intsmallint整数floatreal数字货币数据类型用于十进制货币值MoneyBit数据类型表示是/否的数据Bit存储布尔数据类型15二种:datetime,smalldatetime。说明方法:datetime用8个字节存储日期时间。日期范围1753/1/1~9999/12/31。精度到3/100秒。smalldatetime用4个字节存储。范围1900/1/1~2079/6/6。精度到分。常量用单引号引起,有多种格式。时间日期数据类型:08/10/2004或08-10-2004--分隔符数字方式08102004--数字方式A10,2004--英文数字例:常量2004年8月10日下午5点30分:’2004-8-1017:30:00’或者’8/10/20045:30:00PM’16bigint(大整数):8个字节。Int或integer(整数):4个字节(-231_231-1)。smallint(短整数):2个字节(-32768-32767)。tinyint(微短整数):1个字节(0-255)。Bit:只能取0、1或NULL。bit类型的字段或变量输入0和NULL以外的数值都作为1处理。整数数据类型:17二种:decimal,numeric,等价。存储实数值。由数字0~9、正负号、小数点组成。最多38位。由整数部分和小数部分构成。说明方法:decimal(p,s)或numeric(p,s)。P为精度,S为小数位数;默认精度18位,默认小数位0位。精确数据类型:例:decimal(12,4)表示数值中共有12位,4位小数,8位整数。字段的精度为12位。18二种:money,smallmoney。说明方法:money两个4个字节整数存储。前面表示货币的整数部分,后面的4个字节表示小数部分。小数点后保留4位数。Smallmoney分别用两个字节表示货币的整数部分和小数部分,小数点后保留4位数。货币常量前加币值符号。例:$-120.35货币数据类型:19思考电话号码一般使用什么数据类型存储?性别一般使用什么数据类型存储?年龄信息一般使用什么数据类型存储?照片信息一般使用什么数据类型存储?薪水一般使用什么数据类型存储?20创建数据库表-221思考学员姓名允许为空吗?家庭地址允许为空吗?电子邮件信息允许为空吗?考试成绩允许为空吗?22自定义数据类型通过存储过程sp_addtype创建新的类型;用sp_droptype删除不再使用的自定义类型。sp_addtypetype_namesystem_type;{“NULL”︱”NOTNULL”︱”NONULL”}自定义数据类型:23自定义数据类型例在BOOKS数据库中定义一个新的数据类型,类型名称为“图书编码类型”,字符型,长度为12位,不允许为空。sp_addtype图书编码类型,'char(12)','notnull'创建用户自定义数据类型:24练习:使用系统存储过程定义一个新的数据类型,类型名称为“价格类型”,货币型,允许为空。USEBOOKSGOEXECsp_addtype价格类型,'money','null'25自定义数据类型例删除用户自定义数据类型“图书编码类型”。USEBOOKSGOEXECUTEsp_droptype图书编码类型删除用户自定义数据类型:26创建数据库表-327思考在主键列输入的数值,允许为空吗?一个表可以有多个主键吗?在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?28选择主键的原则最少性尽量选择单个键作为主键稳定性尽量选择数值更新少的列作为主键29创建数据库表-4表中没有合适的列作为主键怎么办?30思考标识列允许为字符数据类型吗?如果标识列A的初始值为1,增长量为2,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?31创建数据库表-532创建数据库表-6演示建立主-外键关系……33关系图演示关系图……34主表和从表1、当主表中没有对应的记录时,不能将记录添加到子表——成绩表中不能出现在学员信息表中不存在的学号;2、不能更改主表中的值而导致子表中的记录孤立——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;3、子表存在与主表对应的记录,不能从主表中删除该行——不能把有成绩的学员删除了4、删除主表前,先删子表——先删学员成绩表、后删除学员信息表35创建数据库表-7演示建立检查约束……36创建数据库表完毕!输入数据项,验证主键、主外键关系、检查约束……37导入-导出数据演示导出数据为EXCEL文件……38回顾表的基础知识建表的基本步骤:确定表中有哪些列确定每列的数据类型给表添加各种约束创建各表之间的关系SQLServer中的数据类型整型数据:intsmallint浮点数据:floatnumeric……字符数据固定长度:char(6)可变长度:varchar(10)unicode编码:nchar(10)……布尔数据(真/假)bit:1/0货币数据money日期数据datetime39创建表建表的语法CREATETABLE表名(字段1数据类型列的特征,字段2数据类型列的特征,...)列的特征:包括该列是是否为空(NULL)、是否是标识列(自动编号)、是否有默认值、是否为主键等。40创建数据表T-SQL创建数据表的语法:CREATETABLE表名(字段1数据类型列的特征,字段2数据类型列的特征,...)数据类型[(长度,[小数])]41创建数据表[NOT]NULL取空值约束DEFAULT表达式缺省值IDENTITY(种子值,增量)自动增量标识CHECK表达式检验表达式UNIQUE唯一值约束PRIMARYKEY主键FOREIGNKEY外键字段名42建表示例1USEstuDB--将当前数据库设置为stuDBGOCREATETABLEstuInfo/*-创建学员信息表-*/(stuNameVARCHAR(20)NOTNULL,--姓名,非空(必填)stuNoCHAR(6)NOTNULL,--学号,非空(必填)stuAgeINTNOTNULL,--年龄,INT类型默认为4个字节stuIDNUMERIC(18,0),--身份证号stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号stuAddressTEXT--住址,允许为空,即可选输入)GONUMERIC(18,0)代表18位数字,小数位数为0演示:创建学员信息表stuInfoIDENTITY(起始值,递增量)43建表示例2CREATETABLEstuMarks(ExamNoCHAR(7)NOTNULL,--考号stuNoCHAR(6)NOTNULL,--学号writtenExamINTNOTNULL,--笔试成绩LabExamINTNOTNULL--上机成绩)GO演示:创建学员成绩表stuMarks44删除表如果当前数据库中已存在stuInfo表,再次创建时系统将提示出错。如何解决呢?45删除表删除表的语法:DROPTABLE表名USEstuDB--将当前数据库设置为stuDB,以便在stuDB数据库中建表GOIFEXISTS(SELECT*FROMsysobjectsWHEREname=’stuInfo’)DROPTABLEstuInfoCREATETABLEstuInfo/*-创建学员信息表-*/(…..)GO46回顾SQLServer的约束约束的目的:确保表中数据的完整型常用的约束类型:主键约束(PrimaryKeyConstraint):要求主键列数据唯一,并且不允许为空唯一约束(UniqueConstraint):要求该列唯一,允许为空,但只能出现一个空值。检查约束(CheckConstraint):某列取值范围限制、格式限制等,如有关年龄的约束默认约束(DefaultConstraint):某列的默认值,如我们的男性学员较多,性别默认为“男”外键约束(ForeignKeyConstraint):用于两表间建立关系,需要指定引用主表的那列47添加约束添加约束的语法:ALTERTABLE表名ADDCONSTRAINT约束名约束类型具体的约束说明约束名的取名规则推荐采用:约束类型_约束字段主键(PrimaryKey)约束:如PK_stuNo唯一(UniqueKey)约束:如UQ_stuID默认(DefaultKey)约束:如DF_stuAddress检查(CheckKey)约束:如CK_stuAge外键(ForeignKey)约束:如FK_stuNo48添加约束示例ALTERTABLEstuI
本文标题:TP2 SQL Server数据库表管理
链接地址:https://www.777doc.com/doc-1060192 .html