SQL自学通之查询--SELECT语句的使用

news2025/1/24 8:49:37

一、前言

1、目标

在今天你将学习到以下内容:

l 如何写SQL的查询
l 将表中所有的行选择和列出
l 选择和列出表中的选定列

l 选择和列出多个表中的选定列

2、背景

在上篇中我们简要地介绍了关系型数据库系统所具有的强大功能 在对 SQL 进行了 简要的介绍中我们知道了如何同它进行交流 最终 我们将会与计算机用一种非常清楚 果断的话说 给我看一下所有在本公司中工作十年以上 左撇子 蓝眼睛的外国人 如 果你能够这样做 与计算机交流 而不是查他们的档案 每一个人都可以用他自己的方法 来达到目的 但是你却是用SQL的一种重要功能— —查询来达到目的。

在上篇中我们说过 查询一词用在 SQL 中并不是很恰当 在 SQL 中查询除了向数 据库提出问题之外还可以实现下面的功能:

l 建立或删除一个表
l 插入 修改 或删除一个行或列
l 用一个特定的命令从几个表中查找所需要的信息并返回

l 改变信息的安全性

二、如何写 SQL 的查询语句

SQL 的查询当然也能进行一般的查询工作 在学会使用这个有用的工具之前 我们来学习如何写 SQL 的查询语句

1、一般的语法规则

正如你所看到的那样 SQL有很高的灵活性 尽管在任何程序中都有一定的规则限制下而有一个 SQL 中 SELECT 语句使用的简单例子 请注意 在每个 SQL 语句的关键字都 是大写的 并且用空格将他们划分出来

SELECT NAME STARTTERM ENDTERM

FROM PRESIDENTS
WHERE NAME  'LINCOLN'

在这个例子中每一个字母都是大写的 但是这不是必需的 上边的查询语句完全可以 写成这样

select name startterm endterm from presidents
where name 'LINCOLN'

注意 LINCOLN 在这里仍然是大写的 尽管 SQL 语句对大小写并不敏感 但在数据 库中的数据却是大小写敏感的 举例来说 许多公司在储存数据时用大写字母 在这种情 况下 所有的字段名也将是大写字母 那么在检索条件为 name='Lincoln'的数据时将不会得 到任何结果 这种情况在每个实例应用中都会遇到。

注意 在SQL 语句中大小写是不敏感的。

现在我们来看另一个例子 在这个例子中的空格有问题吗 不是 这个语句完全可以 正常执行

Select name startterm endterm from presidents

where name='LINCOLN'

但是 如果你注意在你的语句中使用空格和大写字母会增强语句的可读性 当它变成 你的工程 编程 的一部分时会更便于维护;

另一个重要的特性是分号 当在SQL语句中出现分号就意味着本条语句已经结束。

为什么在格式中大小写是不重要的 原因何在 答案是 — — 关键字 关键字是 SQL 语 法中的保留字 在 SQL 语句中 关键字是可选择的 但其内容有强制性 在本例中的关键 字有

SELECT
FORM
WHERE

看一下目录 你会找到需要在其它几天中学习的关键字

2、数据报的形成— — SELECT 和FROM

随着对 SQL 的了解 你会发现你键入的 SELCT 和 FROM 在远远多于其它的关键字 它不像CREATE那样迷人或像DROP那样残忍 但是如果你在同计算机会话并需要计算机 返回结果时它们却是必不可少的 这与最初选择何种数据库没有关系

我们先从SELECT开始讨论 因为SELECT是在SQL中使用最为频繁的语句

语法:

SELECT <列名>

没有其它的语句可以比 SELECT 语句更简单了 但是 SELECT 语句不从独立工作 如 果你只是键入了SELECT语句 那么你将会收到如下信息

输入:

SQL> SELECT;

输出:

SELECT *

ERROR at line 1

ORA-00936 missing expression

当在访问 ORACLE 时会有*出现以表示有事件产生 错误信息的意思是告诉你有一个东西丢了 这个丢失的东西就是FROM子句

语法:

FROM <表名>

当两条语句结合使用时就有了后台访问数据库的能力
注 你可能会对子句 关键字 或 SQL 语句感到费解 SQL 的关键字是 SQL 中的特定元素 如SELECT和FROM,就是一个子句 而 SQL 语句则是几个子句的结合 例如你可以将 SELECT 子句和 FROM 子句组合成为一个 SQL 语句

注 每一个种 SQL 都有其特定的出错信息 例如 Microsoft Query 会显示说它不能运行查 询 并引导你发现错误所在 Borland's Interbase 将会弹出一个错误对话框 Personal

Oracle7 的引擎将会出现如前所述的信息 并给出一个错误号码 所以当你手工输入 SQL 语句时会看到详细的错误信息 以及对错误的简要诠释

3、例子

在进一步学习之前 我们先来看一个将要在下面的例子中用到的数据库 这个数据库 体现了SELECT和FROM的基本功能 在实际应用时我们将会用到在第8天 熟练地操作 数据 中讲到的技巧来构建这个数据库 但是我们现在的目的是学习如何使用 SELECT 和 FROM 所以我们假设数据库已经建好了 本例中使用CHECKS表 这个表的内容如下:

3.1、你的第一个查询

输入:

SQL>select * from checks

输出:

分析
请看例子的输出结果 注意第1列和第3列是右对齐的而第2列和第4列是左对齐的,这是因为对于数字类型采用右对齐而对于字符类型则是采用左对齐的 数据的类型将在第 9天的 表的建立与维护 中讨论。在 SELECT 中的*表示要返回 FROM 中所指定的表中的所有列 并按照数据库中的固 有顺序来排序。

3.2、完成一个 SQL 语句

在 SQL 运行时 分号 即意味着通知解释程序当前语句已经结束 例如 SQL*PLUS 在没有遇到分号时将不会执行语句 但是在其它的 SQL 解释器中可能不会用到分号 例如 Microsoft Query 和 Borland's ISQL 不需要查询终止符 因为你是在编辑框中输入查询语句 并且当你在按下按钮以后才开始执行查询

3.3、对列进行排序

在前边的例子中使用了*来选择了选定表格中的所有列 并且是按照其在数据库中的固 定顺序来排序的 如果需要对特定的列排序 你应该按下边所写的那样输入

输入:

SQL> SELECT payee remarks amount check# from checks;

注意在 SELECT 子句中给出了每个列的名字 排序是根据列的先后顺序来进行的 注 意将最后列的列名与其后的子句 这里是FROM 用空格分开 输出的结果如下:

输出:

这句话也可以写成下边的形式

输入:

SELECT payee, remarks, amount, check#
FROM checks;

注意 这里的 FROM 子句已经写到第二行了 这是一种个人习惯 其输出的结果如下

输出:

分析

语句的格式变更不会对输出的结果造成影响 现在你已经知道了如何对输出的结果进 行排序 试着将表格的列按照你的要求进行排序

3.4、选择特定的列

如果你不想看到数据库中的每一列 当然 你使用 SELECT *将所有的列显示出是可 行的 但是如果你只想看一下CHECKS中的号码与数量列 那么你可以输入如下语句

输入:

SQL> SELECT CHECK#, amount from checks;

输出:

 现在你可以按要求显求所需要的列 注意大小写的使用 它不会对查询的结果造成影响 如何从不同的表中查找到所需要的信息呢

3.5、从不同的表中选择

假设你有一个名为DEPOSITS表 其内容如下 :

输出:

分析:

你需要对数据源作一下简单的改动

3.6、查找不重复的数据

如果你看过原来的 CHECKS 表 你会发现其中有一些数据是重复的 例如 AMOUNT 列

输入:

SQL> select

amount from

checks

输出:

 请注意 150在这里是重复的 如果你只想查看不重复的数据 可以这样做:

输入:

SQL> select DISTINCT amount from checks;

输出:

分析:
注意只有六行数据被选择 这是因为你使用了 DISTINCT 所有只有不重复的数据才

会被显示 ALL 是在 SELECT 中默认的关键字 你几乎从来也不会用到 ALL 与 SELECT ALL 是等价的

试一下这个例子 作为你对SQL的第一次 也是唯一的一次 实际体验
输入:

SQL> SELECT ALL AMOUNT

FROM CHECKS;

它的结果与SELECT<Column>是相同的 谁还会再去用这个多余关键字呢

4、总结

关键字 SELECT 可以检索数据库并从中返回数据 你可以用一个很长的语句并使用 SELECT *来检索数据库中的所有表 而且你可以对指定表格的结果进行重新排序 而关键字 DISTINCT 则会强制性地要求返回的结果中不能有重复数据 明天我们将学习如何使您 的查询更具有选择性

三、问与答

问 :这些数据是从哪里来的 我们是如何得到它的?
答 数据是按照第 8 天所讲述的方法创建的 与数据库的联接是依靠你所使用的 SQL 它以传统的命令行方式与数据库进行会话 该数据库原来属于服务器或客户机范畴 但最近它已经被移植到了 PC 机上


问: 可是我用不到这些数据库 那我还可以用SQL干什么?

答 你也可以在编程语言中使用SQL,一般的编程语言都支持内嵌的 SQL,例如 COBOL,你可以在它的环境中写 SQL 并编译 而 Microsoft 公司则提供了应用程序接口函数以 允许编程人员在 Visual Basic C 或 C++中使用 SQL。 Sybase and Oracle 提供的库也允许你在编程时使用 SQL ,Borland 公司则将 SQL 置于 Delphi 中 本书中也将讨论 SQ在编程中的应用。

四、校练场

在校练场里我们提出了一些问题以帮助你巩固自己所学 这些练习可以提高你在学习 中的经验 请试着回答和练习附录五 问答与练习 中的内容 在开始明天的工作之前要 确保你已经知道了这些问题的答案

1 、下列语句所返回的结果是否相同?

SELECT * FROM CHECKS;

select * from checks

答:是的,这两个语句所返回的结果相同。在 SQL 中,关键字不区分大小写,因此 SELECT 和 select 可以互换使用。但是,标识符(如表名和列名)区分大小写,因此 CHECKS 和 checks 是不同的标识符。

2 、为什么下列查询不会工作

a. Select *

b. Select  * from checks

c. Select amount name payee FROM checks;

答:

  1. 第一个查询a.缺少表名,无法确定从哪个表中选择所有列;

  2. 第二个查询b.语法缺少“;”

  3. 第三个查询c.语法错误,SELECT语句应该先列出要选择的列,再指定FROM表;应该写成Select name, payee, amount FROM checks;

练习

1、使用今天早些时候的 CHECKS 表的数据来写一个查询 返回表中的 number 和 remark 列中的数据

2、将练习 1 中的查询再写一遍以使得 remark 列出现在第一位

3、使用 CHECKS 表 写一个查询来返回其中的不重复数据

解:1、查询语句如下:

SELECT number, remark
FROM CHECKS;

2、查询语句如下:

SELECT remark, number
FROM CHECKS;

3、查询语句如下:

SELECT DISTINCT *
FROM CHECKS;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scrapy-redis

一、什么是scrapy-redis Scrapy-Redis 是 Scrapy 框架的一个扩展&#xff0c;它提供了对 Redis 数据库的支持&#xff0c;用于实现分布式爬取。通过使用 Scrapy-Redis&#xff0c;你可以将多个 Scrapy 进程连接到同一个 Redis 服务器&#xff0c;共享任务队列和去重集&#xf…

食物相关的深度学习数据集合集—食物、饮料、肉类、餐具等数据集

最近收集了一大波与食物酒水相关的数据集&#xff0c;包含食物、饮料、肉类、餐具等不同等类型的数据集&#xff0c;废话不多说&#xff0c;给大家逐一介绍&#xff01;&#xff01; 1、自制啤酒配方数据库 超过20万自制啤酒配方数据库&#xff0c;数据集包含不同精酿啤酒的名…

C# WPF上位机开发(绘图软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 本身c# wpf可以看成是生产力工具&#xff0c;它的意义在于可以快速根据业务的情况&#xff0c;把产品模型搭建出来。这一点不像c/c&#xff0c;需要…

4.OpenResty系列之Nginx负载均衡

1. 负载均衡配置 上篇文章中&#xff0c;代理仅仅指向一个服务器。但是&#xff0c;网站在实际运营过程中&#xff0c;大部分都是以集群的方式运行&#xff0c;这时需要使用负载均衡来分流。nginx 也可以实现简单的负载均衡功能。 假设这样一个应用场景&#xff1a;将应用部署…

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

想进国家电网,电气类专业都有哪些就业方向呢?

电气工程及自动化专业的主干课程都有哪些&#xff0c;笔者跟你分享一下就业方向都有哪些主要课程呢&#xff1f;包含电路原理、模拟电子技术、数字电子技术工程、电磁场、微机原理与接口技术、自动控制原理、电机学、电力电子技术、电力系统分析等等。 电气类专业都有哪些就业方…

使用idea如何快速的搭建ssm的开发环境

文章目录 唠嗑部分言归正传1、打开idea&#xff0c;点击新建项目2、填写信息3、找到pom.xml先添加springboot父依赖4、添加其他依赖5、编写启动类、配置文件6、连接创建数据库、创建案例表7、安装MybatisX插件8、逆向工程9、编写controller10、启动项目、测试 结语 唠嗑部分 小…

技术阅读周刊第第8️⃣期

技术阅读周刊&#xff0c;每周更新。 历史更新 20231103&#xff1a;第四期20231107&#xff1a;第五期20231117&#xff1a;第六期20231124&#xff1a;第七期 Prometheus vs. VictoriaMetrics (VM) | Last9 URL: https://last9.io/blog/prometheus-vs-victoriametrics/?refd…

大文件分片上传、分片进度以及整体进度、断点续传(一)

大文件分片上传 效果展示 前端 思路 前端的思路&#xff1a;将大文件切分成多个小文件&#xff0c;然后并发给后端。 页面构建 先在页面上写几个组件用来获取文件。 <body><input type"file" id"file" /><button id"uploadButton…

VisionPro---PatMaxTool工具使用

CogPMAlignTool PatMax是一种图案位置搜索技术&#xff08;识别定位&#xff09;&#xff0c;PatMax图案不依赖于像素格栅&#xff0c;是基于边缘特征的模板匹配而不是基于像素的模板匹配&#xff0c;支持图像中特征的旋转与缩放&#xff0c;边缘特征表示图像中不同区域间界限…

Redis-安装、配置和修改配置文件、以及在Ubuntu和CentOS上设置Redis服务的开机启动和防火墙设置,以及客户端连接。

目录 1. Redis简介 2. 离线安装 2.1 准备工作 2.2 解压、安装 2.3 修改配置文件 2.4 redis服务与关闭 2.5 redis服务的开机启动 2.5.1 Ubuntu上的配置 2.5.2 centos上的配置 3. 在线安装 4. 设置防火墙 5. 客户端连接 1. Redis简介 Redis 是完全开源免费的&#x…

配置typroa上传图片到gitee

在typora这个位置下载插件 在picgo.exe文件夹下输入cmd 打开命令行输入如下命令安装相关插件 .\picgo install gitee-uploader .\picgo install super-prefix 之后按照官方文档更改相关配置 官方文档参考 https://picgo.github.io/PicGo-Core-Doc 博客参考&#xff1a;…

JSP学习资源网站系统eclipse定制开发mysql数据库BS模式java编程

一、源码特点 java 学习资源网站系统是一套完善的web设计系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#xff0c;…

FL Studio水果软件2024简体中文语言版本下载

Fl Studio21是最好的音乐制作软件&#xff0c;但它的成本超过300美元......一个年轻的新音乐创作者怎么能从上到下&#xff0c;地球上没有比 FL Studio 21 更完整的音乐制作软件了。14 年来&#xff0c;它一直是行业领导者&#xff0c;并且随着随后的每一次更新&#xff08;在此…

字符函数 和 字符串函数

今天我打算介绍一些字符函数和字符串函数&#xff0c;有一些字符串函数我实现了模拟&#xff0c;但文章中没有放出来&#xff0c;如果需要的欢迎来到我的gitee里面拿取&#xff08;在test.c11-23里面&#xff09; 这是我的gitee:小汐 (lhysxx) - Gitee.com 字符函数 1. islow…

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介

编程怎么学才能快速入门&#xff0c;分享一款中文编程工具快速学习编程思路&#xff0c;中文编程工具之边条主控菜单构件简介 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程编程系统化教程链接https://jywxz.blog…

Python标准库:math库【侯小啾python领航班系列(十六)】

Python标准库:math库【侯小啾python领航班系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为&#xff1a;https://chat.lmsys.org/&#xff0c;该体验平台主要是为了收集人类的真实反馈&#xff0c;目前已经支持30多种大模型&#xff0c;已经收到500万的请求&#xff0c;收集了10万调人类对比大模型…

Java项目调用C/C++ SDK的方案汇总

Java项目调用C/C SDK的方案汇总 背景调研JNIJNativeJNAJavaCPP 背景 Java项目中需要调用到一个C项目&#xff0c;于是对目前通用的解决方案做了一些调研&#xff0c;这里做一个汇总。 调研 JNI JNI&#xff1a;Java Native Interface&#xff0c;JNI是一套编程接口&#xf…

盘点25个Html游戏Game源码网页爱好者不容错过

盘点25个Html游戏Game源码网页爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 下载链接&#xff1a;https://pan.baidu.com/s/1lSNLjWB4xMuLV8m_kDtczw?pwd6666 提取码&#xff1a;6666 项目名称 21点游戏 H5…