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. 利用在线绘制3d几何图形工具分析投影变化

    业余写了个在线绘制几何图形工具,工具链接如下: https://tinygltf.xyz/drawgeometry/ 通过脚本代码在可视化窗口添加对应的点,线段,成像平面推到投影后坐标的计算: 点A通 ...

  2. ReactNative---组件种类

  3. mysql数据库my.ini配置文件中文详解

    mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出 ...

  4. map实现单词转换程序的例子

    代码来源于c++ primer 10.3 功能:已知一个一一对应的词典,求一小段文档对应的“翻译” 词典如下: A a B b C c D d E e 输入: D D E 代码: //需要两个文件,一 ...

  5. Shell case语法结构解析

    case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 ...

  6. 快乐编程大本营【java语言训练班】第5课: java的数组编程

    快乐编程大本营[java语言训练班]第5课: java的数组编程 第1节. 声明数组变量 第2节. 创建数组对象 第3节. 访问数组元素 第4节. 修改数组元素 第5节. 多维数组 学习地址如下:ht ...

  7. ros中launch启动文件的使用方法

    launch文件:通过XML文件实现多节点的配置和启动(可自动启动ROS Master) launch文件中包含很多标签和属性 *launch文件语法 <launch> <node ...

  8. Lighthouse

    北大程郁缀教授: 一,"日月之行,若出其中,星汉灿烂,若出其里."要找机会去感受大海,男人要有大海一样的胸怀,大气者方能成大器. 二,"亦余心之所善兮,虽九死其而未悔.& ...

  9. 【SpringBoot MQ 系列】RabbitMq 核心知识点小结

    [MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...

  10. python strip()方法使用

    描述 python strip() ,用于去除述字符串头尾指定字符(默认为空格或换行符)或字符序列. 注意:此方法只能去除头尾的空格或是换行符,不能去除中间的. 语法: str.strip([char ...