mysql

函数

  1. 单行函数

    exists 是否存在

  • 字符函数

    • ​ concat(a,b)拼接两个字符串

    • ​ ifnull(a+b,0) 如果a+b等于null,则返回0

    • upper,lower 大小写转换

      select upper(‘abc’);

    • substr/substring

    • instr 返回子串第一次出现的索引,如果找不到就返回0

    • trim 去除字符串前后的空格

    • replace(str,from_str,to_str)将第一个参数中的字符与第二个相等的字符替换成第三个参数

  • 数学函数

    • round 四舍五入
    • ceil 向上取整 返回>=该参数的最小整数
    • floor 向下取整 返回<=该参数的最大整数
    • truncate 截断
    • mod取余
  • 日期函数

    • now 返回当前系统日期+时间

    • curdate 返回当前系统日期,不i包含日期

    • curtime 返回当前时间,不包含日期

    • str_to_date 将日期格式的字符串转换为指定格式的日期

    • date_formate 将日期转换成字符

      DATE_FORMAT('2018/6/6','%年%月%日')

    • str_todate 将字符转换成日期

      STR_TO_DATE(’9-13-1999‘,‘%m-%d-%Y’)

  • 其他函数

  • 流程控制函数

  1. 分组函数(统计函数,聚合函数)

    sum 求和

    avg 平均值

    max 最大

    min 最小

    count 计算个数

    ​ count(1)、count(*)查询表中总条数

  2. group by

    select 分组函数 列(要求出现在group by 的后边)

    from 表 【where 筛选条件】

    group by 分组的列表

    【order by 子句】

where和having都是用来进行条件筛选的,where 是在分组前进行的,having是在分组后进行筛选的

连接查询

笛卡尔乘积现象:表1 有m行,表2:有n行,结果=m*n行

发生原因:没有有效的连接条件

如何避免:添加有效的连接条件

  • 内连接

    • 等值连接
    • 非等值连接
    • 自连接(同一张表,需要B字段作为A字段的查询条件。所以将同一张表看作两张表进行连接查询)
  • 外连接

    应用场景:用于查询一个表中有,另一个表中没有的纪录

    特点:1、外连接的查询结果为主表中的所有记录

    ​ 如果从表中有和他匹配的,则显示匹配的值

    ​ 如果从表中没有和他匹配,则显示为空

    ​ 外连接查询结果=内连接查询结果+主表中有而从表中没 有的记录

    ​ 2、左外连接,left join 左边是主表

    ​ 右外连接,right join 又表示主表

    ​ 3、左外和右外交换两个表的顺序,可以实现同样的效果

    • 左外连接

      left join

    • 右外连接

      right join

    • 全外连接

      full join(mysql不支持,大坑)

      查两个表的并集

    • 交叉连接

      cross join(实现笛卡尔乘积,目前感觉没啥用)

子查询

出现在其他语句中的select语句,成为子查询或内查询

外部的查询语句,称为主查询或外查询

分类:

按子查询出现的位置

select 后面

​ 仅仅支持标量子查询

from 后面

​ 支持表子查询

wherehaving后面

​ 标量子查询

​ 列子查询

​ 行子查询

exists后面(相关子查询)

​ 表子查询

按结果集的行列数不同:

标量子查询(结果集只有一行一列)

列子查询(结果集只有一列多行)

行子查询(结果集有一行多列)

表子查询(结果集一般为多行多列)

where或having后面

  1. 标量子查询(结果集只有一行一列)
  2. 列子查询(结果集只有一列多行)
  3. 行子查询(结果集有一行多列)

特点:

  1. 子查询一般放在小括号内
  2. 子查询一般放在条件右侧
  3. 标量子查询,一般搭配着单行操作符使用 > < >= <= = <>

列子查询,一般搭配这多行操作符使用

in、any/some、all

in/not in(等于列表中的任意一个)

any|some (和子查询返回的某一个值比较):可以被其他方式替代

all(和子查询返回的所有值比较):可以被其他方式替代

mysql学习+再复习的更多相关文章

  1. MySQL学习基础

    MySQL是被Sun公司收购了,所以也有热咖啡图标,不过MySQL的作者后来又做了一个MariaDB,小海豚图标,也很好用. MySQL学习: <MySQL网络数据库设计与开发>(电子工业 ...

  2. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  6. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  7. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  8. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

  9. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

随机推荐

  1. 安装TestNG

    1.启动Eclipse,选择"Help"-->'Install New Software' 2.在谈出的弹框中选择"Add" 3.在弹出的"Ad ...

  2. Docker 与 K8S学习笔记(十九)—— Pod的配置管理

    我们在部署应用时常常会考虑将应用程序与配置文件相分离,这样可以使应用程序更好的复用,并且通过不同配置也能实现更灵活的功能.将应用制作成镜像后,我们可以在启动容器时通过环境变量或挂载文件的方式注入,但是 ...

  3. Django db使用MySQL连接池

    Django db使用MySQL连接池 Sep 25 2016 Django db模块本身不支持MySQL连接池,只有一个配置CONN_MAX_AGE连接最大存活时间,如果WSGI服务器使用了线程池技 ...

  4. 集合框架-工具类-Collections-折半最值

    1 package cn.itcast.p2.toolclass.collections.demo; 2 3 import java.util.ArrayList; 4 import java.uti ...

  5. 【webpack4.0】---dev.config.js基本配置(六)

    一.开发环境配置准备 1.创建dev.config.js文件 用来配置开发环境的代码 2.安装webpack-merge cnpm install webpack-merge -D 用来合并webpa ...

  6. [JavaWeb]Shiro漏洞集合——代码审计

    Shiro漏洞集合 Shiro其实就是一组Filter,他会进行验证,鉴权,会话 Management,再把请求转到web过滤器.所以最好先去对Shiro有个整体性的了解. 复现环境:https:// ...

  7. 近期Android学习

    近5天没有更新博客,因为这几天略微放下了python的学习,android这边连带项目比较急迫,先花大约1个星期的时间把重心放在Android,但python肯定还会坚持下去,毕竟连着学了那么久了. ...

  8. Java安全之BCEL ClassLoader

    目录 Java安全之BCEL ClassLoader 写在前面 About BCEL 调试分析 食用姿势 Fuzz反序列化Gadget Fastjson BCEL Payload Thymeleaf ...

  9. 实现Nginx代理WSS协议

    因为线上H5游戏需要加上SSL,不想在原来的Web 服务器和游戏服务器支持SSL,只希望 在Nginx代理集群支持SSL.整体架构如下: 从上图可以看出需要总共涉及到https/http 和wss/w ...

  10. java命令-(学习)jstack 工具

    一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...