精华内容
下载资源
问答
  • 2019-03-18 21:21:43

    表和完整性约束

    • 表的定义以及完整性约束的定义
      • 定义列
      • 定义计算列
      • 定义主关键字(实体完整性约束)
      • 定义外部关键字(参照完整性约束)
        • 删除约束 、更新约束
      • 定义普通约束(用户定义完整性)
      • 表级约束

    主码

    主码(主关键字,PRIMARY KEY__PK),在码中选择的一个代表,被定义为主码
    主码的特点:
    1、主码value不得为空
    2、构成主码的每个字段不得重复
    主属性是构成码的属性
    主码属性是构成主码的属性

    外码

    外码(Foreign key__FK),设有关系表R和W,R中的某个字段FK与W中的主码PK对应,则FK成为W的外码。
    外码定义了两个表之间的约束关系,W为主表(被参照表),R为从表(参照表)。

    范式描述

    1.关键字
    2.语法概念
    3.元语言符号:[] {} |
    4.() 实际符号

    表的定义

    • 定义表时,约束条件(完整性约束)分为两种:
      • 对某个字段的约束,成为字段的完整性约束
      • 对整个表的约束,被称为整个表的完整性约束

    字段的完整性约束也可以定义成表的完整性约束

    • 一个表由若干列构成,在SQL Server中可以
      • 定义实列(简称列,column_definiton)
      • 定义虚列(即计算列,computed_column_definition)

    列的定义

    UNIQUE :唯一
    若一个字段定义了UNIQUE字段,该字段值不允许重复,但可以为多个null

    CHECK
    如:CHECK(grade>=0 AND grade<=100)

    DEFAULT
    设置默认值

    ON DELETE CASCADE / ON UPDATE CASCADE
    当被参照记录即被参照表被删除/修改时级联删除参照表即从表的记录。

    修改表结构

    • 修改表结构
      • 修改列定义
      • 增加新列(含计算列)
      • 增加表级约束
      • 删除列
      • 删除约束

    ALTER TABLE

    • 增加字段
    • 删除字段
    • 修改字段类型
    • 增加约束
    • 删除约束

    课程作业:

    USE 学校管理
    GO
    CREATE SCHEMA 学校
    GO
    CREATE TABLE 学校.院系(
    编号 INT PRIMARY KEY,
    名称 VARCHAR(20) NOT NULL UNIQUE,
    负责人 VARCHAR(10),
    办公地点 VARCHAR(20)
    )
    GO
    CREATE TABLE 学校.学生(
    学号 VARCHAR(8) PRIMARY KEY,
    姓名 VARCHAR(10) NOT NULL,
    院系 INT FOREIGN KEY REFERENCES 学校.院系(编号),
    性别 VARCHAR(2) CHECK (性别 IN ('男' ,'女') ),
    生源 VARCHAR(6),
    状态 VARCHAR(4) CHECK (状态 IN ('正常','留级','休学','退学') )
    )
    GO
    CREATE TABLE 学校.教师(
    教师编号 VARCHAR(8) PRIMARY KEY,
    姓名 VARCHAR(10) NOT NULL,
    性别 VARCHAR(2) CHECK(性别 IN ('男','女')),
    院系 INT FOREIGN KEY REFERENCES 学校.院系(编号),
    专业 VARCHAR(10),
    职称	VARCHAR(6) CHECK(职称 IN('教授','副教授','讲师','助教'))
    )
    GO
    CREATE TABLE 学校.课程(
    课程编号 VARCHAR(8) PRIMARY KEY,
    课程名称 VARCHAR(20) NOT NULL,
    责任教师 VARCHAR(8) FOREIGN KEY REFERENCES 学校.教师(教师编号),
    学时 INT NOT NULL,
    课程性质 VARCHAR(10) CHECK(课程性质 IN ('公共基础','专业基础','专业选修','任意选修'))
    )
    GO
    CREATE TABLE 学校.选课(
    学号 VARCHAR(8) FOREIGN KEY REFERENCES 学校.学生(学号),
    课程编号 VARCHAR(8) FOREIGN KEY REFERENCES 学校.课程(课程编号),
    考试成绩 INT CHECK(考试成绩>=0 AND 考试成绩<=100) DEFAULT NULL
    )
    
    ALTER TABLE 学校.学生
    ADD 平均成绩 INT DEFAULT NULL
    
    ALTER TABLE 学校.课程
    DROP COLUMN 学时
    
    ALTER TABLE 学校.课程
    ADD 学时 INT NOT NULL CHECK(学时%8=0)
    
    ALTER TABLE 学校.院系
    ALTER COLUMN 名称 VARCHAR(30)
    
    ALTER TABLE 学校.教师
    ADD 工资 NUMERIC(7,2)
    
    更多相关内容
  • 以及添加/修改/删除约束的方式一、约束类型在MySQL中,有如下几种约束:(1) NOT NULL:指示某列不能存储空值(2) UNIQUE:保证某列的每行必须有唯一的值(3) PRIMARY KEY:指示某一列为表的主码,是非空且唯一的(4) ...

    本文将简单介绍几种常见的约束类型,以及添加/修改/删除约束的方式

    一、约束类型

    在MySQL中,有如下几种约束:

    (1) NOT NULL:指示某列不能存储空值

    (2) UNIQUE:保证某列的每行必须有唯一的值

    (3) PRIMARY KEY:指示某一列为表的主码,是非空且唯一的

    (4) CHECK:保证列中的值符合指定的条件

    (5) DEFAULT:规定没有给列赋值时的默认值

    (6) FORIGN KEY:保证列中的数据必须来源于另一个表的某一列(参照完整性)

    二、添加约束

    1、建表时添加约束

    例如 在新建instructor表时

    设置ID为主码,name有非空约束,dept_name有默认值

    并设置检查约束salary>0

    create table instructor{

    ID varchar(5) PRIMARY KEY,

    name varchar(20) NOT NULL,

    dept_name varchar(20) DEFAULT ‘Physcis‘,

    salary decimal(8,2),

    CHECK(salary>0)

    };

    2、表结构已存在时添加约束

    有2种写法:

    (1)仅为某一列添加约束

    //添加NOT NULL约束:用第(2)种写法

    //添加UNIQUE约束

    alter table table_name

    add UNIQUE(column_name);

    //添加PRIMARY KEY约束

    alter table table_name

    add PRIMARY KEY(column_name);

    //添加DEFAULT约束

    alter table table_name

    add CHECK(指定条件);

    //添加DEFAULT约束

    alter table table_name

    alter column_name set DEFAULT ‘xxx‘;

    (2)更改(重写)某一列的数据类型、约束类型(推荐)

    alter table table_name

    modify column column_name data_type constraint;

    三、修改约束

    上述提到的alter+modify的写法 同样可以用于修改约束类型

    例如 在instructor表中 修改dept_name的默认值为‘Music‘

    alter table instructor

    modify column dept_name varchar(20) DEFAULT ‘Music‘;

    四、删除约束

    //删除NOT NULL约束:用alter+modify

    //删除PRIMARY KEY

    alter table table_name

    drop PRIMARY KEY;

    //删除DEFAULT约束

    alter table table_name

    alter column_name drop DEFAULT;

    当需要删除UNIQUE或CHECK约束时

    我们需要查看建表语句 show create table table_name \G

    来获取约束的别名

    例如 已知在student表中

    对 tot_credit列有CHECK约束 (tot_cred>=0)

    797eacea986afa7093df77f23761e1ce.png

    如上图所示,这个CHECK约束的别名为‘student_chk_1‘

    接下来就可以删除这个约束了

    alter table student

    drop CHECK student_chk_1;

    我们可以用类似的方式 来删除UNIQUE约束

    alter table table_name

    drop index constraint_name;

    原文:https://www.cnblogs.com/baebae996/p/12919391.html

    展开全文
  • 约束3. 多表之间的关系4. 范式5. 数据库的备份和还原DQL:查询语句1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的。* DESC:降序。* ...

    1. DQL:查询语句

    1. 排序查询

    2. 聚合函数

    3. 分组查询

    4. 分页查询

    2. 约束

    3. 多表之间的关系

    4. 范式

    5. 数据库的备份和还原

    DQL:查询语句

    1. 排序查询

    * 语法:order by 子句

    * order by 排序字段1 排序方式1 , 排序字段2 排序方式2...

    * 排序方式:

    * ASC:升序,默认的。

    * DESC:降序。

    * 注意:

    * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。

    2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。

    1. count:计算个数

    1. 一般选择非空的列:主键

    2. count(*)

    2. max:计算最大值

    3. min:计算最小值

    4. sum:计算和

    5. avg:计算平均值

    * 注意:聚合函数的计算,排除null值。

    解决方案:

    1. 选择不包含非空的列进行计算

    2. IFNULL函数

    3. 分组查询:

    1. 语法:group by 分组字段;

    2. 注意:

    1. 分组之后查询的字段:分组字段、聚合函数

    2. where 和 having 的区别?

    1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来

    2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。

    -- 按照性别分组。分别查询男、女同学的平均分

    SELECT sex , AVG(math) FROM student GROUP BY sex;

    -- 按照性别分组。分别查询男、女同学的平均分,人数

    SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

    -- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组

    SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

    -- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

    SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;

    SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

    4. 分页查询

    1. 语法:limit 开始的索引,每页查询的条数;

    2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数

    -- 每页显示3条记录

    SELECT * FROM student LIMIT 0,3; -- 第1页

    SELECT * FROM student LIMIT 3,3; -- 第2页

    SELECT * FROM student LIMIT 6,3; -- 第3页

    3. limit 是一个MySQL"方言"

    约束

    * 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。

    * 分类:

    1. 主键约束:primary key

    2. 非空约束:not null

    3. 唯一约束:unique

    4. 外键约束:foreign key

    * 非空约束:not null,值不能为null

    1. 创建表时添加约束

    CREATE TABLE stu(

    id INT,

    NAME VARCHAR(20) NOT NULL -- name为非空

    );

    2. 创建表完后,添加非空约束

    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

    3. 删除name的非空约束

    ALTER TABLE stu MODIFY NAME VARCHAR(20);

    * 唯一约束:unique,值不能重复

    1. 创建表时,添加唯一约束

    CREATE TABLE stu(

    id INT,

    phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束

    );

    * 注意mysql中,唯一约束限定的列的值可以有多个null

    2. 删除唯一约束

    ALTER TABLE stu DROP INDEX phone_number;

    3. 在创建表后,添加唯一约束

    ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

    * 主键约束:primary key。

    1. 注意:

    1. 含义:非空且唯一

    2. 一张表只能有一个字段为主键

    3. 主键就是表中记录的唯一标识

    2. 在创建表时,添加主键约束

    create table stu(

    id int primary key,-- 给id添加主键约束

    name varchar(20)

    );

    3. 删除主键

    -- 错误 alter table stu modify id int ;

    ALTER TABLE stu DROP PRIMARY KEY;

    4. 创建完表后,添加主键

    ALTER TABLE stu MODIFY id INT PRIMARY KEY;

    5. 自动增长:

    1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

    2. 在创建表时,添加主键约束,并且完成主键自增长

    create table stu(

    id int primary key auto_increment,-- 给id添加主键约束

    name varchar(20)

    );

    3. 删除自动增长

    ALTER TABLE stu MODIFY id INT;

    4. 添加自动增长

    ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

    * 外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。

    1. 在创建表时,可以添加外键

    * 语法:

    create table 表名(

    ....

    外键列

    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)

    );

    2. 删除外键

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

    3. 创建表之后,添加外键

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

    4. 级联操作

    1. 添加级联操作

    语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称

    FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;

    2. 分类:

    1. 级联更新:ON UPDATE CASCADE

    2. 级联删除:ON DELETE CASCADE

    数据库的设计

    1. 多表之间的关系

    1. 分类:

    1. 一对一(了解):

    * 如:人和身份证

    * 分析:一个人只有一个身份证,一个身份证只能对应一个人

    2. 一对多(多对一):

    * 如:部门和员工

    * 分析:一个部门有多个员工,一个员工只能对应一个部门

    3. 多对多:

    * 如:学生和课程

    * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择

    2. 实现关系:

    1. 一对多(多对一):

    * 如:部门和员工

    * 实现方式:在多的一方建立外键,指向一的一方的主键。

    2. 多对多:

    * 如:学生和课程

    * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键

    3. 一对一(了解):

    * 如:人和身份证

    * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

    3. 案例

    -- 创建旅游线路分类表 tab_category

    -- cid 旅游线路分类主键,自动增长

    -- cname 旅游线路分类名称非空,唯一,字符串 100

    CREATE TABLE tab_category (

    cid INT PRIMARY KEY AUTO_INCREMENT,

    cname VARCHAR(100) NOT NULL UNIQUE

    );

    -- 创建旅游线路表 tab_route

    /*

    rid 旅游线路主键,自动增长

    rname 旅游线路名称非空,唯一,字符串 100

    price 价格

    rdate 上架时间,日期类型

    cid 外键,所属分类

    */

    CREATE TABLE tab_route(

    rid INT PRIMARY KEY AUTO_INCREMENT,

    rname VARCHAR(100) NOT NULL UNIQUE,

    price DOUBLE,

    rdate DATE,

    cid INT,

    FOREIGN KEY (cid) REFERENCES tab_category(cid)

    );

    /*创建用户表 tab_user

    uid 用户主键,自增长

    username 用户名长度 100,唯一,非空

    password 密码长度 30,非空

    name 真实姓名长度 100

    birthday 生日

    sex 性别,定长字符串 1

    telephone 手机号,字符串 11

    email 邮箱,字符串长度 100

    */

    CREATE TABLE tab_user (

    uid INT PRIMARY KEY AUTO_INCREMENT,

    username VARCHAR(100) UNIQUE NOT NULL,

    PASSWORD VARCHAR(30) NOT NULL,

    NAME VARCHAR(100),

    birthday DATE,

    sex CHAR(1) DEFAULT '男',

    telephone VARCHAR(11),

    email VARCHAR(100)

    );

    /*

    创建收藏表 tab_favorite

    rid 旅游线路 id,外键

    date 收藏时间

    uid 用户 id,外键

    rid 和 uid 不能重复,设置复合主键,同一个用户不能收藏同一个线路两次

    */

    CREATE TABLE tab_favorite (

    rid INT, -- 线路id

    DATE DATETIME,

    uid INT, -- 用户id

    -- 创建复合主键

    PRIMARY KEY(rid,uid), -- 联合主键

    FOREIGN KEY (rid) REFERENCES tab_route(rid),

    FOREIGN KEY(uid) REFERENCES tab_user(uid)

    );

    2. 数据库设计的范式

    * 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

    * 分类:

    1. 第一范式(1NF):每一列都是不可分割的原子数据项

    2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)

    * 几个概念:

    1. 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A

    例如:学号-->姓名。 (学号,课程名称) --> 分数

    2. 完全函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。

    例如:(学号,课程名称) --> 分数

    3. 部分函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。

    例如:(学号,课程名称) -- > 姓名

    4. 传递函数依赖:A-->B, B -- >C . 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A

    例如:学号-->系名,系名-->系主任

    5. 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码

    例如:该表中码为:(学号,课程名称)

    * 主属性:码属性组中的所有属性

    * 非主属性:除过码属性组的属性

    3. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

    数据库的备份和还原

    1. 命令行:

    * 语法:

    * 备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径

    * 还原:

    1. 登录数据库

    2. 创建数据库

    3. 使用数据库

    4. 执行文件。source 文件路径

    2. 图形化工具:

    展开全文
  • 本文所有操作都是基于mysql8.0执行的,针对mysql数据库创建表之后的约束语句的添加、删除、修改 一、实体完整性 创建表时定义表的主码 创建表后定义或修改表的主码 参照完整性 创建表时定义外 创建表后定义外...

    本文所有操作都是基于mysql8.0执行的,针对mysql数据库创建表之后的约束语句的添加、删除、修改

    查看建表信息

    使用语句

    show create table 表名

    可以查看建表信息

    实体完整性

    创建表时定义实体完整性

    即定义主码,只需要在那个属性背后加一个primary key
    举例如下:

    CREATE TABLE student
    (
        sno CHAR(10) PRIMARY KEY,
        sname CHAR(10),
        sage SMALLINT
    );
    

    创建表student,并将sno属性设置为主码
    多候选码,举例如下:

    CREATE TABLE SC
    (
        sno CHAR(10) NOT NULL,
        cno CHAR(10) NOT NULL,
        grade SMALLINT,
        PRIMARY KEY (sno,cno)
       );
    

    创建表后添加主码

    假设我们已经建立好了一个表,但是我们建表时忘记设置了主码
    可使用命令如下来添加主码

    alter table 表名 ADD CONSTRAINT 约束名 PRIMARY KEY(属性名);
    约束名可以随便取

    举例说明,我们将表course中的属性cno添加为了主码约束

    ALTER TABLE course ADD CONSTRAINT C1 PRIMARY KEY(cno);
    

    创建表以后删除主码

    alter table 表名 DROP CONSTRAINT;

    参照完整性

    即定义外码

    建表时定义外码

    实例如下:

    CREATE TABLE SC
    (
        sno CHAR(10) NOT NULL,
        cno CHAR(10) NOT NULL,
        grade SMALLINT,
        FOREIGN key (sno) REFERENCES student(sno) ,
        FOREIGN KEY (cno) REFERENCES course(cno) 
    );
    

    表SC中的属性sno、cno为外码,分别对应表student和course中的对应属性

    建表后定义外码

    使用命令:

    ALTER TABLE 表名1 ADD CONSTRAINT 约束名 FOREIGN KEY (属性名1) REFERENCES 表名2(属性名2);
    约束名可以随便取

    举例如下:

    ALTER TABLE course ADD CONSTRAINT c2 FOREIGN KEY (cpno) REFERENCES course(cno); 
    

    查看建表信息:
    查看定义的外码

    删除外码

    使用命令:

    ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

    如果是建表时定义的外码,不知道约束名的话,可以使用命令"show create table 表名;"查看外码约束名。

    同时因为在mysql8.0中外码还会以索引的形式存在,所以还要删除索引
    使用命令:

    DROP INDEX 约束名 ON 表名;

    用户自定义完整性

    以下用户完整性定义都是在建表后定义的,因为建表时定义不是很难,表建好后再定义,有些坑,所以就写一下,避免大家踩坑。

    NOT NULL/NULL

    添加not null,命令如下:

    ALTER TABLE 表名 MODIFY 属性那一行的信息 NOT NULL;

    举例:

    ALTER TABLE student MODIFY sname char(10) NOT NULL;
    

    删除同理,只要重新执行上面语句,去掉NULL或者NOT NULL就好了。

    DEFAULT

    命令如下:

    ALTER TABLE 表名 MODIFY 属性那一行的信息 default;
    举例:

    ALTER TABLE student MODIFY sname char(10) NOT NULL DEFAULT 'SSS';
    

    删除同理,只要重新执行上面语句,去掉default就好了。

    UNIQUE

    命令如下:

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(属性名);

    举例:

    ALTER TABLE student ADD CONSTRAINT S1 UNIQUE(sname);
    

    删除命令如下:

    DROP INDEX 约束名 ON 表名;

    接上面的例子举例:

    DROP INDEX S1 ON student;
    

    CHECK

    添加命令如下:

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(约束信息);

    举例:

    ALTER TABLE student ADD CONSTRAINT S1 CHECK(sage<25);
    

    删除命令如下:

    ALTER TABLE 表名 DROP CHECK 约束名;

    接上面例子举例:

    ALTER TABLE student DROP CHECK S1;
    

    以上所有sql语句都是测试过的,应该问题不大。使用的mysql版本为8.0

    展开全文
  • mysql约束课堂笔记

    千次阅读 2021-01-19 17:42:06
    约束3. 多表之间的关系4. 范式5. 数据库的备份和还原# DQL:查询语句1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的。* DESC:降序。*...
  • http://hi.baidu.com/wangzhiqing999/item/e74b2be28be445a3c00d7528MySQL 外键约束-- 创建测试表. ID 是主键.CREATE TABLE test_main (id INT,value VARCHAR(10),PRIMARY KEY(id));-- 创建测试子表.CREATE TABLE ...
  • 删除外键约束

    千次阅读 2019-06-05 10:17:26
    删除外键约束::写了这句就可以删除外键约束了 alter table sys_targetprimecostdetail drop foreign key FK_Reference_106 可以查看到其他表里面用到这张表的主键当外键在那张表的名字 Select * from ...
  • 使用sql语句创建和删除约束约束类型主键约束(Primary Key constraint) --:要求主键列数据唯一,并且不允许为空。唯一约束(Unique constraint) --:要求该列唯一,允许为空,但只能出现一个空值。检查约束(Check ...
  • 再基于源卷积的生成矩阵与校验矩阵间的约束关系,求出了源卷积的最佳生成多项式和删除模式,并提出了码字同步的方法,最终按识别出来的参数构建盲解码模型,实现了删除卷积的盲解码。仿真结果表明,在误码率...
  • SQL删除外键约束

    万次阅读 2019-06-14 02:18:23
    ...执行如下SQL语句删除即可。 1 alter table 表名 drop constraint 外键约束名       转载于:https://my.oschina.net/weisenz/blog/200655
  • 最后介绍了在约束命名的条件下,如何删除约束。 1.为约束起命名时,用到的关键字CONSTRAINT。 2.需要注意的是,在同一数据库中约束的名字是不允许重复的,即使是在不同的表中。也就是说,除非你把约束删除,否则不...
  • 数据库中删除表中主键约束时出现错误的原因及解决方法 #问题描述: 今天在对MYSQL数据库进行基本操作——删除表中的主键约束时发现不能删除表中的主键约束: 下面是三张表之间的关系: 原因 个人理解外键约束是表...
  • alter table 表名 add CONSTRAINT 约束名 foreign key (外字段名) references 被参照表的表名(被参照主码名); 如果添加约束的时候失败,可能的原因是:外字段的值 与 被参照主码的值 不一致。 解决办法:1...
  • Mysql:外码约束

    千次阅读 2019-12-11 09:34:46
    添加主键约束: alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段); 添加外键约束: alter table 从表 add constraint 外键(形如:FK_从表_表) foreign ...删除主键约束: al...
  • MySQL 数据完整性

    千次阅读 2021-02-04 19:39:19
    数据库实验回顾实体完整性实体完整性即主码的属性不能为空。而主码就可保证元组是不重复的,即码值是不能重复的。参照完整性参照完整性保证外的值要么是被参照关系中的码值,要么取空值。用户自定义完整性可以...
  • SQL-基础 约束(添加-删除外键)

    千次阅读 2022-03-13 21:19:33
    分类:非空约束(not null),唯一约束(unique),主键约束(primary key),默认约束(default),检查约束(check),外键约束(foreign key)。 二.运用 创建约束表:(也可以直接在创建新表目录,选择创建约束,不需要写...
  • MySQL通过外键约束实现数据库的参照完整性,外键约束条件可在创建外键时指定,table的存储引擎... - - 限制,指的是如果子表引用父表的某个字段的值,那么不允许直接删除父表的该值。 (2)cascade方式:在父表上u...
  • 假设现在需要在联合主键中增加一个字段SO_COMPANY_CDE,刚开始的做法是删除主键约束,再重新创建联合主键 alter table CBS_AG_CNTR_MTHD drop CONSTRAINT PK_CBS_AG_CNTR_MTHD cascade; --确认约束和索引的删除...
  • SQLServer 2012 主键约束(定义主键、删除主键)

    万次阅读 多人点赞 2019-04-21 18:18:00
    文章目录定义主键使用SSMS工具定义主键使用SQL方式定义主键方式一:在创建数据表的时候定义主键方式二:修改数据表定义主键删除主键使用SSMS工具删除主键方式一:在对象资源管理器中删除主键方式二:在表设计器中...
  • 解决外键约束与触发器冲突问题 实验题目 题目六: 药品(编号,名称,价格,厂商) 处方(药品编号,数量,医生编号) 医生 (编号,姓名,科室,职称) 建立药品的delete 触发器,只有当此药品品没有人买时才可...
  • 外键约束无法删除的处理方法

    千次阅读 2020-05-20 19:51:02
    一、报错: Cannot delete or update a parent row: a foreign key constraint fails (`salarycode`.`sys_role_user`, CONSTRAINT `sys_role_user_ibfk_2` FOREIGN KEY (`uid...2、执行删除语句(以下是删除用户类型为3
  • MySQL数据库删除数据(有外键约束

    千次阅读 2019-04-01 09:57:00
    在MySQL中删除一张表或一条数据的时候,出现有外键约束的问题,于是就去查了下方法: SELECT @@FOREIGN_KEY_CHECKS; 查询当前外键约束是否打开 SET FOREIGN_KEY_CHECKS=1; 设置为1的时候外键约束是打开的,...
  • 能唯一标识关系中元组的一个属性或属性集性质:唯一性,最小性二、关系的主码和外码主码(Primary Key):从多个候选中选择一个作为查询、插入或删除元组的操作变量,被选用的候选称为关系(主键,主码,关系键...
  • MySQL 如何删除有外键约束的表数据

    万次阅读 2017-12-07 12:13:11
    今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。SET FOREIGN_KEY_CHECKS=0;删除,更新数据,恢复外键SET FOREIGN_KEY_CHECKS=1;查看当前 ...
  • 添加和删除外键约束

    千次阅读 2017-09-22 14:23:35
    输入:constraint 外键名 foreign key(列名) references 表名(主键列); 2、添加外键 输入:alter table tableName add constraint 外键名 foreign key(列名) references 表名(主键列); 注意事项: ①父表和从表...
  • 关系的候选主码、外以及关系的完整性

    万次阅读 多人点赞 2020-05-26 17:34:40
    定义:从多个候选键中选择一个作为查询、插入或删除元组的操作变量,被选用的候选称为关系(主键,主码,关系键,关键字)。 属性和非属性 属性:包含在主码中的各个属性称为属性 非属性:不包含在...
  • 主码3. 外关系的完整性总结 关系的 1. 候选 候选是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如: 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,282
精华内容 38,512
关键字:

删除主码约束

友情链接: cascade4017.rar