zoukankan      html  css  js  c++  java
  • MySQL----MySQL数据库入门----第五章 多表操作

    5.1 外键

      比如说有两个数据表,分别是学生信息表student和年级表grade。在student表中有存储学生年级的字段gid(外键),在grade表也有存储学生年级的字段id(主键),student表和grade表之间通过学生年级建立关联,两者是主从关系。在这种关联关系中:

      ①学生表student是引用表;------------------------------------------------->引用表是从表

      ②年级表grade是被引用表;------------------------------------------------->被引用表是主表

      ③引用表中引用字段gid要引入grade表中id字段,所以是外键;

      ④被引用表中的字段id,是grade中的主键或者对其设置唯一性约束;

      ⑤引入外键后,外键列只能插入参照列存在的值,参照列被参照的值不能被删除。这就保证了数据的参照完整性;

      为表添加外键约束

    alter table 引用表名 add constraint 外键名 foreign key (外键字段名) references 被引用表名(主键字段名)

      删除外键约束

    alter table 引用表名 drop foreign key 外键名

      注意:

      ①建立外键的表必须是InnoDB型,不能是临时表。因为在MySQL中只有InnoDB类型的表才支持外键。

      ②定义外键名时,不能加引号。

      

    5.2 连接查询

      ①内连接查询

    select 表1.字段1,表2.字段2,...,表1.字段n
    from 表1 [inner] join 表2
    on 表1和表2的约束条件
    [where条件]

      ②内连接的类似方法查询

    select 表1.字段1,表2.字段2,...,表1.字段n
    from 表1,表2
    where条件;

      注意:使用where子句的查询结果与使用inner join的查询结果是一致的,但是inner join是内连接语句,where是条件判断语句,在where语句后可以直接添加其他条件,而inner join语句不可以。

      ③左连接查询

    select 表1.字段1,表2.字段2,...,表1.字段n
    from 表1 left join 表2
    on 表1和表2的约束条件
    [where条件]

      ④右连接查询

    select 表1.字段1,表2.字段2,...,表1.字段n
    from 表1 right join 表2
    on 表1和表2的约束条件
    [where条件]

      注意:

      1、左连接的结果包括left join 子句中指定的左表的所有记录,以及所有满足连接条件的记录。如果左表的某条记录在右表中不存在,则在右表中显示为空;

      2、同理,右连接的结果包括right join 子句中指定的右表的所有记录,以及所有满足连接条件的记录。如果右表的某条记录在左表中不存在,则在左表中显示为空;

    5.3 子查询

      子查询就是一个查询的结果作为另外一个查询的条件使用。外层的查询称为父查询,作为条件的查询称为子查询(subquery),在查询语句执行时,首先会执行子查询中的语句,然后将返回结果作为外层查询的过滤条件。

      ①带IN关键字的子查询

    select * from 数据表 where 字段名 in (select  字段名  from 数据表 [where条件]);

      ②带exists关键字的子查询

    select * from 数据表 where exists (select  字段名  from 数据表 [where条件]);

      注意:exists关键字后面的参数可以是任意一个子查询,这个子查询的作用相当于测试,不产生任何数据,只返回true或者false,当返回值为true时,外层查询才会执行。

      ③带any关键字的查询

    select * from 数据表 where 字段名 > | < | >= | <= | != any(select  字段名  from 数据表 [where条件]);

      注意:any关键字标识满足其中任意一个条件,它允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任意一个比较条件,就返回一个结果作为外层查询条件。

      ④带all关键字的查询

    select * from 数据表 where 字段名 > | < | >= | <= | !=all (select  字段名  from 数据表 [where条件]);

      注意:all关键字与any有点类似,只不过带all关键字的子查询返回的结果需要同时满足所有内层查询条件。

  • 相关阅读:
    2017.0323.数字电路与系统-触发器
    2017.0322.数字电路与系统-触发器
    前端切图|点击按钮div变色
    当鼠标聚焦时输入框变色(focus事件实例)
    ajax实现简单的点击左侧菜单,右侧加载不同网页
    前端切图:自制简易音乐播放器
    移动开发之css3实现背景几种渐变效果
    jQuery实现多种切换效果的图片切换的五款插件
    jQuery实现点击开关图片切换
    三个Bootstrap免费字体和图标库
  • 原文地址:https://www.cnblogs.com/WangYujie1994/p/10416949.html
Copyright © 2011-2022 走看看