Mysql中单表查询的SELECT语句定义和选择列

1.SELECT语句定义

        SELECT语句可以实现对表的选择、投影及连接操作。即SELECT语句可以根据用户的需要从一个或多个表中选出匹配的行和列,结果通常是生成一个临时表。

        语法格式如下

SELECT [ALL | DISTINCT] 输出列表表达式,...
   [FROM 表明1 [ ,表名2] ...]              /*FROM子句*/
   [where 条件]                            /*WHERE子句*/
   [GROUP BY {列名 | 表达式 | 列编号}
      [ASC | DESC], ...                    /*GROUP BY子句*/
   [HAVING 条件]                           /*HAVING子句*/
   [ORDER BY {列名 | 表达式 | 列编号}]
      [ASC | DESC] , ...]                  /*ORDER BY子句*/
   [LIMIT {[偏移量,] 行数|行数OFFSET 偏移量}]/*LIMIT子句*/

        SELECT 语句功能强大,有很多子句,所有被使用的子句,所有被使用的子句必选语法说明中显示的顺序严格排序。例如,一个HAIVNG子句必须位于GROUP BY子句之后,并位于ORDER BY子句之前。

2.选择列

2.1 选择列

        从SELECT语句基本语法可以看出,最简单的SELECT语句如下。

SELECT 表达式

        输出表达式可以使MYSQL所支持的任何运算的表达式,利用这个最简单的SELECT语句,可以进行“1+1”这样的运算。

        如果 SELECT语句的表达式是表中的字段名变量,那么字段名之间要以逗号分隔。

        【例子】查询Bookstore数据库的members表中各会员的姓名、联系电话和注册时间。

USE Bookstore;
SELECT 姓名,联系电话,注册时间
   FROM members;

当在SELECT语句指定列的位置上使用“*”时,表示选择表的所有列,如果要显示members表中的所有列,不必将所有字段名一一列出,可使用以下命令。

SELECT * FROM members;

2.2 定义列别名

        当希望查询结果中的列使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列名,其格式如下。

SELECT 列名[AS] 别名

        【例子】查询book表中图书类别为“计算机”的图书书名、作者和出版社,结果中各类的标题分别指定为name、auther和publisher。

SELECT 书名 AS name, 作者 AS auther,出版社 AS publisher
   FROM book
      WHERE 图书类别='计算机';

当自定义的列标题中含有空格是,必须使用引号将标题括起来。

SELECT 书名 AS 'Name of Book',作者 AS 'Name of Auther',
       出版社 AS Publisher
    FROM book  WHERE 图书类别= '计算机';

        注意    不允许在WHERE子句中使用列别名,这是因为执行WHERE代码时,可能尚未确定列值。例如,下属查询是非法的。

SELECT 性别 AS SEX FROM members WHERE SEX='男';

2.3 替换查询结果中的数据

        在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据,例如,查询book表的库存数量,所希望知道的是库存的总体情况而不是库存数量本身,这时就可以用库存情况来替换具体的库存数。

        要替换查询结果中的数据,则要使用查询语句中的CASE表达式,其格式如下。

CASE
   WHEN 条件1 THEN 表达式1
   WHEN 条件2 THEN 表达式2
   ...
   ElSE 表达式n
END

        说明如下

        CASE表达式以CASE开始,以END结束,MySQL从条件1开始判断,条件1成立输出表达式1,结束;若条件1不成立,判断条件2,若条件2成立,输出表达式2后结束......如果条件都不成立,输出表达式n

2.4计算列值

        使用SELECT语句对列进行查询时,在结果中可以输出对列值进行计算后的值,即SELECT子句可使用表达式作为结果。

        【例子】对sell表中已发货的记录计算订购金额(订购金额=订购册数*订购单价),并显示图书编号和订购金额。

SELECT 图书编号,ROUND(订购册数*订购单价,2) AS 订购金额
      FROM sell
         WHERE 是否发货='已发货';

        其中ROUND函数用于获得一个数四舍五入后的整数值,逗号后米娜的数字用来指定小数的位数。

2.5消除结果集中的重复行

        对表只选择某些列时,可能会出现重复行。使用DISTINCT关键字可以消除结果集中的重复行,保证行的唯一性,其格式如下。

SELECT DISTINCT 列名1[ ,列名2...]

【例子】对book表只选择图书类别和出版社两列,消除结果集中的重复行。

当对book表只选择图书类别和出版社两列时,结果集中有很多重复行,如图所示。

        使用DISTINCT关键字来消除结果集中的重复行。

SELECT DISTINCT 图书类别,出版社 FROM book;

        语句的执行结果如图所示。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值