1、从开发效率来看:联合查询是需要多个单查询进行逻辑组合才能完成的查询的工作,联合查询仅仅需要一个SQL就可以完成查询工作,即把业务逻辑放到了SQL中,由数据库来处理,相对来说开发效率会比较高些。
2、从查询效率来看:单查询的可重用性较高,所以效率相较之联合查询会更高。
3、从逻辑架构分层原则来看关联关系代表了业务规则/逻辑,如果大量使用关联查询,就是把大量的业务规则和逻辑放在数据库来执行了,数据库消耗cpu、内存、io等资源会大大增加。
4、从资源利用率方面看大部分场景下,并不是所有关联查询的结果都被有效使用了。例如后台管理的列表界面会分页显示,关联查询的结果集,只有当前页的数据被使用,但数据库需要消耗额外资源得到全部结果集。
5、从架构的伸缩性方面看大量的关联查询会导致集中式的数据库架构很难向分布式架构转换,伸缩性方面的优化难度高。关联查询方便快速,开发效率比较好。不使用关联查询在架构层面有很多优点,但对系统分析和设计、开发能力要求高。一般在互联网行业等用户数较多的情况下最好重视这方面。题主的两个查询由于数据量不多,效率上基本没有差别,但在实际应用中要根据数据量、业务复杂度等去综合评估。
单表查询是指仅涉及一个表的查询,共有共包括5种基本 *** 作,本文先说明第一种。以下 *** 作全部基于SQL Server 2008
在进行查询 *** 作之前首先需要建立一张二维表。如下所示:
然后点击左上角的“新建查询”:
出现下图所示界面↓↓↓↓↓↓↓↓
命令输入完成后点击“执行”
——————————接下来进行相关 *** 作——————————
(1)查询指定列
例:查询上表的Sno,Sname.
SELECT Sno,Sname
FROM Demo1_student/*Demo1_student是表名*/
获得如下结果↓↓↓↓↓↓↓↓↓↓↓
(2)查询全部列
¤方法有两种,麻烦的是依次列出所有列名,简单的是直接使用“*”号
例:查询上表的Sno,Sname,Ssex,Sage,Sdept(全部列).
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Demo1_student
等价于
SELECT *
FROM Demo1_student
(3)查询经过计算的值
¤SELECT后可以跟表中的属性列(Sno,Sname等),还可以跟表达式(算术表达式,字符串常量,函数,列属性别名);
例:计算全体学生的出生年份。
SELECT Sname,2015-Sage/*经过计算的值*/
FROM Demo1_student
SELECT Sname,'Year of Birth:',2015-Sage,LOWER(Sdept)/*LOWER表示用小写*/
FROM Demo1_student
对于无列名的列,可以使用以下方法添加列名。
SELECT Sname NAME,'Year of Birth:' BIRTH,2015-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT /*原名和别名之间用空格隔开*/
FROM Demo1_student
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)