10.1基本查询语句
查询数据是数据库操作中最常用的操作。通过对数据库的查询,用户可以从数据库中获取需要的数据。数据库中可能包含着无数的表,表中可能包含着无数的记录。因此, 获得所需的数据并非易事。MySQL中可以使用SELECT语句来査询数据。根据查询的条件的不同,数据库系统会找到不同的数据。通过SELECT语句可以很方便地获取所需的信息。
MySQL中, SELECT的基本语法形式如下:
SELECT 属性列表 FROM表名和视图列表 [WHERE条件表达式1][GROUP BY属性名1 [HAVING条件表达式2]] [ORDER BY 属性名2 [ ASC | DESC ]]
其中,“属性列表”参数表示需要查询的字段名;“表名和视图列表”参数表示从此 处指定的表或者视图中查询数据,表和视图可以有多个;“条件表达式1”参数指定查询 条件;“属性名1”参数指按该字段中的数据进行分组;“条件表达式2”参数表示满足该 表达式的数据才能输出;“属性名2”参数指按该字段中的数据进行排序,排序方式由ASC和DESC两个参数指出;ASC参数表示按升序的顺序进行排序,这是默认参数;DESC*参数表示按降序的顺序进行排序。
说明:升序表示值按从小到大的顺序排列。例如,{1,2,3}这个顺序就是升序。降序表示值按从大到小的顺序排列.例如,{3,2,1}这个顺序就是降序。对记录进行排序时,如果没有指定是ASC还是DESC,默认情况下是ASC。
如果有WHERE子句,就按照“条件表达式1 ”指定的条件进行查询;如果没有WHERE子句,就査询所有记录。 如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的才能够输出。 GROUP BY子句通常和COUNT()SUM()等聚合函数一起使用。 如果有ORDERBY子句,就按照“属性名2”指定的字段进行排序。排序方式由“ASC” 和“DESC”两个参数指出。默认的情况下是“ASC”。
【示例10-1】下面是一个简单SELECT语句来查询employee表。SELECT语句的代码如下:
SELECT num,name,age,sex,homeaddr FROM employee;
语句执行如下:
mysql> select num ,name,age,sex,homeaddress FROM employee; +-------+--------+-------+-------+-----------------+ | num | name | age | sex | homeaddr | +-------+--------+-------+-------+-----------------+ | 1 | 张三 | 26 | 男 | 北京市海淀区 | | 2 | 李四 | 24 | 女 | 北京市昌平区 | | 3 | 王五 | 25 | 男 | 湖南省长沙市 | | 4 | Aric | 15 | 男 | England | +-------+--------+-------+-------+-----------------+ 4 rows in set(0.00 sec)
语句执行后,从employee表中查询出num、name、age、sex和homeaddr等5个字段的所有记录。因为没有界WHERE子句来控制查询条件,默认情况下显示了所有记录。因为没有GROUP BY子句和ORDER BY子句,记录按照employee表中存储的顺序显示。
【示例10-2】下面是一个包含WHERE子句和ORDER BY子句的SELECT语句。 SELECT语句的代码如下:
SELECT num, d_id ,name,age,sex,homeaddr FROM employee WHERE age<26 ORDER BY d_id DESC ;
该SELECT语句是指从employee表中查询出age小于26的记录,然后按照d_id字段降序的顺序进行排列。语句执行如下:
mysql> SELECT num, d_id ,name,age,sex,homeaddr FROM employee WHERE age<26 ORDER BY d_id DESC ; +-------+--------+-------+-------+-------+-----------------+ | num | d_id | name | age | sex | homeaddr | +-------+--------+-------+-------+-------+-----------------+ | 4 | 1004 | Aric | 15 | 男 | England | | 3 | 1003 | 王五 | 25 | 男 | 湖南省长沙市 | | 2 | 1002 | 李四 | 24 | 女 | 北京市昌平区 | +-------+--------+-------+-------+-------+-----------------+ 3 rows in set(0.00 sec)
査询结果的记录中,age字段的值都是小于26的,而且,都是按照d_id字段的数据从大到小排列的。通过这两个例子,读者可以了解SELECT语句的基本语法和使用。