SQL常用基础语句(一)-- ABCDE开头

AS

将列名从 count(*) 修改为 total

sql 复制代码
select count(*) as total from users where status=0

将列名 username 改为 uname, password 改为 upwd

sql 复制代码
select username as uname, password as upwd from users

BETWEEN AND

**说明:**BETWEEN 筛选的是 >=value1且 <=value2的数据

NOT BETWEEN筛选的是 <value1或 >value2的数据

sql 复制代码
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

CASE WHEN

case when语句能在SQL语句中放入判断逻辑,类似Java中学习的if else语句。

**(1)简单函数:**如果字段等于预期值,则返回结果1,否则返回结果2,end代表语句结束。

case 字段 when 预期值 then 结果1 else 结果2 end

例如在表中sex为男改为女,为女改为男,代码展示:

sql 复制代码
select name,(case sex when '男' then '女' else '男' end)sex from student;

**(2)条件表达式:**当条件判断为真是返回result1,否则返回result2,如果没有else则返回null。case 和 end之间可以有多个when ....... then ......else 语句,end表示case语句结束。语法结构:

case

when 条件判断 than result1 else result2

end

例如员工薪水等级,代码展示:

sql 复制代码
select tb_emp.name,(case
    when salary between 0 and 3000 then 1
    when salary between 3001 and 5000 then 2
    when salary between 5001 and 8000 then 3
    when salary between 8001 and 10000 then 4
    when salary between 10001 and 15000 then 5
    when salary between 15001 and 20000 then 6
    when salary between 20001 and 25000 then 7
    when salary between 25001 and 30000 then 8
    end
)grade from tb_emp;

**(3)综合使用:**case when 和聚合函数使用,能实现更加复杂的统计功能

例如:统计有多少个男生和女生以及男女生青年人数的有几个

sql 复制代码
select
sum(case when stu_sex='男' then 1 else 0 end) as '男生人数',
sum(case when stu_sex='女' then 1 else 0 end) as '女生人数',
sum(case when stu_age<20 and stu_sex='男' then 1 else 0 end) as '男生青年人数',
sum(case when stu_age<20 and stu_sex='女' then 1 else 0 end) as '女生青年人数'
from student1;

COUNT

1)count(*)所有行进行统计,包含值为null的行和重复项。

2)count(column)会对指定列具有的行数进行统计,除去值为NULL的行。

3)count(1)与count(*) 的效果是一样的。

  1. count(DISTINCT column)会去除重复项。

CURRENT_DATE()

#获取当前日期

sql 复制代码
SELECT CURRENT_DATE() AS newDate;    #2019-05-20

#当前日期加1天(其他天数方法一样)

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) AS newDate;    #2019-05-21

#当前日期减1天

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) AS newDate;   #2019-05-19

#当前日期加1个月

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH) AS newDate;  #2019-06-20

#当前日期减1个月

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 MONTH) AS newDate; #2019-04-20

#当前日期加1年

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 YEAR) AS newDate;   #2020-05-20

#当前日期减1年

sql 复制代码
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 YEAR) AS newDate;  #2018-05-20

#指定日期加1天(可将DAY换为MONTH,YEAR来实现加1个月,1年)

sql 复制代码
SELECT DATE_ADD('2019-05-02', INTERVAL 1 DAY) AS newDate;    #2019-05-03

#指定日期减1天(可将DAY换为MONTH,YEAR来实现减1个月,1年)

sql 复制代码
SELECT DATE_ADD('2019-05-02', INTERVAL -1 DAY) AS newDate;   #2019-05-01

#当前时间添加1小时10分钟10秒钟

sql 复制代码
SELECT DATE_ADD(NOW(), INTERVAL '1:10:10' HOUR_SECOND) AS newTime;    #2019-05-20 15:59:32

#指定时间添加1小时10分钟10秒钟

sql 复制代码
SELECT DATE_ADD('2019-04-17 2:00:00', INTERVAL '1:10:10' HOUR_SECOND) AS newTime;    #2019-04-17 03:10:10

DATE_FORMAT

语法:DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

可以使用的格式有:

1:星期一 2:星期二 3:星期三 4:星期四 5:星期五 6:星期六 0:星期日

sql 复制代码
SELECT DATE_FORMAT('2019-05-20','%w') AS weekDay FROM DUAL;    #1

2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六 1:星期日

sql 复制代码
SELECT DAYOFWEEK('2019-05-20') AS weekDay;     #2

0:星期一 1:星期二 2:星期三 3:星期四 4:星期五 5:星期六 6:星期日

sql 复制代码
SELECT WEEKDAY('2019-05-20') AS weekDay;    #0

#可将具体日期换为CURRENT_DATE()函数取当前日期,如下:

sql 复制代码
SELECT DATE_FORMAT(CURRENT_DATE(),'%w') AS weekDay FROM DUAL;

SELECT DAYOFWEEK(CURRENT_DATE()) AS weekDay;

SELECT WEEKDAY(CURRENT_DATE()) AS weekDay;

DELETE

从指定的表中 根据WHERE条件删除对应的数据行

DELETE FROM 表名称 WHERE 列名称 = 值

相关推荐
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂5 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.6 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
yatingliu20197 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
薛晓刚9 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队9 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术