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

【数据库】MySQL进阶一、主外讲解

MySQL进阶主外讲解 1.什么是外: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外:是另一表的主键, 外可以有重复的, 可以是空值,用来和其他表建立联系用的...Id=Dept_id,而Dept_id就是员工表中的外:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外Dept_id找到对应的部门,然后才能找到部门表里的各种字段信息,从而让二者相关联。...所以说,外一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。 2.外的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外。 2. 建立外关系的对应列必须具有相似的InnoDB内部数据类型。 3....CASCADE(级联):如果主表的记录删掉,则从表中相关联的记录都将被删掉。 SET NULL:将外设置为空。

2K70
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

MyBatis-plus配置自定义SQL(执行用户传入SQL) 24 MyBatis-Plus Mybatis-Plus(连接Hive) 25 MyBatis-Plus Mybatis-Plus 代码生成器 一、主外特点...主表的主键和从表的外形成主外关系 从表外的值是对主表主键的引用。...ALTER TABLE 表名 DROP FOREIGN KEY 外键名; 具体: ALTER TABLE student DROP FOREIGN KEY FK_ID; 二、一对多操作 1.添加主外约束...1、创建中间表,给中间表添加两个外约束 2、创建表、添加数据 订单表和订单项表的主外关系 alter table `orderitem` add constraint orderitem_orders_fk...五、子查询 5.1 带IN 关键字的子查询 使用IN关键字进行子查询时,内层查询返回一个数据列,这个数据列中值将供外层查询语句作为查询条件比较。

25730

在PowerDesigner中设计物理模型1——表和主外

Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外,M代表不能为空。...另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示: 外 如果是由概念模型或者逻辑模型生成物理模型...,那么外是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外关系。...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外引用,如果已经存在RoomID列,则只添加外引用...切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的Name、Code、关联的列、约束名、更新策略和删除策略等。

2K10

day05_MySQL学习笔记_02

,外关联/引用/参照主键,主键和外的数据类型必须一致。     ...REFERENCES(references:引用/参照/关联)       第二种添加外约束的方式:在表格创建时没有添加外约束,之后通过修改表格添加外约束。...特别注意:ON相当于WHERE,一般多用于主外条件关联。              不是主外条件也可以啊!说白了,ON就是筛选的条件。       内连接的特点:查询结果必须满足条件。...如果两张表的查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。     ...特别注意:我自己测试过,两张表的主外关系可以alter修改表的主次表关系,使这两张表有了主外关系;          两种表也可以不有主外关系,只要他们对应的字段和字段类型相同就行。

2.1K20

MySQL百万级、千万级数据多表关联SQL语句调优

本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级、千万级数据表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果)。...走上自己的"成金之路" 需要优化的查询:使用explain      出现了Using temporary;      有分页时出现了Using filesort则表示使用不了索引,需要根据下面的技巧来调整语句...1.使用explain语法,对SQL进行解释,根据其结果进行调优:      MySQL关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据...当有order by条件时,如select * from a inner join b where 1=1 and other condition order by a.col;使用explain解释语句...根据explain优化;      b.有order by a.col条件时,所有join必须为left join,且每个join字段都创建索引,同时where条件中只能有a表的条件,即将其它表的数据关联

2.6K20

MySQL全部知识点(2)

5 外 主外是构成表与表关联的唯一途径! 外是另一张表的主键!例如员工表与部门表之间就存在关联关系,其中员工表中的部门编号字段就是外,是相对部门表的外。...通常要查询的多个表之间都存在关联关系,那么就通过关联关系去除笛卡尔积。 你能想像到emp和dept表连接查询的结果么?...这个条件大多数情况下都是使用主外关系去除。...两张表的连接查询一定有一个主外关系,三张表的连接查询就一定有两个主外关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外关系作为条件来处理。...如果两张表的查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。 3 自然连接 大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外关系等式来去除它。

1.9K70

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

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

1K40

mysql优化

查询语句写的烂 2. 索引失效 3. 关联查询太多join(设计缺陷或不得已的需求,七八张表关联一块) 4. 服务器调优及各个参数设置不合理(缓存,线程数等) ......MySQL允许最大的进程连接数, 2. 每个主机的连接请求异常中断的最大次数, 3. 设置表高速缓存的数目, 4....不支持主外、不支持事务 2. 表锁:即使操作一条记录一会锁住整个表,不适合高并发 3. 只缓存索引,不缓存真实数据 4. 表空间小 5. 关注性能(高) InnoDB: 1....支持主外、支持事务 2. 行锁:操作一条记录只会锁住一行,不影响其他行,适合高并发 3. 不仅缓存索引,还缓存真实数据,对内存要求高,内存性能直接影响数据库性能 4. 表空间占用大 5....关注事务 Explain + SQL语句 多表: 索引创建:left 连接 在右表创建索引 right 连接在左表建立索引 3、sql语句优化: 多表: 索引创建:left 连接 在右表创建索引

97120

MySQL 系列】MySQL 语句篇_DCL 语句

MySQL 访问权限控制系统的用户界面由几条 SQL 语句组成,如 CREATE USER、GRANT 和 REVOKE。 在服务器内部,MySQL 将权限信息存储在 mysql 系统库的权限表中。...2、MySQL 中库表的 DQL 语句详解 2.1、MySQL 服务器登录 启动 MySQL 服务后,可以通过 mysql 命令来登录 MySQL 服务器,命令如下: mysql –h hostname...登录 MySQL 服务器以后即可执行这个 SQL 语句,然后退出 MySQL 服务器 举例: mysql -u root -p -h localhost -P 3306 mysql -e "select...在 MySQL 中,您可以使用 CREATE USER 语句在数据库服务器中创建一个新用户。...References:在创建外约束时,该权限需要用户具有父表的 References 权限。 Reload:该权限允许用户使用 FLUSH 语句

13310

MySQL数据库:数据完整性及约束的应用

约束:constraint MySQL中的约束分类 主键:primary key 唯一:unique 非空:not null 缺省:default 外:foreign key 主键、唯一...、外都会自动创建索引 主键:一个表只能有一个主键,其可以对应一个字段,也可以对应多个字段(组合主键) 唯一:也成为候选主键(跟主键的区别在于可以存储null值) 外:来源于主表的主键或唯一...constraint 约束名 unique(字段名); 删除约束的数据 先删除子表数据,再删除主表数据 级联删除 on delete cascade 级联更新 on update cascade 关掉mysql...外约束 SET FOREIGN_KEY_CHECKS=0; 打开mysql约束 SELECT @@FOREIGN_KEY_CHECKS; 删除外 注意:此语句在删除外后不能关联删除该外自动产生的约束...删除指定名称的索引 alter table 表名 drop index 索引名称; 提醒:对于有主外关联的表,删除表中数据,如果无删除的级联操作,那么删除主表数据之前,必须先删除从表对应数据

1.5K30
领券