首页> 基础笔记 >Mysql基础学习 Mysql基础学习

通过DQL命令 SELECT查询数据表中的数据

作者:小萝卜 2019-08-29 浏览 941

简介通过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)

文章评论

    高端网站建设