SELECT 语句

SQL语句是由简单的英语单词构成的。这些单词称
为关键字,每个SQL语句都是由一个或多个关键字构成的。大概,最经常
使用的SQL语句就是 SELECT 语句了。它的用途是从一个或多个表中检索
信息。
为了使用 SELECT 检索表数据,必须至少给出两条信息——想选择什
么,以及从什么地方选择。

检索单个列

我们将从简单的SQL SELECT 语句开始介绍
利用 SELECT 语句从 products 表中检索一个名为
prod_name 的列。所需的列名在 SELECT 关键字之后给出, FROM
关键字指出从其中检索数据的表名

未排序数据 如果没有
明确排序查询结果(下一章介绍),则返回的数据的顺序没有
特殊意义。返回数据的顺序可能是数据被添加到表中的顺序,
也可能不是。只要返回相同数目的行,就是正常的

如上的一条简单 SELECT 语句将返回表中所有行。数据没有过滤(过
滤将得出结果集的一个子集),也没有排序。以后几章将讨论这些内容

结束SQL语句 多条SQL语句必须以分号(;)分隔。MySQL
如同多数DBMS一样,不需要在单条SQL语句后加分号。但特
定的DBMS可能必须在单条SQL语句后加上分号。当然,如果
愿意可以总是加上分号。事实上,即使不一定需要,但加上
分号肯定没有坏处。如果你使用的是 mysql命令行,必须加上
分号来结束 SQL 语句

SQL语句和大小写 请注意,SQL语句不区分大小写,因此
SELECT 与 select 是相同的。同样,写成 Select 也没有关系。
许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有
列和表名使用小写,这样做使代码更易于阅读和调试。
不过,一定要认识到虽然SQL是不区分大小写的,但有些标识
符(如数据库名、表名、列名)可能不同:在MySQL 4.1及之
前的版本中,这些标识符默认是区分大小写的;在MySQL 4.1.1
版本中,这些标识符默认是不区分大小写的。
最佳方式是按照大小写的惯例,且使用时保持一致

使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL
语句可以在一行上给出,也可以分成许多行。多数SQL开发人
员认为将SQL语句分成多行更容易阅读和调试

检索多个列

要想从一个表中检索多个列,使用相同的 SELECT 语句。唯一的不同
是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔

当心逗号 在选择多个列时,一定要在列名之间加上逗号,但
最后一个列名后不加。如果在最后一个列名后加了逗号,将出
现错误

数据表示 从上述输出可以看到,SQL语句一般返回原始的、
无格式的数据。数据的格式化是一个表示问题,而不是一个
检索问题。因此,表示(对齐和显示上面的价格值,用货币
符号和逗号表示其金额)一般在显示该数据的应用程序中规
定。一般很少使用实际检索出的原始数据(没有应用程序提
供的格式)。

检索所有列

除了指定所需的列外(如上所述,一个或多个列), SELECT 语句还可
以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使
用星号( * )通配符来达到,如下所示:

如果给定一个通配符( * ),则返回表中所有列。列的顺序一般
是列在表定义中出现的顺序。但有时候并不是这样的,表的模
式的变化(如添加或删除列)可能会导致顺序的变化

使用通配符 一般,除非你确实需要表中的每个列,否则最
好别使用 * 通配符。虽然使用通配符可能会使你自己省事,不
用明确列出所需列,但检索不需要的列通常会降低检索和应
用程序的性能

检索未知列 使用通配符有一个大优点。由于不明确指定列
名(因为星号检索每个列),所以能检索出名字未知的列。

检索不同的行

正如所见, SELECT 返回所有匹配的行。但是,如果你不想要每个值
每次都出现,怎么办?例如,假如你想得出 products 表中产品的所有供
应商ID:



SELECT 语句返回14行(即使表中只有4个供应商),因为 products 表
中列出了14个产品。那么,如何检索出有不同值的列表呢?
解决办法是使用 DISTINCT 关键字,顾名思义,此关键字指示MySQL
只返回不同的值



不能部分使用 DISTINCT DISTINCT 关键字应用于所有列而
不仅是前置它的列。如果给出 SELECT DISTINCT vend_id,
prod_price ,除非指定的两个列都不同,否则所有行都将被
检索出来

限制结果

SELECT 语句返回所有匹配的行,它们可能是指定表中的每个行。为
了返回第一行或前几行,可使用 LIMIT 子句。
此语句使用 SELECT 语句检索单个列。 LIMIT 5 指示MySQL返回
不多于5行
LIMIT 5, 5 指示MySQL返回从行5开始的5行。第一个数为开始
位置,第二个数为要检索的行数。
所以,带一个值的 LIMIT 总是从第一行开始,给出的数为返回的行数。
带两个值的 LIMIT 可以指定从行号为第一个值的位置开始

行 0 检索出来的第一行为行0而不是行1。因此, LIMIT 1, 1
将检索出第二行而不是第一行。
在行数不够时 LIMIT 中指定要检索的行数为检索的最大行
数。如果没有足够的行(例如,给出 LIMIT 10, 5 ,但只有13
行),MySQL将只返回它能返回的那么多行
MySQL 5的 LIMIT 语法 LIMIT 3, 4 的含义是从行4开始的3
行还是从行3开始的4行?如前所述,它的意思是从行3开始的4
行,这容易把人搞糊涂。
由于这个原因,MySQL 5支持 LIMIT 的另一种替代语法。 LIMIT
4 OFFSET 3 意为从行3开始取4行,就像 LIMIT 3, 4 一样

使用完全限定的表名

迄今为止使用的SQL例子只通过列名引用列。也可能会使用完全限定
的名字来引用列(同时使用表名和列字)。请看以下例子:

表名也可以是完全限定的,如下所示:

这条语句在功能上也等于刚使用的那条语句(当然,假定 products
表确实位于 crashcourse 数据库中)
有一些情形需要完全限定名。现在,
需要注意这个语法,以便在遇到时知道它的作用

小结

本章学习了如何使用SQL的 SELECT 语句来检索单个表列、多个表列
以及所有表列。

mysql必知必会--检 索 数 据的更多相关文章

  1. 《mysql 必知必会》 速查指南

    目录 增 添加一整行 插入多行 删 删除指定行 删除所有行 改 查 简单检索 结果筛选 结果排序 结果过滤 创建字段 处理函数 数据分组 其他高级用法 文章内容均出自 <MySQL 必知必会&g ...

  2. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  3. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  4. mysql必知必会系列(一)

    mysql必知必会系列是本人在读<mysql必知必会>中的笔记,方便自己以后查看. MySQL. Oracle以及Microsoft SQL Server等数据库是基于客户机-服务器的数据 ...

  5. mysql必知必会

    春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...

  6. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  7. MySql必知必会实战练习(二)数据检索

    在上篇博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,下面进行数据检索和过滤操作. 1. Select子句使用顺序 select--->DISTINCT---& ...

  8. 读《MySQL必知必会》我学到了什么?

    前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...

  9. MySQL必知必会1

    MySQL必知必会 ​ 了解SQL 什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜. 什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的 ...

  10. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

随机推荐

  1. 19_07_8校内训练[sort]

    题意 一个排列,每次选一个子序列按顺序放在开头,要求变成升序的操作次数不超过17次,给出方案.n<=1E5. 思考 对于ai=aj-1且i<j的数字,一定要保持其相对顺序.可以根据这个关系 ...

  2. PBR原理

    漫反射和镜面反射 漫反射和镜面反射(或反射)光是描述光和材料之间两种主要相互作用类型的两个术语.镜面光是指从表面反弹的光.在光滑的表面上,这种光将反射所有相同的方向,并且表面将呈现镜像.漫射光是被吸收 ...

  3. PlayCanvas PBR材质shader代码分析(pixel shader)

    #version es #define varying in out highp vec4 pc_fragColor; #define gl_FragColor pc_fragColor #defin ...

  4. Mavn 项目 引入第三方jar包 导致ClassNotFoundException

    案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p ...

  5. Docker快速上手之搭建SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  6. 实现一个简易的RPC

    之前写了一些关于RPC原理的文章,但是觉得还得要实现一个.之前看到一句话觉得非常有道理,与大家共勉.不是“不要重复造轮子”,而是“不要发明轮子”,所以能造轮子还是需要造的. 如果大家还有不了解原理的, ...

  7. Codeforces gym101755H Safe Path(bfs)

    题意: 给以一个网格图,有起点终点和一些怪兽,可以上下左右走,不能走到距离怪兽曼哈顿距离为d以内的地方,问到终点最短路径 n*m<=2e5,d<=2e5 思路: 因为n*m的范围,不能直接 ...

  8. 纯JavaScript实现页面行为的录制

    在网上有个开源的rrweb项目,该项目采用TypeScript编写(不了解该语言的可参考之前的<TypeScript躬行记>),分为三大部分:rrweb-snapshot.rrweb和rr ...

  9. 使用 GitHub Actions 实现 Hexo 博客自动部署

    一.Hexo 相关知识点 静态博客简单,但是发布博文时稍显麻烦,一般需要下面两步: hexo clean hexo g -d // 相当于 hexo g + hexo d 如果考虑到同步源文件,还需要 ...

  10. php 安装扩展插件实例-ftp.so

    工作记录一下   1.首先进入原始php包安装文件(不是安装后的文件,是下载php安装压缩包,解压后的那个文件)安装包里有个扩展文件夹ext,进入 #cd /home/php-5.3.3/ext/#l ...