您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > SQL Server 数据库 从入门到精通 04 数据表
数据类型数据表基础表逻辑设计表的创建(CREATETABLE)表结构的修改(ALTERTABLE)表的删除、截断与重命名创建与删除数据库数据表也被称为表或基本表,是数据库最基本的用于存储数据的对象。可以认为关系数据库中的数据表是以行和列组成的二维表格,通常人们将行称为记录,将列称为字段。本章将主要介绍数据库中的数据类型、表结构、逻辑设计、表的创建语句、修改表结构的语句和数据库的创建语句等。数据表第章SQL技术与网络数据库开发详解·30·4.1数据类型在创建数据表时,需要用到数据类型。因此,在介绍创建表之前,本节将介绍一些SQL支持的数据类型。4.1.1字符型数据字符型数据是数据库中最常用的数据类型之一,有时人们将其成为字符串。例如,一个存储学生信息的表中,学生姓名、来源地、所属院系等都是字符型数据。字符型数据可由以下几类符号组成。字母:小写字母a~z与大写字母A~Z共52个。数字:0~9共10个。空白符:空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其他地方出现时,只起间隔作用,编译程序对它们忽略。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。标点、特殊字符与汉字:在数据表中允许存储标点、特殊字符与汉字。在SQL语言中,字符型数据被放在单引号('')中,用于区别其他类型的数据。例如,'home'、'张三'、'047122813810'、'123_**^'等都是字符型数据。每个字符型数据都有长度,其长度是该字符型数据的字符个数,例如,'home'的长度为4,'047122813810'的长度为12等。不过,需要注意的是,每个汉字占两个字符的位置,例如,'张三'的长度是4,而不是2。注意:虽然电话号码047122813810看起来是数字,但因为将其放在了单引号内,所以是字符型数据。这里所说的单引号,必须是英文输入法状态下的单引号。存放字符型数据的变量被称为字符型变量。在数据库中有一种特殊的字符型变量——字符型字段变量。由于还没有真正接触到字段的概念,因此关于字段变量将在后面的章节中进行讲解。4.1.2数字型数据数字型数据就是通常所说的数字,它可以由0~9之间的数字、正负符号与小数点(.)组成。例如,100、23.234、-123、-58.42等都是数字型数据。数字型数据不允许放在任何定界符之内。数字型数据除了上述形式以外,有时也可以用浮点形式的科学记数法表示,例如,3.46E+03等。在具体的数据库系统中,数字型数据又被详细分为整数型数据、浮点型数据和货币型数据等。数字型数据与字符型数据一样也有长度。例如,100的长度为3,23.234的长度为6(数字型数据长度包含小数点),-123的长度为3等。4.1.3日期时间数据SQL中还有一种日期时间数据。例如,2009-03-1012:25:30、2010年09月15日、01/JAN/2010、第4章数据表·31·22:30:10等。它们用来表示日期和时间。在不同的数据库系统中,日期时间数据的表示法有所不同。在Access中,日期时间数据是被包含在井号(#)中的,例如#2009-03-10#。而SQLServer和Oracle中并没有专门区别日期时间数据的定界符,因为它们可以识别日期时间格式的字符型数据。4.1.4二进制数据在计算机中所有数据都被保存为二进制数据,如前面介绍的字符型数据、数字型数据和日期时间数据等,其实在计算机中都是以二进制数据的形式存放的。二进制数据还可以表示图形图像、视频动画和其他类型的文件等。当前流行的所有数据库系统都支持二进制数据。4.1.5图片、声音、视频数据数据库中可以存储图片、声音、视频等多媒体数据,但需要相应数据类型的支持。例如,Access中提供了OLE对象类型,用于存放多媒体数据,在SQLServer2000中提供了IMAGE数据类型,通常用于存放图片等。4.1.6自定义数据类型除了数据库系统提供的数据类型以外,用户还可以根据自己的需要自定义数据类型。SQL中的CREATETYPE就是用于自定义数据类型的语句。不过遗憾的是,并非全部的数据库系统都支持CREATETYPE语句,例如,SQLServer2000中就不可以使用CREATETYPE语句定义用户数据类型。4.1.7Access中的数据类型Access中有10种数据类型,即字符、备注、数字、日期/时间、货币、自动编号、是/否、OLE对象、超链接和查询向导。下面分别对常用的前7种数据类型进行介绍。1.字符类型用于存储字符型数据。该类型允许的字符型数据的最大长度是255。可以设置“字段大小”属性控制可输入的最大字符长度。Access中有两种字符数据类型,即VARCHAR和CHAR类型。VARCHAR数据类型用于存放可变长度字符串,CHAR数据类型用于存放固定长度的字符串。例如,如下两条语句:姓名VARCHAR(20)和姓名CHAR(20)都声明了“姓名”是一个字符类型的字段,其后括号内的20代表了该字段中能够输入的最大长度。SQL技术与网络数据库开发详解·32·说明:VARCHAR和CHAR的区别是:假设当“姓名”字段中最长的值为“孛尔吉济特”时,前者会自动调整“姓名”字段的长度为10(一个汉字占两个字节的位置),而后者则仍旧保持字段长度为20,在没有达到20长度的字段值后会自动添加空格,例如,因为姓名“张三”没有达到20长度,因此,在其后添加16个空格。技巧:虽然VARCHAR能够自动调整字段长度,以此达到节省空间的目的,但是,在查询检索方面,查询CHAR类型的数据会比查询VARCHAR类型的数据更快。因此,应当将经常查询的字符字段设置为CHAR类型。当然,如果更注重节省空间的话,应当使用VARCHAR类型。2.备注类型因为字符类型的最大长度是255,所以没办法存储更长的文字说明(例如,要存储一个人的简历)。此时,便可以使用备注类型。该类型允许字段能够存储长达64000个字符的内容。但Access不能对备注字段进行排序或索引。在备注字段中虽然可以搜索文本,但不如在有索引的字符字段中搜索得快。Access中的备注类型被称为MEMO。例如,下面的语句声明了“简历”字段为备注类型的字段。简历MEMO注意:不能给MEMO类型的数据设置长度。3.数字类型用于存储数字型数据。Access中有6种数字数据类型。表4.1列出了这些数字数据类型及其说明。表4.1Access中的数字数据类型数字数据类型说明BYTE(字节型)整数,从0~255SMALLINT(整型)整数,大约为从-32000~32000INTEGER(或NUMBER)(长整型)整数,大约为从-2000000000~2000000000MONEY(或CURRENCY)(货币型)整数和4个小数位。正负900000000000000使用货币格式自动格式化REAL(单精度型)浮点数字,大约为从1.4E-45~3.4E+38FLOAT(双精度型)浮点数字,大约为从4.9E-324~1.8E+308下面的语句声明了“基本工资”字段为货币类型。基本工资MONEY或基本工资CURRENCY4.日期/时间类型用于存储日期值、时间值或日期时间混合值。Access中的日期/时间类型是DATETIME,例如,下面的语句将设置“出生日期”字段为日期/时间类型。出生日期DATETIME这里需要注意的是,在向DATETIME类型的字段输入值时,必须遵循固定的日期/时间格式。第4章数据表·33·表4.2中列出了可供选择的日期/时间类型与格式。表4.2日期/时间类型与格式类型格式常规日期YYYY-MM-DDHH:MM:SS长日期YYYY年MM月DD日中日期YY-MM-DD短日期YYYY-MM-DD长时间HH:MM:SS中时间下午HH:MM短时间HH:MM5.自动编号类型此类型是一种特殊类型,每当向表格添加新记录时,Access会自动插入唯一顺序或者随机编号,即在自动编号字段中指定某一数值。自动编号一旦被指定,就会永久地与记录连接。如果删除了表格中含有自动编号字段的一个记录后,Access并不会为表格自动编号字段重新编号。当添加某一记录时,Access不再使用已被删除的自动编号字段的数值,而是重新按递增的规律赋值。例如,下面的语句将设置“编号”字段为自动编号类型。编号COUNTER6.是/否类型针对于某一字段中只包含两个不同的可选值而设立的字段。例如,下面的语句将设置“婚否”字段为是/否类型。婚否YESNO7.OLE对象类型此类型的字段允许单独地“链接”或“嵌入”OLE对象,OLE对象字段最大可为1GB,主要受磁盘空间限制。下面的语句将设置“照片”字段为OLE对象类型。照片IMAGE4.1.8MySQL中的数据类型MySQL支持多种数据类型,可以分为数字类型、字符类型、日期和时间类型和复合类型4大类。1.数字类型TINYINT类型:可以存放-128~127之间的所有正负整数。该类型的数据,在内存中占用1个字节的空间,即使用8位二进制数表示,其中的1位二进制数表示整数值的正负号,其他7位表示整数值的长度和大小。TINYINTUNSIGNED类型:无符号的TINYINT类型,可以存放0~255之间的所有整数。该类型的数据也只占用内存中的1个字节。SQL技术与网络数据库开发详解·34·SMALLINT类型:用于保存-32768~32767之间的所有正负整数。该类型的数据,在内存中占用2个字节的空间。SMALLINTUNSIGNED类型:无符号的SMALLINT类型,可以存放0~65535之间的所有整数。该类型的数据,在内存中占用2个字节的空间。MEDIUMINT类型:用于存储-8388608~8388607之间的所有正负整数。该类型的数据,在内存中占用3个字节的空间。MEDIUMINTUNSIGNED类型:无符号的MEDIUMINT类型,用于存放0~16777215之间的所有整数。该类型的数据,在内存中占用3个字节的空间。INT或INTEGER类型:用于存放-2147483648~2147483647之间的所有正负整数。该类型的数据,在内存中占用4个字节的空间。INTUNSIGNED或INTEGERUNSIGNED类型:无符号的INT或INTEGER类型,用于存放0~4294967295之间的所有整数。该类型的数据,在内存中占用4个字节的空间。BIGINT类型:用于存放-9223372036854775808~9223372036854775807之间的所有正负整数。该类型的数据,在内存中占用8个字节的空间。BIGINTUNSIGNED类型:无符号的BIGINT,可以存放0~18446744073709551615之间的所有整数。该类型的数据,在内存中占用8个字节的空间。FLOAT类型:用于存放数据范围为-3.402823466E+38~-1.175494351E-38,0,1.175494351E-38~3.402823466E+38之间的浮点数。该类型的数据,在内存中占用4个字节的空间。DOUBLE或DOUBLEPRECISION或REAL类型:用于存放数据范围为-1.7976931348623157E+308~-2.2250738585072014E-308,0,2.2250738585072014E-308~1.7976931348623157E+308之间的浮点数。该类型的数据,在内存中占用8个字节的空间。DECIMAL[(M,[D])]或NUMERIC(M,D)类型:由M(整个数字的长度,包括小数点、小数点左边的位数、小数点右边的位数,但不包括负号)和D(小数点右边的位数)决定的数字数据类型,M默认为10,D默认为0。2.字符串类型CHAR(M)[BINARY]或NCHAR(M)[BINARY]类型:用于保存定长的字符串,其中,M表示字符串的最大长度,其范围为1~255,字符串中的每个字符占用1个字节的存储空间。默认为BINARY,则表示不分大小写字母。
本文标题:SQL Server 数据库 从入门到精通 04 数据表
链接地址:https://www.777doc.com/doc-5320219 .html