首页> 基础笔记 >Mysql基础学习 Mysql基础学习
通过DQL命令 SELECT查询数据表中的数据
作者:小萝卜 2019-08-29 【 PHP MySql 数据库 】 浏览 1354
简介通过DQL命令查询数据表中的数据,选择特定的字段查询,使用AS子句为字段取别名,DISTINCT 关键字的使用,在SELECT语句中使用表达式的列。
通过DQL命令查询数据表中的数据
查询语句可以完成简单的单表查询,也可以完成复杂的多表查询和嵌套查询。SELECT语句主要用于数据的查询检索,是SQL语言的核心,在SQL语言中SELECT语句的使用频率是最高的。
格式:
SELECT [ALL|DISTINCT]{*|table.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}FROM 表名
[WHERE子句]
[GROUP BY..][HAVING..][ORDER BY..][LIMIT count];
实例:
mysql>
-- 数据的查询:
查询格式: select 字段名列表|* from 表名
where 查询条件
group by 字段名 分组
having 分组子条件
order by 字段名 排序子条件
limit m,n 分页语句
--===============================================
-- 查看所有字段,所有信息的数据
mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name | age | sex | classid |
+----+----------+-----+-----+---------+
| 1 | zhangsan | 20 | m | lamp110 |
| 2 | lisi | 22 | w | lamp110 |
| 3 | wangwu | 28 | m | lamp106 |
| 4 | zhaoliu | 31 | m | lamp110 |
| 5 | xiaowang | 18 | w | lamp111 |
| 6 | laowang | 38 | m | lamp106 |
| 7 | xiaoli | 28 | w | lamp110 |
| 8 | uu01 | 21 | w | lamp110 |
| 9 | uu02 | 25 | m | lamp110 |
| 10 | uu03 | 25 | m | lamp106 |
| 11 | uu04 | 27 | m | lamp111 |
| 12 | uu05 | 32 | w | lamp110 |
| 13 | uu06 | 27 | m | lamp111 |
| 14 | uu07 | 24 | w | lamp106 |
+----+----------+-----+-----+---------+
14 rows in set (0.00 sec)
选择特定的字段查询
最简单的查询语句是使用SELECT语句检索记录的特定字段,多个字段可以用逗号分隔,
例如:
SELECT username,password FROM user;
也可以使用*从表中检索出所有字段,使用“SELECT *”主要是针对用户的书写方便而言的。如果一张表当中的数据多大几百万,就意味着资源的浪费和漫长的查询等待,所以实际应用时要尽量避免使用它,而把查询的列名准确地列出来,也可以按自己指定的列顺序输出。
实例:
--查看部分字段的数据
mysql> select name,sex,classid from stu;
+----------+-----+---------+
| name | sex | classid |
+----------+-----+---------+
| zhangsan | m | lamp110 |
| lisi | w | lamp110 |
| wangwu | m | lamp106 |
| zhaoliu | m | lamp110 |
| xiaowang | w | lamp111 |
| laowang | m | lamp106 |
| xiaoli | w | lamp110 |
| uu01 | w | lamp110 |
| uu02 | m | lamp110 |
| uu03 | m | lamp106 |
| uu04 | m | lamp111 |
| uu05 | w | lamp110 |
| uu06 | m | lamp111 |
| uu07 | w | lamp106 |
+----------+-----+---------+
14 rows in set (0.00 sec)
--查看部分字段,并将年龄加4作为一个新字段查询
mysql> select name,age,age+4 from stu;
+----------+-----+-------+
| name | age | age+4 |
+----------+-----+-------+
| zhangsan | 20 | 24 |
| lisi | 22 | 26 |
| wangwu | 28 | 32 |
| zhaoliu | 31 | 35 |
| xiaowang | 18 | 22 |
| laowang | 38 | 42 |
| xiaoli | 28 | 32 |
| uu01 | 21 | 25 |
| uu02 | 25 | 29 |
| uu03 | 25 | 29 |
| uu04 | 27 | 31 |
| uu05 | 32 | 36 |
| uu06 | 27 | 31 |
| uu07 | 24 | 28 |
+----------+-----+-------+
14 rows in set (0.00 sec)
使用AS子句为字段取别名
如果想为返回的列取一个新的标题,以及经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。例如:在上例的输出结果中使用中文字段名,可以在MySQL控制台中输入的命令如下所示:
SELECT username as ‘用户名’ FROM user;
定义别名时一定要使用单引号引起来,其中AS关键字是可选的,在原字段名和别名之间使用一个空格即可。
SELECT username ‘用户名’ FROM user;
实例:
-- 在查看数据的同时,修改字段别名。(为字段添加别名)
mysql> select name as stuname,age,age+4 as age4 from stu;
+----------+-----+------+
| stuname | age | age4 |
+----------+-----+------+
| zhangsan | 20 | 24 |
| lisi | 22 | 26 |
| wangwu | 28 | 32 |
| zhaoliu | 31 | 35 |
| xiaowang | 18 | 22 |
| laowang | 38 | 42 |
| xiaoli | 28 | 32 |
| uu01 | 21 | 25 |
| uu02 | 25 | 29 |
| uu03 | 25 | 29 |
| uu04 | 27 | 31 |
| uu05 | 32 | 36 |
| uu06 | 27 | 31 |
| uu07 | 24 | 28 |
+----------+-----+------+
14 rows in set (0.00 sec)
mysql>
-- 为字段起别名时as关键字可以省略不写
mysql> select name stuname,age,age+4 age4 from stu;
+----------+-----+------+
| stuname | age | age4 |
+----------+-----+------+
| zhangsan | 20 | 24 |
| lisi | 22 | 26 |
| wangwu | 28 | 32 |
| zhaoliu | 31 | 35 |
| xiaowang | 18 | 22 |
| laowang | 38 | 42 |
| xiaoli | 28 | 32 |
| uu01 | 21 | 25 |
| uu02 | 25 | 29 |
| uu03 | 25 | 29 |
| uu04 | 27 | 31 |
| uu05 | 32 | 36 |
| uu06 | 27 | 31 |
| uu07 | 24 | 28 |
+----------+-----+------+
14 rows in set (0.00 sec)
DISTINCT 关键字的使用
如果在使用SELECT语句返回的记录结果中包含重复的记录,可以使用DISTINCT关键字取消重复的数据,只返回一个。另外,要注意DISTINCT关键字的作用是整个查询的列表,而不是单独的一列。DISTINCT会消耗一定的服务器资源,如果不指定,会默认使用ALL关键字作为检索模式。
格式:SELECT DISTINCT gid FROM user_group;
实例:
--只查看班号信息。关键字distinct可以去除重复字段值
mysql> select distinct classid from stu;
+---------+
| classid |
+---------+
| lamp110 |
| lamp106 |
| lamp111 |
+---------+
3 rows in set (0.00 sec)
在SELECT语句中使用表达式的列
在SQL中的表达式用法和PHP程序相似,主要包括算术表达式、逻辑表达式,以及使用SQL函数表达式等。
例如:
SELECT version(),1.23*10;
-- 查询两个字段合并成一个字段显示的操作
mysql> select concat(classid,":",name) as cname from stu;
+------------------+
| cname |
+------------------+
| lamp110:zhangsan |
| lamp110:lisi |
| lamp106:wangwu |
| lamp110:zhaoliu |
| lamp111:xiaowang |
| lamp106:laowang |
| lamp110:xiaoli |
| lamp110:uu01 |
| lamp110:uu02 |
| lamp106:uu03 |
| lamp111:uu04 |
| lamp110:uu05 |
| lamp111:uu06 |
| lamp106:uu07 |
+------------------+
14 rows in set (0.09 sec)
--为查询救过添加一个字段,并赋值为北京
mysql> select *,"beijing" as city from stu;
+----+----------+-----+-----+---------+---------+
| id | name | age | sex | classid | city |
+----+----------+-----+-----+---------+---------+
| 1 | zhangsan | 20 | m | lamp110 | beijing |
| 2 | lisi | 22 | w | lamp110 | beijing |
| 3 | wangwu | 28 | m | lamp106 | beijing |
| 4 | zhaoliu | 31 | m | lamp110 | beijing |
| 5 | xiaowang | 18 | w | lamp111 | beijing |
| 6 | laowang | 38 | m | lamp106 | beijing |
| 7 | xiaoli | 28 | w | lamp110 | beijing |
| 8 | uu01 | 21 | w | lamp110 | beijing |
| 9 | uu02 | 25 | m | lamp110 | beijing |
| 10 | uu03 | 25 | m | lamp106 | beijing |
| 11 | uu04 | 27 | m | lamp111 | beijing |
| 12 | uu05 | 32 | w | lamp110 | beijing |
| 13 | uu06 | 27 | m | lamp111 | beijing |
| 14 | uu07 | 24 | w | lamp106 | beijing |
+----+----------+-----+-----+---------+---------+
14 rows in set (0.00 sec)
很赞哦! (0)