《表的建立与维护l.ppt》由会员分享,可在线阅读,更多相关《表的建立与维护l.ppt(22页珍藏版)》请在三一办公上搜索。
1、第3章 表的建立与维护,3.1.1 什么是表,表类型:普通表:分区表:临时表:系统表:表需要包含的列,每列的数据类型、精度表中哪些列允许空值或不允许空值表中是否设置主键,在何处设置主键表中是否设置约束、默认值、规则表中是否设置外键以及在何处设置表中是否设置索引、在何处设置以及设置什么样的索引,实体与记录,3.1.2 表的数据类型,3.1.3 创建表,1.使用SSMS创建表,use xscjgocreate table student(学号 char(10)not null,姓名 varchar(8)not null,性别 char(2)not null,专业 varchar(30),出生日期
2、smalldatetime not null,简历 text),例:在xscj数据库下创建student表,2.使用T-SQL命令创建表,use xscjgoalter table studentadd 少数民族否 bitgo,例:在xscj数据库下修改student表,增加少数民族否一列,为bit类型。然后在此表中删除此列.,3.6 修改表,alter table studentdrop column 少数民族否go,3.6.1 使用SSMS图形修改表,3.6.2 使用T-SQL命令修改表,use xscjgoalter table studentalter column 姓名 varcha
3、r(10)go,例:在xscj数据库下修改student表,将姓名长度由原来的8修改为10;将出生日期由原来的smalldatetime修改为date;,alter table studentalter column 出生日期 datego,Drop table studentgo,例:在xscj数据库下删除student表,3.7 删除表,3.7.1 使用SSMS图形删除表,3.7.2 使用T-SQL命令删除表,3.2 列的数据类型,3.2.1 数据类型的分类,3.2.2 数字数据类型,3.2.3 字符数据类型,char类型存储字符数据时,每一个字符占一个字节大小。使用char类型时,应该给
4、定数据的最大长度,定义格式为:char(n)如果没有指定n的大小,默认值是1,最长可以容纳8000个字符;如果实际数据的字符长度大于给定的最大长度时,超过的字符将会被截断;若实际数据的字符长度小于给定的最大长度时,多余的字节被系统使用空格填充。varchar的使用方式与char基本相同。它们的区别在于:当列中字符长度基本一致时(如学号、姓名等),可以使用char类型;当数据长度相差较大时(如备注),使用varchar类型可以节省存储空间;,当数据有可能涉及到英语外其他语言时,应该使用Unicode字符编码。每一个Unicode字符需要两个字节存储,因此,Unicode格式比ANSI格式有更大的
5、字符集范围:ANSI字符集仅有256个字符,Unicode字符集有65536个不同的字符。使用Unicode字符可以在表的一个列中同时出现中文、英文、法文等,而不会出现编码冲突。通常使用以下方式来表示Unicode字符:NUnicode字符nchar和nvarchar分别用于存储固定长度和可变长度的Unicode字符数据;text和ntext,分别对应存储长度很大的ANSI字符和Unicode字符数据。微软公司建议,用户应该避免使用text和ntext数据类型,而使用varchar和nvarchar存储大文本数据。,3.2.4 日期时间数据类型,datetime型数据长度为8字节,其中前4个字
6、节用于存储日期,后4个字节用于存储时间。由于历史原因的限制,datetime支持的日期范围从1753年1月1日至9999年12月31日,时间精确度是3.33毫秒;由于存在各种各样的表示日期的习惯,输入datetime数据的值是一件比较棘手的事情。如11/10/01对于不同的人有不同的理解方式。当将其作为datetime型数据输入时,SQL Server将根据当前系统的语言设置进行转换。系统的语言由登录SQL Server时的默认语言决定,也可以使用SET DATEFORMAT语句,指定字符D、M和Y的组合。设置格式为:SET DATEFORMAT format|format _var;参数fo
7、rmat或format_var 是指日期的顺序。有效的形式包括 MDY、DMY、YMD、YDM、MYD 和 DYM,其中Y表示年,M表示月,D表示日。在默认情况下,日期格式为MDY;在SQL Server 2008中,可以使用的时间格式是HH:MI:SS.mmm。其中HH表示小时,MI表示分钟,SS表示秒,mmm表示千分之一秒;存在一种标准输入格式,不受DATEFORMAT设置的影响,不会产生歧义。它的中间部分没有分隔符,形式为:YYYYMMDD HH:MI:SS.mmm。如:20111001、111001和20111001 20:50:30.988都是这种格式的应用。在输入datetime类
8、型数据时,我们推荐使用这种格式。,在SQL Server 2008系统中,日期时间数据类型的最大转变就是在datetime和smalldatetime两种类型的基础上又引入了4种日期时间数据类型,分别为date、time、datetime2和datetimeoffset。下面分别介绍:date数据类型只存储日期型数据类型,不存储时间数据,取值范围从0001-01-01到9999-12-31。引入date类型,克服了datetime类型中既有日期又有时间的缺陷,使对日期的查询更加方便;time数据类型与date数据类型类似,如果只想存储时间数据而不需要存储日期部分就可以利用time数据类型,取值
9、范围从00:00:00.0000000到23:59:59.9999999;datetime2数据类型是一种日期时间混合的数据类型,不过其时间部分秒数的小数部分可以保留不同位数的值,比datetime数据类型的取值范围要广,可以存储从公元元年1月1日到9999年12月31日的日期。用户可以根据自己的需要设置不同的参数来设定小数位数,最高可以设定到小数点后七位(参数为7),也可以不要小数部分(参数为0),以此类推;datetimeoffset数据类型用于存储与特定的日期和时区相关的日期和时间。这种数据类型的日期和时间存储为协调世界时(Coordinated Universal Time,UTC)的
10、值,然后,根据与该值有关的时区,定义要增加或减去的时间数。datetimeoffset类型是由年、月、日、小时、分钟、秒和小数秒组成的时间戳结构。小数秒的最大小数位数为7。,3.2.5 二进制数据类型,二进制数据类型用于表示位数据流,包括binary(固定长度)、varbinary(可变长度)和image三种。binary用于存储固定长度的二进制数据;varbinary用于存储可变长度的二进制数据,若存储的二进制大于8000字节,就必须使用varbinary(max)数据类型;image数据类型用于存储图像信息,在SQL Server 2008中,只有在数据的字节数超过了8KB的情况下,才使用
11、image数据类型,其他情况应使用varbinary(max)代替,其中max最大可以达到231-1字节;当二进制数据存储到表中时,可以使用SELECT语句来检索。但是,检索结果以16进制数据格式来显示。,3.2.6 其他数据类型,timestamp时间戳数据类型与时间、日期无任何关系。timestamp值是二进制,表明数据库中的数据修改发生的相对顺序。实现timestamp数据类型最初是为了支持SQL Server恢复算法。每一个数据库都有一个时间戳计数器,当对该数据库中包含timestamp列的表执行插入或更新操作时,计数器值就会增加。这样,可以轻易地确定表中的某个数据行的值是否在上次读取
12、后发生了更新:如果发生了更新,则该时戳计数器的值也发生了变化。可以使用DBTS函数返回数据库的时戳值;sql_variant类型:用于存储SQL Server 2008支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant类型)的值。数据列类型为sql_variant的列可能包含不同类型的行,一般在不能准确确定将要存储的数据类型时,使用这种数据类型。该数据类型可以用在列、变量、用户定义的函数等返回值中;,uniqueidentifier唯一标识符类型,是一个具有16字节的全局唯一性标志符,用来确保对象的唯一性。可以在定义列或者变量时使用该数据类型,主要目的是在合并复制和事务复制中确保表中数据行的唯一性。例如,在客户标识号列使用这种数据类型可以区别不同的客户。uniqueidentifier数据类型的初始值可以通过NEWID函数得到;xml类型:xml数据类型可以用来保存整个XML文档,允许用户存储和处理XML数据。用户可以像使用int数据类型一样使用xml数据类型。另外,xml数据类型还提供一些高级功能,比如借助Xquery语法执行搜索。,3.3列的其他属性,3.3.1 默认约束3.3.2 空值约束,3.5 查看表,3.5.1 查看表中相关信息,3.5.2 查看表中存储的数据,3.5.3 查看表与其他数据对象的依赖关系,