MySQL从数据表中查询数据的基本语句为SELECT语句。SELECT语句的基本格式是:
SELECT {* | <字段列表>} [ FROM <表1>,<表2>… [WHERE <表达式> [GROUP BY <group by definition>] [HAVING <expression> [{<operator> <expression>}...]] [ORDER BY <order by definition>] [LIMIT [<offset>,] <row count>] ] SELECT [字段1,字段2,…,字段n] FROM [表或视图] WHERE [查询条件];
其中,各条子句的含义如下:
● {* | <字段列表>}:包含星号通配符和字段列表,表示查询的字段。其中,字段列表至少包含一个字段名称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段后不加逗号。
● FROM <表1>,<表2>...:表1和表2表示查询数据的来源,可以是单个或者多个。
● WHERE子句:是可选项,如果选择该项,将限定查询行必须满足的查询条件。
● GROUP BY <字段>:该子句告诉MySQL如何显示查询出来的数据,并按照指定的字段分组。
● [ORDER BY <字段 >]:该子句告诉MySQL按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)、降序(DESC)。
● [LIMIT [<offset>,] <row count>]:该子句告诉MySQL每次显示查询出来的数据条数。
SELECT的可选参数比较多,读者可能无法一下完全理解。不要紧,接下来将从最简单的参数开始,一步一步深入学习之后,读者会对各个参数的作用有清晰的认识。
下面以一个例子说明如何使用SELECT从单个表中获取数据。
首先定义数据表,输入语句如下:
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) );
为了演示如何使用SELECT语句,需要插入如下数据:
mysql> INSERT INTO fruits (f_id, s_id, f_name, f_price) 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.7), ('m2',105,'xbabay', 2.6), ('t4',107,'xbababa', 3.6), ('m3',105,'xxtt', 11.6), ('b5',107,'xxxx', 3.6);
使用SELECT语句查询f_id字段的数据:
mysql> SELECT f_id, f_name FROM fruits; +------+------------+ | f_id | f_name | +------+------------+ | a1 | apple | | a2 | apricot | | b1 | blackberry | | b2 | berry | | b5 | xxxx | | bs1 | orange | | bs2 | melon | | c0 | cherry | | l2 | lemon | | m1 | mango | | m2 | xbabay | | m3 | xxtt | | o2 | coconut | | t1 | banana | | t2 | grape | | t4 | xbababa | +------+------------+
该语句的执行过程是,SELECT语句决定了要查询的列值,在这里查询f_id和f_name两个字段的值。FROM子句指定了数据的来源,这里指定数据表fruits,因此返回结果为fruits表中f_id和f_name两个字段下所有的数据。其显示顺序为添加到表中的顺序。