mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...

数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束

数据库:唯一性约束

所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。比方说,你可以用车辆识别代号(VIN)作为汽车(Automobile)数据表的替代键,在汽车数据表里,主键是汽车识别号(Automobile Identification),这是一种由系统自动生成的ID。你可以在汽车表内对VIN施加唯一性约束,同时再创建一个需要VIN的表。在这个新表内可以声明外键指向汽车表。这样,只要汽车表内有VIN输入数据库就会检验VIN输入结果。这就是保证数据库内数据完整性的另一种有效的措施。

create table parent

(parent_id int not null,      -- Primary key

parent_alternate_key int not null,     -- Alternate key

parent_col1 int null,

parent_col2 int null,

constraint pk_parent_id primary key (parent_id),

constraint ak_parent_alternate_key unique_

(parent_id, parent_alternate_key)

使用约束:

create table child2

(child2_parent_id int not null,     -- Primary key/Foreign key

child2_id int not null,     -- Primary key

child2_col1 int null,

child2_parent_alternate_key int not null,  -- Foreign key

constraint pk_child2 primary key (child2_parent_id, child2_id),

constraint fk_child2_parent foreign key (child2_parent_id)

references dbo.parent(parent_id),

constraint fk_pk_ak_child2_parent foreign key _

(child2_parent_id, child2_parent_alternate_key) _

references dbo.parent(parent_id, parent_alternate_key)

primary key 与UNIQUE的区别

1.一个基本表中只能定义一个primary key,但可以定义多个UNIQUE的约束

2.指定primary key的一个列或多个列的组合都不能为NULL,而UNIQUE所约束的唯一键则允许为空

3.不能为一个列或多个列既定义primary key,又定义UNIQUE约束

MYSQL目前不支持外键,其理由如下:

1.外键使生活更复杂,因为外键的定义必须存储在一个数据库中并且实现他们将破坏使用能被移动、拷贝和删除文件的全部“好方法”。

2.速度影响对INSERT和UPDATE语句是可怕的,并且在这种情况下几乎所有的FOREIGN KEY检查都是无用的,因为不管怎样你通常以正确的顺序在正确的表中插入记录。

3.当更新一张表时,也有在许多表上保存锁的需求,因为副作用可以串联通过全部数据库。首先从一张表中删除记录并且随后从其他表中删除他们,这更快。

4.你再也不可以通过做一个全面的表删除并随后恢复所有的记录的方法来恢复一张表(从新来源或从一个备份)。

5.如果你有外键,你不能倾倒和恢复表,除非你以一个非常特定的做这些。

6.很容易做一个“允许的”的循环定义使得不可能用一个单个create语句重建每一个表,就算定义可行又可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle自定义类型

Oracle自定义类型可以通过type/create type来声明或者创建 一,四种创建方式 1.1,使用create type创建object类型 create or replace type obj_type as object(id number,name varchar2(50 byte),birthday date); 1.2,使用create type创建…

Oracle/mysql查询语句的执行过程

执行顺序 from on join/pivot/unpivot(mysql没有pivot和unpivot) where group by having select distinct order by limit&#xff08;oralce没有&#xff09; 书写顺序 select distinct <select_list> from <left_table> <join_type>join <righ…

mysql定时sql脚本_定时执行的SQL脚本

因为要同步一个表&#xff0c;所以每天要同步一次数据&#xff0c;但是对SQL不是精通的我&#xff0c;为了测试写了一段代码来测试定时功能创建一个存储过程&#xff0c;是用来插数据的&#xff0c;没有输出和输出参数create or replace procedure temp_pro asbegininsert into…

mysql xml语句_Mysql语句

xml文件转义字符处理(1)(2)直接写转义后的字符1、mysql里批量修改表内某个字段内的部分数据UPDATE inventory_stockSET batchno REPLACE(batchno,-20-201901,-50-2019)2、ON DUPLICATE KEY UPDATE根据主键判断是新增还是修改(也可以有两个或多个主键)INSERT INTO TABLE (a,c) …

destoon网站mysql分表_destoon : 常用数据库操作

destoon在初始化系统后系统会自动连接数据库&#xff0c;并将数据库操作对象保存在$db。对于数据库操作方法参考include/db_mysql.class.php函数原型&#xff0c;我来写几个常用数据库操作。1、读取单条信息$S $db->get_one("SELECT * FROM {$DT_PRE}table WHERE xxxy…

delphi7 mysql控件_Delphi7连接MySql数据库-DBGrid控件显示数据

一个简单的Delphi7小程序&#xff0c;使用MySql数据库做简单查询&#xff0c;用DBGrid控件显示结果&#xff0c;实现过程如下&#xff1a;(1)在MySql中新建demouser表&#xff0c;插入记录用于测试。(2)在Delphi7中新建项目。(3)在From中添加组件。组件Panel&#xff1a;pnl1组…

for循环false 终止 python_python3.5.1给用户3次无效的尝试,然后终止pgm(Simple FOR循环)...

我需要帮助(新生-2周)。我想得到这段代码可能的最微小的变化&#xff0c;允许用户3次在程序中输入错误的值。输入错误值3次后&#xff0c;程序应终止。唯一的要求是代码必须包含FOR循环。我不知道它是需要一个FOR循环还是3个FOR循环(每次转换一个)。我尝试了很多种方案&#xf…

mysql何时会走索引

访问类型&#xff0c;这里只列出最常见的6种类型 all,index,range,ref,eq_ref&#xff0c;const mysql中explain的type的解释_dennis211的博客-CSDN博客_explain type 使用不同的运算符时访问类型不一样&#xff1a; !、not in、<>、>、<、in(多个值)、or、bet…

mysql数据库唯一性_在MySQL数据库中添加唯一性约束,范围可能吗?

我有一个使用MySQL的Rails应用程序。我在两个模型之间有一个has_many :through关联&#xff0c;如下所述&#xff1a;class Category < ActiveRecord::Basehas_many :category_pairingshas_many :dishes, through: :category_pairings, :inverse_of > :categoriesendclas…

filtic函数 matlab_matlab filtic 函数应用 filter 解差分方程 dft 函数

matlab filtic 函数应用 filter 解差分方程 dft 函数一、 解差分方程说明都在代码注释里面了%这里要利用filtic函数 为滤波器的直接II型实现选择初始条件%求解查分方程 y(n) - 0.4y(n-1) - 0.45y(n-2) 0.45x(n) 0.4x(n-1) - x(n-2)%y(-1) 0 y(-2) 1 x(-1) 1 x(-2) 2%x(n)…

rabbitmq进阶一

上一篇文章有讲到rabbitmq的安装、web管理端和springboot简单集成rabbitmq 本文重点介绍rabbitmq相关api的使用 按照官网常用的五种模式的顺序&#xff1a;HelloWorld、Work queues、Publish/Subscribe、Routing、Topics 模式简单介绍 HelloWorld 一个生产者&#xff0c;一…

mysql 相关搜索_MySQL单词搜索相关度排名

一个单词搜索的相关度排名,这个例子演示了一个单词搜索的相关度排名计算。mysql> CREATE TABLE articles (-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,-> title VARCHAR(200),-> body TEXT,-> FULLTEXT (title,body)-> ) ENGINEInnoDB;Query O…

IDEA使用总结

idea中使用tomcat IntelliJ IDEA配置Tomcat&#xff08;完整版图文教程&#xff09;_猿Bug的博客-CSDN博客_intellij tomcat配置 用上面的方式发现缺少文件&#xff0c;在edit configuration页面选择before lanuch前选择Run maven goal package

mysql一直copying to tmp table_mysql提示Copying to tmp table on disk

网站运行的慢了&#xff0c;查找原因是Copying to tmp table on disk那怎么解决这个问题呢解决一例最近常常碰到网站慢的情况&#xff0c;登陆到后台&#xff0c;查询一下 /opt/mysql/bin/mysqladmin processlist;发现一个查询状态为&#xff1a; Copying to tmp table 而且此查…

idea cloud bootstrap是啥_application.yml与bootstrap.yml的区别

Spring Boot 默认支持 properties(.properties) 和 YAML(.yml .yaml ) 两种格式的配置文件&#xff0c;yml 和 properties 文件都属于配置文件&#xff0c;功能一样。Spring Cloud 构建于 Spring Boot 之上&#xff0c;在 Spring Boot 中有两种上下文&#xff0c;一种是 bootst…

python读取日期_从文件中读取日期和数据(Python)

我想从文件中读取时间字符串和数据&#xff0c;但是当我使用loadtxt时&#xff0c;我不能同时读取字符串和数字&#xff0c;因为字符串不是浮点型的。所以我尝试使用genfromtxt并使用delimiter[][][]作为我所拥有的列&#xff0c;但是字符串的读起来像nan。我希望像时间数组(da…

一个小白如何创建MYSQL数据表_MySQL小白扫盲(二)--建表、添加、查询

1.SELECT子句字句名称          使用目的select           确定结果集中应该包含哪些列from           指明所要提取数据的表&#xff0c;以及这些表示如何连接的where           过滤掉不需要的数据group by         用于…

元数据解决分表不可 mysql_MySQL InnoDB技术内幕:内存管理、事务和锁

前面有多篇文章介绍过MySQL InnoDB的相关知识&#xff0c;今天我们要更深入一些&#xff0c;看看它们的内部原理和机制是如何实现的。一、内存管理我们知道&#xff0c;MySQl是一个存储系统&#xff0c;数据最后都写在磁盘上。我们以前也提到过&#xff0c;磁盘的速度特别是大容…

navicat for mysql 13_Navicat for MySQL下载

Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。它使你以单一程序同时连接到 MySQL 和 MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面。它提供了一组全面的工具给 MySQL 或MariaDB 新手&#xff0c;同时给专业人…

mysql 日期型中文报错_mysql日期类型默认值'0000-00-00' 报错,是什么问题?

如题&#xff0c;本来是 从另一个数据库中导出的sql文件&#xff0c;在我电脑上导入报这个错误&#xff0c;不知道是不是mysql 版本问题。多方搜索无果&#xff0c;所以上来求助。DROP TABLE IF EXISTS workreport_member;CREATE TABLE workreport_member (uid int(10) unsigne…