资源描述
SQL Server 与 数 据 库 应 用 开 发第 4章 数 据 库 中 表 的 基 本 操 作 4.1.SQL Server 中 表 的 概 述4.2.数 据 库 中 表 的 创 建4.3.表 的 查 看4.4.表 结 构 的 修 改4.5.表 的 重 命 名4.6.表 的 删 除主 要 内 容 【 知 识 要 求 】 : 掌 握 数 据 类 型 和 表 的 基 本 知 识【 能 力 要 求 】 : 1.熟 练 掌 握 表 的 可 视 化 与 代 码 方 式 创 建 方 法 2.熟 练 掌 握 表 的 查 看 、 修 改 、 重 命 名 、 删 除 等 管 理 方 法知 识 与 能 力 要 求 4.1.1 SQL Server表 的 概 念 1.表 的 概 念 关 系 数 据 库 的 理 论 基 础 是 关 系 模 型 , 它 直 接 描 述 数 据 库 中 数 据 的 逻 辑 结 构 。 关 系 模 型 的 数 据 结 构是 一 种 二 维 表 格 结 构 , 在 关 系 模 型 中 现 实 世 界 的 实 体 与 实 体 之 间 的 联 系 均 用 二 维 表 格 来 表 示 。在 SQL Server数 据 库 中 , 表 定 义 为 列 的 集 合 , 数 据 在 表 中 是 按 行 和 列 的 格 式 组 织 排 列 的 。 每 行 代表 唯 一 的 一 条 记 录 , 而 每 列 代 表 记 录 中 的 一 个 域 ,如 表 4-1所 示 。 4.1.SQL Server 中 表 的 概 述表 4-1 关 系 模 型 型 数 据 结 构 ( 用 户 表 tb_user) 4.1.SQL Server 中 表 的 概 述2 SQL Server表 与 关 系 模 型 的 对 应表 4-2表 与 关 系 模 型 的 对 应关 系 模 型 SQL Server表 关 系 模 型 SQL Server表关 系 表 关 系 模 式 表 的 定 义 属 性 表 的 列 属 性 名 列 名值 列 值 元 组 行 或 者 记 录键 主 键 关 系 完 整 性 约 束 4.1.SQL Server 中 表 的 概 述3 表 的 设 计 对 于 开 发 一 个 大 型 的 管 理 信 息 系 统 , 必 须 按 照 数 据 库 设 计 理 论 与 设 计 规 范 对 数 据 库 专 门 的 设计 , 这 样 开 发 出 来 的 管 理 信 息 系 统 才 能 既 满 足 用 户 需 求 , 又 具 有 良 好 的 可 维 护 性 与 可 扩 充 性 。 在 第1章 的 数 据 库 设 计 中 , 已 经 确 定 了 在 线 考 试 管 理 系 统 数 据 库 的 关 系 模 式 , 掌 握 了 列 的 数 据 类 型 之 后就 可 以 创 建 表 了 。 4.1.2 SQL Server 数 据 类 型SQL Server 2012 增 加 了 更 多 更 复 杂 的 数 据 类 型 , 这 里 重 点 介 绍 基 本 的 数 据 类 型1. 二 进 制 数 据二 进 制 数 据 常 用 于 存 储 图 像 等 数 据 , 它 包 括 二 进 制 数 据 binaryn、 变 长 二 进 制 数 据 类 型 varbinary和 image3种 ,存 储 空 间 是 (n+4)B。 对 于 普 通 二 进 制 , 一 般 是 不 够 则 补 齐 ,超 出 则 截 断 , 对 于 可 变 型 , 不够 时 用 实 际 长 度 存 储 。2. 字 符 型 数 据 类 型字 符 型 数 据 用 于 存 储 汉 字 、 英 文 字 母 、 数 字 、 标 点 和 各 种 符 号 , 输 入 时 必 须 由 英 文 单 引 号 括 起 来 。字 符 型 数 据 有 定 长 字 符 串 类 型 charn、 变 长 字 符 串 类 型 varcharn和 text类 型 3种 。3. Unicode字 符 数 据 Unicode标 准 为 全 球 商 业 领 域 中 广 泛 使 用 的 大 部 分 字 符 定 义 了 一 个 单 一 编 码 方 案 。 所 有 的 计 算机 都 用 单 一 的 Unicode标 准 , Unicode数 据 中 的 位 模 式 一 致 地 翻 译 成 字 符 , 这 保 证 了 同 一 个 位 模 式 在 所有 的 计 算 机 上 总 是 转 换 成 同 一 个 字 符 。 数 据 可 以 随 意 地 从 一 个 数 据 库 或 计 算 机 传 送 到 另 一 个 数 据 库 或 计 算 机 , 而 不 用 担 心 接 收 系 统 是 否 会 错 误 地 翻 译 位 模 式 。 Unicode字 符 数 据 有 定 长 字 符 型 nchar、 变 长 字符 型 nvarchar和 文 本 类 型 ntext3种 。 4.1.SQL Server 中 表 的 概 述 4. 日 期 时 间 型 数 据日 期 时 间 型 数 据 用 于 存 储 日 期 和 时 间 数 据 , 日 期 时 间 型 数 据 类 型 包 括 datetime( 1753-9999) 和smalldatetime( 1900-2079) , 时 间 范 围 不 同 ; date为 日 期 型 。 输 入 时 必 须 由 英 文 单 引 号 括 起 来 。5. 整 数 型 数 据整 数 型 数 据 用 于 存 储 整 数 , 有 bigint, int, smallint和 tinyint4种 类 型 。 6. 精 确 数 值 型 数 据精 确 数 值 型 数 据 用 于 存 储 带 有 小 数 点 且 小 数 点 后 位 数 确 定 的 实 数 。 主 要 包 括 decimal(p,s)和numeric (p,s)两 种 。 7. 近 似 数 值 数 据近 似 数 值 型 数 据 用 于 存 储 浮 点 数 ,, 包 括 float和 real两 种 。 8. 货 币 数 据货 币 数 据 由 十 进 制 货 币 的 数 值 数 据 组 成 , 货 币 数 据 有 money和 smallmoney两 种 ,在 SQL Server 2012中 , 货 币 型 是 精 确 度 为 4的 小 数 。4.1.SQL Server 中 表 的 概 述 9. 位 类 型 数 据位 类 型 数 据 常 用 于 逻 辑 数 据 的 存 储 , 只 能 取 1,0或 NULL, 在 位 类 型 的 字 段 中 只 能 输 入 0和 1或 者true与 false。 如 果 一 个 表 中 有 8个 以 下 的 位 类 型 数 据 字 段 , 则 系 统 会 用 一 个 字 节 存 储 这 些 字 段 , 如 果 表中 有 9个 以 上 16个 以 下 位 类 型 数 据 字 段 , 则 系 统 会 用 两 个 字 段 来 存 储 这 些 字 段 。 4.1.SQL Server 中 表 的 概 述 在 SQL Server中 建 立 了 数 据 库 之 后 , 就 可 以 在 该 数 据 库 中 创 建 表 了 。 创 建 表 可 以 在 企 业 管 理 器 以可 视 化 方 式 和 在 查 询 分 析 器 中 使 用 T-SQL语 言 代 码 方 式 两 种 方 法 进 行 。 不 管 哪 种 方 法 , 都 要 求 用 户 具 有创 建 表 的 权 限 , 默 认 情 况 下 , 系 统 管 理 员 和 数 据 库 的 所 有 者 具 有 创 建 表 的 权 限 。4.2.1 使 用 企 业 管 理 器 创 建 表 1 创 建 表 的 步 骤创 建 表 一 般 要 经 过 定 义 表 结 构 、 设 置 约 束 和 添 加 数 据 三 步 , 其 中 设 置 约 束 可 以 在 定 义 表 结 构 时 或定 义 完 成 之 后 建 立 。( 1) 定 义 表 结 构 : 给 表 的 每 一 列 取 字 段 名 , 并 确 定 每 一 列 的 数 据 类 型 、 数 据 长 度 、 列 数 据 是 否 可以 为 空 等 。( 2) 设 置 约 束 : 设 置 约 束 是 为 了 限 制 该 列 输 入 值 的 取 值 范 围 , 以 保 证 输 入 数 据 的 正 确 性 和 一 致 性。 ( 3) 添 加 数 据 : 表 结 构 建 立 完 成 之 后 , 应 该 向 表 中 输 入 数 据 。 4.2 数 据 库 中 表 的 创 建 4.2 数 据 库 中 表 的 创 建 表 4-3 系 部 tb_dept的 表 结 构表 4-3是 系 部 表 tb_ dept的 结 构 ,知 道 结 构 就 可 以 创 建 数 据 表 了 。字 段 名 称 数 据 类 型 ( 宽 度 ) 允 许 空 值 约 束 说 明dept_num nvarchar(1 0 ) 否 主 键 系 部 编 号 dept_name nvarchar(5 0 ) 是 系 部 名 称 2. 创 建 表【 案 例 4-1】 以 可 视 化 方 式 创 建 表 tb_dept。 打 开 企 业 管 理 器 , 展 开 控 制 台 根 目 录 , 依 次 展 开 服 务 器 、 数 据 库 节 点 , 选 择 在 其 中 建 立 表 的 数 据库 , 这 里 我 们 选 择 TestDB数 据 库 , 用 鼠 标 右 键 单 击 “ 表 ” 图 标 , 在 弹 出 的 快 捷 菜 单 中 选 择 “ 新 建 表 ”命 令 , 启 动 表 设 计 器 。 【 操 作 演 示 】4.2 数 据 库 中 表 的 创 建 4.2.2 使 用 T-SQL语 句 创 建 表 1.CREATE TABLE语 句 的 基 本 语 法 CREATE TABLE DATABASE_NAME.OWNER.TABLE_NAME ( |COLUMN_NAME AS COMPUTED_COLUMN_EXPRESSION | ,.N )其 中 的 语 法 如 下 : :=COLUMN_NAME DATA_TYPE NULL|NOT NULL IDENTITY(SEED,INCREMENT) 其 中 的 语 法 如 下 : :=CONSTRAINT CONSTRAINT_NAME |PRIMARY KEY|UNIQUE 4.2 数 据 库 中 表 的 创 建 2.用 T-SQL语 句 创 建 表 4.2 数 据 库 中 表 的 创 建 表 4-2 班 级 表 (tb_class)的 结 构【 案 例 4-2】 用 T-SQL语 句 创 建 班 级 表 字 段 名 称 数 据 类 型 允 许 空 值 约 束 说 明class_num nvarchar(1 0 ) 否 主 键 班 级 编 号class_name nvarchar(5 0 ) 是 班 级 名 称dept_num nvarchar(1 0 ) 是 外 键 系 部 编 号代 码 如 下 : USE TestDB GOCREATE TABLE dbo.tb_class ( class_num nvarchar(50) NOT NULL, class_name nvarchar(50) NULL, dept_num nvarchar(10) NULL) GO4.2 数 据 库 中 表 的 创 建 4.3.1 查 看 表 结 构可 以 使 用 企 业 管 理 器 和 系 统 存 储 过 程 查 看 表 结 构 。(1) 使 用 企 业 管 理 器 查 看 。 依 次 展 开 “ 服 务 器 组 服 务 器 数 据 库 ” 节 点 , 选 择 相 应 的 数 据 库并 展 开 其 中 的 表 结 点 , 在 明 细 窗 格 中 用 鼠 标 右 键 单 击 表 ( 如 用 户 表 tb_user) , 弹 出 快 捷 菜 单 , 选择 “ 属 性 ” 命 令 , 出 现 表 属 性 对 话 框 。 单 击 “ 常 规 ” 和 “ 全 文 索 引 ” 标 签 查 看 表 信 息 。 (2) 使 用 系 统 存 储 过 程 sp_help查 看 。 其 语 法 格 式 为 : EXEC sp_help 对 象 名 对 象 名 可 以 是 表 名 或 者 其 它 数 据 库 对 象 名 。例 如 , 查 看 TestDB数 据 库 中 “ tb_dept” 表 的 结 构 , 使 用 下 列 语 句 : USE TestDB GO EXECUTE sp_help tb_dept GO 在 查 询 分 析 器 中 输 入 上 述 代 码 并 执 行 . 4.3 数 据 库 中 表 的 查 看 4.3.2 查 看 表 中 的 数 据可 以 使 用 企 业 管 理 器 查 看 表 中 的 数 据 。依 次 展 开 “ 数 据 库 ” 节 点 , 选 择 相 应 的 数 据 库 并 展 开 其 中 的 表 结 点 , 在 明 细 窗 格 中 用 鼠 标 右 键 单 击“ tb_dept” 表 , 弹 出 快 捷 菜 单 , 单 击 “ 编 辑 前 200行 ” 命 令 , 就 会 在 查 询 设 计 器 的 结 果 窗 口 中 看 到 表中 的 数 据 ,并 可 进 行 添 加 、 修 改 、 删 除 操 作 。4.3 数 据 库 中 表 的 查 看 4.4.1 使 用 企 业 管 理 器 修 改 表 结 构( 1) 打 开 企 业 管 理 器 , 展 开 “ 服 务 器 组 服 务 器 数 据 库 ” 节 点 , 选 择 相 应 的 数 据 库 , 展 开 表 对象 。 ( 2) 在 企 业 管 理 器 的 明 细 窗 格 中 , 用 鼠 标 右 键 单 击 要 修 改 的 表 , 在 弹 出 的 快 捷 菜 单 中 选 择 “ 设 计” 命 令 , 打 开 表 设 计 器 。4.4 表 结 构 的 修 改 4.4.2 使 用 T-SQL语 句 修 改 表 结 构使 用 ALTER TABLE语 句 可 以 对 表 的 结 构 进 行 修 改 。ALTER TABLE语 句 的 语 法 格 式 如 下 :ALTER TABLE table_name ALTER COLUMN column_name new_data_type (precision,scale) NULL|NOT NULL 4.4 表 结 构 的 修 改 |ADD |column_name AS computed_column_expression, n|ADD , n|DROP CONSTRAINTconstraint_name|COLUMN column, n|CHECK|NOCHECKCONSTRAINT ALL|constraint_name, n|ENABLE|DISABLETRIGGERALL|trigger_name, n4.4 表 结 构 的 修 改 其 中 的 语 法 如 下 : :=CONSTRAINT CONSTRAINT_NAME |PRIMARY KEY|UNIQUE参 数 含 义 说 明 : table_name: 是 要 更 改 的 表 的 名 称 。 若 表 不 在 当 前 数 据 库 中 或 表 不 属 于 当 前 用 户 , 就 必 须 指 定 其的 列 所 属 的 数 据 库 名 称 和 所 有 者 名 称 。 ALTER COLUMN: 指 定 要 更 改 的 列 。 new_data_type: 指 定 新 的 数 据 类 型 名 称 。 precision: 指 定 新 数 据 类 型 的 精 度 。 scale: 指 定 新数 据 类 型 的 小 数 位 数 。 ADD: 添 加 一 个 或 多 个 列 。 computed_column_expression: 计 算 列 的 计 算 表 达 式 。 DROPCONSTRAINTconstraint_name|COLUMN column_name: 指 定 要 删 除 的 约 束 或 列的 名 称 。4.3 表 结 构 的 修 改 【 案 例 4-4】 为 “ 系 部 表 ” tb_dept添 加 备 注 列 “ memo” , 数 据 类 型 为 char(50),可 以 为 空 。use TestDB GOalter table tb_deptadd memo char(50 ) nullgo4.3 表 结 构 的 修 改【 案 例 4-5】 修 改 “ 系 部 表 ” tb_dept备 注 列 “ memo” 数 据 类 型 为 varchar(100 ) 。use TestDB GOalter table tb_useralter column memo varchar(100 ) null go 【 案 例 4-6】 将 “ 系 部 表 ” tb_dept备 注 列 “ memo” 删 除use TestDB GOalter table tb_deptdrop column memo go4.3 表 结 构 的 修 改 4.5.1通 过 企 业 管 理 器 修 改 表 名操 作 步 骤 如 下 :( 1) 打 开 企 业 管 理 器 , 展 开 “ 服 务 器 组 服 务 器 数 据 库 ” 节 点 , 选 择 相 应 的 数 据 库 并 展 开 其 中的 表 结 点 。( 2) 在 企 业 管 理 器 的 明 细 窗 格 中 , 用 鼠 标 右 键 单 击 要 修 改 名 称 的 表 , 在 弹 出 的 快 捷 菜 单 中 选 择 “重 命 名 ” 命 令 , 输 入 新 表 名 即 可 。4.5.2 使 用 系 统 存 储 过 程 修 改 表 名语 法 格 式 为 : sp_rename oldname, newname【 案 例 4-9】 使 用 系 统 存 储 过 程 修 改 表 系 部 表 “ tb_dept” 名 称 为 “ 系 部 ”Use TestDBGoExec sp_rename 系 部 , tb_dept GO 4.5 表 的 重 命 名 由 于 应 用 的 原 因 , 有 些 表 可 能 不 需 要 了 , 对 于 不 需 要 的 表 , 可 以 将 其 删 除 。 一 旦 表 被 删 除 , 表 的 结构 、 表 中 的 数 据 、 约 束 、 索 引 等 都 将 被 永 久 地 删 除 。 删 除 表 的 操 作 可 以 通 过 企 业 管 理 器 以 可 视 化 方 式 完成 , 也 可 以 通 过 DROP TABLE语 句 完 成 。4.6.1 使 用 企 业 管 理 器 删 除 表【 案 例 4.7】 在 TestDB数 据 库 中 删 除 “ 班 级 ” 表 tb_class。操 作 步 骤 如 下 :( 1) 打 开 企 业 管 理 器 , 展 开 “ 服 务 器 组 服 务 器 数 据 库 ” 节 点 , 选 择 相 应 的 数 据 库 并 展 开 其 中的 表 结 点 。( 2) 在 企 业 管 理 器 的 明 细 窗 格 中 , 用 鼠 标 右 键 单 击 要 删 除 的 表 , 在 弹 出 的 快 捷 菜 单 中 选 择 “ 删 除” 命 令 , 出 现 如 图 4.7所 示 的 “ 除 去 对 象 ” 对 话 框 , 单 击 “ 全 部 除 去 ” 按 钮 可 删 除 表 。4.6 表 的 删 除 4.6.2 使 用 DROP TABLE语 句 删 除 表语 法 格 式 如 下DROP TABLE table_name【 案 例 4.8】 在 TestDB数 据 库 中 删 除 “ 系 部 ” 表 tb_dept。在 查 询 窗 口 中 输 入 如 下 命 令 :USE TestDBGODROP TABLE tb_deptGO4.6 表 的 删 除 见 习 题 与 答 案习 题
展开阅读全文