MySql查询

单表查询:

  • 查询所有字段

    SELECT * FROM 表名;  '*' 代表所有字段
  • 查询指定字段

    SELECT 字段名1, 字段名2 FROM 表名;
  • 按照指定条件查询记录

    1. 	查询某条特定记录:
    SELECT * FROM 表名 WHERE 字段名 = '条件'; 2. 带 IN 关键字的条件查询:
    SELECT * FROM 表名 WHERE 字段名 IN ('范围');
    SELECT * FROM 表名 WHERE 字段名 NOT IN ('范围'); 3. 带 BETWEEN AND 关键字的调价查询:
    SELECT * FROM 表名 WHERE 字段名 BETWEEN '左范围' AND '右范围';
    SELECT * FROM 表名 WHERE 字段名 NOT BETWEEN '左范围' AND '右范围'; 4. 带 LIKE 关键字的模糊条件查询:
    " % " 表示比配任意长度的字符.
    " _ " 表示只能匹配一个长度的字符.
    SELECT * FROM 表名 WHERE 字段名 LIKE '条件 + 通配符';
    例子: SELECT * FROM student WHERE name LIKE 'B_B';
    查询名字以B开头以B结尾的只能是三个字符的记录
    SELECT * FROM student WHERE name LIKE 'B__B';
    查询名字以B开头以B结尾的只能是四个字符的记录
    SELECT * FROM student WHERE name LIKE 'B%B';
    查询名字以B开头以B结尾的可以是任意字符的记录 5. 带 AND 的多条件查询
    AND 相当于'逻辑与', 也就是说同时满足条件才算匹配
    SELECT * FROM 表名 WHERE 字段1 = '条件1' AND 字段2 > '条件2';
    同时满足条件一,条件二两个条件才能匹配 6. 带 OR 的多条件查询
    OR 相当于'逻辑或', 也就是说只要满足条件之一就可以匹配
    SELECT * FROM 表名 WHERE 字段1 = '条件1' or 字段2 = '条件2';
    满足条件1或者满足条件2即可匹配 7. 关键字 DISTINCT (查询结果不重复)
    SELECT DISTINCT 字段1 FROM 表名;
    有时多条记录的某一个字段可能值时重复的,但我们并不想要重复的数据.在字段名前加上 DISTINCT 即可 8. 分组查询:
    SELECT 字段1 FROM 表名 GROUP BY 字段1;
    解释:
    注意分组动作是查询后到记录后在进行的,所以不能字段1要么是 *, 要么分组字段名在前面已经被查询
    SELECT 字段1, COUNT(字段2), GROUP_CONCAT(字段2) FROM 表名 GROUP BY 字段1;
    解释:
    COUNT() 函数: 计算有多少条记录,
    GROUP_CONCAT() 函数: 将分组中的某个字段名显示出来
    SELECT 字段1,COUNT(字段2) FROM 表名 GROUP BY 字段1 HAVING COUNT(字段2) > 条件1;
    解释:
    分组之后还可以进行条件过滤, 将不想要的分组丢弃, 使用 HAVING 关键字.
    HAVING 和 WHERE 的区别: 前者是在分组后过滤, 后者是在分组前过滤
    9. 使用LIMIT限制查询结果的数量
    SELECT * FROM 表名 LIMIT 4;
    LIMIT [位置偏移量] [行数] SELECT * FROM 表名 LIMIT 4,5
    表示从第五条数据开始读, 往后读三条数据, 也就是读第五条到第八条.
    LIMIT 第一个参数不写默认就是0 需要两个参数才能确定一个取记录的范围. 10. 查询空值:
    SELECT * FROM 表名 WHERE 字段名 IS NULL;
    查询字段名是NULL的记录
    SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;
    查询字段名不是NULL的记录

多表查询:

  • 普通双表连接查询

    SELECT s.字段名1, s.字段名2, f.字段名1, f.字段名2 FROM 表1 AS f, 表2 AS s WHERE 条件1
    解释:给表1建一个别名为f, 给表2建一个别名为s, 查询s表中的字段1,2 和 f表中的字段1,2 在满足条件1下 的所有记录
  • 内连接查询

    使用 表1 INNER JOIN 表2 ON 连接条件
    SELECT s.字段1 FROM 表1 AS s INNER JOIN 表2 as f ON f.字段1 = s.字段1
    解释:查询表1中的所有字段1和表2中的字段1相等的记录中的字段1 PS:自连接? : 涉及到的两张表都是同一张表.
    SELECT f2.字段1,f2.字段2 FROM 表1 AS f1 INNER JOIN 表1 as f2 ON f1.字段1 = f2.字段1 AND f1.字段1 = '条件1';
    查询表的字段1 = '条件1' 的其他记录
  • 外链接查询

    • 左连接

      使用 表1 LEFT JOIN 表2 ON 连接条件 格式
      SELECT s.字段1, f.字段1,f.字段2 FROM 表1 as s LEFT JOIN 表2 as f ON s.字段1 = f.字段1;
      解释:
      根据语序我们知道 表1 是在左面 JOIN 进表2的 所以在表1中 s.字段1 不等于 f.字段1 的记录也会被查询出来.只不过查询出来的f.字段1, f.字段2 值为 NULL
    • 右连接

      使用 表1 RIGHT JOIN 表2 ON 连接条件 格式
      SELECT s.字段1, f.字段1,f.字段2 FROM 表1 as s RIGHT JOIN 表2 as f ON s.字段1 = f.字段1;
      解释:
      和左连接差不多,只不过是右表的数据全部显示出来

常用函数:

  • SUM()

    SUM(字段名):求总和,返回指定列值的总和
  • COUNT()

    COUNT(*):计算表中的总行数
    COUNT(字段名):计算该字段名下的总行数,空值也就是 NULL 值不会记录
  • AVG()

    AVG(字段名):求平均值
  • MAX()

    MAX(字段名):求字段中最大的值
  • MIN()

    MIN(字段名):求字段中最小的值

MySQL查询(未完结)的更多相关文章

  1. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  2. MySQL查询缓存详解

    一:缓存条件,原理 MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELE ...

  3. mysql 查询每个分组前N条记录

    mysql 查询每个分组前N条记录 假设存在表movie,  有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...

  4. MYSQL查询操作 详细

    学习目标 1 掌握select查询所有字段.指定字段的数据 2 掌握消除重复行命令distinct 3 掌握as给字段.表起别名 4 掌握条件查询where后跟比较运算符.逻辑运算符的用法 5 掌握条 ...

  5. MYSQL查询语句大全集锦

    MYSQL查询语句大全集锦 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> C ...

  6. MySQL安装未响应解决方法

    安装MySQL出示未响应,一般显示在安装MySQL程序最后2步的3,4项就不动了. 这种情况一般是你以前安装过MySQL数据库服务项被占用了. 1.卸载MySQL 2.删除安装目录及数据存放目录 3. ...

  7. Mysql查询缓存研究

    转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(dbaplus). http://mp.weixin.qq.com/s?__biz=MzI ...

  8. 数据库之MySQL查询

    查询 创建数据库.数据表 -- 创建数据库 create database python_test1 charset=utf8; -- 使用数据库 use python_test1; -- stude ...

  9. mysql查询、子查询、连接查询

    mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...

随机推荐

  1. luogu5282 【模板】快速阶乘算法

    由于巨佬 shadowice1984 卡时限,本代码已经 T 请不要粘上去交 退役之后再写一个常数小的多项式取模吧 一句话题意:NP问题,求N!%P 吐槽:出题人太毒瘤...必须写任意模数NTT,而且 ...

  2. [转载]Flip an image in UIImageView using UIView transitionWithView

    View animations on the iPhone are wonderful. Used properly they will delight your users and help you ...

  3. php 返回数组中指定多列的方法

    php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法. 1.array_column说明 ...

  4. 适配器模式-如何把usb插到插座上

    前言 下面所写的内容不是实际的业务场景, 也可能不符合正常的生活习惯, 或者不满足一些人的口味 所写的内容包括之前的帖子,只是为了方便大家更好的记住这个设计模式,实际生活中要灵活应用 设计模式重思想, ...

  5. Java操作系统剪贴板(Clipboard)复制粘贴

    Java操作系统剪贴板(Clipboard)复制粘贴

  6. 微信小程序,全局变量方法的使用

    方法一:app.js 内设置全局变量(如屏宽,屏高的设置) 1.app.js文件,定义全局变量 /定义全局变量 globalData:{ userInfo:null, sysInfo:null, wi ...

  7. # js设置键名和键值de坑

    js设置键名和键值 let obj1 = {'jifeng': 60, 'lilu': 59, 'hongyan': 51, 'donghan': 4, 'liudan': 18, 'liuhaiya ...

  8. ImportError: No module named 'tkinter'

    环境说明: windows7.vscode1.33.1.python3.7.0. 解决方案: 通过安装程序单独卸载“tcl/tk and IDLE”------重新安装“tcl/tk and IDLE ...

  9. 转:五年java人的一点感悟

    转自:五年java人的一点感悟 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自 己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了 ...

  10. Python编程中报过的错

    一.TypeError: not all arguments converted during string formatting def max(*args): print('max2:%s' % ...