首页 > 数据库 >SQL笔记-select 1与select null

SQL笔记-select 1与select null

时间:2023-02-06 13:04:22浏览次数:47  
标签:count 返回 seckill 列名 SQL null sum select


第一次见到select 1和select null,有些好奇,在网上找了下相关资料,特此记录研究一下。

假设现在有两张表test和seckill,test是一张没有记录的空表,seckill表里则有4条记录;我是在MySQL 5.0的环境下测试的。

select 1

可以发现,如果表里有记录,select 1语句就会返回相应的记录行数的结果集,并且列名为1,每一行的值也都是1。这里的1并不是指的第一个字段,它可以替换成任意的常量,此时返回的列名和值都是该常量。比如select 2,如下:

那么这个select 1究竟有什么用?

可以用来查询表中是否有符合条件的记录(比如​​select 1 from seckill where id = 1001;​​​),select 1一般用来当作条件使用,比如exists( select 1 from 表名)等。select 1的效率比​​select 列名​​​和​​select*​​快,因为不用查字典表。

select 1配合count()、sum()函数

select 1还可以使用count()、sum()函数,如下:

可以看出,count()对select 1返回的行数进行了计数,所以没有记录行的test表返回的是0;而有4条记录行的seckill表则返回了4。如果把select count(1)改成select count(2),也只会改变结果集里的列名(从count(1)变成count(2))。

和之前使用select 1一样,从效率上看,select count(1) > select count(列名) > select count(*)。

下边是select 1配合sum()函数:

可以看出,该语句是对所有行的值计算总和,所以没有记录行的test表返回NULL,而seckill表则返回了4;如果换成select sum(2)呢?test表依然是返回NULL,而seckill表就是返回8。

注意:NULL是空值,表示不确定的值,即未知的数据,并不等于空字符。

select null

select null 和select 1类似,只是返回的列名和值变成了NULL;不过不同的是,select null 不可以配合使用count()和sum()函数。


标签:count,返回,seckill,列名,SQL,null,sum,select
From: https://blog.51cto.com/u_15951177/6038903

相关文章

  • MySQL笔记-8小时连接闲置超时
    最近发现之前部署在阿里云的一个web项目,每过一段时间就会报错,但是刷新下页面就会显示正常;在过了比较长的一段时间后,又会报同样的错误,如下:在网上查了下资料,原来是因为项目中......
  • TDSQL(MySQL)架构原理总结
    TDSQL(MySQL)架构原理总结一、思维导图![TDSQL架构原理总结](E:\教案笔记作业\自我总结笔记\typora\第三阶段\图片\TDSQL架构原理总结.png)二、核心架构1、架构概述TDSQL......
  • 云原生之使用docker部署Postgresql数据库
    (云原生之使用docker部署Postgresql数据库)一、Postgresql介绍1.PostgreSQL简介PostgreSQL是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。2.P......
  • mysql排查事务及进程的语句
    查询事务SELECT*FROMinformation_schema.INNODB_TRX;查询正在锁的事务SELECT*FROMINFORMATION_SCHEMA.INNODB_LOCKS;查询等待锁的事务SELECT*FROMINFORMATION_SCHE......
  • day67-sql中的事务
    事务要么都成功要么都失败事务原则:ACID原子性,一致性,隔离性,持久性原子性:要么一起成功要么一起失败一致性:针对一个事务操作前后状态一致持久性:事务结束后的数据不会随......
  • 实战:第十六章:判断Mysql库中是否存在某表
    sql查询库中是否存在该表案例:SHOWTABLESINdreamweb_gjfgwWHERETables_in_dreamweb_gjfgw=‘g_app_data_service_log’格式:SHOWTABLESIN数据库名称WHERETab......
  • mysql从5.7升级到8.0的注意事项
    ####################################(1)sql_mode全局变量:在升级MySQL版本到8.0的过程中,需要关注sql_mode参数默认值的变化,8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避......
  • 客服系统即时通讯IM开发(六)Glang Gorm 执行原生Sql语句增删改查封装库【唯一客服】网站
    在开发在线客服系统的时候,有某些地方需要使用脚本去批量执行SQL语句,这个时候就需要使用简单的执行SQL的封装函数了查询操作是使用的原生的sql库,没用Gorm,原因是Gorm的RawSca......
  • sqlmap工具的常用参数及用法
    介绍sqlmap是一个由python开发,开源的渗透测试工具,可以进行自动sql注入获取数据库信息,它同时支持windows和linux操作系统常用参数(sqlmap-u+“网址”+参数)1.-u可以......
  • 代码不要冗余之道-不要返回null
    提问方法可以返回null吗?回答千万不要参考提问2参数可以接受输入null吗?回答千万不要参考答案开始进行TDD吧100%的单测覆盖率、行覆盖分支覆盖......