首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

mysql 索引 主键 等概念彻底理清楚

参考文章: Mysql 索引详解和优化 数据库原理-几种数据模型 Mysqlkey和index区别 (讲很合理) MysqlCascade,NO ACTION,Restrict...3、只有附表才用到 constraint约束、FOREIGN KEY、REFERENCES引用参考 三个陌生东西(SQL语句中可以看到) 4、主没有子不能增加,子有主不能删。...特例:子表(所在表)可以为NULL,前面的规律作废(与主表引用列无关)。...5、主表 约束 叫:引用列、子表约束 叫: 6、Mysql中key 、primary key 、unique key 与index区别:前面三个是用户级别的概念,包含constraint、...2、 存在歧义概念: key 和 索引index 1、索引—在SQL语句里叫 key 错综复杂关系: 1、primary key 与 一图理解: ?

2.5K10

主、约束_创建主键约束

主、约束 点关注不迷路,欢迎再来! 精简博客内容,尽量已专业术语来分享。 努力做到对每一位认可自己读者负责。 帮助别人同时更是丰富自己良机。...主键是两种类型约束; 1.主键是能唯一标识表中每一行,就是说这一列非空且值不重复,可以指定为主键;作用是用来强制约束表中每一行数据唯一性; 2.是b表中某一列引用值来源于a表中主键列...也是约束b表中值必须取致a表中主键列值,不是其中值就不能插入b表中。可以形成a表b表联系,保持数据约束和关联性。...创建主表主键: CREATE table dept ( deptno NUMBER(11) PARIMARY KEY, dname VARCHAR2(14) not null, loc...VARCHAR2(13) ); 创建副表及: CREATE table emp( empno NUMBER(4,0) PRIMARY KEY, ename VARCHAR2

1.9K20

数据库主键

主键和索引区别?...主键 索引 定义: 唯一标识一条记录,不能有重复,不允许为空 表是另一表主键, 可以有重复, 可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用...是提高查询排序速度 个数: 主键只能有一个 一个表可以有多个 一个表可以有多个惟一索引 聚集索引和非聚集索引区别?...Mysql和Oracle创建主键: 1、MySQL create table user_test (id int auto_increment primary key not null,...POREIGN KEY (外部)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义外部可以指向主键或者其他表唯一.

2.3K20

mysql

MySQL 3.23.44版本后,InnoDB引擎类型表支持了约束。...使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持(据说以后版本有可能支持,但至少目前不支持); 2.列必须建立了索引,MySQL 4.1.2以后版本在建立时会自动创建索引...,但如果在较早版本则需要显示建立; 3.关系两个表列必须是数据类型相似,也就是可以相互转换类型列,比如int和tinyint可以,而int和char则不可以; 好处:可以使得两张表关联...,保证数据一致性和实现一些级联操作; 定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表中改动) CASCADE(跟随改动) SET NULL(设空值) SET DEFAULT(设默认值

5.4K70

深入mysql关联问题详解--Java学习网

今儿继续再看老师给推荐深入浅出mysql数据库开发这本书,看到innodb数据库关联问题时,遇到了一个问题,书上写是可以对父表进行修改,从而同步到子表上去,可是自己实验却是没有能够。...然后自己又重新看了下书本,发现自己sql语句中没有innodb约束方式(cascade,set null,no action,restrict),感觉这就是自己出问题地方。...可是怎么加入关联方式呢,上网找了好半天也没有合适方法。就自己找呗,就通过老师说方法,?...网上说法是:字段类型和索引 这里是重新建立一张表icity,结果可以了,总结可能是因为字段类型问题,可是我alter问题还是没有解决呢: 代码如下: mysql> create...,做法先drop掉表里,然后在add。

1K40

mysql 主键自增语句_MySQL 自增主键

MySQL 5.7 及之前版本,自增主键最大值会在启动(重启)后从数据库中取出放到内存: SELECT MAX(ai_col) FROM table_name FOR UPDATE; 这样获取是通过计算...问题在于如果有其他表依赖了该 ID,则其他表数据关联数据就符合要求了。除非设置了。 比如我要向最大一个 ID 账号充了 100 万。...从 MySQL 8.0 开始,自增主键最大值会在每次修改后写入到 redo log,并且在每个检查点写入引擎私有的系统表。 如果是正常重启,则读取系统表里值。...自增主键插入时连续性 这里不考虑由于删除导致连续性问题 为何会有连续性问题? 这主要是跟插入事务回滚有关系。 对于两个插入事务,事务 A 先执行插入语句,之后事务 B 执行插入语句。...参考文档 为什么 MySQL 自增主键不单调也不连续 https://database.51cto.com/art/202004/614923.htm 《MySQL技术内幕——InnoDB存储引擎》

10.8K10

数据库之主键、索引

读者提问: 想问下数据库中主键、索引分别指的是什么?能用通俗一点的话解答下么?...阿常回答: 我们可以把数据库比做一个小区, 我们每个人就是具体“数据”, 我们每个家就是一张表, 每个家都会有一个唯一门牌号,这就是主键。...那什么是呢, 就是当你想和其它房间的人建立关联关系时, 会找一个双方都认可的人,做为联系人, 这个人就是,他会有一些约束。...而索引就是别人为了快速找到你, 会先去问下小区保安, 他那边会有一个全小区住户和房子联系表, 这样你就不用一家家去敲门了。...阿常碎碎念: 以上问答首发于知识星球「软件测试圈」,源于@小布丁向阿常提问。 看完今天分享对你是不是有所启发呢,有任何想法都欢迎大家后台私信阿常,一起探讨交流

84920

MySQL约束

其中就包括 1 主键(primary key或unique key) 又称主码,数据库表中对储存数据对象予以唯一和完整标识数据列或属性组合。...在关系数据库中,每个数据表都是由关系来连系彼此关系,父数据表(Parent Entity)主键(primary key)会放在另一个数据表,当做属性以创建彼此关系,而这个属性就是。...注意 : 不一定要与相应主键同名,只是在应用中为便于识别,当主键与相应属于不同关系时,往往取同名 作用 保持数据一致性,完整性,主要目的是控制存储在外表中数据。...使两张表形成关联只能引用外表中值或使用空值。 案例 如果不使用,表2学号字段插了一个值(比如20140999999),但该值在表1中并没有。...这时,数据库允许插入,并不会对插入数据做关系检查。 然而在设置时,你插入表2学号字段值必须要求在表1学号字段能找到。

6.5K20

MySQL约束

什么是检约束 其实很好理解,简单说就是两张表建立一个连接关系。这里我们那主表A和副表B举例,我A表中有用户信息,B表中有用户订单信息。...要是数据完整对应起来,肯定是需要把两张表关联起来,我们因此会在B表中村一个A表字段,常见我们存是A表主键ID检约束要求 .MySQL数据表存储引擎必须为Innodb。....主表和副表关联字段数据类型一致。 .字段不能设置为NULL。 .主表中字段需为主键约束作用 保证数据完整性和一致性....SET NULL: 从父表中删除或更新对应行,同时将子表中列设为空。注意,这些在外列没有被设为NOT NULL时才有效。...,这时候只要删除主表,从表相互关联数据会自动删除。

5.9K20

Mysql约束

如果表A主关键字是表B中字段,则该字段称为表B,表A称为主表,表B称为从表。...是用来实现参照完整性,不同约束方式将可以使两张表紧密结合起来,特别是修改或者删除级联操作将使得日常维护工作更加轻松。...主要用来保证数据完整性和一致性 两个表必须是InnoDB表,MyISAM表暂时不支持 列必须建立了索引,MySQL 4.1.2以后版本在建立时会自动创建索引,但如果在较早版本则需要显示建立...; 关系两个表列必须是数据类型相似,也就是可以相互转换类型列,比如int和tinyint可以,而int和char则不可以; 创建语法: 代码如下 复制代码 [CONSTRAINT...SET NULL: 从父表中删除或更新对应行,同时将子表中列设为空。注意,这些在外列没有被设为NOT NULL时才有效。

5.8K81

软考高级:超、候选主键概念和例题

例子:在上述学生信息表中,如果我们选择学号作为主键,那么每个学生学号都必须是唯一(Foreign Key) 是一个表中字段,它是另一个表主键。...用于建立两个表之间关联,确保引用数据完整性。 例子:假设有一个课程表,其中包含课程ID和课程名称,以及一个选课表,包含学号和课程ID。... 如果一个是最小,即不能再移除任何字段而不影响其唯一标识记录能力,这个称为: A. 主键 B. 候选 C. 超 D. 每个表中可以有多少个主键? A....选择主键时考虑是唯一性、稳定性和简洁性,颜色与主键选择无关。 答案:B. 建立表之间逻辑关系。用于建立两个表之间关系,保证引用数据完整性。 答案:D. 。...如果一个表中字段是另一个表主键,那么这个字段在前者中就是一个

6300

oracle建表、建主键基本语法

主键:唯一标识,不能为空,加快查询速度,自动创建索引 :约束内表数据更新,从定义时可以发现 是和主键表联系,数据类型要统一,长度(存储大小)要统一。...这样在更新数据时候会保持一致性 -创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空...); -增加主键 alter table 表名 add constraint 主键名 primary key (字段名1); -增加: alter table 表名...add constraint 键名 foreign key (字段名1) references 关联表 (字段名2); 在建立表格时就指定主键 create table...varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键一起建立

3.1K50

数据库作用,以及和主键区别

最后说一下,建几个原则: 1、 为关联字段创建。 2、 所有的都必须唯一。 3、避免使用复合。 4、总是关联唯一字段。 ...身份证号是唯一能确定你这个人,其他都可能有重复,所以,身份证号是主键用于与另一张表关联。是能确定另一张表记录字段,用于保持数据一致性。...比如,A表中一个字段,是B表主键,那他就可以是A表。...二、主键和索引区别 定义: 主键--唯一标识一条记录,不能有重复,不允许为空 --表是另一表主键可以有重复, 可以是空值 索引--该字段没有重复值,但可以有一个空值...作用: 主键--用来保证数据完整性 --用来和其他表建立联系用 索引--是提高查询排序速度 个数: 主键--主键只能有一个 --一个表可以有多个 索引--一个表可以有多个唯一索引

5.6K21

MySQL约束使用

什么是约束在MySQL中,约束用于确保两个表之间数据一致性。约束是一种限制,它将一个表中列与另一个表中列相关联。具体来说,它要求在一个表中某个列中值必须在另一个表某个列中存在。...约束可以确保数据完整性和一致性,防止数据被删除或修改时发生错误。在MySQL中,约束由FOREIGN KEY关键字和REFERENCES子句定义。...,"customers"表包含一个名为"customer_id"主键列,"orders"表包含一个名为"order_id"主键列和一个名为"customer_id"列。...FOREIGN KEY关键字用于创建约束,REFERENCES子句用于指定关联表和列。第二步:添加约束要添加约束,可以使用ALTER TABLE语句。...FOREIGN KEY子句用于指定要添加约束列,REFERENCES子句用于指定关联表和列。如何使用约束一旦约束被创建,就可以使用它来确保数据完整性和一致性。

4K30
领券