今天内容:

多表查询(内连接 外连接 子查询)

存储程序(存储过程 函数)


多表查询

​   同时从多张数据表中查取到需要的数据即是多表查询. 多表查询时,参与查询的表中每条数据进行组合,这种效果称为笛卡尔积 .

​ 顶哥说,多表查询就是将多张表的每一条数据都进行排列组合.其结果就是笛卡尔积.然后通过各种条件的限定筛选出有用的数据!!!

内连接

​ 用左边表的记录去匹配右边表的记录,显示出符合条件的记录.

# 隐式内连接: 无join 关键字 使用where指定条件
# select * from 表1,表2 where 条件; # 显示内连接: 使用 inner join 关键字 使用on指定关联条件
select * from 表1 [inner] join 表2 on 关联条件 where 筛选条件;
# where 后跟的是对结果的筛选条件

外连接

​       左外连接: 以join左边的表为主,查询其所有数据,根据关联条件查询join右边的表,将满足条件的数据查询出来.如果没有满足条件的数据则填充null. 可以理解为在内连接的基础上保证左表的数据完整性。

# select * from 表1 left [outer] join 表2 on 关联条件 where 筛选条件;

  右外连接: 以join右边的表为主,查询其所有数据,根据关联条件查询join左边的表,将满足条件的数据查询出来.如果没有满足条件的数据则填充null. 可以理解为在内连接的基础上保证右表的数据完整性。

# select * from 表1 rigth [outer] join 表2 on 关联条件 where 筛选条件;

Tips: 使用外连接要分清主次, 想要全部信息的表是主!

子查询

​   从另一条查询语句查到的结果里查询就是子查询. 根据第一次查询结果不同分为:

单一结果: select * from 表名 where (= 子查询结果)

单列多值: select * from 表名 where (in 子查询结果)

多列多值: select * from (子查询结果) as 别名 where ....


存储程序

​   可以看到, 连接查询语句是很复杂的.当数据表比较多的时候将会更加复杂,如果每次查询都写这么复杂的语句可真让人崩溃啊! 还好我们可以将复杂的连接查询创建为存储过程或函数.

顶哥通过两个简单的小例子向大家介绍一下mysql中的存储过程和函数以抛砖引玉;感兴趣的同僚可以深入了解一下;

可以简单的说,存储过程就是一条或者多条sql语句的集合,可视为批文件,但是又不仅限于批处理. 数据库中存储程序除了存储过程还有函数,可以将函数理解为有名字的一段可执行sql语句

Mysql中创建存储过程和函数的语句分别是:

  create procedure p_name # 创建 名为 p_name的存储过程

  create function fun_name # 创建 名为 fun_name 的函数

Tips: 存储过程使用call 语句来调用,只能用输出变量返回值. 存储过程也可调用其他 存储过程;

函数可从 语句外调用(通过函数名),也能返回标量值;

存储过程简单示例:

当然这里只是简单的一条语句,也可以是很多语句的复杂组合.需要注意的是:

"DELIMITER // " 语句的作用是将mysql的结束符设置为//, 因为mysql默认的语句结束符号是';' , 为了避免与存储过程中sql语句的结束符冲突,需要使用DELIMITER改变存储过程的结束符, 并以 "END //" 结束存储过程,定义完毕后再使用"DELIMITER;'' 恢复默认结束符(所有语句一起执行,否则不成功);

存储函数简单示例:

创建函数时同存储过程一样需要修改默认的结束符;

这里需要注意的是指定返回类型的关键字是 returns 有s的!

关注微信公众号,随时随地学习

Mysql(三):多表查询和存储程序的更多相关文章

  1. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  2. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  3. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  4. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  5. day 39 MySQL之多表查询

    MySQL之多表查询   阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都 ...

  6. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  7. mysql(三) 数据表的基本操作操作

    mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...

  8. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...

  9. mysql数据库优化课程---11、mysql普通多表查询

    mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...

随机推荐

  1. log4j.properties配置内容的理解

    一直知道log4j是用来记录日志的,但一直没去看log4j到底是怎么用的,这两天看了几个log4j.properties配置语句详解的帖子,在这里简陋地记录一下. 在完全不知道log4j怎么用的时候, ...

  2. 数据库中间件MyCat学习总结(1)——MyCat入门简介

    为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代.如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷. MyCat的目标就是:低成本 ...

  3. Scala解析Json格式

    Scala解析Json格式 代码块 Scala原生包 导入包 import scala.util.parsing.json._ def main(args: Array[String]): Unit ...

  4. pt工具加字段脚本

    #!/bin/bashcnn_db=$1table=$2alter_conment=$3 cnn_host='192.168.10.14'cnn_user='root'cnn_pwd='123456' ...

  5. 又通过一道题目,替换字符串 —— 剑指Offer

    https://www.nowcoder.net/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage= ...

  6. oracle em 5500访问问题

    oracle em 5500访问问题 需要加s了:https://127.0.0.1:5500/em/

  7. 【大话QT之十四】QT实现多语言切换

    功能需求: 网盘client要可以实现多国语言的切换,第一版要支持中.英文的切换. 在实现过程中感觉QT对多国语言的支持还是非常不错的.制作多语言包非常方便.切换的逻辑也非常easy. 以下就来看一下 ...

  8. Android Studio底边栏选项不见了,怎样调出来

    Android Studio底边有一个选项栏,包括了Run,Android等等非常多的选项,可是假设你一不小心不知道自己点到哪个地方了.底边选项栏不见了,怎样调出来.非常easy.例如以下图.地边栏不 ...

  9. Codeforces Round #272 (Div. 2) D.Dreamoon and Sets 找规律

    D. Dreamoon and Sets   Dreamoon likes to play with sets, integers and .  is defined as the largest p ...

  10. Codeforces Round #250 (Div. 2)B. The Child and Set 暴力

    B. The Child and Set   At the children's day, the child came to Picks's house, and messed his house ...