mysql数据库之sql语言(关联查询、约束)(二)

本文详细介绍了MySQL中的SQL关联查询,包括等值连接、内连接、外连接(左、右、全)及自连接的概念和用法,并通过实例演示了各种查询方式。此外,还探讨了高级关联查询,如子查询的应用,以及约束的类型,如主键、非空、唯一性、检查和外键约束,结合实际操作展示了如何创建和应用这些约束。
摘要由CSDN通过智能技术生成

一.  关联查询的基础、高级关联查询、约束

1.分组查询

当统计一张表或者按照表内的某字段进行分组的总记录数,or最大值,最小值,平均值,总和等

一定会与分组函数连用:count(),min(),max(),avg(),avg(ifnull(comm,0))

2.概念

当在查询时,我们所需要的数据不在一张表中,可能在两张表或多张表中。此时我们需要同时操作这些表。即关联查询。

3.等值连接

在做多张表查询时,这些表中应该存在着有关联的两个字段。

我们使用某一张表中的一条记录与另外一张表通过相关联的两个字段进行匹配,组合成一条记录。

4.笛卡儿积

在做多张表查询时,我们使用某一张表中的每一条记录都与

另外一张表的所有记录进行组合。比如表A有x条,表B有y条件,最终组合数为x*y,这个值就是笛卡尔积,通常没有意义。

5.内链接

只要使用join on,就是内连接。连接效果与等值连接一样。

用法:

      表A join 表2 on 关联条件

6.外连接

       在做多张表查询的时候,我们所需的数据,除了满足关联条件的数据外,还有不满足管理条件的数据。此时需要使用外连接。会涉及到两个概念:

驱动表(主表):除了显示满足条件的数据,还需要显示不满足条件的   数据的表

                 从表:只显示满足关联条件的数据的表

     外连接分三种情况

  1. 左外连接:表A left [outer] join 表B on 关联条件

          表A时驱动表,表B是从表

  1. 右外连接:表A right [outer] join 表B on 关联条件

          表B时驱动表,表A是从表

  1. 全外连接:两张表的数据不管满不满足条件,都做显示。

表A  full [outer] join 表B on 关联条件

 Ps:mysql 不支持全外连接

  1. 自连接:在多张表进行关联查询时,这些表的表名相同。即,自连接。
  2. 高级关联查询:

有的时候,我们要查询的数据, 一个简单的查询语句满足不了,并且我们使用的数据,表中不能直观体现出来。而是预先经过一次查询才会有所体现。那么先执行的查询,我们称之子查询。被子查询嵌入的查询语句称之为父查询。

比如需求:查询工资大于员工JONES工资的员工的信息。

   子查询返回的数据特点:

   (1) 可能是单行单列的数据。

   (2) 可能是多行单列的数据

   (3) 可能是单行多列的数据

   (4) 可能是多行多列的数据

 

   1)子查询可以在where子句中

   2)子查询可以在from子句中

   3)子查询可以在having子句中

   4)子查询可以在select字句中,相当于外连接的另外一种写法。

 

7.约束Constraint:对插入表中的数据起到一定的条件限制.

约束有五种:

主键约束:primary key 要求作为主键的字段值 非空且唯一

非空约束:not null 

唯一性约束:unique  (null与null不相等)

检查性约束:gender enum(’f’,’m’)    其他数据库:check(条件)    check(gender in(’f’, ’m’))

外键约束:foreign key

 

要求:有外键约束的字段A必须依赖于另外一个字段,字段B要有主键约束。字段A的值是null,要么必须是字段B里的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值