查询MySQL数据

1、准备一张名为fruits(水果)数据表

MariaDB [vincen]> CREATE TABLE fruits   #创建一张数据表
    -> (
    -> f_id    char(10)     NOT NULL,
    -> s_id    INT        NOT NULL,
    -> f_name  char(255)  NOT NULL,
    -> f_price decimal(8,2)  NOT NULL,
    -> PRIMARY KEY(f_id) 
    -> );
Query OK, 0 rows affected (0.02 sec)
MariaDB [vincen]>  INSERT INTO fruits (f_id, s_id, f_name, f_price)  #为fruits数据表插入相应的数据
    ->      VALUES('a1', 101,'apple',5.2),
    ->      ('b1',101,'blackberry', 10.2),
    ->      ('bs1',102,'orange', 11.2),
    ->      ('bs2',105,'melon',8.2),
    ->      ('t1',102,'banana', 10.3),
    ->      ('t2',102,'grape', 5.3),
    ->      ('o2',103,'coconut', 9.2),
    ->      ('c0',101,'cherry', 3.2),
    ->      ('a2',103, 'apricot',2.2),
    ->      ('l2',104,'lemon', 6.4),
    ->      ('b2',104,'berry', 7.6),
    ->      ('m1',106,'mango', 15.6),
    ->      ('m2',105,'xbabay', 2.6),
    ->      ('t4',107,'xbababa', 3.6),
    ->      ('m3',105,'xxtt', 11.6),
    ->      ('b5',107,'xxxx', 3.6);
Query OK, 16 rows affected (0.00 sec)   #响应了16条记录
Records: 16  Duplicates: 0  Warnings: 0

2、查询所有字段(*  匹配所有)

select * from 数据表名;

MariaDB [vincen]> select * from fruits;  
+------+------+------------+---------+
| f_id | s_id | f_name     | f_price |
+------+------+------------+---------+
| a1   |  101 | apple      |    5.20 |
| a2   |  103 | apricot    |    2.20 |
| b1   |  101 | blackberry |   10.20 |
| b2   |  104 | berry      |    7.60 |
| b5   |  107 | xxxx       |    3.60 |
| bs1  |  102 | orange     |   11.20 |
| bs2  |  105 | melon      |    8.20 |
| c0   |  101 | cherry     |    3.20 |
| l2   |  104 | lemon      |    6.40 |
| m1   |  106 | mango      |   15.60 |
| m2   |  105 | xbabay     |    2.60 |
| m3   |  105 | xxtt       |   11.60 |
| o2   |  103 | coconut    |    9.20 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+
16 rows in set (0.01 sec)

3、查询单个字段

select  列名  from   数据表名;

MariaDB [vincen]> select s_id from fruits;  #查询s_id这个列名的数据
+------+
| s_id |
+------+
|  101 |
|  103 |
|  101 |
|  104 |
|  107 |
|  102 |
|  105 |
|  101 |
|  104 |
|  106 |
|  105 |
|  105 |
|  103 |
|  102 |
|  102 |
|  107 |
+------+
16 rows in set (0.01 sec)

4、查询多个字段

select  列名1,列名2....  from  数据表名;

MariaDB [vincen]> select s_id,f_name from fruits;  #查询s_id和f_name这两列的数据
+------+------------+
| s_id | f_name     |
+------+------------+
|  101 | apple      |
|  103 | apricot    |
|  101 | blackberry |
|  104 | berry      |
|  107 | xxxx       |
|  102 | orange     |
|  105 | melon      |
|  101 | cherry     |
|  104 | lemon      |
|  106 | mango      |
|  105 | xbabay     |
|  105 | xxtt       |
|  103 | coconut    |
|  102 | banana     |
|  102 | grape      |
|  107 | xbababa    |
+------+------------+
16 rows in set (0.00 sec)

5、查询指定记录

select  列名1,列名2....  from 数据表名  where  查询条件;

MariaDB [vincen]> select s_id,f_name   #查询s_id和f_name这两列字段
    -> from fruits                     #从fruits表中
    -> where                           #条件是
    -> s_id < 105                      #s_id 列的信息小于105
    -> ;                               #结束
+------+------------+
| s_id | f_name     |
+------+------------+
|  101 | apple      |
|  103 | apricot    |
|  101 | blackberry |
|  104 | berry      |
|  102 | orange     |
|  101 | cherry     |
|  104 | lemon      |
|  103 | coconut    |
|  102 | banana     |
|  102 | grape      |
+------+------------+
10 rows in set (0.01 sec)

6、带IN关键字的查询,查询满足指定范围内的条件的记录

select  列名1,列名2....  from  数据表名  where  列名  IN  条件  ORDRE  BY  列名;

MariaDB [vincen]> select s_id,f_name,f_price  #查询s_id,f_name和f_price这三个字段
    -> from fruits                            #从fruits数据表中
    -> where s_id IN (101,102)                #条件是s_id的数据在101到102之间
    -> order by f_name;                       #在f_name列里从字母a开始往下排序
+------+------------+---------+
| s_id | f_name     | f_price |
+------+------------+---------+
|  101 | apple      |    5.20 |
|  102 | banana     |   10.30 |
|  101 | blackberry |   10.20 |
|  101 | cherry     |    3.20 |
|  102 | grape      |    5.30 |
|  102 | orange     |   11.20 |
+------+------------+---------+
6 rows in set (0.00 sec)

7、BETWEEN  AND 查询

select  列名1,列名2...  from  数据表名  where  列名  BETWEEN  起始值  AND  结束值;

MariaDB [vincen]> select f_name,f_price        #查询f_name和f_price这两个字段
    -> from fruits                             #从fruits表中
    -> where f_price BETWEEN 2.00 AND 10.20    #条件是f_price 的数值在2.00到10.20之间
    -> ;                                       #结束
+------------+---------+
| f_name     | f_price |
+------------+---------+
| apple      |    5.20 |
| apricot    |    2.20 |
| blackberry |   10.20 |
| berry      |    7.60 |
| xxxx       |    3.60 |
| melon      |    8.20 |
| cherry     |    3.20 |
| lemon      |    6.40 |
| xbabay     |    2.60 |
| coconut    |    9.20 |
| grape      |    5.30 |
| xbababa    |    3.60 |
+------------+---------+
12 rows in set (0.01 sec)

8、LIKE字符匹配查询

MariaDB [vincen]> select f_id,f_name   #查询f_id和f_name这两个字段
    -> from fruits                     #在fruits表中
    -> where f_name LIKE 'b%'          #条件是f_name中以b字母开头
    -> ;                               #结束
+------+------------+
| f_id | f_name     |
+------+------------+
| b1   | blackberry |
| b2   | berry      |
| t1   | banana     |
+------+------------+
3 rows in set (0.01 sec)

9、AND多条件查询

MariaDB [vincen]> select f_id,f_price,f_name  #查询f_id,f_price,f_name这三个字段
    -> from fruits                            #从fruits表中
    -> where s_id = '101'                     #条件是s_id的数值要等于101
    -> AND                                    #并且
    -> f_price >= 5                           #f_price 的数值大于等于5
    -> ;                                      #结束
+------+---------+------------+
| f_id | f_price | f_name     |
+------+---------+------------+
| a1   |    5.20 | apple      |
| b1   |   10.20 | blackberry |
+------+---------+------------+
2 rows in set (0.01 sec)

10、OR多条件查询

MariaDB [vincen]> select s_id,f_name,f_price   #查询s_id,f_name,f_price这三个字段
    -> from fruits                             #从fruits表中
    -> where s_id = 101                        #条件是s_id字段的数值要等于101
    -> OR                                      #或者
    -> s_id = 102                              #s_id字段的数值等于102
    -> ;                                       #结束
+------+------------+---------+
| s_id | f_name     | f_price |
+------+------------+---------+
|  101 | apple      |    5.20 |
|  101 | blackberry |   10.20 |
|  102 | orange     |   11.20 |
|  101 | cherry     |    3.20 |
|  102 | banana     |   10.30 |
|  102 | grape      |    5.30 |
+------+------------+---------+
6 rows in set (0.01 sec)

11、查询结果排序(加DESC为与默认相反排序)

MariaDB [vincen]> select f_name,f_price  #查询f_name,f_price这两个字段
    -> from fruits                       #在fruits表中
    -> ORDER BY f_name;                  #在f_name字段中按顺序排序
+------------+---------+
| f_name     | f_price |
+------------+---------+
| apple      |    5.20 |
| apricot    |    2.20 |
| banana     |   10.30 |
| berry      |    7.60 |
| blackberry |   10.20 |
| cherry     |    3.20 |
| coconut    |    9.20 |
| grape      |    5.30 |
| lemon      |    6.40 |
| mango      |   15.60 |
| melon      |    8.20 |
| orange     |   11.20 |
| xbababa    |    3.60 |
| xbabay     |    2.60 |
| xxtt       |   11.60 |
| xxxx       |    3.60 |
+------------+---------+
16 rows in set (0.01 sec)
MariaDB [vincen]> select f_name,f_price  #查询f_name,f_price这两个字段
    -> from fruits                       #从fruits表中
    -> ORDER BY                          #排序
    -> f_price                           #f_price
    -> DESC                              #倒序(从大到小),与默认排序相反
    -> ;                                 #结束
+------------+---------+
| f_name     | f_price |
+------------+---------+
| mango      |   15.60 |
| xxtt       |   11.60 |
| orange     |   11.20 |
| banana     |   10.30 |
| blackberry |   10.20 |
| coconut    |    9.20 |
| melon      |    8.20 |
| berry      |    7.60 |
| lemon      |    6.40 |
| grape      |    5.30 |
| apple      |    5.20 |
| xxxx       |    3.60 |
| xbababa    |    3.60 |
| cherry     |    3.20 |
| xbabay     |    2.60 |
| apricot    |    2.20 |
+------------+---------+
16 rows in set (0.00 sec)

12、分组查询

MariaDB [vincen]> select s_id,    #查询s_id字段
    -> COUNT(*) AS total          #与s_id数据相关的信息总数用total名代替
    -> from fruits                #从fruits表中
    -> GROUP BY                   #分组处理
    -> s_id                       #s_id字段名
    -> ;                          #结束
+------+-------+
| s_id | total |
+------+-------+
|  101 |     3 |
|  102 |     3 |
|  103 |     2 |
|  104 |     2 |
|  105 |     3 |
|  106 |     1 |
|  107 |     2 |
+------+-------+
7 rows in set (0.01 sec)
MariaDB [vincen]> select s_id,         #查询s_id字段
    -> GROUP_CONCAT(f_name) AS name    #显示f_name分组中各个字段的值用name代替列名
    -> FROM fruits                     #从fruits表中
    -> GROUP BY                        #分组处理
    -> s_id                            #字段s_id
    -> HAVING                          #过滤分组信息
    -> COUNT(f_name) > 1;              #f_name这列的总数信息量大于1
+------+-------------------------+
| s_id | name                    |
+------+-------------------------+
|  101 | apple,blackberry,cherry |
|  102 | grape,banana,orange     |
|  103 | apricot,coconut         |
|  104 | lemon,berry             |
|  105 | xbabay,xxtt,melon       |
|  107 | xxxx,xbababa            |
+------+-------------------------+
6 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/vincen123/article/details/82052371