第6章表的创建与管理返回本章首页上一页下一页第6章表的创建与管理6.1数据类型6.2表的创建6.3表结构的修改6.4表的重命名与删除6.5向表中添加、更新、删除数据6.6数据完整性的概念与实施方法上一章返回目录第6章表的创建与管理返回本章首页上一页下一页1.表的概念:表是数据库的数据对象,用于存储和操作数据的一种逻辑结构,是一系列列的集合。2.表的构成:表由表头和若干行数据构成。3.表的特性:表中每一行代表一个惟一的记录,每列代表一个域。教学过程:第6章表的创建与管理返回本章首页上一页下一页例1:学生成绩表表名表头数据行列第6章表的创建与管理返回本章首页上一页下一页4.对表的操作:–填表:将数据写入表中。–修改:改正表中的数据信息。–删除:删除表中记录信息。–查询:在表中按某些条件查找记录信息。5.注意:–在SQLServer2005中,每个数据库最多可存储20亿个表,每个表可以有1024列,每行最多可以存储8060字节。–SQLServer中表分为:永久表和临时表。其中永久表在创建后,除非用户删除否则将一直存放在数据库文件中;而临时表则会在用户退出或进行系统修复时被自动删除。第6章表的创建与管理返回本章首页上一页下一页6.数据类型:(1)相关概念:–概念:定义每个列所能存放的数据值和存储格式。–精度:指数值数据中所存储的十进制数据的总位数。例如:tinyint类型可以表示范围是0-255,其精度为3。–小数位数:指数值数据中小数点右边可以有的数字位数的最大值。例:89.658,其精度为5,小数位数为3。–长度:存储数据所用的字节数。例:tinyint所用长度为1字节。–(2)种类:系统数据类型和用户自定义数据类型。SQLServer2005中列的数据类型既可以是系统数据类型也可以是用户自定义数据类型。第6章表的创建与管理返回本章首页上一页下一页6.1数据类型6.1.1系统数据类型6.1.2自定义数据类型第6章表的创建与管理返回本章首页上一页下一页6.1.1系统数据类型1.整型数据类型2.浮点数据类型3.字符数据类型4.日期和时间数据类型5.文本和图形数据类型6.货币数据类型7.位数据类型8.二进制数据类型9.特殊数据类型10.新增数据类型第6章表的创建与管理返回本章首页上一页下一页具体种类:类型精度小数位数长度(字节)范围字符型char[(n)]\\N固定varchar[(n)]\\≤n为实际输入字符数unicodeNchar(n)\\2N固定Nvarchar(n)\\≤2n为实际输入字符数文本型Text\\231-1为实际输入字符数(ASCII)Ntext\\230-1为实际输入字符数(Unicode)第6章表的创建与管理返回本章首页上一页下一页类型精度小数位数长度(字节)范围整数型bigint1908-263~263-1Int1004-231~231-1smallint502-215~215-1tinyint3010~255精确数值型Decimal(p[,s])ps5~17-1038+1~1038-1Numeric(p[,s])ps5~17-1038+1~1038-1第6章表的创建与管理返回本章首页上一页下一页类型精度小数位数长度(字节)范围浮点型货币型Float[(n)]158-1.79E+308~1.79E+308real74-3.40E+38~3.40E+38money1948-263~263-1smallmoney1044-231~231-1位型图像型bit\\10或1image\\0~231-1第6章表的创建与管理返回本章首页上一页下一页类型精度小数位数长度(字节)范围二进制型Binary[(n)]\\N+4固定Varbinary[(n)]\\1~8000为实际输入长度+4日期型datetime\\81753年1月1日到9999年12月31smalldatetime\\41900年1月1日到2079年12月31时间戳型timetamp\\8自动增长第6章表的创建与管理返回本章首页上一页下一页1.整型数据类型整型数据类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。int(integer):int(或integer)数据类型可以存储从-231(-2,147,483,648)到231-1(2,147,483,647)范围之间的所有正负整数。Smallint:可以存储从-215(-32,768)到215-1范围之间的所有正负整数。Tinyint:可以存储从0到255范围之间的所有正整数。第6章表的创建与管理返回本章首页上一页下一页2.浮点数据类型浮点数据类型用于存储十进制小数。浮点数值的数据在SQLServer中采用只入不舍的方式进行存储。Real:可以存储正的或者负的十进制数值,最大可以有7位精确位数。Float:可以精确到第15位小数,其范围从-1.79E-308到1.79E+308。Decimal和numeric:Decimal数据类型和numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储从-1038-1到1038-1之间的数值。第6章表的创建与管理返回本章首页上一页下一页3.字符数据类型字符数据类型可以用来存储各种字母、数字符号和特殊符号。Char:其定义形式为char(n),每个字符和符号占用一个字节的存储空间。Varchar:其定义形式为varchar(n)。用char数据类型可以存储长达255个字符的可变长度字符串。Nchar:其定义形式为nchar(n)。Nvarchar:其定义形式为nvarchar(n)。第6章表的创建与管理返回本章首页上一页下一页4.日期和时间数据类型Datetime:用于存储日期和时间的结合体。它可以存储从公元1753年1月1日零时起到公元9999年12月31日23时59分59秒之间的所有日期和时间。Smalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储从1900年1月1日到2079年6月6日内的日期。第6章表的创建与管理返回本章首页上一页下一页5.文本和图形数据类型Text:用于存储大量文本数据,其容量理论上为1到231-1(2,147,483,647)个字节,但实际应用时要根据硬盘的存储空间而定。Ntext:与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。第6章表的创建与管理返回本章首页上一页下一页6.货币数据类型Money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808到922337213685477.5808,精度为货币单位的万分之一。Smallmoney:与money数据类型类似,但其存储的货币值范围比money数据类型小,其存储范围为-214748.3468到214748.3467。第6章表的创建与管理返回本章首页上一页下一页7.位数据类型Bit:称为位数据类型,其数据有两种取值:0和1,长度为1字节。第6章表的创建与管理返回本章首页上一页下一页8.二进制数据类型Binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于n时,余下部分填充0。Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。其它含义同binary。第6章表的创建与管理返回本章首页上一页下一页9.特殊数据类型Timestamp:亦称时间戳数据类型,它提供数据库范围内的唯一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。Uniqueidentifier:用于存储一个16字节长的二进制数据类型,它是SQLServer根据计算机网络适配器地址和CPU时钟产生的唯一号码而生成的全局唯一标识符代码(GloballyUniqueIdentifier,简写为GUID)。第6章表的创建与管理返回本章首页上一页下一页10.新增数据类型Bigint:用于存储从-263(-9,223,372,036,854,775,807)到263-1(9,223,372,036,854,775,807)之间的所有正负整数。sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQLServer数据。table:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。第6章表的创建与管理返回本章首页上一页下一页6.1.2自定义数据类型–创建用户定义类型要提供三个参数:名称、系统数据类型、是否允许为空。–创建方法:1.使用企业管理器(EnterpriseManager)创建用户自定义数据类型。第6章表的创建与管理返回本章首页上一页下一页第6章表的创建与管理返回本章首页上一页下一页删除数据类型:第6章表的创建与管理返回本章首页上一页下一页2.利用系统存储过程创建用户自定义数据类型。系统存储过程sp_addtype为用户提供了T_SQL语句创建自定义数据类型的途径,其语法形式如下:sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]‘null_type’][,[@owner=]‘owner_name’]第6章表的创建与管理返回本章首页上一页下一页•使用Tranact-SQL创建用户定义数据类型:格式:sp_addtype类型名,‘系统数据类型’[,是否为空]例:sp_addtypewx,'int','notnull'•使用Tranact-SQL删除用户定义数据类型:格式:sp_droptype类型名例:sp_addtypewx第6章表的创建与管理返回本章首页上一页下一页例子6-1:自定义一个地址数据类型。execsp_addtypeaddress,‘varchar(80)’,‘notnull’其运行结果如下:(1row(s)affected)typeadded.第6章表的创建与管理返回本章首页上一页下一页例子6-2:删除自定义的生日数据类型。execsp_droptypebirthday其运行结果如下:(1row(s)affected)(0row(s)affected)Typehasbeendropped.第6章表的创建与管理返回本章首页上一页下一页例:在XK数据库中创建一个名为TEL(电话号码)的用户自定义数据类型,定义为VARCHAR数据类型,长度为3,且不能为NULLUSEXkGOEXECsp_addtypeTel,'VARCHAR(30)','NOTNULL'GO第6章表的创建与管理返回本章首页上一页下一页例:删除刚建立的用户自定义数据类型USEXkGOEXECsp_droptypeTelGO第6章表的创建与管理返回本章首页上一页下一页6.2表的创建在SQLServer2005中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义1024个字段。SQLServer2005提供了两种方法创建数据库表,第一种方法是利用企业管理器(EnterpriseManager)创建表;另一种方法是利用Transact-SQL语句中的create命令创建表。第6章表的创建与管理返回本章首页上一页下一页1.利用EnterpriseManager创建表在EnterpriseManager中,展开指定的服务器和数据库,打开想要创建新表的数据库,用右键单击表对象,从弹出的快捷菜单中选择新建表选项,或者在工具栏中选择图标,就会出现新建表对话框,在该对话框中,可以定义列的