数据查询是使用数据查询语言(DQL)从一个或多个表中查询所需的数据,查询结果会通过客户端反馈给用户。
查询结果是存储在内存中的虚拟结果集,并不是真实存在的表。当用户执行其他命令时,内存中的虚拟结果集就会被释放,想要再次查看就需要再次执行查询命令,所以查询不会修改数据库表中的记录。
基本的查询语句就是SELECT语句,它至少包含两条信息:想查询什么,以及从哪里查询。
查询所有字段
在SELECT语句中使用星号“*”
通配符查询所有字段。
语法:
select * from <表名1>[,<表名2>...,<表名n>];
示例:
mysql> select * from emp;
+-------+--------+------------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+------------+------+------------+------+------+--------+
| 7369 | smith | clerk | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7499 | allen | salesman | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7521 | ward | salesman | 7698 | 1981-02-22 | 1250 | 500 | 30 |
| 7566 | jones | manager | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
| 7698 | blake | manager | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7782 | clark | manager | 7839 | 1981-06-09 | 2450 | NULL | 10 |
| 7788 | scott | analyst | 7566 | 1987-04-19 | 3000 | NULL | 20 |
| 7839 | king | persident | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7844 | turner | salesman | 7698 | 1981-09-08 | 1500 | 0 | 30 |
| 7876 | adams | clerk | 7788 | 1987-05-23 | 1100 | NULL | 20 |
| 7900 | james | clerk | 7698 | 1981-12-03 | 950 | NULL | 30 |
| 7902 | ford | analyst | 7566 | 1981-12-03 | 3000 | NULL | 20 |
| 7934 | miller | clerk | 7782 | 1982-01-23 | 1300 | NULL | 10 |
+-------+--------+------------+------+------------+------+------+--------+
一般情况下,除非需要使用表中所有的字段,否则最好不要使用通配符“*”。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的字段通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需的字段名时,可以通过通配符获取。
查询部分字段
需要查询部分字段时,用字段名替换通配符“*”。
语法:
select <字段名1>[,<字段名2>...,<字段名n>] from <表名1>[,<表名2>...,<表名n>];
如果不记得字段名,可以使用desc命令查看表结构。
示例1:查询指定字段
mysql> select ename from emp;
+--------+
| ename |
+--------+
| smith |
| allen |
| ward |
| jones |
| martin |
| blake |
| clark |
| scott |
| king |
| turner |
| adams |
| james |
| ford |
| miller |
+--------+
示例2:查询多个字段
mysql> select ename,job,sal from emp;
+--------+------------+------+
| ename | job | sal |
+--------+------------+------+
| smith | clerk | 800 |
| allen | salesman | 1600 |
| ward | salesman | 1250 |
| jones | manager | 2975 |
| martin | salesman | 1250 |
| blake | manager | 2850 |
| clark | manager | 2450 |
| scott | analyst | 3000 |
| king | persident | 5000 |
| turner | salesman | 1500 |
| adams | clerk | 1100 |
| james | clerk | 950 |
| ford | analyst | 3000 |
| miller | clerk | 1300 |
+--------+------------+------+