首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么每次都要在WHERE子句中定义表名?

在SQL语言中,WHERE子句用于筛选满足特定条件的数据行。在WHERE子句中定义表名的原因是为了明确指定所要筛选的数据来自哪个表。

在一个数据库中,可能存在多个表,每个表都有自己的结构和数据。当我们需要从数据库中获取特定条件的数据时,需要明确指定从哪个表中进行筛选。通过在WHERE子句中定义表名,可以确保查询操作针对的是正确的表,避免混淆或错误的结果。

此外,通过在WHERE子句中定义表名,还可以在多表查询中指定不同的表进行筛选,实现更复杂的查询需求。在多表查询中,通过表名的指定,可以明确指定每个条件所属的表,避免歧义和错误。

总结起来,每次在WHERE子句中定义表名的目的是为了明确指定所要筛选的数据来自哪个表,确保查询操作的准确性和一致性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

常用SQL语句和语法汇总

表定义的更新(添加列) ALTER TABLE 表名> ADD COLUMN 定义>; 表定义的更新(删除列) ALTER TABLE 表名> DROP TABLE ; 列的查询 SELECT...FROM 表名>; 查询出表中的所有列 SELECT * FROM 表名>; 根据WHERE语句来选择记录 SELECT ,......FROM 表名> WHERE ; SQL常用规则2 SQL语句可以使用AS关键字为列设定别名,设定汉字别名时需要使用双引号(’’)括起来 在SELECT语句中可以使用DISTINCT...在GROUP BY子句中不能使用SELECT子句中定义的别名 只有在SELECT子句、ORDER BY子句和HAVING 子句中能够使用聚合函数,WHERE子句中不能使用聚合函数 HAVING子句要写在...SQL常用规则7 集合运算会除去重复的记录,但可以使用ALL选项,保留重复行 进行联结时需要在FROM子句中使用多张表 进行内联结时必须使用ON子句,并且要书写在FROM 和WHERE之间 使用联结时

3.1K80

常用SQL语句和语法汇总

、其余(列名等)小写 字符串和日期常数需要使用单引号(’)括起来 数字常数无需加注单引号 SQL语句的单词之间需要使用半角空格或换行符来进行分割 表的创建 SQL常用规则1 数据库名称、表名和列名由字母...、数字和下划线组成 名称必须以字母开头 名称不能重复 表的删除 表定义的更新(添加列) 表定义的更新(删除列) 列的查询 查询出表中的所有列 根据WHERE语句来选择记录 SQL常用规则2 SQL语句可以使用...在GROUP BY子句中不能使用SELECT子句中定义的别名 只有在SELECT子句、ORDER BY子句和HAVING 子句中能够使用聚合函数,WHERE子句中不能使用聚合函数 HAVING子句要写在...定义视图时不要使用ORDER BY子句 视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新 子查询作为内层查询会首先执行 标量字查询就是返回单一值的子查询 在细分的组内进行比较时,需要使用关联子查询...FROM子句中使用多张表 进行内联结时必须使用ON子句,并且要书写在FROM 和WHERE之间 使用联结时SELECT子句中的列需要按照“.”的格式进行书写 外联结使用LEFT、RIGHT来指定主表,使用两者所得到的结果完全相同

2.5K50
  • SQL系列总结(三):DML(数据操纵语言)

    1.插入元组 为表中所有字段都添加数据: INSERT INTO 表名> VALUES(, ···); INTO子句中并没有指明任何属性,表示给所有字段添加值,因此新插入的元组必须在每个属性列上都具有值...,表示仅对这几项属性进行赋值: INSERT INTO 表名> (, ···) VALUES(, ···); INTO子句指出了要在哪些属性上赋值,没有出现的属性类将默认取空值...其中,表定义时说明了NOT NULL的属性列不能取空值,否则会报错 VAlUE子句中属性的顺序可以与CREATE TABLE中的顺序不一样,但必须与INTO子句中的属性字段一一对应 例:向选课表中插入一条选课记录...1.普通修改 修改操作也称为更新操作,其语句的一般格式为: UPDATE 表名> SET =,=··· [WHERE ]; 其功能是修改指定表中满足WHERE...如: 例:删除所有学生的选课记录 DELETE FROM SC;-- 执行结果就是表SC变成了一个空表 2.带有子查询的删除语句 同修改语句,子查询也可以嵌套在DELETE语句中,用来构造执行删除操作的条件

    35410

    SQL复杂查询

    视图的优点 视图无需保存数据,节省存储设备容量; 可以将频繁使用的SELECT语句保存成视图,就不用每次都重新书写了。...AS 注意:SELECT语句中列的排列顺序和视图中列的排列顺序相同,SELECT语句中的第1列就是视图中的第1列,以此类推。视图的列名在视图名称之后的列表中定义。...在FROM子句中使用视图查询的两个步骤 创建视图:执行定义视图的SELECT语句; 使用视图:根据得到的结果,再执行在FROM子句中使用视图的SELECT语句。...视图的限制 定义视图时不能使用ORDER BY子句 为什么不能使用ORDER BY子句? 因为视图和表一样,数据行都是没有顺序的。...在WHERE子句中使用标量子查询 如何查询出销售单价高于平均销售单价的商品?

    3.1K30

    数据分析系列——SQL数据库

    Datatype:数据类型,可以是系统的数据类型,也可以是用户自定义的数据类型。 修改数据表 修改表之前,都需要用USE指出引用的数据库 1、修改表中的数据类型 ?...删除数据表 创建和修改数据时每次只能创建或修改一张数据表,删除数据表时,一次可以删除多张数据表。删除语句如下: ? 也可以 ? 4 表的操作基础 ? 约束表中的数据 1、为什么要使用约束?...在SQL中不能直接使用比较运算符对值进行比较,需要在查询语句中的WHERE子句或T-SQL编程时使用。...1、子查询 所谓子查询就是在一个查询语句中可以使用另一个查询语句中得到的结果作为条件进行查询,常用于两个表之间的查询引用。常用的子查询关键字有:IN、ANY、SOME、以及EXISTS。...(2)、ANY通常被比较运算符连接ANY得到的结果,它可以用来比较某一列的值是否全部都大于(小于、等于、不等于等运算符)ANY后面的子查询中得到的结果。 ?

    2.1K80

    1 SQL查询优化1. 获取有性能问题SQL的方法2.慢查询日志介绍3. 实时获取3.SQL的解析预处理及生成执行计划4 对特定SQL的查询优化

    尽量避免在 where 子语句中有 where num is null,这样不用索引,要全表扫描,可用 0 代替 null 避免在 where 中用or!...=,因为要全表扫描 尽量避免在 where 中用 or,因为若一个字段有索引,一个没有,则要全表扫描 like”%abc%”,全表扫描 避免在 where 子语句中对字段进行函数操作,因为要全表扫描 使用复合索引时...= 或 操作符 引擎将放弃使用索引而进行全表扫描 应尽量避免在 where 子句中对字段进行 null 值判断 否则将导致引擎放弃使用索引而进行全表扫描 如:select id from t...生成日志服务器及日志文件名 ? 生成到slow.rep 执行vi slow.rep ? 提供信息远多于mysqldumpslow生成的 ? 续 3. 实时获取 ? 通过此表 ?...3.3.2 MySQL优化器可优化的SQL类型 重定义表的关联顺序 ?

    2.4K91

    SQL优化快速入门

    任何SQL语句,只要在where子句中实用了is null或is not null,那么Oracle优化器不会使用索引。...IN和EXISTS,IN操作符的子查询都可以使用EXISTS代替,效率会高很多,where column in/exists (select 'X' from … where …),需要好好考虑。...选择最优效率的表名顺序(Oracle解析器按照从右到左的顺序处理FROM子句中的表名),比如select count(*) from tab1 inner join tab2,这是优先检索表2,并将表2...在SQL SERVER中,查看执行计划,发现并没有区别 减少查询的次数(包括对表查询),将多个分离的查询合并 能够在WHERE字句中使用的条件,尽量避免放在HAVING字句中 用...EXISTS替代IN,用表连接替代EXISTS 用EXISTS替代DISTINCT,因为RDBMS会在子查询条件满足后立即返回结果 用索引来提高效率,定期的重构索引是有必要的 避免在索引列上计算

    1.4K90

    MySQL开发规范

    一、基础规范 1)    使用InnoDB存储引擎 2)    数据库字符集使用UTF8,校对字符集使用utf8_general_ci 3)    所有表、字段都尽量添加注释 4)    库名、表名、字段名使用小写字母...想办法拆分成小的SQL实现 2)    不要使用SELECT * ,查询具体要用到的字段 3)    禁止like做where条件(会全表扫描且不能用索引) 4)    除非必要,避免使用 !...) 7)    少用子查询,改用JOIN(子查询要在内存里建临时表) 8)    多表JOIN的字段,区分度最大的字段放在前面 9)    IN条件里的数据数量要尽量少,超过200个用EXIST代替IN...10)    Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表) 11)    禁止单条语句同时更新多个表 12)    事务要尽量简单,整个事务的时间长度不要太长 三、表设计规范...(便于联表查询) 5)    所有字段均定义为NOT NULL(避免使用NULL字段,NULL字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效) 6)    表必须有主键,不使用更新频繁的列做主键

    1.4K00

    T-SQL基础(三)之子查询与表表达式

    子查询中很有可能无意中包含了外部查询的列名导致子查询有自包含子查询变为相关子查询而引发逻辑错误。 为避免上述错误,查询中的列名尽可能使用完全限定名:[表名].[列名]。...有时候会看到即使外部查询未使用ORDER BY但查询结果集按预期顺序返回了结果,这是由于数据库自身优化的结果,依然无法保证每次查询都能按预期结果返回。...所有列必须显式指定名称 所有列名必须唯一 表表达式分为:派生表、公用表表达式、视图三种类型。其中,派生表与公用表表达式只适用于单语句范围,即,只存在于当前查询语句中。视图则可以被多条查询语句复用。...派生表 派生表又称为子查询表,在外部查询的FROM子句中进行定义,一旦外部查询结束,派生表也就不复存在。...关于是否应该使用视图,仁者见仁,智者见智: 使用SQL Server视图的优缺点 为什么mysql中很少见到使用视图功能?

    1.6K40

    T-SQL基础(三)之子查询与表表达式

    WHERE Id=UI.IdentifyId ); 子查询易错点 NULL值处理不当 USE WJChi; ​ SELECT * FROM dbo.Customers WHERE custid NOT...子查询中很有可能无意中包含了外部查询的列名导致子查询有自包含子查询变为相关子查询而引发逻辑错误。 为避免上述错误,查询中的列名尽可能使用完全限定名:[表名].[列名]。...所有列必须显式指定名称 所有列名必须唯一 表表达式分为:派生表、公用表表达式、视图三种类型。其中,派生表与公用表表达式只适用于单语句范围,即,只存在于当前查询语句中。...派生表 派生表又称为子查询表,在外部查询的FROM子句中进行定义,一旦外部查询结束,派生表也就不复存在。...关于是否应该使用视图,仁者见仁,智者见智: 使用SQL Server视图的优缺点 为什么mysql中很少见到使用视图功能?

    1.5K10

    SQL命令 FROM(一)

    可以指定一个用括号括起来的子查询。 AS t-alias - 可选—表名的别名。 必须是有效的标识符。 描述 FROM子句指定在SELECT语句中查询数据的一个或多个表(或视图或子查询)。...在SELECT语句中为多个表指定字段名时使用表名别名。 如果FROM子句中指定了两个(或更多)表,可以通过指定tablename来指明需要哪个表的字段。...表连接 当在FROM子句中指定多个表名时, SQL将对这些表执行连接操作。 执行的连接类型由每对表名之间的连接关键字短语或符号指定。 当两个表名用逗号分隔时,将执行交叉连接。...将此关键字与%FIRSTTABLE和%STARTTABLE进行比较,这两个关键字都只指定初始连接表,而不指定完整的连接顺序。...此优化选项禁用“扁平化”(默认),它通过将子查询有效地集成子查询到查询中来优化包含量化的子查询的查询:将子查询的表添加到查询的FROM子句中,并将子查询中的条件转换为查询的WHERE子句中的联接或限制。

    2.1K40

    基础很重要~~04.表表达式-上篇

    一、派生表 1.用法: 使用地方:外部查询的FROM字句中定义 存在范围:外部查询一结束,派生表就不存在 语法:派生表的查询语句写在括号里面,括号外面跟着AS关键字和派生表的名称。...除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。...3.使用参数 在派生表的查询中,可以引用参数。 例子: 基于上面的例子,我们定义了一个标量@orderid,在派生表查询语句中的WHERE字句中引用这个参数。...@custid = @custid ) SELECT * FROM O1 4.定义多个CTE CTE和派生表相关具有以下优势: 如果要在一个CTE中引用另一个CTE,不须要像派生表那样进行嵌套,只需要在同一个...WITH字句中定义多个CTE,并用逗号把它们分隔开。

    1.5K120

    MySQL 性能优化总结

    “%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加% 1 select * from student where name like '%姜小鱼%' --会造成全表扫描 2 select...B ON A.num = B.num --不会造成全表扫描  1.3.6,:where子句中对字段进行表达式操作的优化   不要在where子句中的“=”左边进行函数、算数运算或其他表达式运算...4、尽量避免在where子句中使用!=或操作符,否则引擎将放弃使用索引而进行全表扫描。   ...6、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。...8、不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

    1K11

    数据库概念之SQL语句1

    这就是我们需要注意的一点,如果要在select语句中的字段,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。...这就是为什么这些函数叫聚合函数(aggregate functions)了 group by 只能在where语句后面 select语句后面的属性一定要先出现在group by语句后面 group by...year=2010 and S.course_id=T.course_id); 注意: 子查询中用到了外层查询中的换名的表,称为correlated subquery 内外层查询没有先后之分,同时进行...avg_salary > 4300; from嵌套的select可以选择出一个子集合,要在外层的where语句使用这个子集合,则要换名,换为 _表名 (_元组1,_元组2,……),如:找出总薪水最高的部门...… where……; 表的联接查询 使用natural join 或者其他形式的join来联接表,然后查询(不过联接之后不可以对表做很多操作,不是很方便) 在where语句中使主码等于外码将两表联接。

    99230

    数据库查询优化

    6 选择最有效率的表名顺序: SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下...并不是每一个不可SARG的WHERE子句都注定要全表扫描。如果WHERE子句包括两个可SARG和一个不可SARG的子句,那么至少可SARG的子句能使用索引(如果存在的话)帮助快速访问数据。...8.1 WHERE子句中的连接顺序 SQLSERVER采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE...例如语句: SELECT * FROM customer WHERE zipcode[2,3] >"80" 在where子句中采用了非开始子串,因而这个语句也不会使用索引。...例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、课程号、成绩)。如果两个表要做连接,就要在“学号”这个连接字段上建立索引。 还可以使用并集来避免顺序存取。

    4.3K20

    MySQL十二:索引分析

    student where id > 1; 因为「union会对结果去重,内部创建了一个 名字的临时表,把查询 1 和查询 2 的结果集都合并到这个临时表中,利用唯一键进行去重,...UNION RESULT 从UNION表获取结果的SELECT DEPENDENT SUBQUERY 在SELECT或WHERE列表中包含了子查询,子查询基于外层 UNCACHEABLE SUBQUREY...无法被缓存的子查询 「table」 输出结果集的表,即查询的表名 「partitions」 匹配的分区 「type」 表示存储引擎查询数据时采用的方式。...eq_ref:一般情况下出现在多表join查询,表示前面表的每一个记录,都只能匹配后面表的一 行结果。 const:表示使用主键或唯一索引做等值查询,常量查询。...「possible_keys」 表示在某个查询语句中,对某个表执行单表查询时「可能用到的索引列表」 「key」 表示在某个查询语句中,列表示「实际用到的索引」有哪些。

    1.4K20
    领券