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. JVM组成详解

    一.JVM 整体组成 JVM 整体组成可分为以下四个部分: 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库 ...

  2. 同步gitlab与github

    1.找到setting 2.找到左下方的developer setting 3.按标好的数字依次执行 4.填写note并勾选repo 5.在最左下方勾选 6.保存生成的新的token到其他地方,之后你 ...

  3. 【数据结构与算法】蓄水池抽样算法(Reservoir Sampling)

    问题描述 给定一个数据流,数据流长度 N 很大,且 N 直到处理完所有数据之前都不可知,请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出 m 个不重复的数据. 比较直接的想法是利用随机数算 ...

  4. 2月4日 体温APP开发记录

    1.阅读构建之法 现代软件工程(第三版) 2.观看Android开发视频教程最新版 Android Studio开发 3.数据库链接,,数据传输功能测试

  5. csapp lab2 拆炸弹

    1. 实验内容 包含一个二进制应用bomb,需要根据该应用猜测程序的运行过程.程序主体包含了六个函数phase_1到phase_6,每个函数会根据用户的输入做出反应,当输入符合要求时,会炸弹拆解成功, ...

  6. 【经验总结】CodeBlocks使用mingw64

    CodeBlocks使用 标签:c++ 一.安装并配置mingw-w64 使用中发现CB默认的编译器版本过低,c++11的一些东西无法使用,比如string中的stoi函数,因此尝试安装新版本的编译器 ...

  7. 简述BIO/NIO/AIO前世今生

    如下程序是简单实现了一个极其简单的WEB服务器,用来监听某个端口,接受客户端输入输出信息. 但这个程序有一个致命的问题就是连接会长时间阻塞 于是BIO版本出现了,改成了  一个连接 一个线程来处理请求 ...

  8. Ubuntu 14.04更换内核

    1:查看当前安装的内核 dpkg -l|grep linux-image 2:查看可以更新的内核版本: sudo apt-cache search linux-image 3:安装新内核 sudo a ...

  9. 导入 static 修饰的包

    一 static关键字,可以修饰变量  方法  代码块 ,  静态内部类.  还可以用来修饰 需要导入的包 准备工作 package zhouxufeng; public class Text1 { ...

  10. django之集成第三方支付平台PaysAPI与百度云视频点播服务接入

    PaysAPI直接查看接口文档:https://www.paysapi.com/docindex,比较简单 百度云视频点播服务接入: 1. 准备工作:百度云的示例:http://cyberplayer ...