千家信息网

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

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,下文主要给大家带来MySQL多表查询中如何运用函数,希望这些内容能够带给大家实际用处,这也是我编辑MySQL多表查询中如何运用函数这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一、多表组合查
千家信息网最后更新 2025年01月19日MySQL多表查询中如何运用函数

下文主要给大家带来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: 0mysql> 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: 0mysql> 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 existmysql> select * from tbdate;+------+------------+| name | birthday   |+------+------------+| HA   | 2017-11-17 |+------+------------+1 row in set (0.00 sec)

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

孩儿 函数 查询 三藏 孙悟空 小白 猪八戒 分数 链接 内容 哪吒 最高 下文 字段 成绩 数据 日期 条件 语法 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库置疑了怎么修复 我的世界用什么开服务器安全 服务器的信号为什么是蓝色 山东gpu服务器租用报价 保定友泽软件开发有限公司 ff14晨曦王座在哪个服务器 广东冲浪网络技术 待遇 星语心愿吉他谱软件开发 OD数据库断点 软件开发增值税有减免 linux服务器流量突增分析 帝国时代4不能连接服务器 互联网科技新项目 刺激战场亚服服务器资源 酒店管理系统数据库实施 滁州边缘计算工控机服务器 安全账号管理数据库 服务器玻璃防护套 办案软件开发平台 达梦企业版数据库参数 联想服务器电源灯一个闪一个不闪 霍尔果斯百卓网络技术有限公司 上海电力应急软件开发服务价钱 鸿业是基于什么软件开发的 VB软件开发招聘信息 方舟如何识别千通服务器 静安区网络技术开发市场价格 数据库系统推荐 易烊千玺助力网络安全使用 服务器返回字符串到客户端
0