基本查询语句

SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。SELECT语句的基本语法如下。

select selection_list        //要查询的内容,选择哪些列
 from 数据表名                //指定数据表
 where primary_constraint     //查询时需要满足的条件,行必须满足的条件
 group by grouping_columns    //如何对结果进行分组
 order by sorting_cloumns     //如何对结果进行排序
 having secondary_constraint  //查询时满足的第二条件
 limit count                  //限定输出的查询结果

其中使用的子句将在后面逐个介绍。下面先介绍SELECT语句的简单应用。

1.使用SELECT语句查询一个数据表
使用SELECT语句时,首先要确定所要查询的列。“*”代表所有的列。例如,查询db_database09数据库user表中的所有数据,代码如下。

mysql> use db_database09
 ?Database changed
 ?mysql> select * from user;
 ?+----+------+----------+--------------+
 ?| id | user | lxdh     | jtdz         |
 ?+----+------+----------+--------------+
 |  1 | mr  | 12345678 | 长春市 |
 ?|  2 | mrsoft  | 87654321 | 四平市   |
 ?+----+------+----------+--------------+
 ?2 rows in set (0.00 sec)

这是查询整个表中所有列的操作,还可以针对表中的某一列或多列进行查询。

2.查询表中的一列或多列

针对表中的多列进行查询,只要在select后面指定要查询的列名即可,多列之间用“,”分隔。例如,查询user表中的id和lxdh,代码如下。

mysql> select id, lxdh from user ;
 +----+----------+
 | id | lxdh     |
 +----+----------+
 |  1 | 12345678 |
 |  2 | 87654321 |
 +----+----------+

2 rows in set (0.00 sec)

3.从一个或多个表中获取数据

使用SELECT语句进行查询,需要确定所要查询的数据在哪个表或哪些表中,在对多个表进行查询时,同样使用“,”对多个表进行分隔。

例9.1 从tb_admin表和tb_students表中查询出tb_admin.id、tb_admin.tb_user、tb_students.id和tb_students.name字段的值,其代码如下。(实例位置:光盘\TM\sl\9\9.1)

mysql> select tb_admin.id,tb_admin.tb_user,tb_students.id,tb_students.name from
tb_admin,tb_students;
 +----+----------+----+------+
 | id | tb_user  | id | name |
 +----+----------+----+------+
 |  1 | mr       |  1 | 潘攀     |
 |  2 | 明日科技       |  1 | 潘攀     |
 +----+----------+----+------+2 rows in set (0.03 sec)

说明
在查询数据库中的数据时,如果数据中涉及中文字符串,有可能在输出时会出现乱码。那么最后在执行查询操作之前,通过set names语句设置其编码格式,然后再输出中文字符串时就不会出现乱码了。如本例中所示,应用set names语句设置其编码格式为gb2312。

还可以在WHERE子句中使用连接运算来确定表之间的联系,然后根据这个条件返回查询结果。例如,从家庭收入表(jtsr)中查询出指定用户的家庭收入数据,条件是用户的ID为1,代码如下。

mysql> select jtsr from user,jtsr
     -> where  user.user=jtsr.user and user.id=1 ;
 +------+
 | jtsr |
 +------+
 | 10000 |
 +------+
 2 rows in set (0.00 sec)

其中,user.user = jtsr.user将表user和jtsr连接起来,叫作等同连接;如果不使用user.user= jtsr.user,那么产生的结果将是两个表的笛卡尔积,叫作全连接。