`

SQL Select 1 与 Select null 的理解(摘录归纳)

阅读更多
1.Select 1

在这里我主要讨论的有以下几个select 语句:

table表是一个数据表,假设表的行数为10行,以下同。

1:select  1 from table      

2:select count(1)  from table  

3:select sum(1) from table

对第一个select语句,我刚开始以为是“1”代表是列名,从2,3种顺推得出得结果:)有点无耻吧。不过通过我自己得观察,这样我觉得是不对的,所以我在SQL SERVER中测试了一下,发现结果如下:

1:测试结果,得出一个行数和table表行数一样的临时列(暂且这么叫,我也不知道该叫什么),每行的列值是1;

2:得出一个数,该数是table表的行数;

3:得出一个数,该数是table表的行数;

然后我又用“2”测试,结果如下:

1:得出一个行数和table表行数一样的临时列,每行的列值是2;

2:得出一个数,该数是table表的行数;

3:得出一个数,该数是table表的行数×2的数

然后我又用更大的数测试:

1:得出一个行数和table表行数一样的临时列,每行的列值是我写在select后的数;

2:还是得出一个数,该数是table表的行数;

3:得出一个数,该数是table表的行数×写在select后的数

综上所述:我发现第一种的写法是增加临时列,每行的列值是写在select后的数;第二种是不管count(a)的a值如何变化,得出的值总是table表的行数;第三种是计算临时列的和。

 

2.Select null

Select null 与Select 1 类似,只不过返回的列值为Null,在与Exists配合使用时,只要有行返回,则Exists子查询仍然为True。和Select 1 不通,Select null 中不可以使用Count 和 SUm 函数。

null是一个特殊的值,既不是空也不是空格,而是一个不确定的值。
如下代码
SELECT   null 
FROM     addresses
WHERE    address_id = 1
的意义是在表addresses中有几行满足条件address_id = 1的值就返回几行null值 。
分享到:
评论

相关推荐

    摘录--提高SQL性能5中方法

    CREATE TABLE #Temp1(OrderID INT NOT NULL, OrderDate DATETIME NOT NULL); INSERT INTO #Temp1(OrderID, OrderDate) SELECT TOP 5 o.OrderID, o.OrderDate FROM Orders o ORDER BY o.OrderDate DESC; ``` #### 四...

    SQL-92标准 中文翻译——定义、记号和约定 (约定)

    SQL-92标准中包含了多个关键定义,这些定义对于理解SQL的标准语法和语义至关重要。其中,定义涵盖了字符集、日期时间表示等基本元素,而记号则涉及到如何使用特定符号来表达SQL语句中的各种概念。 #### 2. 基本概念...

    SQL 优化原则

    我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM...

    基于VB存取SQL Server图像数据的方法.pdf

    该文档摘录自《软件导刊》2009年1月第8卷第1期,由作者陆骏撰写,其工作单位是无锡高等师范学校,作者主要的研究方向是计算机程序设计和计算机仿真技术。文章的中图分类号为TP311.52,文献标识码为A,文章编号为1672...

    Oracle数据库学习指南

    1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. ...

    FineReport完整教程_Yjy.pdf

    通过提供的内容摘录,我们可以提炼出一些关于FineReport的核心知识点,包括但不限于它的使用方法、相关的技术概念、以及与数据展示和报表设计相关的一些操作。 首先,从文档的提及中我们可以看出,FineReport可以和...

    连接MySQL数据库.rar

    sql = "SELECT * FROM users WHERE username = %s" cursor.execute(sql, ('John Doe',)) results = cursor.fetchall() for row in results: print(row) ``` 6. **更新数据**:`update_data.py`可能用于更新数据库...

Global site tag (gtag.js) - Google Analytics