精华内容
下载资源
问答
  • 删除约束 、更新约束 定义普通约束(用户定义完整性) 表级约束 主码 主码关键字,PRIMARY KEY__PK),在中选择的一个代表,被定义为主码 主码的特点: 1、主码value不得为空 2、构成主码的每个字段不得...

    表和完整性约束

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

    主码

    主码(主关键字,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)
    
    展开全文
  • 撤销主码的完整性约束

    千次阅读 2013-08-07 16:54:55
    主码完整性约束的设置有两种方法: 1.在定义数据项的时候就声明它为主码 2.在表创建完成之后增加完整性约束 对应于1,撤销完整性约束 alter table employee drop primary key; 对应于2. alter table ...

    主码完整性约束的设置有两种方法:

    1.在定义数据项的时候就声明它为主码

    2.在表创建完成之后增加完整性约束


    对应于1,撤销完整性约束

    alter table employee

    drop primary key;

    对应于2.

    alter table emloyee

    drop constraint PK_eno;

    PK_eno 为当初创建完整性约束时为该约束性定义的名字

    展开全文
  • alter table 表名 add CONSTRAINT 约束名 foreign key (外字段名) references 被参照表的表名(被参照主码名); 如果添加约束的时候失败,可能的原因是:外字段的值 与 被参照主码的值 不一致。 解决办法:1...

    1. 删除表级约束

    alter table 表名 drop foreign key 外码名;

    2. 添加表级约束

    alter table 表名 add CONSTRAINT 约束名 foreign key (外码字段名) references 被参照表的表名(被参照主码名);

    如果添加约束的时候失败,可能的原因是:外码字段的值   与   被参照主码的值    不一致。

    解决办法:1. 让有冲突的值一致    2. 清空两张表中任意一个表。

    展开全文
  • 删除外键约束

    千次阅读 2019-06-05 10:17:26
    删除外键约束::写了这句就可以删除外键约束了 alter table sys_targetprimecostdetail drop foreign key FK_Reference_106 可以查看到其他表里面用到这张表的主键当外键在那张表的名字 Select * from ...

    删除外键约束::写了这句就可以删除外键约束了

    alter table sys_targetprimecostdetail drop foreign key FK_Reference_106

     

     

    可以查看到其他表里面用到这张表的主键当外键在那张表的名字

    Select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where REFERENCED_TABLE_NAME='sys_targetprimecostdetail'

     

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

    2019-12-11 09:34:46
    添加主键约束: alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段); 添加外键约束: alter table 从表 add constraint 外键(形如:FK_从表_表) foreign ...删除主键约束: al...
  • Sqlserver 外键约束

    千次阅读 2019-11-01 10:32:52
    外键约束 的目的 我感觉最有用的还是 级联删除 主键删除了 子键所有数据都被删除 设置 俩个表 一个TJ表 一个TS表 TS 为表 里面存人物信息 TJ存分数信息 主键设置 不在阐述 在我上面博客里有 右击子表的...
  • 前言 ´・ᴗ・` 组合主键 组合唯一键 上一节的问题 外键补充 添加约束 删除约束 修改约束 总结 ´◡`
  • MySQL 如何删除有外键约束的表数据

    千次阅读 2019-05-18 17:32:24
    MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET...
  • SQL Server 添加与删除主键约束

    千次阅读 2020-01-07 23:27:12
    SQL Server 添加与删除主键约束
  • 1、创建数据库,创建主键约束; --CREATE RELATION TABLE AND ADD PRIMARY KEY CREATE TABLE CATEGORY ( CATEGORYID VARCHAR2(10), ...因为删除约束条件需要约束的名称,这样虽然有主键约束但是没有约束名称,
  • mysql如何处理外码约束

    千次阅读 2019-07-21 06:49:32
    MySQL 外键约束 -- 创建测试表. ID 是主键.CREATE TABLE test_main ( id INT, value VARCHAR(10), PRIMARY KEY(id));-- 创建测试子表.CREATE TABLE ...
  • 执行以下sql可以生成禁止、启用、删除约束脚本,然后执行即可: 禁用所有外键约束 select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_...
  • 如何删除表的外键约束

    千次阅读 2020-08-02 14:43:16
    删除表的外键约束 我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,...
  • SQL删除外键约束

    万次阅读 2019-06-14 02:18:23
    ...执行如下SQL语句删除即可。 1 alter table 表名 drop constraint 外键约束名       转载于:https://my.oschina.net/weisenz/blog/200655
  • 添加主键 给学生表添加主键:学号。语句如下: ...班级编号是班级表的主键,该外键约束命名为fk_学生,语句如下: ALTER TABLE 学生 ADD CONSTRAINT fk_学生 FOREIGN KEY(班级编号) REFERENCES 班级;...
  • 各个数据库的约束删除

    千次阅读 2019-06-20 20:19:19
    1、sql server中删除约束的语句是: alter table 表名 drop constraint 约束名 sp_helpconstraint 表名 找到数据表中的所有列的约束 2、oracle中删除约束的语句: 先找到表的约束名称,执行: select * from user_...
  • PostgreSQL查询约束和创建删除约束

    千次阅读 2020-04-19 14:58:40
    查询约束constraint SELECT tc.constraint_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name, tc.is_deferrable,tc.initial...
  • MySQL数据库删除数据(有外键约束

    千次阅读 2018-04-09 16:17:05
    在MySQL中删除一张表或一条数据的时候,出现有外键约束的问题,于是就去查了下方法:SELECT @@FOREIGN_KEY_CHECKS; 查询当前外键约束是否打开 SET FOREIGN_KEY_CHECKS=1; 设置为1的时候外键约束是打开的,设置为0的...
  • 一、问题 现在很多系统都不允许真正删除数据库中的数据,而是通过引入删除标记字段的方式进行假删除,...但是逻辑删除会面临一个违反唯一约束的问题。比如一个商品表: create table goods ( id bigint primary...
  • Q:删除主表记录(子表外键存在下),3种删除方式? A:①默认删除(default) ②级联删除 ③置空删除。具体操作见下文 表和子表的概念: 如果表中定义了外键约束,那么该表通常被称为子表,例如下文的test_...
  • 表grade,和表stu具有外键约束,数据表grade就不能随便删除数据 ,这时候就用触发器解决此类问题,即使有外键关联,也要删除。  --级联删除是指在建立外键约束时通过on delete cascade子句设置,这样在删除父表数据时...
  • 比如有一个表存放用户信息 一个表存放留言信息 其中定义外键为用户的id 当要删除用户的时候 怎么用JDBC来实现删除用户以及他对应的留言。
  • MySQL删除表的时候忽略外键约束

    千次阅读 2018-03-19 10:46:49
    MySQL删除表的时候忽略外键约束
  • alter table distributeInfo drop constraint FK_...2.删除;3修改。) flag int not null default(0), addTime datetime not null default(getdate()),--数据写入时间(默认值为数据写入数据库的时间now()。) )
  • 添加和删除外键约束

    千次阅读 2017-09-22 14:23:35
    输入:constraint 外键名 foreign key(列名) references 表名(主键列); 2、添加外键 输入:alter table tableName add constraint 外键名 foreign key(列名) references 表名(主键列); 注意事项: ①父表和从表...
  • 今天突然发现客户表里面姓名为空的记录竟然有13万之多,日期几乎都是5月31日进来的,在原始数据...一条delete语句下去,一开始是外间约束错误,然后加上5月31日这个条件就不会了,但是半个小时都能没能删除这些垃...

空空如也

空空如也

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

删除主码约束