获取中...

-

Just a minute...

在MYSQL中查询操作涉及内容

[TOC]

function

对待查询字段在待查找表中出现的若干记录中的函数参数中指定的字段进行某些操作。

  • COUNT : 统计
  • SUM : 求和
  • AVG : 平均数

more about info

sentence

各个语句执行顺序:select –>where –> group by–> having–>order by。

常用语句

  • limit

    限定查找记录的条数。

  • offset

    查找偏移量,即前n条跳过,从n+1开始查询。

  • with rollup

    进一步得到group by信息的汇总信息。

  • having

    功能类似where,不同的是,where是筛选已存在的数据,having用来对前面的筛选进行进一步筛选。

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select 
    name,
    SUM(sign),
    SUM(score)
    from
    games
    group by
    name
    having
    SUM(score) > 80
    ;
    -- SUM(score)在games表中不存在,是待筛数据。
    -- 通过having可以对其进行进一步筛选。
  • link

    常与where配合使用,使用link子句匹配模式串,可以将link看作=

    可以使用正则表达式中的%来匹配任意字符。

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    *
    from
    Computer
    where
    Model link 'Mac%'
    ;

    -- 查找Computer表中Model字段中含有'Mac'的记录。
  • order by

    排序子句,给查找出来的记录排序,可以选择按照一个或多个字段为记录排序,

    当然也可以设置升序(asc)还是降序(desc),默认是升序。

    当然也可以添加where...link...来设置更加复杂的排序规则。

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    *
    from
    Computer
    order by
    Sales_volume
    ;

    -- 按照Sales_volume字段排序输出Computer表。
  • select ... into outfile 'filename'

    导出查询结果到文件。

  • union

    用来连接多个select语句,将结果合并输出,可选是(all)否(默认删除重复数据)删除重复数据。

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    select 
    Sales_volume
    from
    Computer
    union all
    select
    Sales_volume
    from
    Mobile_Phone
    order by
    Sales_volume
    ;

    -- 查找Computer表和Mobile_Phone表中的Sales_volume字段数据,
    -- 按照Sales_volume以默认方式排序,
    -- 而且不删除重复数据。

JOIN

用于连接两个或多个表,从多个表中查询数据。

… tableA [join语句] tableB … on [条件]

  • inner join:语句两端的两个表的交集。
  • left join:读取左边表中所有的匹配数据,即使右侧表中无匹配数据。
  • righe join :与lefr join正好相反。

NULL

在MYSQL中判断空值使用=!=是无效的,

NULL与任何其他值的比较结果一定是false,需要使用NULLIS NULL

在创建表的时候使用NULLNOT NULL来设置完整性约束。

正则表达式

MYSQL也是支持正则表达式匹配的,例如link子句中可以使用%来匹配任意字符。

在MYSQL中使用正则表达式需要使用 REGEXP子句来连接待查找字段和模式串。

常用模式:

模式 描述
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
[…] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^…] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,’z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

上表引自RUNOOB

临时表

临时表的生命周期与当前账号登陆时间等同,退出登陆时,该表空间释放。

创建临时表需要使用TEMPORARY子句修饰table

手动删除使用drop子句。

复制表

当需要完全的克隆一个已存在的表,只需要找出建表记录,使用该建表记录创建新表,然后将数据 拷贝拷贝进入即可。

  1. 找出建表记录

    show create table 表名

  2. 更改表名创建科隆表

  3. 克隆数据

    insert into ... select...

重复数据处理

  • 创建表时设置约束

    使用primary key将不可重复字段设置为主键。

    1. 在设置了主键或者唯一索引后使用通常的insert into插入重复数据将会报错
    2. 使用insert ignore into插入重复数据将仅仅是警告,然后忽略重复数据不执行插入。
    3. 使用replace into插入重复数据将使用带插入数据更新旧的数据。
  • 筛选

    1. select的时候使用distinct筛掉重复数据。
    2. 使用group by 对不需要重复的字段进行读取不重复的字段。

参考:

RUNOOB.COM
CSDN Blog
CSDN Blog
CSDN Blog

相关文章
评论
分享
  • 八大排序算法总结

    直接插入排序算法 概述直接插入排序算法在逻辑上将整体数据分为两部分,一部分是已排序部分,另一部分是待排序部分 。排序的过程是:在待排序部分逐步的拿出一个元素,将其插入到已排序部分中合理的位置 。 适用场景插入排序在对几乎已经排好序的数...

    八大排序算法总结
  • hexo低成本搭建静态网页博客

    引言好多同学有写博客的习惯,也有各大例如csd、简等博客平台。但是这些平台毕竟是盈利平台,无法做到对自己的博客完全掌控,有一丝丝的不爽快。想要DIY一下几乎不可能。在这里推荐同学们自己动手丰衣足食。 准备知识 github最基本的使用...

    hexo低成本搭建静态网页博客
  • 进程、线程及共享内存学习笔记

    进程、线程及共享内存学习笔记 系统环境:deepin Linux,语言环境:Linux C欢迎大家转载,转载请注明出处,谢谢! 理论基础: 进程:计算机上每个执行的活动,运行一个可执行程序是一个进程,打开一个软件是一个进程,打开...

    进程、线程及共享内存学习笔记
  • Linux常见配置文件

    转载自CoderZhuang,对CoderZhuang先生的博客进行补充和整理。 /etc 配置文件 /etc/passwd 用户数据库,其中的域给出了用户名、真实姓名、家目录、加密口令和用户的其他信息 /etc/group ...

    Linux常见配置文件
  • deepin系统使用笔记

    如果你是小白用户并且没有人在旁边指导,那么建议不要自行更改本文给出的命令。 图形界面相关的东西自行探索。 deepin系统安装后推荐配置sudo apt-get install -y git wget curl openssh...

    deepin系统使用笔记
  • Linux三剑客之awk的使用

    awk 是一款极其强大的文本处理工具,其语言于c语言的语法极其相似,上手很容易 内置变量与运算符数据来自RUNOOB 简单用法 12awk [参数] 'awk代码'awk [参数] -f awk脚本文件 常...

    Linux三剑客之awk的使用
  • linux三剑客之grep的使用

    部分内容源自网络和grep帮助信息。 用法1grep [参数选项] [模式串] [文件或目录] 常用参数选项说明 -o只显示与模式串匹配的内容。 -E 使用扩展正则表达式。 栗子: 1cat index.html | gr...

    linux三剑客之grep的使用
  • BASH杂记

    BASH杂记
  • HDU-1276

    题目描述 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开...

    HDU-1276
  • CPU信息获取

    准备知识 /proc文件系统是一个伪文件系统,该文件系统中存储着内核控制相关信息,通俗点说就是这个目录是虚拟的,它受内核直接控制,存储与内核控制相关的数据,与其他目录不同的是/proc目录不是真实存储在硬盘中的,它的数据存储在内存...

    CPU信息获取
Please check the parameter of comment in config.yml of hexo-theme-Annie!