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.xml 执行多个测试用例

    1.在工程名字上点击右键,点击[New]-->[File] 2.在弹出的[New File]对话框中的[File name]输入[testng.xml],点击[Finish]即创建了一个test ...

  2. 文件上传之结合phpinfo与本地文件包含利用

    背景 某站点存在本地文件包含及phpinfo,可以利用其执行脚本. 原理 原理: 利用php post上传文件产生临时文件,phpinfo()读临时文件的路径和名字,本地包含漏洞生成1句话后门 1.p ...

  3. C#进程调用FFmpeg操作音视频

    项目背景 因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂 ...

  4. 手写Webserver

    一.反射 反射Reflection:把java类中的各种结构(方法.属性.构造器.类名)映射成一个个的java对象.利用反射技术可以对一个类进行解剖,反射是框架设计的灵魂 //在运行期间,一个类,只有 ...

  5. vscode设置vue结构的初始代码片段

    { "Print to console": { "prefix": "vue", "body": [ "< ...

  6. Sentry 开发者贡献指南 - 配置 PyCharm

    概述 如果您使用 PyCharm 进行开发,则需要配置一些内容才能运行和调试. 本文档描述了一些对 sentry 开发有用的配置 配置 Python 解释器:(确保它是 venv 解释器)例如 ~/v ...

  7. Nginx 反向代理解决跨域问题分析

    当你遇到跨域问题,不要立刻就选择复制去尝试.请详细看完这篇文章再处理 .我相信它能帮到你. 分析前准备: 前端网站地址:http://localhost:8080 服务端网址:http://local ...

  8. git 重置密码后,本地电脑需要修改git密码

    查看用户名git config user.name 查看密码git config user.password 查看邮箱git config user.email 修改密码git config --gl ...

  9. (3)ESP32 Python 制作一个办公室温度计

    因为经常在办公室里面不知道实际室内温度是多少,所以用ESP32做了一个工具来进行温度&湿度的监测.在之前的文章当中,已经完成了ESP32的数据上云工作,如果要进行温度/湿度的检测.从原理上就是 ...

  10. golang中的sync

    1. Go语言中可以使用sync.WaitGroup来实现并发任务的同步 package main import ( "fmt" "sync" ) func h ...