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. Blinn-Phong反射模型实践(web实现)

    Blinn-Phong反射模型实践(web实现) games101 第四次作业 最终完成带贴图的 Blinn-Phong 模型,产生光照效果 完成了 不带贴图的 Blinn-Phone 反射模型 带贴 ...

  2. CUDA 入门(转)

    CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构.做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要 ...

  3. 18个示例详解 Spring 事务传播机制(附测试源码)

    什么是事务传播机制 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播. 举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及 ...

  4. Java常见对象内存分析

    首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...

  5. thinkpad s5 电源功率不足提示

    相关答案 作者:路灯瓜 链接:https://www.zhihu.com/question/47551448/answer/122578101 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...

  6. GitHub pages+自定义域名(腾讯云域名)+cloudflare加速

    本人也是第一次走完整个流程,github pages当然一直有使用,创建也很简单,并且网上教程也比较多:然后是关于自定义域名的问题,自己以前使用过国外的免费域名,然后是直接修改就ok了,然后这次使用了 ...

  7. pytest文档7-计算单元测试代码覆盖率(pytest-cov)

    pytest-cov 先命令行安装 pytest-cov 2.10.1版本 pip install pytest-cov==2.10.1 环境要求:1.python3.6.6 版本备注:其它版本没试过 ...

  8. 理解cpu load

    三种命令 1. w 2. uptime 3. top CPU负载和CPU利用率的区别 1)CPU利用率:显示的是程序在运行期间实时占用的CPU百分比 2)CPU负载:显示的是一段时间内正在使用和等待使 ...

  9. 学习Java第13天

    今天选择数据库选了半天,Oracle,MySQL,SQL sever太难了,安装了又被图形界面,Linux虚拟机所困扰 明天尽量完成数据库安装 只能说是找视频资料和安装教程了.

  10. 在树莓派上开发SpringBoot 之使用VSCode远程开发

    一些运行在ARM单板电脑上的IoT应用通常会提供RESTful风格的API接口.本次的文章记录如何在本地电脑上通过VS Code的远程开发功能,在树莓派端创建一个SpringBoot工程,并实现调试和 ...