精华内容
下载资源
问答
  • SQL Server中创建表设置完整性约束

    千次阅读 2020-09-23 18:48:50
    3、非空约束:属于列级完整性约束条件,在列定义时设置 。 4、唯一约束:属于列级完整性约束条件,在列定义时设置 。 5、check约束:本例子中没有涉及。比如S中City只能设置为“北京”或“上海”,则可以进行如下...

    建立一个供应商、零件关系库,
    其中关系供应商S(Sno,Sname,Status,City)属性分别表示供应商代码、供应商名称、供应商状态、供应商城市。
    其中关系零件P(Pno,Pname,Color,Weight,City)属性分别表示零件号、零件名称、颜色、重量、产地。
    要求如下:
    1)供应商代码不能是空的,且是唯一的。供应商的名称也必须是唯一的。
    2)零件号不能是空的,且是唯一的。零件名称不能是空的。
    3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

    以下是具体的Create语句:

    CREATE TABLE S(
    Sno INT,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100) ,
    PRIMARY KEY(Sno)
    )
    
    CREATE TABLE P(
    Pno INT,
    Pname VARCHAR(100) NOT NULL,
    Color VARCHAR(100),
    Weight INT,
    City VARCHAR(100),
    PRIMARY KEY(Pno)
    )
    
    CREATE TABLE SP(
    Sno INT,
    Pno INT,
    quality INT,
    PRIMARY KEY(Sno,Pno),
    FOREIGN KEY(Sno) REFERENCES S(Sno),
    FOREIGN KEY(Pno) REFERENCES P(Pno)
    )
    

    对于约束的分析:
    1、主键约束:
    单属性主键:在表S中,设置属性Sno为主键。由于主键本身要求非空且唯一,所以在Sno列处不用再加上unique和not null的约束。单属性主键也可以在列Sno后方直接定义,如:

    CREATE TABLE S(
    Sno INT PRIMARY KEY,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100) 
    )
    

    联合主键:在表SP中,属性Sno和Pno共同构成联合主键。
    2、外键约束:在表SP中,Sno来源于表S的Sno,所以需要设置外键约束。Pno字段同理。
    3、非空约束:属于列级完整性约束条件,在列定义时设置 。
    4、唯一约束:属于列级完整性约束条件,在列定义时设置 。
    5、check约束:本例子中没有涉及。比如表S中City只能设置为“北京”或“上海”,则可以进行如下设置:

    CREATE TABLE S(
    Sno INT PRIMARY KEY,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100),
    CHECK ( City IN ('北京','上海'))
    )
    
    展开全文
  • 理解以下几张的内容,根据实际情况设计属性名、数据类型、及各种完整性约束(primary key、foreignkey、not null、unique、check),用数据定义语言实现,然后设计实验数据验证约束的效果,当操作违反了完整性约束...

    理解以下几张表的内容,根据实际情况设计属性名、数据类型、及各种完整性约束(primary key、foreign key、not null、unique、check),用数据定义语言实现,然后设计实验数据验证约束的效果,当操作违反了完整性约束条件时,数据库管理系统是如何处理的。

    1、创建数据库S_T。

    create database S_T
    Use S_T
    

    2、新建一张专业信息表,该表至少包含专业号,专业名称,专业负责人,专业简介等属性,根据以下专业信息为每个属性选择合适的数据类型。

    专业号

    专业名称

    专业负责人

    专业简介

    JK

    计算机科学与技术

    Null

    要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique)。

    CREATE TABLE Major(
    	Dno varchar(10) primary key,
    	Dname varchar(20) NOT NULL unique,
    	Dman varchar(20),
    	DDisc text
    );
    

    3、新建一张学生信息表,该表至少包含学号,姓名,性别,出生日期,专业,身份证号,联系方式等属性,根据以下学生信息为每个属性选择合适的数据类型。

    学号

    姓名

    性别

    出生日期

    专业

    身份证号

    联系方式

    09011101

    李彤

    1989-6-5

    JK

    33020319890605234X

    654234

    要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique),为性别设置检查约束(check)使该属性只能取“男”或 “女”。

    CREATE TABLE Student(
    	Sno CHAR(8) primary key,
    	Sname CHAR(20) NOT NULL,
    	Ssex CHAR(20),
    	Sbirth datetime,
    	Smajor VARCHAR(10),
    	Sidentity char(18) unique,
    	Stel varchar(11),
    	check (Ssex IN('男','女')),
    	FOREIGN KEY(Smajor) REFERENCES Major(Dno)
    );
    

    4、新建一张课程信息表,该表至少包含课程号,课程名称,学分,开课学期等属性,根据以下课程信息为每个属性选择合适的数据类型。

    课程号

    课程名称

    学分

    开课学期

    10001

    数据库原理

    3

    5

    要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为学分设置约束使该属性取值范围为1到10之间的整数。

    CREATE TABLE Course(
    	Cno CHAR(5) PRIMARY KEY,
    	Cname VARCHAR(40) NOT NULL, /*不可设置为Unique*/
    	Ccredit SMALLINT,
    	Cbegin SMALLINT,
    	CONSTRAINT C1 CHECK (Ccredit between 1 and 10)	
    );
    

    5、新建一张选课信息表,该表至少包含学号,课程号,成绩,基点等属性,根据以下选课信息为每个属性选择合适的数据类型。

    学号

    课程号

    成绩

    基点

    09011101

    10001

    89

    3.0

    要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为成绩设置约束使该属性取值范围为0到100之间的整数。为基点设置约束使该属性取值为0或者大于等于1的值。

    CREATE TABLE SC(
    	Sno CHAR(8) primary key,
    	Cno CHAR(5),
    	Grade SMALLINT,
    	GPA float,
    	FOREIGN KEY (Sno) REFERENCES Student(Sno),
    	FOREIGN KEY (Cno) REFERENCES Course(Cno),
    	CONSTRAINT C2 CHECK (Grade between 0 and 100),
    	CONSTRAINT C3 CHECK (GPA =0 OR GPA >=1)
    );

    6、修改学生信息表,选择该表中合适的属性设置外码约束(foreign key),实现表间数据的参考完整性。

    ALTER TABLE STUDENT 
    	ADD CONSTRAINT C4 FOREIGN KEY (Smajor) REFERENCES Major(Dno) ;
    

    7、修改选课信息表,选择该表中合适的属性设置外码约束(foreign key),要求允许级联更新,但不允许级联删除。

    ALTER TABLE SC 
    	ADD CONSTRAINT C5 FOREIGN KEY (Sno) REFERENCES Student(Sno) 
    	ON DELETE NO ACTION
    	ON UPDATE CASCADE;
    
    ALTER TABLE SC 
    	ADD CONSTRAINT C6 FOREIGN KEY (Cno) REFERENCES Course(Cno) 
    	ON DELETE NO ACTION
    	ON UPDATE CASCADE;
    





    展开全文
  • 约束条件 说明 ...primary key(pk) 主键,一个中只有一个,标识唯一,不可为空 foreign key(fk) 外键,实现(父主键/子1外键/子2外键)之前的关联 not null 标识该字段不能为空 unique ...

    约束条件                       说明

    primary key(pk)            主键,一个表中只有一个,标识唯一性,不可为空

    foreign key(fk)               外键,实现表与表(父表主键/子表1外键/子表2外键)之前的关联

    not null                             标识该字段不能为空

    unique key(uk)                标识该字段的值是唯一的,可以为空,一个表中有多个

    auto_increment              标识该字段的值自动增长(整数类型,主键)

    default                              为该字段设置默认值

    unsigned                          无符号,正数

    zerofill                              使用0填充,eg:000001

    查看当前使用哪个库使用命令:select database();

    1.创建唯一性约束unique

    方法一:

    方法二:直接创建表的时候在字段后面加unique

    2.设置主键约束(primary key)

    定义方法一:字段后面直接定义

    方法二:primary key(字段名)

    单列做主键

    多列做主键(复合主键:判断重复条件,只有同时做主键的字段完全相同才看作重复)

     

     

    展开全文
  • 完整性约束-外键约束 外键约束(FOREIGN KEY,缩写FK)是用来实现数据库的参照完整性的。外键约束可以使两张紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。 外键是指中某个...

    表的完整性约束-外键约束

    • 外键约束(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的。外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。
    • 外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束。被依赖的表我们通常称之为父表或者主表,设置外键约束的表称为子表或者从表。

    代码示例

    • 先创建一个部门表(父表)
    -- 先创建父表:部门表:
    create table department(
            dno int(4) primary key auto_increment,
            dname varchar(10) not null,
            room char(4)
    )
    • 创建员工表,并添加外键约束外键约束只有表级约束,没有列级约束
    -- 注意:外键约束只有表级约束,没有列级约束:
    -- 方法一:创建表的时候添加外键约束
    create table staff(
            eid int(6) primary key auto_increment, 
            name varchar(5) not null, 
            department int(4),
        	-- 取值参考department表中的dno字段,不要求字段名字完全重复,但是类型长度定义 尽量要求相同。
            constraint fk_staff_department foreign key (department) references department (dno)
    );
    
    -- 方法二:创建完表后添加外键约束
    create table staff(
            eid int(6) primary key auto_increment, 
            name varchar(5) not null, 
            department int(4)
    );
    -- 在创建表以后添加外键约束:
    alter table staff add constraint fk_staff_department foreign key (department) references department (dno)

    外键策略

    • 对于有外键约束的表格,可以设置外键策略来达到在操作父表的时候,子表也响应的作出策略定义的修改

    • 外键策略有三个

      • 策略1:no action 不允许操作
      -- 外键策略 no action
      delete from department where dno = 2;
      -- > 1451 - Cannot delete or update a parent row: a foreign key constraint fails (`mytestdb`.`staff`, CONSTRAINT `fk_staff_department` FOREIGN KEY (`department`) REFERENCES `department` (`dno`))
      -- 默认删除的外键策略是no action 如果删除删除有员工的部门的话,就会出错,不让直接删除
      • 策略2:cascade 级联操作:主表中的数据被修改,那么子表关联的字段也跟着主表一起修改,比如父表中部门编号被修改,那么子表中的部门也会相应的被修改
      -- 先删除之前的外键约束:
      alter table staff drop foreign key fk_staff_department;
      -- 重新添加外键约束:
      alter table staff add constraint fk_staff_department foreign key (department) references department (dno) on update cascade on delete cascade;
      -- on update cascade 与 on delete cascade; 
      -- 表示修改,与删除都设置为级联策略
      -- 那么部门表中,更改了部门编号,子表中部门编号就跟着自动修改,
      -- 要是删除了某个部门,那么这个部门的所有员工信息也都降被删除.
      • 策略3:set null 置空操作:主表数据被修改,那么子表关联的字段设置为空,比如父表中某个部门被删除,设置了set null后,子表中该部门的员工信息部门字段会被设置为null,如果不设置为set null的话,父表部门被删除,子表中该部门的员工信息也同时被删除
      -- 先删除之前的外键约束:
      alter table staff drop foreign key fk_staff_department;
      -- 重新添加外键约束:
      alter table staff add constraint fk_staff_department foreign key (department) references department (dno) on update set null on delete set null;
      -- on update set null  与  on delete set null;
      -- 表示修改,与删除都设置为set null策略
      -- 那么部门表中,更改了部门编号,子表中该部门员工的部门字段都被修改为null,
      -- 要是删除了某个部门,那么这个部门的所有员工部门字段都被修改为null.
    • 一般策略2与策略3搭配进行使用,修改的时候,级联进行修改,删除的时候set null

      -- 先删除之前的外键约束:
      alter table staff drop foreign key fk_staff_department;
      -- 重新添加外键约束:
      alter table staff add constraint fk_staff_department foreign key (department) references department (dno) on update cascade on delete set null;
      -- on update cascade on delete set null;
      -- 表示修改使用级联策略,删除使用set null策略
      -- 那那么部门表中,更改了部门编号,子表中部门编号就跟着自动修改,
      -- 要是删除了某个部门,那么这个部门的所有员工部门字段都被修改为null.
    展开全文
  • NK约束创建数据库时为某些字段上加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库管理系统会报错。 设置表中某字段的NK约束非常简单,查看帮助文档...
  • 完整性约束

    万次阅读 2011-04-18 14:05:00
    ">完整性约束数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不准确或不一致,那么该数据的完整性可能会受到破坏,从而给数据库本身的可靠性带来问题。为了维护数据库中数据的完整性,在...
  • 创建表设置属性的约束条件

    千次阅读 2015-01-12 08:44:48
    完整性约束条件 约束条件 说明 Primary key 中属性主键 Foreign key 该属性为外键是与之联系的某的主键 Not null 标志的属性不为空 un
  • 数据库04---数据库之完整性约束

    千次阅读 2020-04-08 00:45:43
    完整性约束 约束某一个字段 1. 无符号的 只和数字类型有关 int unsigned(unsigned这个关键字表示前面这个数字是无符号的) create table t10(id int unsigned); ······················...
  • MySQL完整性约束

    千次阅读 2019-09-12 11:38:49
    数据完整性约束是在和字段上强制执行的数据检验规则,为了防止不规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,主要是对空值和重复值的约束,使不...
  • Oracle实体完整性约束

    2021-04-05 22:07:33
    文章目录我的Oracle数据库学习笔记一 、数据完整性约束 的分类二 、如何实现完整性约束1. 主键约束 :2. 如何给设置主键?唯一约束1 唯一约束 : 唯一的,可空2 给中添加唯一约束主键约束与唯一约束的区别 ...
  • 完整性约束 的定义以及完整性约束的定义 定义列 定义计算列 定义主关键字(实体完整性约束) 定义外部关键字(参照完整性约束) 删除约束 、更新约束 定义普通约束(用户定义完整性) 级约束 主码 ...
  • mysql 完整性约束

    2016-01-09 11:26:30
     完整性约束是数据库系统必须遵守的约束,他限定了根据数据模型所构建的数据库的状态以及状态变化,以便维护数据库中数据的正确性、有效性和相容性,如果数据不正确,那么一开始就不能添加到中。下面来让我们盘
  • 完整性约束是对字段进行限制,从而符合该字段达到我们期望的效果比如字段含有默认值,不能是NULL等 直观点说:如果插入的数据不满足限制要求,数据库管理系统就拒绝执行操作 设置表的主键 主键能够标识中每条信息...
  • SQL 完整性约束

    千次阅读 2018-10-21 22:32:57
    完整性约束 1.掌握约束的主要作用; 2.掌握5中约束的使用形式; 3.理解约束的修改操作; 4.可以同坐数据字典查看约束信息;...提供定义完整性约束条件机制:在数据上定义规则,这些规则是数据库中的数据必须满足...
  • Oracle引用完整性约束

    2021-04-06 08:34:38
    文章目录我的Oracle数据库学习笔记一、创建两个引用完整性约束例: --让学生成绩中的学号与学生信息中的学号关联 alter table stuScore add constraint fk_studentinfo_stuId foreign key(stuId) references ...
  • SQL server完整性约束的操作

    千次阅读 2020-04-23 18:05:36
    【注】:完整性约束条件涉及到该的多个属性列时,则必须定义在级上,否则既可以定义在列级也可以定义在级。   实体完整性的操作 一、创建表时,可以规定实体完整性 在CREATE TABLE语句中使用PRIMARY KEY...
  • 数据库的完整性约束

    千次阅读 2017-01-25 18:14:00
    完整性约束是为了的数据的正确性!如果数据不正确,那么一开始就不能添加到中。 1 主键当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如...
  • Java 数据完整性约束

    千次阅读 2012-06-06 19:01:39
    数据完整性约束 主键约束 主键就是中的一列或多个列的一组,其值能唯一地标志中的每一行。通过定义PRIMARY KEY约束来创建主键,而且PRIMARY KEY约束中的列不能取空值。由于PRIMARY KEY约束能确保数据的唯一,...
  • SQL完整性约束

    千次阅读 2017-10-02 15:55:11
    完整性约束用于确定关系型数据库中数据的准确性和唯一性,在关系型数据库中,数据的完整性是通过引用完整性的概念实现的,而引用完整性具有如下的类型。一.主键约束主键约束是数据一个或多个用以实现记录唯一性的...
  • oracle完整性约束

    千次阅读 2013-04-03 07:36:03
    完整性约束   完整性约束用于增强数据的完整性,Oracle提供了5种完整性约束:  Check  NOT NULL  Unique  Primary  Foreign key  完整性约束是一种规则,不占用任何数据库空间。完整性约束...
  • MySQL数据库:完整性约束

    千次阅读 2016-10-27 17:20:37
    完整性约束是为了的数据的正确性!如果数据不正确,那么一开始就不能添加到中。主键当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如学生的...
  • 数据库 完整性约束定义

    千次阅读 2018-10-22 08:29:29
    1.check约束范围 --建表时定义性别取值为“男或女”默认为“男” --年龄在14到65之间(14,65) -- in (值1,值2,值3...值n) 属于值1到值n其中之一(详见聚集函数) create table Student( Sno Char(7) primary key,-...
  • MySQL数据完整性约束

    千次阅读 2019-01-09 18:29:22
    在MySQL中提供了多种完整性约束。 1、主键约束 主键可以是中的某一列,也可以是中的多个列所构成的一个组合;其中,由多个列组合而成的主键也称为复合主键。在MySQL中,主键列必须遵守以下规则。 (1)每一个...
  • 数据库 完整性约束

    千次阅读 2019-05-24 14:57:42
    完整性:是指中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。 参照完整性:是指两个的主关键字和外关键字的数据应一致,保证了之间的数据的一致性,防止了数据丢失或无意义的...
  • SQL基础6—完整性约束

    千次阅读 2019-08-16 21:02:26
    SQL完整性约束引言1.创建表时添加约束 ☆1)写法1...完整性约束:用于限制字段的值必须满足一定的条件,从而保证数据中的数据的一致性和完整性!!! 1.常见的约束: NOT NULL:非空 要求非空字段为必填项 DEFAUL...
  • 完整性约束

    万次阅读 2016-11-15 21:43:28
    数据完整性简介业务规则会指定一些条件和关系,它们要么必须始终为真,要么必须始终为假。例如,每个公司会定义其有关工资、 雇员人数、 库存跟踪,等方面的政策。保持数据的数据完整性很重要,它由数据库管理员或...
  • 用户定义完整性约束

    千次阅读 2020-03-31 22:40:15
    2.用户定义完整性约束: 用户定义的完整性规则,包括非空约束、自增约束、默认值约束等、check约束以及触发器约束,本次主要学习非空约束、自增约束、默认值约束,check约束以及触发器约束在这里暂时不做介绍。 ...
  • 撤销主码的完整性约束

    千次阅读 2013-08-07 16:54:55
    2.在表创建完成之后增加完整性约束 对应于1,撤销完整性约束 alter table employee drop primary key; 对应于2. alter table emloyee drop constraint PK_eno; PK_eno 为当初创建完整性约束时为该约束性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,934
精华内容 32,773
关键字:

创建表设置完整性约束