首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【MySQL 系列】MySQL 语句篇_DDL 语句

外键相对于主键而言,用来引用其他表。外键通过子表的一个或多个列对应到父表的主键或唯一键值,将子表的行和父表行建立起关联关系。 例如,Sakila 示例数据库中的 country 表和 city 表。...我们可以使用以下 3 个策略中的一个: CASCADE:如果被引用的表中的一行被删除或更新,该表中匹配行的值会自动删除或更新。...SET NULL:如果被引用的表中的一行被删除或更新,该表中匹配行的值设置为 NULL。...RESTRICT: 如果被引用的表中的一行在该表中有匹配的行,试图删除或更新被引用的表中行时会引发 MySQL 错误。这是默认的策略。...当父表的行的键值更新的时候,子表中匹配的行的字段也会被更 3.3、唯一键约束 唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。

32310

Hive优化器原理与源码解析系列—统计信息UniqueKeys列集合

如两个RelNode进行Join时,Join返回记录数多少由的主键侧记录数选择率和外键侧非重复值的UniqueKeys唯一键共同决定的。...强调一点,这里讲到主键侧PK side不是指其主键,是带有主键的那一侧,就JoinKey关联键外键而言,它是重复的,如员工表的外键部门编号就是含有重复值的,所以使用主键侧的选择率和外键的非重复记录数进行估算...遍历每列的统计信息的NDV(Number of Distinct Value)与中记录数进行表,如果非重复个数大于或等于总记录数数,说明此列为UniqueKey。...in the projected expressions // return empty set. // 如果在投影中没有RexInputRef,则返回空的唯一键集合...} colStatsPos++;//统计信息的位置递增, } return keys;//返回非重复的keys列表 判断每列是否为主键列,组成的集合并返回。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    实战篇:Oracle分区表之在线重定义

    使用在线重定义的一些限制条件: 必须有足够的表空间来容纳表的两倍数据量。 主键列不能被修改。 表必须有主键。 必须在同一个用户下进行在线重定义。 SYS和SYSTEM用户下的表无法进行在线重定义。...:不注册依赖的对象,如索引、约束、触发器等; 二、实战 安装测试环境可以使用博主编写的 Oracle 一键安装脚本,同时支持单机和 RAC 集群模式!...更多更详细的脚本使用方式可以订阅专栏:Oracle一键安装脚本。...rowid: sqlplus / as sysdba exec dbms_redefinition.can_redef_table('PAR', 'LUCIFER'); 执行没有报错代表可以进行表的在线重定义...3、创建中间表(分区表结构) 分区表脚本使用和获取方式可以参考文章: Oracle 通过脚本一键生成按月分区表 通过PL/SQL包一键生成分区表结构: sqlplus par/par BEGIN

    1.4K30

    MySQL查询重写插件

    ,"DBAs"); 查询刚刚插入的规则: ? 输出的规则每一列的内容如下: id: 规则ID。此列是表主键。可以使用该ID唯一标识任何规则。 pattern: 指示规则匹配的语句模式的模板,使用?...如果相应的数据库和表名相同,则语句中的限定表名与模式中的限定名匹配;当默认数据库pattern_database与表名相同且语句名相同时,语句中的非限定表名才匹配模式中的非限定名称 。...此列可以在不删除规则的情况下停用规则:将列设置为除YES表之外的值 ,然后将表重新加载到插件中。 message: 该插件使用此列与用户进行通信。...如果将规则表加载到内存中时没有发生错误,则插件会将message 列设置为NULL。非NULL值表示错误,列内容是错误消息。...在这些情况下可能会发生错误:1.模式或替换是一个产生语法错误的错误SQL语句。2.替换包含比模式更多的参数标记。

    2.6K30

    详解 MySQL 执行计划 -- Explain

    SUBQUERY subquery 表示在 select 的结果字段列表或 where 条件中包含的子查询。 3.2.5. UNION union 表示一个 union 查询的子查询。 3.2.6....Null 表示在优化器优化后就已经得到结果,不需要再通过执行器访问存储引擎来实现查询操作,例如: explain select max(id) from person; 3.5.2. const 当使用主键或惟一键进行查询且只匹配一行时...3.5.3. eq_ref 对于每个来自于前面的表的行组合,从该表中读取一行,并通过这一行可以通过主键或惟一键定位到聚簇索引中具体的一系列数据。...如果此列是 NULL,则没有相关的索引。 3.7. key key 列指出了 MySQL 优化器最终选定的索引。...3.9. ref 该字段显示使用哪个列或常数与 key 一起从表中选择数据行,有三种选项可选: NULL — 不使用索引 func — 用于索引匹配的值是函数计算的结果 const — 用于索引匹配的值是常量

    91911

    主键、唯一索引、普通索引及约束

    唯一索引是这样一种索引,它通过确保表中没有两个数据行具有完全相同的键值来帮助维护数据完整性。 换个说法,有了唯一索引就可以确保数据表不会有相同行数据(组成唯一索引键的列)....唯一索引允许空值的存在,空值将视为。如果由单列组成唯一索引,则此列仅允许一个空值存在;如果由多列组成唯一索引,则值与空值的组合仅允许一个存在。 1.1 唯一键约束 什么是唯一键约束?...唯一键约束与唯一索引又有什么区别? 唯一键约束与唯一索引的区别只有一个:唯一键约束不允许空值的存在,而唯一索引是允许空值的存在的。 2....又叫普通索引,应当为经常出现在查询条件 where 或排序条件 order by的列建立普通索引。 3....数据表通常用一列或多列来唯一标识行数据,这一列或多列就是主键。 Q:主键索引与唯一索引有啥区别呢? A:1. 主键不允许空值存在的;2. 一个表仅有一个主键。

    4.7K30

    mysql 分区 varchar_MySQL分区总结

    MySQL分区类型主要包括:range分区、list分区、hash分区、key分区; 无论是那种MySQL分区类型,要么分区表上没有主键/唯一键,要么分区表的主键/唯一键都必须包含分区键,也就是说不能使用主键...如果增加商店ID大于等于30的行,超出分区范围,会出现错误。...将要匹配的任何值都必须在值列表中。 四:Hash 分区 Hash 分区主要用来分散热点读,确保数据在预先确定个数的分区中尽可能平均分布。...分区支持使用 Blob 或 Text 类型外其他类型的列作为分区键 创建 Key 分区表的时候,可以不指定分区键,默认会首先选择使用主键作为分区键 在没有主键的情况,会选择非空唯一键作为分区键,分区键的唯一键必须是非空的...附:MySQL 分区的 null 值处理 1、MySQL 分区不禁止在分区键值上使用 null 2、Range 分区中,null 值会被当做最小值来处理 3、List 分区中,null 值必须出现在枚举列表中

    3.3K20

    数据库基础

    第⼀范式:要求最低,只要求表中字段不可⽤在拆分(比如用户兴趣标签,不应该拼接成一个字符串)。第⼆范式:在第⼀范式的基础上,要求每条记录由主键唯⼀区分,记录中所有属性都依赖于主键。...⼀旦写数据的任务没有完成,数据是不能被其他任务读取的,这对并发操作有较⼤的影响。共享/排他锁的释放⽅式为 commit 或 rollback 。...当查询的索引含有唯⼀属性(唯⼀索引或主键索引)时,Innodb 存储引擎会对临键锁进⾏优化,将其降为行锁,即仅锁住索引本身,⽽不是范围。...这种索引⼀般⽤来保证数据的唯⼀性,⽐如保存账户信息的表,每个账户的id必须保证唯⼀,如果重复插⼊相同的账户id时会MySQL返回异常。 主键索引 :是⼀种特殊的唯⼀索引,但是它不允许出现空值。...联合索引需要注意最左原则,就是Where查询条件中的字段必须与索引字段从左到右进⾏匹配。

    8210

    slave_exec_mode=IDEMPOTENT的行为小结

    global slave_exec_mode=IDEMPOTENT ,备机的sql thread就运行在冥等模式下,可以让备机在insert主键、唯一键冲突,update、delete值未找到错误发生时不断开复制而保持冥等性...但官方文档的描述很简洁,我一直好奇slave_exec_mode=IDEMPOTENT 是如何在复制出错时保持一致性的--譬如主键冲突时是简单跳过还是覆写,今天在Percona 5.7下做了个实验(binlog...如这样的insert insert into test set c1='a',c2='b'; 此时insert into语句在备机执行时假如遇到主键冲突就先转化为delete再insert delete...冥等模式并不是万能的,除了不能对DDL操作冥等,对字段长度不同导致的错误也不是冥等(譬如主机一个字段是char(20)而备机是char(10)),还有一个限制就是表有主键才会对insert的冥等设置有效...:因为insert的冥等行为是通过主键来判断备机是否有重复值从而产生覆写操作,如果表没有主键,则备机即使设了冥等也可能会比主机多重复数据。

    90230

    115道MySQL面试题(含答案),从简单到深入!

    解释MySQL中的主键与唯一键的区别。主键(Primary Key)是表中用于唯一标识每条记录的列或列的组合。一个表只能有一个主键,且主键列的值必须是唯一的,不允许为NULL。...它确保一个表中的列值必须在另一个表的主键或唯一键列中存在。这有助于维护数据的完整性和一致性。...在MySQL中,大多数索引(如InnoDB的主键和二级索引)是B树索引。 - 哈希索引:适用于精确匹配查找。哈希索引在内存数据库和某些特定类型的存储引擎(如MEMORY)中更常见。44....这不仅可能导致性能下降(因为避免了索引的使用),还可能导致错误的比较结果。56. 如何在MySQL中处理大量的DELETE操作?...- 但是,错误设计的分区或索引可能导致性能下降,因为MySQL可能需要检查多个分区。74. MySQL中的索引前缀是什么,如何使用?索引前缀是在列的一部分上创建索引的方法。

    2.2K10

    关系型数据库之oracle

    数据库中常称为主键,由一个或多个列组成(多列组成的也可以称为联合主键)。 关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构。...安装oracle [INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突 这个是最为常见的坑没有之一。...解决: 彻底卸载: (1)在服务中停止Oracel的所有服务(win+R------>services.msc------在服务列表中关闭所有oracle相关服务) (2)进入注册表删除Oracel有关的所有键值...启动sqlplus,然后登陆数据库出现错误:TNS:协议适配器错误 原因有3个: (1).监听服务没有启动:services.msc或开始—>程序—>管理工具—>服务,打开服务面板:启动oraclehome92TNSlistener...服务 (2).database instance没有启动:services.msc或开始—>程序—>管理工具—>服务 启动oralceserviceXXX,XXX就是你databaseSID如orcl

    1.5K30

    SqlAlchemy 2.0 中文文档(三十八)

    如果并且当此Column被指定为引用另一列时,使用ForeignKey和/或ForeignKeyConstraint,远程引用列的类型也将被复制到此列中,在解析外键与该远程Column对象相匹配的时刻。...默认值是字符串"auto",表示应自动为单列(即非复合)主键提供自动递增语义,该主键为 INTEGER 类型且没有其他客户端或服务器端默认构造指示。...这基于由Column.autoincrement参数定义的Column的规则,通常意味着不受外键约束的单个整数列主键约束中的列。如果表没有这样的主键约束,则没有“自动增量”列。...默认值为字符串"auto",表示应自动为具有整数类型且没有其他客户端或服务器端默认构造的单列(即非复合)主键接收自动递增语义。...Table 指定了额外的列或其他结构或修改表状态的标志,那么将引发错误。

    20910

    MySQL_库和表的使用(部分未完

    只能查看已存在的表 本质上是打印出来创建表的时候执行的所有语句 省略长横线: 新增列(新增字段) 在SC表中的Cno列后面新增一列Grade 如果不加after,默认加在最后一列 新增一列之后,此列的数据默认为...设置现有列(字段)为主键 在添加新字段时设置为主键 前提是表中没有主键 设置复合主键 创建新表时设置 不能用第一种方式创建 会报错“定义了重复主键” 设置现有字段为复合主键 此前表中没有主键 更多...关于主键、默认值(default)、唯一键、外键等SQL字段约束相关知识,在慕雪的寒舍-SQL字段约束 修改列的数据类型 将SC表中的Sno的数据类型由int(11)改为int(20) 查看一下表结构:...); 部分字段名可以不写,默认为空(前提是该字段允许为空,或者有default值) 插入否则更新(on duplicate update) 如果要插入的数据,其主键或唯一键,与表中现存数据重合,则插入数据失败...在test表中插入数据Sno、Sage(Sno必填,因为是主键),如果填入的内容与主键发生重复冲突,则更新update语句后面指定字段中的内容 示例中是,如果发生主键/唯一键冲突,则将该主键/唯一键对应的数据中

    12210

    【MySQL】执行计划 explain 及 一条select语句在MySQL中的奇幻之旅

    server层过滤后,剩下满足查询的记录数量的比例) extra Additional information (额外的信息说明) 重要字段(我个人认为的)再释义: id:这列就是查询的编号,如果查询语句中没有子查询或者联合查询这个标识就一直是...如存在子查询或者联合查询这个编号会自增。 type:此列是在优化SQL语句时最需要关注的列之一,此列显示了查询使用了何种类型。...以下排序从最优到最差: system:表内只有一行数据 const:最多只会有一条记录匹配,常用于主键或者唯一索引为条件查询 eq_ref:当连接使用的索引为主键和唯一时会出现 ref:使用普通索引=或...:用于where中的in查询,完全替换子查询,效率更高。...或索引组合),但不是一个主键或唯一索引 range:索引范围查询,常见于使用 =, , >, >=, , BETWEEN, IN()或者like等运算符的查询中

    1.2K20

    MySQL初级篇(二)

    一、列属性1、 主键主键(primary key):又叫主键约束,是表中的一个或多个字段,它的值用于唯一标识表中的某一条记录。...如时间戳等主键应由计算机自动生成一般来说就是id,特殊情况除外2、 唯一键唯一键(unique key):又叫唯一约束,其保证在一个字段或一组字段里的数据与表中其他行的数据相比是唯一的。...1特点:一张表中可以存在多个唯一键唯一键所在列中的数据不能重复唯一键允许该列数据为null,并且可以存在多个(但是不提倡)与主键的区别:主键唯一,唯一键不唯一,主键不为null,唯一键可为null---...drop index 唯一键名称;注意:与主键的删除略有不同1234567893、 自动增长自增长(auto increment):当对应的字段不给值或null的时候,系统会自动触发**从当前字段中已有的最大值执行...,去右表中与所有的记录进行匹配,匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。

    16960

    mysql学习笔记(四)约束与索引

    article/d5a880eba77c3513f147ccdf.html 三范式 1.列不能拆分 2.唯一标识··3.关系引用主键 具体体现: 将数据放到表中,表放在库中 一个数据库中可以有多个表,每个表都有一个名字...它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。...PRIMARY KEY主键约束不能重复,不能为空NOT NULL 非空约束不能为空DEFAULT默认约束插入数据时此列没有值插入,则使用默认值UNIQUE KEY唯一约束此列不能有重复值FROEIGN...no action方式:不作为,同4 restrict方式:如果主表被依赖字段的值被从表引用了,那么主表对该字段的修改和删除就被完全限制了,主表没有主动权,必须先处理从表的值。...ID值有自动递增的特性,当语句执行失败或事务回滚时,ID值不会回滚,这会导致ID列的值不连续。

    2.1K00

    2021年最新最全的MySQL索引面试知识点

    (从磁盘取数据是最影响性能的) Join 对Join语句匹配关系(on)涉及的字段建立索引能够提高效率 索引覆盖 如果要查询的字段都建立过索引,那么引擎会直接在索引表中查询而不会访问原始数据(否则只要有一个字段没有建立索引就会做全表扫描...3)所有的非终端结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。 4)B+ 树中,数据对象的插入和删除仅在叶节点上进行。...2.哈希索引 简要说下,类似于数据结构中简单实现的Hash表(散列表)一样,当我们在MySQL中用哈希索引时,主要就是通过Hash算法(常见的Hash算法有直接定址法、平方取中法、折叠法、除数取余法、随机数法...八、索引设计的原则? 1.适合索引的列是出现在Where子句中的列,或者连接子句中指定的列。 2.基数较小的类,索引效果较差,没有必要在此列建立索引。...在InnoDB中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引。如果没有唯一键,则隐式的生成一个键来建立聚簇索引。

    34821

    面试命中率90%的点——MySQL索引

    (从磁盘取数据是最影响性能的) Join 对Join语句匹配关系(on)涉及的字段建立索引能够提高效率 索引覆盖 如果要查询的字段都建立过索引,那么引擎会直接在索引表中查询而不会访问原始数据(否则只要有一个字段没有建立索引就会做全表扫描...3)所有的非终端结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。 4)B+ 树中,数据对象的插入和删除仅在叶节点上进行。...2.哈希索引 简要说下,类似于数据结构中简单实现的Hash表(散列表)一样,当我们在MySQL中用哈希索引时,主要就是通过Hash算法(常见的Hash算法有直接定址法、平方取中法、折叠法、除数取余法、随机数法...八、索引设计的原则? 1.适合索引的列是出现在Where子句中的列,或者连接子句中指定的列。 2.基数较小的类,索引效果较差,没有必要在此列建立索引。...在InnoDB中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引。如果没有唯一键,则隐式的生成一个键来建立聚簇索引。

    2K21

    mysql数据库关键字及用法_mysql唯一索引关键字

    const:数据表中最多只有一行数据符合查询条件,当查询或连接的字段为主键或唯一索引时,则type的取值为const。...简单示例如下: eq_ref:如果查询语句中的连接条件或查询条件使用了主键或者非空唯一索引包含的全部字段,则type的取值为eq_ref,典型的场景为使用“=”操作符比较带索引的列。...简单示例如下: index:当查询语句中的查询条件使用的是覆盖索引,也就是说查询条件中的字段包含索引中的全部字段,并且按照索引中字段的顺序进行条件匹配,此时只需要扫描索引树即可。...简单示例如下: (6)possible_keys:执行查询语句时可能用到的索引,但是在实际查询中未必会用到。当此列为NULL时,说明没有可使用的索引,此时可以通过建立索引来提高查询的性能。...(7)key:执行查询语句时MySQL实际会使用到的索引。如果MySQL实际没有使用索引,则此列为NULL。

    1.9K70

    spring batch数据库表数据结构

    为了强化对spring batch关键概念的理解,故有了如下的对spring batch元数据结构的记录描述 概观 Spring Batch 的数据表结构与在Java中的Domain对象非常匹配。...DOUBLE_VAL:参数值,如果类型是双倍的。 IDENTIFYING:指示参数是否有助于相关身份的标志JobInstance。 请注意,此表没有主键。这是因为框架没有用于一个,因此不需要它。...以下清单显示了该BATCH_JOB_EXECUTION 表的定义: 以下列表描述了每列: JOB_EXECUTION_ID:唯一标识此执行的主键。...当作业当前未运行时,此列中的空值表示存在某种类型的错误,并且框架无法在失败之前执行上次保存。 STATUS:表示执行状态的字符串。这可能是 COMPLETED,STARTED等等。...END_TIME:表示执行完成时的时间戳,无论成功或失败。即使作业当前未运行,此列中的空值也表示存在某种类型的错误,并且框架无法在失败之前执行上次保存。 STATUS:表示执行状态的字符串。

    4.5K80
    领券