mysql索引及多表查询

注意where,group by ,having,order by, limit 等的顺序。

主表是被绑定的表,子表是添加了外键了的表,注意,在创建表的时候可以添加外键,也可以创建完了以后添加外键。

注意:这里的abc是给外键起的名字。

CREATE TABLE teacher(
  id TINYINT PRIMARY KEY AUTO_INCREMENT,
  age int,
  class_id INT
 );
INSERT INTO teacher (age,class_id) VALUES (18,2),
                                              (17,3),
                                              (19,4),
                                              (20,1),
                                               (13,5);

  CREATE TABLE student(
    id int PRIMARY KEY AUTO_INCREMENT,
    class_id TINYINT,
    FOREIGN KEY (class_id)REFERENCES teacher(id)//添加外键。必须注意外键的类型和关联的键类型必须保持一致。

   )ENGINE=INNODB;
INSERT INTO student(class_id)VALUES (2),
                                       (1),
                                       (1),
                                       (3),
                                       (5),
                                       (4),
                                       (3);

原文地址:https://www.cnblogs.com/zypfzw/p/9248862.html

时间: 2024-08-10 06:46:17

mysql索引及多表查询的相关文章

索引对单个表查询的影响

[索引对单个表查询的影响] 索引对单个表查询的影响 索引被用来快速找出在一个列上用一特定值的行.没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行.表越大,花费时间越多. 如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据.如果一个表有1000 行,这比顺序读取至少快100倍.注意你需要存取几乎所有1000行,它较快的顺序读取,因为此时我们避免磁盘寻道. 例如对下面这样的一个student表: 这样,我们试图对它进

mysql简单的单表查询详解

mysql简单的单表查询详解 MySQL的查询操作: 单表查询:简单查询 多表查询:连续查询 联合查询: 选择和投影: 投影:挑选要显示的字段 选择:挑选符合条件的行 投影:SELECT 字段1, 字段2, ... FROM tb_name;  SELECT * FROM tb_name; 选择:SELECT 字段1, ... FROM tb_name WHERE 子句; 布尔条件表达式 mysql> CREATE TABLE students (SID INT UNSIGNED AUTO_IN

mysql 数据操作 多表查询 目录

mysql 数据操作 多表查询 准备 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多表连接查询 外链接之左连接 右连接 mysql 数据操作 多表查询 多表连接查询 全外连接 原文地址:https://www.cnblogs.com/mingerlcm/p/10523097.html

MySQL分组与连表查询

MySQL分组与连表查询 2019-08-23 1.MySQL分组 按照某一个属性降数据进行分组,通过关键字:group by:通常分组会与聚合函数联合使用. 聚合函数常用的有:min,max,sum,avg,count. 比如统计男女生人数 --性别表 create table gendertable( id int auto_increment primary key, gender char(10) )engine=innodb default charset=utf8; insert i

mysql基础-数据库多表查询-记录(六)

0x01 MySQL多表查询和子查询 联结查询:事先将两张或者多张表join,根据join的结果进行查询 cross join:交叉联结  用的少, 相当于 (a+b)*(c+d+e) 所得结果的形式   用的少 自然联结  --- 只能在两者相等的情况下才能建立连接 等值联结:把相同的字段进行等值连接 外联结: 左外联接:只保留出现在左外连接元算之前(左边)的关系中的元组(以左表为准,) left_tb LEFT JOIN right_tb ON 条件 右外联接:只保留出现在右外连接元算之后(

MySQL约束条件和多表查询方式详解

一.约束什么是约束?简述:除了数据类型以外的约束的为什么使用约束?简述:为了保证数据的合法性 完整性:二.约束分类: not null 跟整型时使用其作用是限制插入数据不能为空 create table student (id ind,name char(10) not null); default 默认值(并不是约束)其作用是在于当插入的数据为空的时候使用默认值并不会报错: create table user (id ind,name char(10) not null,sex char(1)

mysql如何避免回表查询

<迅猛定位低效SQL?>留了一个尾巴: select id,name where name='shenjian' select id,name,sex where name='shenjian' 多查询了一个属性,为何检索过程完全不同? 什么是回表查询? 什么是索引覆盖? 如何实现索引覆盖? 哪些场景,可以利用索引覆盖来优化SQL? 这些,这是今天要分享的内容. 画外音:本文试验基于MySQL5.6-InnoDB. 一.什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类

mysql四-1:单表查询

阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询 一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 f

Mysql(四)-1:单表查询

一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select distinct order by limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group