MySQL 数值函数,字符串函数与多表查询

MySQL像其他语言一样,也提供了很多库函数,分为单行函数和分组函数(聚合函数),我们这里先简易介绍一些函数,熟悉就行,知道怎么使用即可.

数值函数

三角函数

指数与对数函数

进制间的转换函数

字符串函数

注:LPAD函数是右对齐,RPAD函数是左对齐

多表查询

注:如果为表起了别名,就不能使用表的原名了

多表查询的实现一共有SQL92和SQL99两种语法方式.至于为什么需要多表查询呢?

由于我们在实现业务的时候将不同的表分开会提高我们的查询效率,

我们这里用七张来描述两张表的关系

其中最下面两张表是由上面的表组合产生的

内连接

中图是表示内连接的图,只包含两张图的数据都不为空的情况

eg:在两张表中查询员工姓名和奖金 使用内连接查询就不会查到没有姓名的奖金或没有奖金的员工

sql 复制代码
//SQL92语法
SELECT 字段  FROM 表a,表b WHERE 连接条件;



//SQL99语法
SELECT 字段 FROM 表a JOIN 表b ON 连接条件; 

外连接

左外连接(左上图)

需求: 假设我需要查询到所有员工的奖金情况,包含没有奖金的也需要显示记录,此时就可以使用左外连接

注:MySQL不支持SQL92语法中左外连接

sql 复制代码
//SQL92语法
SELECT 字段  FROM 表a,表b WHERE a.id = b.id(+);
数据少的那一方放一个+即可


//SQL99语法
SELECT 字段 FROM 表a(员工表) LEFT JOIN 表b ON 连接条件; 

右外连接(右上图)

和上面类似

sql 复制代码
//SQL92语法
SELECT 字段  FROM 表a,表b WHERE a.id(+) = b.id;
数据少的那一方放一个+即可


//SQL99语法
SELECT 字段 FROM 表a(员工表) RIGHT JOIN 表b ON 连接条件; 

左中图

sql 复制代码
SELECT 字段 FROM 表a(员工表) RIGHT JOIN 表b ON 连接条件 WHERE b.data IS NULL;

右中图

sql 复制代码
SELECT 字段 FROM 表a(员工表) RIGHT JOIN 表b ON 连接条件 WHERE a.data IS NULL;

UNION关键字的使用

作用:将两个查询到的结果集结合到一起,要求是对应列的数据类型相同.

SQL中的UNION操作符告诉数据库将通过单独的SELECT查询检索到的两个单独的结果集合并为一个结果集,其中包含两个查询返回的行。

注意:数据库不会限制UNION中SELECT查询的复杂性。数据检索查询可以包括JOIN语句、聚合或子查询。通常,UNION用于合并复杂语句的结果。

注:不建议使用 union ,因为 union操作设计去重操作,会加大开销,建议使用 union all 操作

满外连接(左下图)

sql 复制代码
//SQL99
SELECT 字段 FROM 表a(员工表) FULL JOIN 表b ON 连接条件; 

//SQL92 

LEFT JOIN 的语句 UNION ALL b.data IS NULL;

下面几个图都是一样的,不做过多赘述

SQL99新特性

自然连接

(natural join) 可以自动识别两个表相同字段的列做连接

自动识别连接条件

sql 复制代码
SELECT 字段 FROM 表a(员工表) NATURAL JOIN 表b ;

using(和join配合使用)

sql 复制代码
SELECT 字段 FROM 表a(员工表) FULL JOIN 表b USING(连接条件);
相关推荐
阿巴~阿巴~1 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos
qq_404643342 小时前
MySQL中RUNCATE、DELETE、DROP 的基本介绍
数据库·mysql
像风一样!2 小时前
MySQL数据库如何实现主从复制
数据库·mysql
大白的编程日记.3 小时前
【MySQL】数据库表的CURD(二)
android·数据库·mysql
友善的鸡蛋3 小时前
项目中执行SQL报错oracle.jdbc.OracleDatabaseException: ORA-00942: 表或视图不存在
数据库·sql·oracle
The best are water3 小时前
jeesite mybatis添加拦截器,推送指定表的变更数据到其他数据库
数据库·mybatis
api_180079054603 小时前
异步数据采集实践:用 Python/Node.js 构建高并发淘宝商品 API 调用引擎
大数据·开发语言·数据库·数据挖掘·node.js
怕什么真理无穷3 小时前
mysql server 9.4 windows安装教程(sqlyog 下载)
数据库
Olrookie4 小时前
MySQL运维常用SQL
运维·数据库·sql·mysql·dba
数据库生产实战4 小时前
ORACLE 19C ADG环境 如何快速删除1.8TB的分区表?有哪些注意事项?
数据库·oracle