MySql查询

单表查询:

  • 查询所有字段

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

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

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

多表查询:

  • 普通双表连接查询

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

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

    • 左连接

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

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

常用函数:

  • SUM()

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

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

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

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

    1. 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. Jsp页面跳转和js控制页面跳转的几种方法

    Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...

  2. luogu4383 [八省联考2018]林克卡特树(带权二分+dp)

    link 题目大意:给定你 n 个点的一棵树 (边有边权,边权有正负) 你需要移除 k 条边,并连接 k 条权值为 0 的边,使得连接之后树的直径最大 题解: 根据 [POI2015]MOD 那道题, ...

  3. 2016级算法第一次练习赛-B.朴素的中位数

    朴素的中位数 题目链接:https://buaacoding.cn/problem/846/index 分析 题意很简单,就是给定了两个从小到大排好序的数组,找出这两个数组合起来的数据中的中位数. 方 ...

  4. stark - 1 ⇲一些理念

    ⒈.django项目启动时,自定义执行某个py文件. 在任意的app的apps.py中的Config类中定义ready方法,并调用autodiscover_modules from django.ap ...

  5. HDU 5442 后缀自动机(从环字符串选定一个位置 , 时针或顺时针走一遍,希望得到字典序最大)

    http://acm.hdu.edu.cn/showproblem.php?pid=5442 题目大意: 给定一个字符串,可理解成环,然后选定一位置,逆时针或顺时针走一遍,希望得到字典序最大,如果同样 ...

  6. Flask基础应用

    一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 Django: 优点: 大而全,组件非常全面. 缺点: 太大,加载太大,浪费资源. Flask: 优点: ...

  7. sql 简单语法

    1.数据库操作 create database student_info -- 创建数据库 drop database student_info -- 删除数据库 2.表操作 -- 创建表 creat ...

  8. Python爬虫:微博粉丝列表

    前言 本来打算做一个关于微博粉丝列表的爬虫,可以统计一下某个微博账号的粉丝里面,僵尸粉(水军)的数量,大V数量. 结果写完爬虫才发现,现在微博只给人看粉丝列表的前5页.......哈哈,好吧.挺无奈的 ...

  9. sort sorted() reverse() reversed() 的区别

    sort()是可变对象(字典.列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值.sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组.字符串是不具有这些方法的 ...

  10. uvm_cmdline_processor

    无意中看到uvm_cmdline_processor,之前使用+UVM_TESTNAME也没深究,现在记录一下 内部调用脚本中的参数,通过使用uvm_cmdline_processor可以从脚本层级, ...