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)