项目三公司管理数据系统的表的创建和修改(编辑修改稿)内容摘要:

在列定义外单独定义的,它是多列之间的约束,用 CONSTRAINT关键字定义。 注意 :如果要对一个表中的多个列定义约束,必须首先定义每个列,然后在末尾追加表约束。 1. 主关键字 ( PRIMARY KEY) 约束 一个表中 , 存在这样的字段 , 它在每个记录中的值都是惟一的 , 因此可以用来标识表中的各个不同的纪录。 这样的字段被称为关键字。 在这些列上创建主关键字约束 , 确保数据表的一列或几列的组合的值在表中具有惟一性。 ( 1) 在企业管理器中定义主键约束 “表设计器 ‛ 对话框中 , 选择要设置为主键的列 , 可以选择一个列 , 也可以选择多个列。 在所选的字段左端的选择按钮上右击鼠标 , 在弹出的菜单中选择 ‚ 设置主键 ‛ 或点击工具栏上的图标 按钮。 说明 :如果主关键字包含多个字段 , 则在定义时 , 首先按住 【 Ctrl】 键或 【 Shift】 键 , 再选择字段。 按 【 Ctrl】 键可选择不连续的多个字段 , 按 【 Shift】 键则只能选择连续的多个字段。 ( 2) 使用 TransactSQL语句定义主关键字约束的语法如下 : CONSTRAINT constraint_name PRIMARY KEY [CLUSTERED|NONCLUSTERED] (column_namel[,column_name2,..., column_namel6]) 各参数说明 :  constraint_name:指定约束的名称。 约束的名称在数据库中应是惟一的。 如果不指定 , 则系统会自动生成一个约束名。  CLUSTERED|NONCLUSTERED: 指 定 索 引 类 别 ,CLUSTERED为缺省值。 其具体信息请参见索引章节。  Column_name:指定组成主关键字的列名。 主关键字最多由 16个列组成。 说明:每个表只允许存在一个主键约束 ( PRIMARY KEY)。 【 例 6】 创 建 一 个 产 品 信 息 表( product_info) , 以产品编号和名称为主关键字。 CREATE TABLE product_info( 产品 ID int, 产品名称 char(10) not null, 单价 money default 10, 库存量 int null, 总价值 as 单价 *库存量 , /*产品总价值 =单价 *库存量 */ CONSTRAINT P_KP_ID PRIMARY KEY (产品 ID, 产品名称 ) ) 2. 外键 ( FOREIGN KEY) 约束 外键约束定义了 表之间 的关系。 当一个表中的一个列或多个列的组合和其它表中的主关键字属性相同时 , 就可以将这些列或列的组合定义为外关键字 , 并设定已适合哪个表中哪些列相关联。 作用 : 当在定义主关键字约束的表中更新列值时 , 其它与之相关联的外关键字约束的表中的外关键字字段的值也将被自动更新。 当向含有外关键字的表插入数据时 , 如果与之相关联的表的字段中无与插入的外关键字字段值相同的值时 , 系统会拒绝插入数据。 【 例 7】 数据库 pubs 中的 titles 表与 publishers 表有链接,因为在书名和出版商之间存在逻辑联系。 titles 表中的 pub_id 列与 publishers 表中的主键列相对应。 titles 表中的 pub_id 列是到 publishers 表的外键。 Primary Key ( 1) 在企业管理器中创建外键约束 操作步骤如下: 1. 打开 panyinfo数据库 2. 执行 【 新建数据库关系图 】 命令 . 3. 打开创建数据库关系图向导 , 进入数据库关系图创建窗口。 4. 在数据库关系图创建窗口的工具拦中 , 单击 ‚ 在关系图上添加表 ‛ 按钮。 将打开 ‚ 添加表 ‛ 对话框。 5. 在 ‚ 添加表 ‛ 对话框中 , 选择主键表 product表 , 并单击‚ 添加 ‛ 按钮 , 再选择外键表 p_oreder表 , 并单击 ‚ 添加 ‛按钮。 然后关闭 ‚ 添加表 ‛ 对话框。 6. 将鼠标移动到 product表中的 ‚ 产品 ID”左边的选择栏 , 单击左键 , 并将鼠标指针拖动到 p_oreder表中的 ‚ 产品 ID”字段上。 ( 2) 使用 TransactSQL语句定义外关键字约束 语法如下 : CONSTRAINT constraint_name FOREIGN KEY (column_namel[,column_name2,..., column_namel6]) REFERENCES ref_table [(ref_columnl[, ref_column2,..., ref_columnl6])] [ ON DELETE{CASCADE|NO ACTION}] [ ON UPDATE{CASCADE|NO ACTION}]] [NOT FOR REPLICATION] 各参数说明 :  REFERENCES:指定要建立关联的表的信息。  ref_table:指定要建立关联的表的名称。  ref_column:指定要建立关联的表中的相关列的名称。  ON DELETE{CASCADE|NO ACTION}:指定在删除表中数据时 , 对关联表所做的相关操作。 在子表中有数据行与父表中的对应数据行相关联的情况下 , 如果指定了值 CASCADE, 则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是 NO ACTION, 则 SQL Server会产生一个错误 , 并将父表中的删除操作回滚。 NO ACTION是缺省值。  ON UPDATE{CASCADE|NO ACTION}:指定在更新表中数据时 , 对关联表所做的相关操作。  NOT FOR REPLICATION:指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用。 【 例 8】 创建一个课程表,然后创建一个成绩表与前面创建的学生表和课程的关联。 脚本文件 31: use students go CREATE TABLE 学生 (学号 char(6) NOT NULL, 性别 char(2) NOT NULL , 姓名 char(10) NOT NULL, 学分 int constraint pk_student_id primary key (学号 ) ) go 脚本文件 32 CREATE TABLE 课程 (课程号 char(12) NOT NULL , 课程名 char(12) NOT NULL , 学时 char(10) NOT NULL , 学分 char(10) NOT NULL constraint pk_course_id primary key (课程号 ) ) Go CREATE TABLE 成绩 (学号 char(6) NOT NULL , 课程号 char(12) NOT NULL, 课程名 char(12) NOT NULL , 成绩 int NOT NULL , 补考成绩 int NOT NULL constraint pk_grade_id primary key(学号 ,课程号 ), constraint fr_student_id foreign key(学号 ) references 学生 (学号 ), constraint fr_course_id foreign key(课程号 ) references 课程 (课程号 ) ) 脚本文件 33 (UNIQUE)约束 唯一性约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值。 唯一性约束指定的列可以有 NULL属性。 由于主关键字值是具有唯一性的,因此主关键字列不能再设定唯一性约束。 唯一性约束最多由 16个列组成。 ( 1)在企业管理器中定义惟一性键 【 例 9】 将‚ product”表中的产品 ID列设定为唯一性约束。 在‚ product”表上右击鼠标,在弹出的菜单上点击 ‚设计表‛,进入表的设计窗口。 在设计面板的空白处右击鼠标,在弹出的菜单中选择‚属性‛。 选择‚索引 /键‛选项卡 单击‚新建‛按钮,系统分配的名称将出现在‚索引名‛文本框中。 ( 2)使用 TransactSQL语句定义惟一性约束 语法 : CONSTRAINT constraint_name UNIQUE [CLUSTERED | NONCLUSTERED] (column_ namel[, column_ name2,..., column_ name16]) 【 例 10】 定义一个员工信息表,其中员工的身份证号具有惟一性。 CREATE TABLE employee_info( 雇员 ID char(8), 姓名 char(10), 身份证号 char(18) constraint pk_emp_id primary key (雇员 ID), constraint uk_emp_cardid unique (身份证号 ) ) 例: CREATE TABLE jsy_temp3 ( 驾照号 char(8)) PRIMARY KEY , 姓名 varchar(8) NOT NULL, 身份证号 char(18) NOT NULL UNIQUE NONCLUSTERED) ( CHECK)约束 检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。 可以对每个列设置符合检查。 ( 1)在企业管理器中设定 CHECK约束的方法 【 例 11】 “product”表中的库存量列设定 CHECK约束,使此列的值限制在 100到 1000之间。  启动企业管理器,展开数据库,在‚ product”表上右击鼠标,在弹出的菜单上点击 ‚设计表‛,进入表的设计窗口。  在设计面板的空白处右击鼠标,在弹出的菜单中选择‚属性‛。 选择‚ CHECK约束‛选项卡,将弹出对话框。  对话框中‚ CHECK约束‛选项卡  单击‚新建‛按钮,‚选定的约束‛列表框显示了由系统分配的新约束名。 系统分配的名称以 CK开始,后跟表名  在‚约束表达式‛框中,为 CHECK约束键入 SQL表达式,如将‚ product”表中的‚库存量‛列的数据限制在 100到 1000之间,即输入:‚库存量 =100 and 库存量 =1000”,  关闭设计表‚ product”的设计器,系统将提示是否保存对表产品的更改,点击‚是‛按钮,保存所创建的 CHECK约束。 ( 2)使用 TransactSQL语句定义检查约束的语法如下 : CONSTRAINT constraint_name CHECK [NOT FOR REPLICATION] (logical expression)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。