添加别名的重要性

-- =============================================
-- Author:            <Author,,CC>
-- Create date:        <Create Date,, 2014-06-29 12:25:20.010>
-- Description:        <Description,,加别名的重要性>
-- Environment:        <Version,, Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64))>
-- =============================================

use test
go

create table t1(
id int ,
id1 int
)

create table t2(
id11 int,
id2 int
)

insert into t1(id ,id1)
select 1,2 union all
select 2,3 union all
select 3,4 union all
select 4,5 union all
select 5,5

insert into t2(id11,id2)
select 1,2 union all
select 2,3

create table t3(
id int,
id2 int
)
insert into t3(id,id2)
select 1,2 union all
select 2,3

-- 1.查询t1表中的id在t3中的记录,没有别名,记录正确
select * from t1 a
where id in (select id from t3 b)  

--2. 假如in的内查询中不存在外查询的列
select * from t1 a
where id in (select id from t2 b)
/*
此时我们可以看到语句并没有错,而是会去寻找t1中的数据,语句结果同下面的查询效果:
select * from t1 a
where id in (select a.id from t2)
其实是内查询不存在,所以结果就自己去寻找外面的查询
*/

--3. 我们把内表加上别名,此时才是我们要的结果,并且提示报错
select * from t1 a
where id in (select b.id from t2 b)

--删除t2中的数据,再测试一下
truncate table t2
--3. t2中没有数据,此时则不会往外层寻找
select * from t1 a
where id in (select a.id from t2)

drop table t1,t2,t3

以上结果只是查询,若换为删除出现这种情况则可能会把外表整个的数据删除掉,造成不能想象的问题,所以在允许的情况下尽量还是要把别名加上.

添加别名的重要性

时间: 2024-10-09 05:28:47

添加别名的重要性的相关文章

Mac添加命令别名

1. 切换到用户主目录 $ cd 2. 编辑或新建.bash_profile文件 3. 添加别名 命令别名设置语法: alias [别名]='[指令名称]' 注意:等号两边均无空格,指令名称中如有空格,需用引号包裹 例如: alias ll='ls -l' 4. 重载该配置文件 $ source ./bash_profile 5. 查看当前所有别名设置 $ alias 注:Mac别名设置与Linux大体相同,仅配置文件不同.可参考Linux alias命令

云服务器 ECS Linux 系统添加“回收站”

删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失.在云服务器 ECS Linux 系统中这种危险尤为明显.比如,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并不会因为这条语句的不合理而拒绝执行. 在 Windows 中,为了防止误删,系统默认提供了回收站功能.用户在执行删除操作后,文件并不会直接从硬盘中删除,而是被放到回收站中.在清空回收站前,如果发现有文件被误删,用户可以将回收站中的文件恢复到原来的位置.而 Linux 并没有提供类似功能,删除命令 r

命令别名

定义一个命令别名,引用另一个命令的执行结果 命令别名功能: 在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁地输入某个很长命令或用法是不可取的.这时可以使用命令别名功能将这个过程简单化. 命令别名的定义有两种:一种是系统定义别名:一种是用户自定义别名. 1.系统定义的别名 通常情况下,系统中已经定义了一些命令别名,要查看已经定义的命令别名,可以使用alias命令: #alias命令将输出所有已经定义的命令别名 # alias alias cp=

nginx别名配置,状态配置,include优化

一.nginx帮助参数 下面是关于/application/nginx/sbin/nginx 的参数帮助 [[email protected] conf]# /application/nginx/sbin/nginx -h nginx version: nginx/1.6.3 Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : sh

Entrust是一种为Laravel5添加基于角色的权限的简洁而灵活的方法。

安装 首先要在composer.json中添加: "zizaco/entrust": "5.2.x-dev" 然后运行composer install 或者 composer update 在 config.php的provider数组中添加: Zizaco\Entrust\EntrustServiceProvider::class, 在config.php的alias数组中添加: 'Entrust'=>Zizaco\Entrust\EntrustFacade

shell基础之脚本执行,命令别名以及快捷键等

脚本执行方式 比如我们在/root/下编写了一个脚本,名字为hello.sh.那么怎么调用执行它呢?有两种办法: (1)直接通过bash,如下: bash  hello.sh 注:采用bash执行脚本,不需要赋予执行权限.但是这不符合习惯,一般不推荐使用. (2)先赋予权限,然后直接调用: chmod   755   hello.sh /root/hello.sh 注:上面的第一句就是为脚本赋予权限,第二句就是执行命令.一般推荐这种执行方式. ==========================

Oracle-18-select语句初步&amp;SQL中用算术表达式&amp;别名的使用&amp;连接运算符%distinct&amp;where子句

一.一般SELECT语句的格式如下: 1.查询指定表的所有列 select * from 表名 [where 条件] [group by 分组列名] [having 聚合函数] [order by 排序列名 ASC| DESC] 在表名地方,可以写多个表 2.查询指定表的部分列: select {[distinct]列名,列名,-}from 表名 [where 条件] [group by 分组列名] [having 聚合函数] [order by 排序列名 ASC| DESC] 其中关键字dis

pfsense 单IP、网络、别名管道限速的设置

在pfsense中,控制网络限速最常用的是流量整形中的"限制器",你可以把它理解为一个管道,20Mit/s的下载管道,那么下载的最大流量就不会超过20Mit/s.流量限制器结合IP.网络.别名可以设置不同的限速规则,满足网管需要. 在本教程中,分三种情况对网络进行速设定.分别是单IP.网络.和别名.    一.设置下载.上传"限制器" 进入防火墙-流量整形-限制器,添加新限制器.在本示例中,下载.上传分别限制为20Mit/s.因为限速一般在LAN上设置,所以下载的限

Linux的别名使用

直接定义别名 编辑当前用户下的.bashrc 文件: vim  ~/.bashrc 添加别名为 lmysql 的命令语句 : alias lmysql='mysql -uroot -p -Dtest --default-character-set=utf8 --auto-rehash' 使其立即生效 : source  ~/.bashrc 使用单独文件 如果有很多 alias 命令,可单独定义一个文件存放,参考 .bashrc中 的一段说明: # Alias definitions. # You