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. 《阿里巴巴Java开发手册》码出高效详解(一)- 为什么要学习阿里编码手册

    <Java 开发手册>(以下简称<手册>)是每个 Java 工程师人手必备的一本参考指南.该手册包括 编程规约.异常日志.单元测试.安全规约.MySQL 数据库.工程结构.设计 ...

  2. 用VLC搭建流媒体服务器

    用vlc搭建简单流媒体服务器(UDP和TCP方式) 这段时间用到了流媒体数据传输的TCP和UDP方式,感觉vlc可以做这方面的demo,这里总结下,也方便我以后查阅. 简介 VLC主页:http:// ...

  3. linux--->配置lamp环境(centos7 最小版)

    这篇博客写的很全,按照顺序敲代码即可 参考:https://www.cnblogs.com/me80/p/7218883.html

  4. PyCharm安装和使用教程(Windows系统)

    说明: PyCharm 是一款功能强大的 Python 编辑器, 本文简单的介绍下PyCharm 在 Windows下是如何安装的. PyCharm 的下载地址:http://www.jetbrain ...

  5. 线程池技术之:ThreadPoolExecutor 源码解析

    java中的所说的线程池,一般都是围绕着 ThreadPoolExecutor 来展开的.其他的实现基本都是基于它,或者模仿它的.所以只要理解 ThreadPoolExecutor, 就相当于完全理解 ...

  6. markdown常用语法使用笔记+使用技巧(持续更新......)

    参考引用内容: 简书教程 一 基本语法 1. 标题 语法: 在想要设置为标题的文字前面加#来表示,一个#是一级标题,二个#是二级标题,以此类推.支持六级标题. 注:标准语法一般在#后跟个空格再写文字 ...

  7. 下载 安装MYsql 服务器

    摘自 https://blog.csdn.net/youxianzide/article/details/85319106 https://www.2cto.com/database/201805/7 ...

  8. 在VMware中如何清理多余的空间

    问题描述 平时用的编程计算机只有250G空间,c盘和d盘,今天准备做实验,发现删除虚拟机中系统的内容不但没有减少空间,反而增加了,这时我意识到虚拟机内部可能与咱们想象的操作模式不一样. 解决办法 我的 ...

  9. 简单看看ThreadPoolExecutor原理

    线程池的作用就不多说了,其实就是解决两类问题:一是当执行大量的异步任务时线程池能够提供较好的性能,在不使用线程池时,每当需要执行异步任务是需要直接new一个线程去执行,而线程的创建和销毁是需要花销的, ...

  10. 工业狗转行AI的心路历程

    2020年2月16日,晴 昨晚下了一场雪,大概是晚上八九点的样子,细碎的雪花在无风的夜里直嗖嗖的往下掉,门前的轿车顶上覆了薄薄的一层.路灯下的小巷格外的寂静,裹着我的睡衣在昏黄的灯光下站了许久,冠状病 ...