MySQL之数据查询(SELECT)

        数据库是为更方便有效地管理信息而存在的,使用数据库和表的主要目的是存储数据以便在需要时进行检索、统计或组织输出。数据查询是数据库最重要的功能。通过SQL语句可以从表或视图中迅速方便地检索数据。

 SELECT定义:

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

        SELECT语句功能强大,有很多子句,所有被使用的子句必须按语法说明的顺序严格地排序。例如:一个HAVING子句必须位于GROUP BY子句之后、ORDER BY子句之前。

1、选择指定的列

从SELECT语句基本语法可以看出,最简单的SELECT语句是:SELECT 表达式

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

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

 当在SELECT语句指定列的位置上使用*号时,表示选择表的所有列。

 2、定义列别名

当希望查询结果中的列使用自定义的列标题时,可以在列名之后使用AS子句来更改查询结果的列名,其格式为:SELECT 列名 AS 别名

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

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

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

例:将XS表中所有的学号都命名为student number

SELECT 学号 AS 'student number'
FROM XS;

 注意:不允许在WHERE子句中使用列别名。这是因为在执行WHERE代码时可能还不能确定列值。

3、替换查询结果中的数据

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

 例:查询Book表中的图书编号、书名和数量,对其库存数量按以下规则进行替换:若数量为空值,替换为“尚未进货”,若数量小于5,替换为“需进货”,若数量在5~50之间,替换为“库存正常”,若总数量大于50,替换为“库存积压”。列标题改为“库存”。

SELECT 图书编号,书名,
CASE
WHEN 数量 IS NULL THEN'尚未进货'
WHEN 数量<5 THEN'需进货'
WHEN 数量>=5 and 数量<=50 THEN'库存正常'
ELSE'库存积压'
END AS 库存
FROM Book;

 4、计算列值

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

例:对Sell表已发货的记录计算订购金额(订购金额=订购册数x订购单价),并显示图书编号和订购金额。

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

 5、消除结果集中的重复行

对表只选择某些列时,可能会出现重复行。例如,若对Bookstore数据库的Book表只选择图书类别和出版社,则出现多行重复的情况。可以使用DISTINCT关键字消除结果集中的重复行,其格式为:SELECT DISTINCT 列名1[,列名2...]

其含义是对结果集中的重复行只选择一行,保证行的唯一性。

例:对Book表只选择图书类别和出版社,消除结果集中的重复行。

SELECT DISTINCT 图书类别,出版社
FROM Book;
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇安.YuAn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值