首页 04 数据表

04 数据表

举报
开通vip

04 数据表 第 章 数据表 *1 数据类型 *1 数据表基础 *1 表逻辑设计 *1 表的创建(CREATE TABLE) *1 表结构的修改(ALTER TABLE) *1 表的删除、截断与重命名 *1 创建与删除数据库 数据表也被称为表或基本表,是数据库最基本的用于存储数据的对象。可以认为关 系数据库中的数据表是以行和列组成的二维表格,通常人们将行称为记录,将列称为 字段。 本章将主要介绍数据库中的数据类型、表结构、逻辑设计、表的创建语句、修改表 结构的语句和数据库的创建语句等。 4.1 数 据 类 型 在创建数据...

04  数据表
第 章 数据表 *1 数据类型 *1 数据表基础 *1 表逻辑 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 *1 表的创建(CREATE TABLE) *1 表结构的修改(ALTER TABLE) *1 表的删除、截断与重命名 *1 创建与删除数据库 数据表也被称为表或基本表,是数据库最基本的用于存储数据的对象。可以认为关 系数据库中的数据表是以行和列组成的二维表格,通常人们将行称为记录,将列称为 字段。 本章将主要介绍数据库中的数据类型、表结构、逻辑设计、表的创建语句、修改表 结构的语句和数据库的创建语句等。 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-10 12:25:30、2010 年 09 月 15 日、01/JAN/2010、 22:30:10 等。它们用来表示日期和时间。在不同的数据库系统中,日期时间数据的表示法有所不同。 在 Access 中,日期时间数据是被包含在井号(#)中的,例如#2009-03-10#。而 SQL Server 和 Oracle 中并没有专门区别日期时间数据的定界符,因为它们可以识别日期时间格式的字符型数据。 4.1.4 二进制数据 在计算机中所有数据都被保存为二进制数据,如前面介绍的字符型数据、数字型数据和日期时间 数据等,其实在计算机中都是以二进制数据的形式存放的。二进制数据还可以表示图形图像、视频动 画和其他类型的文件等。当前流行的所有数据库系统都支持二进制数据。 4.1.5 图片、声音、视频数据 数据库中可以存储图片、声音、视频等多媒体数据,但需要相应数据类型的支持。例如,Access 中提供了 OLE 对象类型,用于存放多媒体数据,在 SQL Server 2000 中提供了 IMAGE 数据类型,通常 用于存放图片等。 4.1.6 自定义数据类型 除了数据库系统提供的数据类型以外,用户还可以根据自己的需要自定义数据类型。SQL 中的 CREATE TYPE 就是用于自定义数据类型的语句。不过遗憾的是,并非全部的数据库系统都支持 CREATE TYPE 语句,例如,SQL Server 2000 中就不可以使用 CREATE TYPE 语句定义用户数据类型。 4.1.7 Access 中的数据类型 Access 中有 10 种数据类型,即字符、备注、数字、日期/时间、货币、自动编号、是/否、OLE 对 象、超链接和查询向导。下面分别对常用的前 7 种数据类型进行介绍。 1.字符类型 用于存储字符型数据。该类型允许的字符型数据的最大长度是 255。可以设置“字段大小”属性控 制可输入的最大字符长度。 Access 中有两种字符数据类型,即 VARCHAR 和 CHAR 类型。VARCHAR 数据类型用于存放可 变长度字符串,CHAR 数据类型用于存放固定长度的字符串。例如,如下两条语句: 姓名 VARCHAR(20) 和 姓名 CHAR(20) 都声明了“姓名”是一个字符类型的字段,其后括号内的 20 代表了该字段中能够输入的最大长度。 说明: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.1 Access 中的数字数据类型 数字数据类型 说 明 BYTE (字节型)整数,从 0~255 SMALLINT (整型)整数,大约为从-32000~32000 INTEGER(或 NUMBER) (长整型)整数,大约为从-2000000000~2000000000 MONEY(或 CURRENCY) (货币型)整数和 4 个小数位。正负 900000000000000 使用货币格式自动格式化 REAL (单精度型)浮点数字,大约为从 1.4E-45~3.4E+38 FLOAT (双精度型)浮点数字,大约为从 4.9E-324~1.8E+308 下面的语句声明了“基本工资”字段为货币类型。 基本工资 MONEY 或 基本工资 CURRENCY 4.日期/时间类型 用于存储日期值、时间值或日期时间混合值。 Access 中的日期/时间类型是 DATETIME,例如, 下面的语句将设置“出生日期”字段为日期/时间类型。 出生日期 DATETIME 这里需要注意的是,在向 DATETIME 类型的字段输入值时,必须遵循固定的日期/时间格式。 表 4.2 中列出了可供选择的日期/时间类型与格式。 表 4.2 日期/时间类型与格式 类 型 格 式 常规日期 YYYY-MM-DD HH:MM:SS 长日期 YYYY 年 MM 月 DD 日 中日期 短日期 YYYY-MM-DD 长时间 HH:MM:SS 中时间 下午 HH:MM 短时间 HH:MM 5.自动编号类型 此类型是一种特殊类型,每当向表格添加新记录时,Access 会自动插入唯一顺序或者随机编号, 即在自动编号字段中指定某一数值。自动编号一旦被指定,就会永久地与记录连接。如果删除了表格 中含有自动编号字段的一个记录后,Access 并不会为表格自动编号字段重新编号。当添加某一记录时, Access 不再使用已被删除的自动编号字段的数值,而是重新按递增的规律赋值。 例如,下面的语句将 设置“编号”字段为自动编号类型。 编号 COUNTER 6.是/否类型 针对于某一字段中只包含两个不同的可选值而设立的字段。例如,下面的语句将设置“婚否”字 段为是/否类型。 婚否 YESNO 7.OLE 对象类型 此类型的字段允许单独地“链接”或“嵌入”OLE 对象, OLE 对象字段最大可为 1GB,主要受 磁盘空间限制。下面的语句将设置“照片”字段为 OLE 对象类型。 照片 IMAGE 4.1.8 MySQL 中的数据类型 MySQL 支持多种数据类型,可以分为数字类型、字符类型、日期和时间类型和复合类型 4 大类。 1.数字类型 ‰ TINYINT 类型:可以存放-128~127 之间的所有正负整数。该类型的数据,在内存中占用 1 个字节的空间,即使用 8 位二进制数表示,其中的 1 位二进制数表示整数值的正负号,其他 7 位表示整数值的长度和大小。 ‰ TINYINT UNSIGNED 类型:无符号的 TINYINT 类型,可以存放 0~255 之间的所有整数。该 类型的数据也只占用内存中的 1 个字节。 ‰ SMALLINT 类型:用于保存-32768~32767 之间的所有正负整数。该类型的数据,在内存中占 用 2 个字节的空间。 ‰ SMALLINT UNSIGNED 类型:无符号的 SMALLINT 类型,可以存放 0~65535 之间的所有整 数。该类型的数据,在内存中占用 2 个字节的空间。 ‰ MEDIUMINT 类型:用于存储-8388608~8388607 之间的所有正负整数。该类型的数据,在内 存中占用 3 个字节的空间。 ‰ MEDIUMINT UNSIGNED 类型:无符号的 MEDIUMINT 类型,用于存放 0~16777215 之间的 所有整数。该类型的数据,在内存中占用 3 个字节的空间。 ‰ INT 或 INTEGER 类型:用于存放-2147483648~2147483647 之间的所有正负整数。该类型的 数据,在内存中占用 4 个字节的空间。 ‰ INT UNSIGNED 或 INTEGER UNSIGNED 类型:无符号的 INT 或 INTEGER 类型,用于存 放 0~4294967295 之间的所有整数。该类型的数据,在内存中占用 4 个字节的空间。 ‰ BIGINT 类型:用于存放-9223372036854775808~9223372036854775807 之间的所有正负整数。 该类型的数据,在内存中占用 8 个字节的空间。 ‰ BIGINT UNSIGNED 类型:无符号的 BIGINT,可以存放 0~18446744073709551615 之间的所 有整数。该类型的数据,在内存中占用 8 个字节的空间。 ‰ FLOAT 类 型 : 用 于 存 放 数 据 范 围 为 -3.402823466E+38 ~ -1.175494351E-38 , 0 , 1.175494351E-38~3.402823466E+38 之间的浮点数。该类型的数据,在内存中占用 4 个字节的 空间。 ‰ DOUBLE 或 DOUBLE PRECISION 或 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,则表示不分大小写字母。NCHAR 表示使用默认的字符集。当输入的字符串个数 小于 M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。 ‰ [NATIONAL] VARCHAR(M) [BINARY]类型:用于存放变长的字符串,占用的存储空间范围 为 0~255 字节,M 的取值范围为 1~255。如果没有 BINARY 项,默认为 BINARY,则表示 不分大小写字母。当输入的字符串个数小于 M,则数据库系统将以空格补足,但在取出来时 末尾的空格将自动去掉。 ‰ TINYBLOB 类型:用于保存不超过 255 个字符的二进制字符串,所占用的存储空间范围为 0~ 255 字节。 ‰ TINYTEXT 类型:用于存储短文字符串,所占用的存储空间范围为 0~255 字节。 ‰ BLOB 类型:用于存储二进制的长文本数据,所占用的存储空间范围为 0~65535 字节。 ‰ TEXT 类型:用于存储长文本数据,所占用的存储空间范围为 0~65535 字节。 ‰ MEDIUMBLOB 类型:用于存储二进制形式的中等长度的长文本数据,所占用的存储空间范 围为 0~16777215 字节。 ‰ MEDIUMTEXT 类型:用于存储中等长度的长文本数据,所占用的存储空间范围为 0~16777215 字节。 ‰ LONGBLOB 类型:用于保存二进制形式的极大长度的长文本数据,所占用的存储空间范围为 0~4294967295 字节。 ‰ LONGTEXT 类型:用于保存极大长度的长文本数据,所占用的存储空间范围为 0~4294967295 字节。 3.日期与时间类型 ‰ DATE 类型:用于存储日期数据,日期数据的范围为 1000-01-01 至 9999-12-31。每个 DATE 类型的数据占用 3 字节的存储空间,其输入格式为“年-月-日(YYYY-MM-DD)”。 ‰ DATETIME 类型:用于存储混合日期和时间数据,日期和时间数据的范围为 1000-01-01 00:00:00 至 9999-12-31 23:59:59。每个 DATETIME 类型的数据占用 8 字节的存储空间,其输 入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。 ‰ TIME 类型:用于存储时间数据或持续时间的数据,时间数据的范围为-838:59:59 至 838:59:59。 每个 TIME 类型的数据占用 3 字节的存储空间,其输入格式为“时-分-秒(HH:MM:SS)”。 ‰ YEAR 类型:用于存储年份数据,年份的取值范围为 1901~2155。每个 YEAR 类型的数据占 用 1 字节的存储空间,其输入格式为“年(YYYY)”。 ‰ TIMESTAMP 类型:用于存储混合日期和时间值、时间戳,混合日期和时间数据、时间戳的范 围为 1970-01-01 00:00:00 - 2037 年的某个时候。每个 TIMESTAMP 类型的数据占用 8 字节的 存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”。 4.复合类型 ‰ ENUM('value1','value2',…)类型:用于存储从预先定义的字符集合中选取互斥的数据值,可 以有 65535 个不同的值。 ‰ SET('value1','value2',…)类型:用于存储从预先定义的字符集合中选取任意数目的值,最多 有 64 个成员。 4.1.9 SQL Server 中的数据类型 SQL Server 中的数据类型非常丰富,下面列出了常用的几种数据类型供读者参阅。 1.整数数据类型 整数数据类型是较常用的数据类型之一。 ‰ INT(INTEGER)数据类型:用于存放-2147483648~2147483647 之间的所有正负整数。该类 型的数据,在内存中占用 4 个字节。 ‰ SMALLINT 数据类型:用于存放-32768~32767 之间的所有正负整数。该类型的数据,在内存 中占用 2 个字节。 ‰ TINYINT 数据类型:用于存放 0~255 之间的所有整数。该类型的数据,在内存中占用 1 个 字节。 ‰ BIGINT 数据类型:用于存放-9223372036854775808~9223372036854775807 之间的所有正负 整数。该类型的数据,在内存中占用 8 个字节。 2.浮点数据类型 浮点数据类型也是比较常用的数据类型之一。该数据类型用于存放带有小数点的数值。 ‰ DECIMAL[ p [s] ]数据类型:用于存放浮点数据,其精度非常高,可以保留到浮点数据的最小 有效数字,但是也有一定限制,详细内容请参阅相关 SQL Server 的书籍。这里的 p 代表浮点 数的总位数,但是不包括小数点;s 代表小数点后的位数。 ‰ NUMERIC 数据类型:与 DECIMAL 数据类型基本相同,有关详细区别请参阅相关书籍。 ‰ REAL 数据类型:用于存放精度在 1~7 之间的浮点数。该类型数据的范围是-3.40E -38~3.40E +38。 ‰ FLOAT 数据类型:用于存放精度在 8~15 之间的浮点数。该类型的数据的范围是-1.79E -308~ 1.79E +308。 3.二进制数据类型 ‰ BINARY(n)数据类型:用于存放二进制数据。其中,n 表示数据的长度,取值范围为 1~8000。 ‰ VARBINARY(n)数据类型:与 BINARY 类型基本相同。不同的是该数据类型存放可变长度 二进制数据。 4.字符数据类型 可以说字符数据类型是所有数据类型中使用最多的数据类型。SQL Server 中有两种常用字符数据 类型,分别是 VARCHAR 和 CHAR 类型。VARCHAR 数据类型存放可变长度字符串,CHAR 数据类 型存放固定长度的字符串。例如,如下两条语句: 姓名 VARCHAR(20) 和 姓名 CHAR(20) 都声明了“姓名”是一个字符类型的字段,其后括号内的 20 代表该字段中能够输入的最大长度。 说明:VARCHAR 和 CHAR 的区别是,假设当“姓名”字段中最长的值为“孛尔吉济特”时,前者会 自动调整“姓名”字段的长度为 10(一个汉字占两个字节的位置),而后者则仍旧保持字段长 度为 20。在没有达到 20 长度的字段值后会自动添加空格,例如,因为姓名“张三”没有达到 20 长度,因此,在其后添加 16 个空格。 技巧:虽然 VARCHAR 能够自动调整字段长度,以此达到节省空间的目的,但是,在查询检索方面, 查询 CHAR 类型的数据会比查询 VARCHAR 类型的数据更快。因此,应当将经常查询的字符字 段设置为 CHAR 类型。当然,如果更注重节省空间的话,应当使用 VARCHAR 类型。 5.文本和图形数据类型 SQL Server 中常用的文本和图形数据类型是 TEXT 和 IMAGE 类型。 ‰ TEXT 数据类型:用于存放大量的文本数据。 ‰ IMAGE 数据类型:用于存放大量的二进制数据,通常用来存储图像。 6.日期和时间数据类型 ‰ DATETIME 数据类型:用于存放日期时间数据,可以说是日期和时间的组合。其数据格式为 “YYYY-MM-DD HH:MM:SS”。该类型数据的日期时间范围是,公元 1753 年 1 月 1 日 0 时~ 公元 9999 年 12 月 31 日 23 时 59 分 59 秒,其精度为百分之三秒。 ‰ SMALLDATETIME 数据类型:与 DATETIME 数据类型相似,但是精度只能精确到分钟,其 日期时间范围是 1900 年 1 月 1 日~2079 年 6 月 6 日。 7.货币数据类型 ‰ MONEY 数据类型:实际上,该类型的数据是一种特殊的 DECIMAL 数据,它有 4 位小数。 该类型的范围是-922337203685477.5808 ~+922337203685477.5807,数据精度为万分之一货 币单位。 ‰ SMALLMONEY 数据类型类:与 MONEY 类型 相似,但是其取值范围是-214748.3648 ~ +214748.3647。 4.1.10 Oracle 中的数据类型 Oracle 中有许多种数据类型,其基本类型可分为字符数据类型、数字数据类型、日期时间类型、 LOB、RAW 等 5 大类型。 1.字符数据类型 ‰ CHAR 类型:用于存放字符串数据,定义形式为 CHAR[(n)]。以 CHAR 类型存放的字符串中 的每个字符和符号占用一个字节的存储空间。n 表示所有字符所占的存储空间,n 的取值范围 为 1~2000,即最多可容纳 2000 个字符。若不指定 n 值,则系统默认值为 1。如果所输入的字 符串的字符个数小于 n,则系统自动在实际字符串后添加空格来填满设定好的空间,但在取出 来时末尾的空格将自动去掉。若输入的数据过长,将会截掉其超出部分。 ‰ VARCHAR2 类型:用于存放可变长的字符串,具体定义时指明最大长度 n,这种数据类型可 以放数字、字母以及 ASCII 码字符集(或者 EBCDIC 等数据库系统接受的字符集 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 )中的 所有符号。如果数据长度没有达到最大值 n,Oracle 会根据数据大小自动调节字段长度,如果 数据前后有空格,Oracle 会自动将其删去。 ‰ LONG 型:用来存放可变长度的字符串数据,最多能存储占用 2GB 空间的文本数据。需要注 意的是在一个表中只能有一字段可以为 LONG 型,并且 LONG 类型的字段不能被定义为主键 或唯一约束,也不能使用 LONG 类型的字段建立索引,过程或存储过程不能接受 LONG 数据 类型的参数。 2.数字数据类型 NUMBER 类型用于存放可变长的数值,允许正负值和 0 值,格式为 NUMBER(P,S),其中,P 表 示数据的总长度,取值范围为 1~38,S 表示小数的位数,取值范围为-84~127 之间的数字。如 NUMBER (8,2),则这个字段的总长度是 8,可以有 2 位小数,如果数值超出了位数限制,多余的位数就会被截取。 例如,NUMBER (6,3),输入 45.12378,则保存到字段中的数值是 45.124;又例如,NUMBER (4,0), 输入 1565.316,真正保存的数据是 1565。 3.日期和时间类型 ‰ DATE 类型:用于存放日期和时间数据,该数据类型的范围是,公元前 4712 年 1 月 1 日~公 元 9999 年 12 月 31 日。 ‰ TIMESTAMP 类型:与 DATE 基本相同,但是可以返回当前的时区。 4.RAW 数据类型 此类数据类型主要用于存储二进制数据。 ‰ RAW 类型:用于存放基于字节的二进制数据,最多能存放 2000 个字节,没有默认大小,所 以在使用时要指定大小,可以建立索引。 ‰ LONG RAW 类型:用于存放可变长度的二进制数据,最多能存放 2GB,受的限制和 LONG 类 型一样。 5.LOB 数据类型 主要有 CLOB、BLOB 和 BFILE 3 种子类型。 ‰ CLOB 类型(CHARACTER LOB):用于存放大量字符数据,可以存放非结构化的 XML 文档。 ‰ BLOB 类型(BINARY LOB):可以存放较大的二进制对象,如图形、音视频剪辑等数据。 ‰ BFILE 类型(BINARY FILE):能够将二进制文件存放在数据库外部的操作系统文件中,BFILE 字段存储一个 BFILE 定位器,指向位于服务器文件系统上的二进制文件,支持的文件最大为 4GB。 4.2 数据表基础 数据表又被称为表。在关系型数据库系统中,一个关系就是一个表,表结构指的就是数据库的关 系模型。表是若干列(Column)和若干行(Row)的集合,每一行代表一个唯一的记录,每一列代表 一个字段。在确定表结构时首先要定义表的字段,即定义字段名、数据类型及其宽度,其次输入行 (记录)。 4.2.1 记录和字段 关系数据库中的数据表,其实很像人们生活中的二维表格,甚至有人会说它就是二维表格。数据 表由行和列组成,通常人们将行称为记录,而将列称为字段,如图 4.1 所示。 图 4.1 数据表 每个字段中的数据必须具有相同的数据类型,且每个字段都有字段名,如图 4.1 中的“学号”、“姓 名”等就是字段名。关系数据库中规定,在同一个表内不能有重复的字段。实际上,表内也不应该有 重复的记录,只是多数数据库管理系统不会强制这点而已。 说明:有些专家认为数据表的行和列不应该称为记录和字段,而应当称为行(Row)和列(Column)。 4.2.2 表结构 一个非空数据表实际上由两部分组成,分别是表结构和其内的数据。可以认为表结构由表中所有 字段的字段信息组成,这些信息包括字段名、字段类型、字段大小和字段约束、表约束等信息。创建 一个数据表,其实就是在创建其表结构。因此,在创建表时必须告诉 DBMS,表包括哪些字段,每个 字段的数据类型和大小等。例如,观察下面创建表的 SQL 语句,就会发现这一点。 CREATE TABLE test ( 学号 char(4), 姓名 char(20), ); 该 SQL 语句创建一个有两个字段的数据表 Test,两个字段的字段名分别为“学号”和“姓名”, 数据类型都是字符型,长度分别为 4 和 20。 4.3 表逻辑设计 数据表的设计是数据库设计的主要部分。表逻辑设计的好坏将会影响数据库系统最终的运行效果、 数据安全以及完整性等问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。对于数据库系统开发人员来说,必须将表的逻辑结构设计得尽量完美, 因为开发人员与最终用户看待数据的方式不一样。表的逻辑结构设计必须满足用户的需求,能使用户 准确理解数据的本质和容易掌握,并且没有二义性。E-R 模型将帮助系统开发人员能很好地完成表逻 辑设计。 4.3.1 E-R 模型图 E-R 是 Entity-Relationship 的缩写,即实体-关系。E-R 模型是一种自上而下的数据库设计 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。一 个完整的数据库系统的 E-R 模型图是由若干局部 E-R 模型图组合而成的。 1.局部 E-R 模式设计 在 E-R 方法中将局部概念结构图称为局部 E-R 模型图。局部 E-R 模式的设计过程如图 4.2 所示。 图 4.2 局部 E-R 模式的设计过程 例如,学校的综合数据库中的教师管理部分与课程管理的局部 E-R 模型图,如图 4.3 与图 4.4 所示。 图 4.3 教师管理局部 E-R 图 图 4.4 课程管理局部 E-R 图 2.合并局部 E-R 模型图 合并方法有两种:一种是一次合并多个局部 E-R 模型图;另一种是逐步合并局部 E-R 模型图,如 图 4.5 与图 4.6 所示。由于一次合并法方法复杂而难度大,所以常用的合并法是逐步合并法。 无论采用哪种方法,合并局部 E-R 模型图的准则是先解决局部 E-R 模型图的冲突,合并成初步 E-R 模型图。其次是进行初步 E-R 模型图的优化与修改,而最终得到全局 E-R 模型图。 例如,合并教师管理与课程管理局部 E-R 模型图后,得到的 E-R 模型图如图 4.7 所示。 图 4.5 一次合并 图 4.6 逐步合并 图 4.7 合并后的 E-R 图 4.3.2 规范化与范式 规范化是一种用来产生数据表集合的技术,通过规范化表将具有符合用户需求的属性。规范化通 常作为对表结构的一系列测试来决定其是否满足和符合给定范式。数据库逻辑结构设计产生的结果应 该满足规范化要求,以使关系模式的设计合理,达到冗余少和提高查询效率的目的,所以对数据库进 行规范化非常重要。对数据库的规范化先要确定规范化级别,然后按要求进行并且要达到这一级别。 一般情况下,规范化处理主要进行以下 3 个步骤: (1)确定数据依赖:通过数据依赖表示出数据项之间的关系。此项工作在需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 阶段完成。 (2)定义键,并消除冗余的关系:此项工作在概要设计阶段完成。 (3)确定范式级别:规范化必须要达到范式级别。 范式,简称 NF(Normal Form),是满足一定条件的关系模式。范式是规范化确定的级别,数据 库设计的范式有多种,常用的有第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。所有范式 都基于数据表中的字段之间的关系。 ‰ 第一范式:若关系模式 P 的所有属性的值域中每个值都是不可再分解的值,则称 P 为第一范 式。第一范式是最低的规范化要求,数据表不能存在相同的记录,需设定一个关键字,并且要 求每个字段都不可再分解。 ‰ 第二范式:若关系模式 P 是第一范式,P 的表以及每个非主键字段都可以由构成主键的全部字 段得到,则称 P 为第二范式。第二范式可以消除大量的冗余数据,并对数据表可以进行异常的 插入和删除。 ‰ 第三范式:若关系模式 P 是第二范式,且每个非主属性都不传递依赖于 P 的候选键,则称 P 是第三范式。第三范式的关系不具有多义性,其属性值唯一,且每个非主属性必须依赖于整个 主键而不能依赖于其他关系中的属性。 4.4 表的创建(CREATE TABLE) SQL 语言中创建表将用 CREATE TABLE 语句来实现。CREATE TABLE 语句可以定义各种表的结 构、约束以及继承等内容。 4.4.1 使用 CREATE TABLE 语句创建表 CREATE TABLE 将在当前数据库创建一个新的、初始为空的数据表,该表将由发出此命令的用户 所有。下面是 CREATE TABLE 语句的基本语法格式。 CREATE TABLE <表名> ( <字段名 1> <数据类型> [NOT NULL] [DEFAULT <默认值>], [<字段名 2> <数据类型> [NOT NULL] [DEFAULT <默认值>], …… <字段名 n> <数据类型>…… ); 具体说明如下: ‰ NOT NULL:为可选项,如果在某字段后加上该项,则向表添加数据时,必须给该字段输入内 容,即不能为空。 ‰ DEFAULT<默认值>:为可选项,如果在某字段后加上该项,则向表添加数据时,如果不向该 字段添加数据,系统就会自动用默认值填充该字段。 下面通过一个例题介绍 CREATE TABLE 语句的使用法。 【例 4.1】创建一个 Student 表,设置其学号、姓名和性别 3 个字段不能为空,并且给性别字段指 定默认值为“男”。 运行环境为 Access 或 SQL Server 时,其创建语句如下所示。 CREATE TABLE student ( 学号 char(4) NOT NULL , 姓名 char(20) NOT NULL, 性别 char(2) NOT NULL DEFAULT '男', 出生日期 datetime, 来源地 varchar(50), 联系方式 1 char(12), 联系方式 2 char(12), 所属院系 char(20) ); 运行环境为 Oracle 时,其创建语句如下所示。 CREATE TABLE student ( 学号 char(4) NOT NULL , 姓名 char(20) NOT NULL, 性别 char(2) NOT NULL, 出生日期 date, 来源地 varchar2(50), 联系方式 1 char(12), 联系方式 2 char(12), 所属院系 char(20) ); 注意:Oracle 的有些数据类型名称和 Access、SQL Server 的数据类型名称不同。例如,上面语句中的 日期时间型,在 Oracle 中是 date,而在 Access 和 SQL Server 中是 datetime;又例如,变长字符 型在 Oracle 中使用的是 varchar2,而在 Access 和 SQL Server 中是 varchar。因此,在创建数据表 时应当注意所使用的数据库管理系统中的数据类型名称。 4.4.2 创建带有主键的表 在数据表中能够唯一识别记录的字段,都会被人们设置为主键,例如,“学号”字段。当某个字 段被设置为主键后,该字段中就不能再有重复值,也不能有空值,数据库管理系统将强制执行这一规 则,这就是主键约束。在创建数据表时,设置主键的方法有两种,下面通过例题介绍具体的方法。 【例 4.2】创建以“学号”字段作为主键的 Student 表。设 SQL 运行环境为 SQL Server。 方法一: CREATE TABLE student ( 学号 char(4) CONSTRAINT firstkey PRIMARY KEY NOT NULL , 姓名 char(20) NOT NULL, 性别 char(2) NOT NULL, 出生日期 datetime, 来源地 char(50), 联系方式 1 char(12), 联系方式 2 char(12), 所属院系 char(20) ); 方法二: CREATE TABLE student ( 学号 char(4) NOT NULL , 姓名 char(20) NOT NULL, 性别 char(2) NOT NULL, 出生日期 datetime, 来源地 char(50), 联系方式 1 char(12), 联系方式 2 char(12), 所属院系 char(20), CONSTRAINT xh PRIMARY KEY(学号) ); 说明:在运行上面的语句时,可能会因为 student 表已经存在而失败。此时,应当先将现有的 student 表删除,然后再执行上面的创建语句。删除 student 表的 SQL 语句如下所示。 DROP TABLE student; 如果想设置多个字段为主键,则必须使用上例的方法二。例如,要创建一个存放学生多门成绩的 Score 表,此时,其主键应该是“学号”和“课号”两个字段的联合,因为只有学号和课号联合起来, 才能识别唯一记录。 【例 4.3】创建 Score 表,并设置“学号”和“课号”两个字段为联合主键。 CREATE TABLE score ( 学号 char(4) , 课号 char(3), 考试成绩 decimal(6 ,2), 平时成绩 decimal(6 ,2), CONSTRAINT xh_kh PRIMARY KEY(学号,课号) ); 注意:表中的主键必须设置为 NOT NULL。 4.5 表结构的修改(ALTER TABLE) 在数据库操作时,可能需要更改表结构,例如,修改某字段的数据类型、添加新字段、删除指定 字段等。ALTER TABLE 语句可以完成这些要求,本节将介绍该语句的详细用法。 4.5.1 ALTER TABLE 语句格式 使用 ALTER TABLE 语句可以修改字段的类型和长度,可以添加新字段,还可以删除不需要的字 段等。下面分别介绍使用 ALTER TABLE 修改字段、添加字段和删除字段的语法格式。 1.修改字段的语法格式 ALTER TABLE 表名 ALTER COLUMN 字段名 数据类型[(长度)]; 具体说明如下: ‰ 字段名:需要修改的字段名称。 ‰ 数据类型:需要修改字段的新数据类型。 ‰ 长度:需要修改字段的长度。该项为可选项,当需要修改的字段类型为带长度的数据类型时必 须定义其长度,例如,字符类型。 注意:在 Oracle 中,修改字段的语法格式为: ALTER TABLE 表名 MODIFY 字段名 数据类型[(长度)]; 2.添加字段的语法格式 ALTER TABLE 表名 ADD 字段名 数据类型[(长度)]; 具体说明如下: ‰ 字段名:需要添加的字段名称。 ‰ 数据类型:需要添加字段的数据类型。 ‰ 长度:需要添加字段的长度。其余说明与上面的相同。 3.删除字段的语法格式 ALTER TABLE 表名 DROP COLUMN 字段名; 具体说明如下:字段名为要删除的字段名。 注意:使用 ALTER COLUMN 时要更改的字段不能是:数据类型为 text、image、ntext 或 timestamp 的 字段、表的 ROWGUIDCOL 字段、计算字段或用于计算字段中的字段、被复制字段、用在索引 中的字段。 4.5.2 增加新字段 前面介绍了使用 ALTER TABLE 语句增加新字段的语法格式,下面通过例题说明其具体用法。 【例 4.4】在 SQL Server 的 Student 表中,增加新字段“政治面貌”,该字段的类型为字符型,长 度为 10。其 SQL 语句如下所示。 ALTER TABLE student ADD 政治面貌 char(10) ; 运行上面的语句后,通过 SQL Server 的企业管理器查看 Student 表结构,如图 4.8 所示。从图中看 到“政治面貌”字段已经被添加到 Student 表内。 【例 4.5】在 Oracle 的 Student 表中,增加新字段“政治面貌”。 ALTER TABLE student ADD 政治面貌 char(10) ; 使用下面的语句查看 Student 的表结构。 DESC student 说明:DESCRIBE 命令用于查看表定义。使用全称 DESCRIBE 或缩写 DESC 均可。 运行结果如图 4.9 所示。 图 4.8 添加“政治面貌”字段后的表结构 图 4.9 添加“政治面貌”字段后的表结构 观察上面的两个例题会发现,Oracle 和 SQL Server 的添加新字段的 SQL 语句是相同的,因此,本 书约定如果语句相同,则只用 SQL Server 举例。 注意:在 Oracle 中,必须在语句末尾添加分号(;),而在 SQL Server 中分号是可有可无的。 4.5.3 增加带有默认值的新字段 在使用 ALTER TABLE 语句添加新字段的同时,也可以给该字段设置默认值。 【例 4.6】在 Student 表中,添加新字段“婚否”的同时,给其设置默认值“否”。 ALTER TABLE student ADD 婚否 char(2) DEFAULT '否'; 运行上面的语句后,使用 SQL Server 的企业管理器查看表结构,如图 4.10 所示。 图 4.10 添加“婚否”字段后的表结构 4.5.4 修改字段的类型和宽度 ALTER TABLE 语句形式可以改变字段的数据类型和宽度。满足以下情况的字段是不可以更改其 数据类型的: ‰ 数据类型为 TEXT、IMAGE、NTEXT 或 TIMESTAMP 的字段; ‰ 有 UNIQUE 约束的字段。 ‰ 设置默认值的字段。 ‰ 重复的字段。 ‰ 计算的或用在计算的字段中。 ‰ 用于 CHECK 约束的字段。 【例 4.7】将 Student 表的字段“政治面貌”的数据类型改变为变长字符型,宽度为 6。 (1)如果运行环境为 SQL Server,则其语句如下所示。 ALTER TABLE Student ALTER COLUMN 政治面貌 varchar(6); 运行上面的语句后,使用 SQL Server 的企业管理器查看表结构,如图 4.11 所示。 (2)如果运行环境为 Oracle,则其语句如下所示。 ALTER TABLE Student MODIFY 政治面貌 varchar2(6); 使用下面的语句查看 Student 的表结构。 DESC student 运行结果如图 4.12 所示。 图 4.11 修改“政治面貌”字段后的表结构 图 4.12 修改“政治面貌”字段后的表结构 注意:将字段的当前数据类型转换为另一种数据类型时,字段中当前已有的数据必须与新数据类型相 互兼容。 4.5.5 删除字段 SQL 语句为 ALTER TABLE 语句提供了 DROP COLUMN 子句来完成删除数据表中的字段。 【例 4.8】从 Student 表中删除字段“政治面貌”与“婚否”。 ALTER TABLE student DROP COLUMN 政治面貌; 运行上面的语句后,使用 SQL Server 的企业管理器查看表结构,这时字段“政治面貌”已不存在, 如图 4.13 所示。 图 4.13 删除字段“政治面貌”后的表结构 4.5.6 删除带有默认值的字段 ALTER TABLE…DROP COLUMN 语句形式不能删除数据表中有主键约束和默认值的字段。 【例 4.9】使用 ALTER TABLE…DROP COLUMN 语句直接删除 Student 表的“婚否”字段。 ALTER TABLE student DROP COLUMN 婚否; 运行结果如图 4.14 所示。运行出错的原因是“婚否”字段被设置了默认值。 图 4.14 删除字段“婚否”的操作失败 注意:在图中的对象‘DF student 婚否 05D8E0BE’是字段“婚否”的默认值名称。实际上,这 个名称并不是在例 4.7 中声明的,是系统自动为字段“婚否”的默认值生成的。 为了删除带有约束和默认值的字段,必须先删除约束和取消默认值,其语法格式如下所示。 ALTER TABLE 表名 DROP CONSTRAINT 约束名|默认值名 【例 4.10】使用 ALTER TABLE 语句删除 Student 表的“婚否”字段。 (1)删除“婚否”字段的默认值。 ALTER TABLE student DROP CONSTRAINT DF student 婚否 05D8E0BE (2)执行删除“婚否”字段的语句如下。 ALTER TABLE student DROP COLUMN 婚否; 运行结果如图 4.15 所示。 图 4.15 删除字段“婚否”的语句成功执行 4.5.7 更改主键 使用 ALTER TABLE…ADD 语句形式可以给数据表添加主键(PRIMARY KEY)约束。添加主键 约束的语法格式如下所示。 ALTER TABLE 表名 ADD CONSTRAINT 主键约束名 PRIMARY KEY (<字段名 1> [,<字段名 2>,…]) 说明:主键约束名由用户指定,PRIMARY KEY子句可以设置联合主键约束。 【例 4.11】为 Student 表中的“学号”字段添加主键约束。 ALTER TABLE student ADD CONSTRAINT xh_1 PRIMARY KEY(学号); 如果需要改变数据表当前的主键约束时,则应当先删除其当前的主键约束,然后再使用上述方法 添加新的主键约束,例如下面的例题所示。 【例 4.12】将上例中设置的 Student 表中的“学号”字段的主键约束改变为“学号”与“姓名”字 段的联合主键约束。 (1)删除当前主键约束。 ALTER TABLE student DROP CONSTRAINT xh_1; (2)添加字段联合主键约束。 ALTER TABLE student ADD CONSTRAINT xh_xm PRIMARY KEY(学号,姓名) 注意:被设置主键约束的字段必须设置 NOT NULL 约束。 4.6 表的删除、截断与重命名 对表可进行删除与重命名操作,SQL 语言提供了 DROP TABLE 语句进行表删除操作,提供了 RENAME TABLE 语句进行表重命名操作。 4.6.1 删除表 当不再需要数据库中的某表时,就应当删除该表,释放该表所占有的资源。在 SQL 语言中,删除 数据表使用 DROP TABLE 语句。例如,下面的语句用于删除 Student 表。 DROP TABLE student; 说明:有时,在使用 DROP TABLE 语句删除数据表时会出现删除失败的情况。导致删除失败的绝大多 数原因是该表可能与数据库中的其他表存在联系。此时,应当先解除表之间的联系,然后再使 用 DROP TABLE 语句删除表。 4.6.2 截断表 使用 DROP TABLE 语句会将表彻底地删除掉,包括表内的数据和表本身。但有时,用户可能希望 只删除表中的数据,而不删除表本身。这时可以使用 TRUNCATE 语句将表截断,即删除其中的所有 数据。例如,下面的语句将截断 Student 表。 TRUNCATE TABLE student; 注意:使用 SQL 语言中的 DELETE 语句也能删除表中的所有数据,但是使用 TRUNCATE 语句会得到 更快的速度,而且在 Oracle 中,TRUNCATE 语句会重置表的存储空间。关于 DELETE 语句和 TRUNCATE 语句的具体内容与差别,可以查看本书第 15 章的内容。 4.6.3 重命名表 表的名称在创建时便被赋予了,但是,后期可能会因为各种原因需要重命名表。重命名表在 Oracle 中可以使用 RENAME 语句完成。在 SQL Server 中,则要使用 SP_RENAME 完成。例如,要将表 Student 重命名为 Stu_info,则在 Oracle 和 SQL Server 中使用的语句分别如下所示。 (1)在 Oracle 中重命名 Student 表。 RENAME student TO stu_info; (2)在 SQL Server 中重命名 Student 表。 SP_RENAME student , stu_info 4.7 创建与删除数据库 在创建数据库对象之前,必须先创建数据库。数据库中包含数据表、视图、索引、查询、规则、 默认值等数据库对象,并且对这些对象进行同一管理。 4.7.1 创建数据库 在面向对象的关系型数据库管理系统中,一般情况下用户使用环境中的工具创建数据库,如 SQL Server 2000 中可以使用企业管理器新建一个数据库,其操作方法简单且方便。用户也可以使用 SQL 语 言中的 CREATE DATABASE 语句创建数据库,其基本语法格式如下所示。 CREATE DATABAS
本文档为【04 数据表】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_240558
暂无简介~
格式:doc
大小:650KB
软件:Word
页数:27
分类:互联网
上传时间:2012-03-10
浏览量:16