MySQL 单表查询

男娘i 2022-05-08 11:56 376阅读 0赞

创建数据库并插入数据

  1. # 创建表,数据类型请自行查询
  2. CREATE TABLE fruits (
  3. id INT NOT NULL,
  4. sid INT NOT NULL,
  5. NAME CHAR(255) NOT NULL,
  6. price DECIMAL (8, 2) NOT NULL,
  7. PRIMARY KEY (id)
  8. );
  9. # 表中插入数据
  10. INSERT INTO fruits
  11. VALUES
  12. ('1', 101, 'apple', 5.2),
  13. ('2', 101, 'blackberry', 10.2),
  14. ('3', 102, 'orange', 11.2),
  15. ('4', 105, 'melon', 8.2),
  16. ('5', 102, 'banana', 10.3),
  17. ('6', 102, 'grape', 5.3),
  18. ('7', 103, 'coconut', 9.2),
  19. ('8', 101, 'cherry', 3.2),
  20. ('9', 103, 'apricot', 2.2),
  21. ('10', 104, 'lemon', 6.4),
  22. ('11', 104, 'berry', 7.6),
  23. ('12', 106, 'mango', 15.6);

单表查询

查询所有字段

  1. SELECT * FROM fruits;
  2. id sid name price
  3. 1 101 apple 5.20
  4. 2 101 blackberry 10.20
  5. 3 102 orange 11.20
  6. 4 105 melon 8.20
  7. 5 102 banana 10.30
  8. 6 102 grape 5.30
  9. 7 103 coconut 9.20
  10. 8 101 cherry 3.20
  11. 9 103 apricot 2.20
  12. 10 104 lemon 6.40
  13. 11 104 berry 7.60
  14. 12 106 mango 15.60

查询指定字段

  1. SELECT ID,NAME FROM fruits;
  2. ID NAME
  3. 1 apple
  4. 2 blackberry
  5. 3 orange
  6. 4 melon
  7. 5 banana
  8. 6 grape
  9. 7 coconut
  10. 8 cherry
  11. 9 apricot
  12. 10 lemon
  13. 11 berry
  14. 12 mango

查询指定条件的字段

  1. SELECT * FROM fruits WHERE NAME = 'BANANA';
  2. id sid name price
  3. 5 102 banana 10.30

带IN关键字的查询

IN关键字:IN(xx,yy,…) 满足条件范围内的一个值即为匹配项,括号内的值,或的关系

  1. SELECT * FROM fruits WHERE NAME IN ('BANANA','ORANGE');
  2. id sid name price
  3. 3 102 orange 11.20
  4. 5 102 banana 10.30
  5. SELECT * FROM fruits WHERE ID NOT IN (3,8);
  6. id sid name price
  7. 1 101 apple 5.20
  8. 2 101 blackberry 10.20
  9. 4 105 melon 8.20
  10. 5 102 banana 10.30
  11. 6 102 grape 5.30
  12. 7 103 coconut 9.20
  13. 9 103 apricot 2.20
  14. 10 104 lemon 6.40
  15. 11 104 berry 7.60
  16. 12 106 mango 15.60

带BETWEEN AND 的范围查询

BETWEEN … AND … : 在…到…范围内的值即为匹配项

  1. SELECT * FROM fruits WHERE ID BETWEEN 3 AND 9;
  2. id sid name price
  3. 3 102 orange 11.20
  4. 4 105 melon 8.20
  5. 5 102 banana 10.30
  6. 6 102 grape 5.30
  7. 7 103 coconut 9.20
  8. 8 101 cherry 3.20
  9. 9 103 apricot 2.20
  10. SELECT * FROM fruits WHERE ID NOT BETWEEN 5 AND 11;
  11. id sid name price
  12. 1 101 apple 5.20
  13. 2 101 blackberry 10.20
  14. 3 102 orange 11.20
  15. 4 105 melon 8.20
  16. 12 106 mango 15.60

带LIKE的字符匹配查询

LIKE: 模糊查询,和LIKE一起使用的通配符有 “%”、”_“


















通配符 功能
“%” 作用是能匹配任意长度的字符。
“_” 只能匹配任意一个字符
  1. SELECT * FROM fruits WHERE NAME LIKE 'black%';
  2. id sid name price
  3. 2 101 blackberry 10.20
  4. SELECT * FROM fruits WHERE NAME LIKE 'b%y';
  5. id sid name price
  6. 2 101 blackberry 10.20
  7. 11 104 berry 7.60
  8. SELECT * FROM fruits WHERE NAME LIKE '_ER_Y';
  9. id sid name price
  10. 11 104 berry 7.60

逻辑与之带AND的多条件查询

and:同时满足条件

  1. SELECT
  2. *
  3. FROM
  4. fruits
  5. WHERE id IN (2, 4, 6, 8, 10)
  6. AND sid > 102;
  7. id sid name price
  8. 4 105 melon 8.20
  9. 10 104 lemon 6.40

逻辑或之OR的多条件查询

OR:有一个满足即可,类似in

  1. SELECT
  2. *
  3. FROM
  4. fruits
  5. WHERE id IN (2, 4, 6, 8, 10)
  6. OR sid > 102;
  7. id sid name price
  8. 2 101 blackberry 10.20
  9. 4 105 melon 8.20
  10. 6 102 grape 5.30
  11. 7 103 coconut 9.20
  12. 8 101 cherry 3.20
  13. 9 103 apricot 2.20
  14. 10 104 lemon 6.40
  15. 11 104 berry 7.60
  16. 12 106 mango 15.60

关键字DISTINCT查询不重复的数据

  1. SELECT
  2. DISTINCT SID
  3. FROM
  4. fruits
  5. WHERE id IN (2, 4, 6, 8, 10)
  6. OR sid > 102;
  7. SID
  8. 101
  9. 105
  10. 102
  11. 103
  12. 104
  13. 106

ORDER BY对查询的结果排序

ORDER BY 字段 DESC 逆序排列

  1. SELECT DISTINCT
  2. SID
  3. FROM
  4. fruits
  5. WHERE id IN (2, 4, 6, 8, 10)
  6. OR sid > 102
  7. ORDER BY sid DESC;
  8. SID
  9. 106
  10. 105
  11. 104
  12. 103
  13. 102
  14. 101

ORDER BY 字段 ASC 正序排列,默认为正

  1. SELECT DISTINCT
  2. SID
  3. FROM
  4. fruits
  5. WHERE id IN (2, 4, 6, 8, 10)
  6. OR sid > 102
  7. ORDER BY sid ASC;
  8. SID
  9. 101
  10. 102
  11. 103
  12. 104
  13. 105
  14. 106

GROUP BY 对查询结果进行分组

不分组

  1. SELECT SID FROM fruits;
  2. SID
  3. 101
  4. 101
  5. 102
  6. 105
  7. 102
  8. 102
  9. 103
  10. 101
  11. 103
  12. 104
  13. 104
  14. 106

将相同的内容分到同一个组里面

分组之后,重复的都被分到一组

  1. SELECT SID FROM fruits GROUP BY SID ;
  2. SID
  3. 101
  4. 102
  5. 105
  6. 103
  7. 104
  8. 106

GROUP_CONCAT查看分组后的数目和内容

查看分组中的各个字段内容 GROUP_CONCAT( )

  1. SELECT SID,COUNT(NAME),GROUP_CONCAT(NAME) FROM fruits GROUP BY sid;
  2. SID count(name) group_concat(name)
  3. 101 3 apple,blackberry,cherry
  4. 102 3 orange,banana,grape
  5. 103 2 coconut,apricot
  6. 104 2 lemon,berry
  7. 105 1 melon
  8. 106 1 mango

HAVING条件过滤,相当于WHERE,只能分组用

  1. SELECT SID,COUNT(NAME),GROUP_CONCAT(NAME) FROM fruits GROUP BY sid HAVING SID > 103;
  2. SID count(name) group_concat(name)
  3. 104 2 lemon,berry
  4. 105 1 melon
  5. 106 1 mango

LIMIT 限制查询结果的数量

LIMIT 位置偏移量,行数
默认位置偏移量为0,即第1行

通过LIMIT可以选择数据库表中的任意行数,也就是不用从第一条记录开始遍历,可以直接拿到 第5条到第10条的记录,也可以直接拿到第12到第15条的记录。

  1. SELECT * FROM fruits WHERE ID LIMIT 0,5;
  2. id sid name price
  3. 1 101 apple 5.20
  4. 2 101 blackberry 10.20
  5. 3 102 orange 11.20
  6. 4 105 melon 8.20
  7. 5 102 banana 10.30
  8. SELECT * FROM fruits WHERE ID LIMIT 5,9;
  9. id sid name price
  10. 6 102 grape 5.30
  11. 7 103 coconut 9.20
  12. 8 101 cherry 3.20
  13. 9 103 apricot 2.20
  14. 10 104 lemon 6.40
  15. 11 104 berry 7.60
  16. 12 106 mango 15.60

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL查询

    本篇博客主要介绍了如何SELECT进行单表查询,怎样使用WHERE结合各种运算符对数据进行过滤,如何使用ORDER BY 子句 查询 概述:使用数据库保存数据