第六周翻译

本文介绍了T-SQL中的基本SELECT语句,包括列列表、FROM子句和WHERE子句的概念及其应用。通过示例展示了如何从SQL Server表中检索特定数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T-SQL DML级别1: 基本选择语句。

 

 

格雷戈里·拉森,2011/10/07

 

这一系列

这篇文章是Stairway系列的一部分:Stairway 到T-SQL DML。

通过使用SQLServer的Transact-SQL (T-SQL)方言,Stairway将为您提供对于如何使用SQL Server表数据的基本理解。DML是数据操纵语言,是处理数据的语言。它包括语句选择、插入、更新和删除。Stairway将提供一些SQL语言的历史和一些关于集合理论的一般概念。每个级别都将建立在之前的级别上,所以当您完成时,您将很好地理解如何从SQL Server中选择和修改数据。

 

这里是不同的等级,将在这个Stairway系列中涵盖:

级别1: 基本的SELECT语句。

级别2: 结构化查询语言的历史(SQL)

级别3: 关系数据库设计。

级别4: SQL的数学:第1部分。

级别5: SQL的数学:第2部分。

级别6: 使用ORDER BY子句排序数据的基础。

级别7: 使用简单的GROUP BY子句汇总数据。

级别8: 数据修改:更新。

级别9: 数据修改:删除。

级别1:基本的SELECT语句。

 

在SQL Server数据库中管理数据有很多不同的方面。在处理与管理应用程序数据相关的复杂管理问题之前,首先需要从表中检索数据。要从SQL Server表返回数据,需要使用SELECT语句。在这个级别中,我将介绍基本SELECT语句的组件,以及如何使用它从单个SQL Server表检索数据。

 

选择语句中的三个部分。

 

从单个表返回数据的基本选择语句包括三个不同的部分:列列表、from子句和WHERE子句。使用这些不同组件构造基本选择语句的语法如下所示:

SELECT <Column List>

FROM <table name>

WHERE <where criteria>;

“<ColumnList>”将包含一个你想要返回的查询中列的清单,“< table_name >”将包含被选中时表的数据,和“<where criteria> “确定将用于限制的从SELECT语句返回的搜索条件注意WHERE子句是可选的。

请注意,我在stairways上的所有示例将使用AdventureWorksSQL Server 2005数据库,该数据库可以在此位置获得:http://sqlserversamples.codeplex.com/。

让我们看一下下面非常简单的SELECT语句,它从AdventureWorks数据库中的表中选择一些数据。您可以使用SQL Server Management Studio中的查询窗口来运行本文中描述的每个查询语句,同时将数据库设置为AdventureWorks。

SELECT  ProductCategoryID ,

        Name

FROM    Production.ProductCategory

WHERE   ProductCategoryID <2 ;

在这里,我从ProductCategory表选择了两个不同的列,ProductCategoryID和Name。由于这个SELECT语句有一个WHERE子句,它将从表返回的行限制为只具有ProductCategoryID值小于2的行。

现在您已经了解了SELECT语句的基本思想,让我更详细地介绍SELECT语句的每个组件。

 

列清单

列列表遵循SELECT关键字的约束,并且是指定要从表中返回的列的位置。列通过指定列名来标识。如果列出多个列,则用逗号分隔。在以后的级别中,我们将研究从指定表中返回值以外的值的可能性,在第一级中,我们将坚持基础。在上面的例子中,让我们来看看列列表是什么样子的,如果它只选择一个列,或者一个表的所有列。

如果我只想返回ProductCategory表名称列。我的查询是这样的:

SELECT  Name

FROM   Production.ProductCategory

WHERE   ProductCategoryID <2 ;

在这里,您可以看到,我只在上述查询中的SELECT和FROM关键字之间指定了Name列。但是如果我想要指定ProductCategory表中的所有列。我将运行以下查询:

SELECT  ProductCategoryID ,

        Name ,

        rowguid ,

        ModifiedDate

FROM   Production.ProductCategory

WHERE   ProductCategoryID <2 ;

在这个SELECT语句中,您可以看到,我已经识别出了4个不同的列,每个列由一个逗号分隔。这些列可以在单行上一起列出,也可以在不同的行上以不同的方式进行分类,就像我所做的那样。还有一种方法可以从表中选择所有列,这是通过指定星号而不是指定单个列名。下面是使用星号说明的SELECT语句:

SELECT  *

FROM   Production.ProductCategory

WHERE   ProductCategoryID <2 ;

在应用程序中使用星号(通常称为“星号”)时需要注意。由于星号将返回表中的所有列,如果您更改了一个表以包含额外的列,那么将在不修改实际SELECT语句的情况下返回额外的列。然而,如果您已经指定了所有列的名称,那么当添加一个新列时,它将不会返回,除非您将它添加到列列表中。使用星号可以接受测试,但是如果您想遵循最佳实践,请不要在应用程序代码中使用它。这是最佳实践的原因是大多数应用程序期望从给定的SELECT语句返回固定数量的列。

FROM子句

在FROM子句,你可以识别你要选择数据的表格,在这个级别中,我们只讨论从FROM子句中的单个表中选择的数据,请注意,随着您对SQL知识的进步,FROM子句可以识别要选择数据的多个表。

有多种不同的方式可以识别你要在其中选择数据的表。 实际上有四种不同的方式,我将在本文中介绍其中的三种方法,第四种方法我仅仅提及一下。

第一种方法是通过标识表名和它所属的模式来指定表。 这是我迄今在所有示例中标识所有表名的方式。 在我的每个例子中,我说表名是Production.ProductCategory。 实际的表名只是ProductCategory,它包含在Production模式中。

在FROM子句中标识表的第二种方法是只声明表名。 当FROM子句仅包含表名时,SQLServer将假定该表包含在数据库用户的默认模式下或在dbo模式下。让我更详细地解释这个概念。

当您向SQL Server提交一个只能标识表名的查询时,SQL Server将需要解析该表所在的模式。这是因为在给定的数据库中可以有多个具有相同名称的表,只要它们处于不同的模式中即可。要确定表中驻留的SQL Server的架构需要经过两个步骤。第一步是为提交查询的数据库用户使用默认模式,并将其默认模式添加到表名中,然后查找该表。如果SQL Server使用用户默认模式查找表,则不执行第二步。如果SQL Server未使用用户默认模式找到该表,则SQL Server检入dbo模式以查找该表。无论您的数据库是否包含单个模式,最好练习一下,通过使用模式名称和表名称来养成在FROM子句中标识表的习惯。通过这样做,您可以减少SQL Server解决表名称和促进计划缓存重用的工作量.

识别表的第三种方法是使用三部分名称,第一部分是数据库名称,最后两部分是模式和表名。这是一个SELECT语句,与我以前使用三部分名称的SELECT语句相似:

在这里,您可以看到我将数据库名称AdventureWorks附加到FROM子句中标识的Production.ProductCategory表中。

通过对FROM子句中的表使用三部分命名约定,可以将SQL Server Management Studio中查询窗口的数据库上下文设置为任何数据库,并且数据库引擎仍将知道用于查询的数据库,模式和表。在构建需要从实例中的多个数据库检索数据的应用程序时,使用三部分名称有助于在单个应用程序中从多个数据库检索数据。

最后一种方法是使用四部分名称,第四部分(数据库名称前面)标识链接服务器的名称。由于链接服务器不在本阶段的范围之内,因此我不会进一步讨论这个主题。如果您应该运行包含4个部分的表名称,则您将知道该表与链接的服务器关联。

WHERE子句

SELECT语句的WHERE子句是可选的。 WHERE子句用于约束从SELECT语句返回的行。数据库引擎根据WHERE子句评估每行,然后只在符合WHERE子句中标识的搜索条件或条件时才返回行。在编写更多SELECT语句时,您会发现大部分SELECT语句可能包含WHERE子句。

一个简单的WHERE子句将包含单个搜索条件,而更复杂的WHERE子句可能包含许多条件。当在WHERE子句中使用多个条件时,它们将通过使用AND和OR逻辑运算符在逻辑上组合在一起。 SELECT语句中可能包含的不同条件的数量没有限制。在我到目前为止的例子中,我只使用了一个条件。让我们来回顾一些有更复杂的WHERE子句的例子。

这是一个SELECT语句,它有两种不同的搜索条件:

在这个语句中,第一个条件检查该行在颜色列中是否具有值Blue。第二个条件检查ProductId列中的值是否大于900.因为使用AND运算符,所以这两个条件都必须为true,以便从该查询返回一行。

让我们看看更复杂的WHERE子句:

此示例返回Production.Product行,其中ProductID值大于900,Color列中的值为蓝色或绿色。 通过查看这个查询,你可以看到我已经在两个不同的Color列条件下放置了括号。这设置了条件相互评估的顺序,就像您在数学表达式中所做的一样。通过使用括号,在评估AND运算符之前,将评估两种颜色条件之间的或运算。当没有括号使用AND和OR时,这些逻辑运算符是进程的顺序是基于逻辑运算符优先级的规则。优先规则规定如果不包括括号,则在OR操作之前执行AND操作。

让我通过添加一个NOT运算符来构建我之前的WHERE子句:

我在AND操作之后添加了NOT运算符,以表明我想要的产品不是蓝色或绿色。 当我对我的AdventureWorks数据库运行这个查询时,我得到的是Silver,Yellow和Black的产品。

有关搜索条件的所有不同可能性的完整列表,请参阅书籍

Online:http://msdn.microsoft.com/en-us/library/ms173545.aspx,有关逻辑运算符优先级的更多信息,请阅读以下主题:http://msdn.microsoft.com/en-us/library/ ms190276.aspx。

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值