iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL多表查询中如何运用函数
  • 838
分享到

MySQL多表查询中如何运用函数

2024-04-02 19:04:59 838人浏览 泡泡鱼
摘要

下文主要给大家带来Mysql多表查询中如何运用函数,希望这些内容能够带给大家实际用处,这也是我编辑mysql多表查询中如何运用函数这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一、多表组合查询1.

下文主要给大家带来Mysql多表查询中如何运用函数,希望这些内容能够带给大家实际用处,这也是我编辑mysql多表查询中如何运用函数这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

一、多表组合查询

1.1 外连接

sql语句可以通过外连接的方式对多表进行联合查找,外连接右分为做链接和有链接之分,其使用方法如下;

左外连接

语法:select 字段 from tb_a left join tb_b on 链接条件

注:tb_a表是主表,tb_b是从表,其中tb_a作为主表显示全部内容,若表中无数据显示则显示为null。

右链接

语法:select 字段 from tb_a right join tb_b on 条件

注:tb_a表是从表,tb_b则为主表,都显示。

例:首先创建数据库jiaowu,并创建学生表和成绩表

mysql> create database jiaowu;
mysql> create table student(sid int(10),name varchar(48),id int(11));
mysql> create table grade(sid int(10),score int(5));
mysql> insert into student values(1,'孙悟空',1),(2,'猪八戒',2),(3,'沙悟净',3),(4,'小白龙',4),(5,'唐三藏',5),(6,'红孩儿',6),(7,'哪吒',7););
mysql>  insert into  grade(sid,score) values(1,1234),(2,1235),(4,1423),(5,1120),(6,1354),(6,1367);
mysql> select * from student  left join grade on student.sid=grade.sid;
+------+-----------+------+------+-------+
| sid  | name      | id   | sid  | score |
+------+-----------+------+------+-------+
|    1 | 孙悟空    |    1 |    1 |  1234 |
|    2 | 猪八戒    |    2 |    2 |  1235 |
|    4 | 小白龙    |    4 |    4 |  1423 |
|    5 | 唐三藏    |    5 |    5 |  1120 |
|    6 | 红孩儿    |    6 |    6 |  1354 |
|    6 | 红孩儿    |    6 |    6 |  1367 |
|    3 | 沙悟净    |    3 | NULL |  NULL |
|    7 | 哪吒      |    7 | NULL |  NULL |
+------+-----------+------+------+-------+
8 rows in set (0.00 sec)

使用别名查询

mysql> select * from student as s left join grade as g on s.sid=g.sid;
mysql> select * from grade as g right join student as s on g.sid=s.sid;
mysql> select * from grade as g left join student as s on g.sid=s.sid;
+------+-------+------+-----------+------+
| sid  | score | sid  | name      | id   |
+------+-------+------+-----------+------+
|    1 |  1234 |    1 | 孙悟空    |    1 |
|    2 |  1235 |    2 | 猪八戒    |    2 |
|    4 |  1423 |    4 | 小白龙    |    4 |
|    5 |  1120 |    5 | 唐三藏    |    5 |
|    6 |  1354 |    6 | 红孩儿    |    6 |
|    6 |  1367 |    6 | 红孩儿    |    6 |
+------+-------+------+-----------+------+
6 rows in set (0.00 sec)

三张表如何链接

创建成绩表grade2

mysql> create table grade2(sid int(10),score int(5));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into  grade2(sid,score) values(1,1234),(2,1235),(4,1423),(5,1120),(6,1354),(6,1367);
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> show tables;
+----------------+
| Tables_in_book |
+----------------+
| books          |
| cateGory       |
| grade          |
| grade2         |
| student        |
| tbdate         |
+----------------+
6 rows in set (0.00 sec)
mysql> select s.*,g1.*,g2.* from student as s right join grade as g1 on s.sid=g1.sid right join grade2 as g2 on s.sid=g2.sid;
+------+-----------+------+------+-------+------+-------+
| sid  | name      | id   | sid  | score | sid  | score |
+------+-----------+------+------+-------+------+-------+
|    1 | 孙悟空    |    1 |    1 |  1011 |    1 |  1234 |
|    2 | 猪八戒    |    2 |    2 |  1012 |    2 |  1235 |
|    4 | 小白龙    |    4 |    4 |  1162 |    4 |  1423 |
|    5 | 唐三藏    |    5 |    5 |   920 |    5 |  1120 |
|    6 | 红孩儿    |    6 |    6 |  1107 |    6 |  1354 |
|    6 | 红孩儿    |    6 |    6 |  1107 |    6 |  1367 |
|    6 | 红孩儿    |    6 |    6 |  1118 |    6 |  1354 |
|    6 | 红孩儿    |    6 |    6 |  1118 |    6 |  1367 |
+------+-----------+------+------+-------+------+-------+
或者:
mysql> select s.*,g1.*,g2.* from student s,grade g1,grade2 g2 where s.sid=g1.sid and g1.sid=g2.sid;
mysql> select s.*,g1.score,g2.score from student s,grade g1,grade2 g2 where s.sid=g1.sid=g2.sid;
mysql> select s.*,g1.score,g2.score from student s,grade g1,grade2 g2 where s.sid=g1.sid=g2.sid;
+------+-----------+------+-------+-------+
| sid  | name      | id   | score | score |
+------+-----------+------+-------+-------+
|    1 | 孙悟空    |    1 |  1011 |  1234 |
|    2 | 猪八戒    |    2 |  1012 |  1234 |
|    4 | 小白龙    |    4 |  1162 |  1234 |
|    5 | 唐三藏    |    5 |   920 |  1234 |
|    6 | 红孩儿    |    6 |  1107 |  1234 |
|    6 | 红孩儿    |    6 |  1118 |  1234 |
+------+-----------+------+-------+-------+
6 rows in set (0.00 sec)

二、MySQL下的聚合函数

函数:被封装成特定功能的代码块

2.1 求和函数

查看总分数

mysql> select sum(score) from grade;
+------------+
| sum(score) |
+------------+
|       7733 |
+------------+
1 row in set (0.01 sec)

2.2 查看平均分

mysql> select avg(score) from grade;
+------------+
| avg(score) |
+------------+
|  1288.8333 |
+------------+
1 row in set (0.00 sec)

2.3 查看最高分数

mysql> select max(score) from grade;
+------------+
| max(score) |
+------------+
|       1423 |
+------------+
1 row in set (0.00 sec)

2.4 查看最高分数及其对应的sid

mysql> select sid,score from grade where score=(select max(score) from grade);
+------+-------+
| sid  | score |
+------+-------+
|    4 |  1423 |
+------+-------+

2.5 查看最低分及对应的sid;

mysql> select sid,score from grade where score=(select min(score) from grade);
+------+-------+
| sid  | score |
+------+-------+
|    5 |  1120 |
+------+-------+
1 row in set (0.00 sec)

2.6 统计分数大于1300的人数

mysql> select count(*) from grade where score > 1300;
+--------------+
| count(score) |
+--------------+
|            3 |
+--------------+
1 row in set (0.00 sec)

2.7 算术运算

由于算法不同,没人在原本基础上各加30分;

mysql> update grade set score=score+30;
Query OK, 6 rows affected (0.01 sec)
Rows matched: 6  Changed: 6  Warnings: 0
mysql> select * from grade;
+------+-------+
| sid  | score |
+------+-------+
|    1 |  1264 |
|    2 |  1265 |
|    4 |  1453 |
|    5 |  1150 |
|    6 |  1384 |
|    6 |  1397 |
+------+-------+
6 rows in set (0.00 sec)

分数设置为原来的80%

mysql> update grade set score=score*0.8;

2.8 字符串函数

substr(string,start,len)截取:从start开始,长度为len,。start从1开始算。
mysql> select substr(name,1,2) from student where sid=1;
+------------------+
| substr(name,1,2) |
+------------------+
| 孙悟             |
+------------------+
1 row in set (0.00 sec)
concat(str1,str2,str3,...)拼接
mysql> select concat(sid,name,id) from student;
+---------------------+
| concat(sid,name,id) |
+---------------------+
| 1孙悟空1            |
| 2猪八戒2            |
| 3沙悟净3            |
| 4小白龙4            |
| 5唐三藏5            |
| 6红孩儿6            |
| 7哪吒7              |
+---------------------+
7 rows in set (0.00 sec)

大小写切换

mysql> select upper(name) from student where sid=10;
+------------------+
| upper(name)      |
+------------------+
| CAPTAioN AMERICA |
+------------------+
1 row in set (0.00 sec)

将大写字母改成小写

mysql> select lower(name) from student where sid=9;
+-------------+
| lower(name) |
+-------------+
| green giant |
+-------------+
1 row in set (0.00 sec)

日期查询

mysql> select curdate(),now(),curtime();
+------------+---------------------+-----------+
| curdate()  | now()               | curtime() |
+------------+---------------------+-----------+
| 2017-11-17 | 2017-11-17 00:12:42 | 00:12:42  |
+------------+---------------------+-----------+
1 row in set (0.00 sec)
mysql> create table tbdate(name char(13),birthday date);
Query OK, 0 rows affected (0.04 sec)

创建日期及使用

mysql> insert into tbdate values('HA',now());
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from tbdae;
ERROR 1146 (42S02): Table 'book.tbdae' doesn't exist
mysql> select * from tbdate;
+------+------------+
| name | birthday   |
+------+------------+
| HA   | 2017-11-17 |
+------+------------+
1 row in set (0.00 sec)

对于以上关于MySQL多表查询中如何运用函数,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的数据库,相信你会喜欢上这些内容的。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL多表查询中如何运用函数

本文链接: https://www.lsjlt.com/news/34955.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行mysql多表查询
    这期内容当中小编将会给大家带来有关如何进行mysql多表查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、准备数据库init.sql文件内容如下:SET N...
    99+
    2024-04-02
  • mysql如何查询数据库有多少表
    这篇文章主要为大家展示了“mysql如何查询数据库有多少表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql如何查询数据库有多少表”这篇文章吧。 ...
    99+
    2024-04-02
  • 【MySQL数据库】- 多表查询
    🍁博客主页:👉@不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉MySQL数据库专栏 ✨欢迎加入社区: 👉不会压弯的小...
    99+
    2023-08-17
    数据库 mysql sql
  • MySQL中如何实现多表查询操作
    本篇文章给大家分享的是有关MySQL中如何实现多表查询操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。create table&n...
    99+
    2024-04-02
  • MySQL数据查询中如何使用集合/聚合函数查询
    小编给大家分享一下MySQL数据查询中如何使用集合/聚合函数查询,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL聚合函数如下:函数作用avg()返回某列的平均值count()返回某...
    99+
    2024-04-02
  • MySQL数据库查询中怎么实现多表查询
    今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查...
    99+
    2023-06-29
  • 如何用php查询mysql数据表
    本篇内容主要讲解“如何用php查询mysql数据表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用php查询mysql数据表”吧!PHP 是一种极其流行的开源编程语言,可用于创建各种 Web...
    99+
    2023-07-05
  • mysql如何查询数据库有多少张表
    这篇文章主要介绍“mysql如何查询数据库有多少张表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql如何查询数据库有多少张表”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • mysql如何查询表中所有数据
    要查询MySQL表中的所有数据,可以使用SELECT语句。以下是查询表中所有数据的示例:```SELECT * FROM 表...
    99+
    2023-09-26
    mysql
  • MySQL数据库查询之多表查询总结
    目录多表关系表与表之间的联系:一对多(多对一)多对多一对一多表查询多表查询的分类1.连接查询:2.子查询内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询多表查询案例...
    99+
    2022-11-13
    mysql多表查询语句 mysql多表连接查询方式 mysql多表查询面试题
  • mysql如何查询表的行数
    小编给大家分享一下mysql如何查询表的行数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql查询表行数的方法:1、利用“SELECT”语句查询...
    99+
    2024-04-02
  • mysql如何查询表的个数
    这篇“mysql如何查询表的个数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql如...
    99+
    2024-04-02
  • mysql 多表关联查询如何改进
    mysql 多表关联查询怎么优化好呢 🚨 使用正确的连接类型优化 WHERE 子句为关联字段创建索引减少查询的字段考虑使用分布式查询尽量避免子查询优化连接顺序利用 EXPLAIN 分析查询分解复杂查询使用视图...
    99+
    2023-08-28
    mysql 数据库 sql 多表 优化
  • mysql如何实现多表连接查询
    这篇文章给大家分享的是有关mysql如何实现多表连接查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实际的项目,存在多张表的关联关系。不可能在一张表里面就能检索出所有数据。如果...
    99+
    2024-04-02
  • 如何查询mysql中所有表
    这篇文章主要介绍“如何查询mysql中所有表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何查询mysql中所有表”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • mysql中如何查询数据库中的表名
    目录查询数据库中的表名查询一个数据库中含有某关键词的表名查询数据库中所有的表总结查询数据库中的表名 查询一个数据库中含有某关键词的表名 搜索一个数据库中包含一些关键字,词的表。 SELECT TABLE_NA...
    99+
    2022-12-21
    mysql查询 查询数据库的表名 mysql查询表名
  • mysql中如何实现多表联合查询操作
    这篇文章将为大家详细讲解有关mysql中如何实现多表联合查询操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL多表联合查询语法:复制代码 代码如下...
    99+
    2024-04-02
  • MySQL数据库查询进阶之多表查询详解
    目录一、多表查询1.引出2.笛卡尔积3. 笛卡尔积的解决方法二、多表查询分类1.等值连接和非等值连接2.自连接和非自连接3.内连接和外连接4.自然连接5.using连接三、子查询1....
    99+
    2024-04-02
  • mysql如何查询表的数据量
    这篇文章主要介绍“mysql如何查询表的数据量”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql如何查询表的数据量”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • 如何用navicat做出多表查询
    要使用Navicat进行多表查询,您可以按照以下步骤操作:1. 打开Navicat并连接到您的数据库。2. 在左侧的导航栏中,展开数...
    99+
    2023-09-14
    navicat
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作