Mysql关键字闭坑

Mysql关键字闭

INTERVAL
因为需求,所以数据设计时用到了一个INTERVAL字段,程序编译及启动都没有任何问题,但是到了查询的时候,直接控制台报语法异常,这就奇怪了,用的是MP插件作为查询,为啥报出语法错误,一脸懵! 排查了半个小时,摁是没有看出所以然,突然眼睛一亮看到,上面的控制台的sql无任何异常,果断拿到数据执行,依旧报语法错误,但是发现了INTERVAL字段变了颜色,第一反应就是关键字,后面一查果真如此,这个关键字很隐蔽,不经常使用,所以又整理了下面几个容易误导的关键字(举一反三哈哈哈),同时把interval用法梳理了一下,另外觉得几个有趣的函数也贴了出来分享:
在这里插入图片描述
CHECK:用于定义表级约束。
COLUMN:用于指定列的名称、数据类型和约束。
CREATE:用于创建数据库、表、视图、索引等。
DROP:用于删除数据库、表、视图、索引等。
INDEX:用于创建索引。
MODIFY:用于修改表中列的数据类型和约束。
RENAME:用于重命名数据库、表、列等。
TRUNCATE:用于清空表数据。

其他重要关键字:
union :连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
column_name 为列名,table 为表名,[] 为可选条件,where conditions 为检索条件,
all 结果集中包含重复数据,distinct 为默认 结果集中不包含重复数据

select column_name1,column_name2...
	from table1
	[where conditions] 
	union [all | distinct]
	select column_name1,column_name2...
	from table2
	[where conditions]

case:条件判断关键词

CASE [column_name] WHEN [value1] THEN [result1]... ELSE [default] END
select
	CASE 'a'
	WHEN 'a' THEN '1'
	WHEN 'b' THEN '2'
	ELSE '3' END; -- 1
CASE WHEN [expr] THEN [result1]... ELSE [default] END
select
	CASE
	WHEN 1 >= 2 THEN 'a'
	WHEN 3 >= 2 THEN 'b'
	ELSE 'c' END; -- b

在设计数据库和表结构时,为了避免与关键字冲突,建议遵循以下最佳实践:
字段命名规范:使用有意义的字段名,并遵循一定的命名规则,例如使用下划线分隔单词。
避免使用关键字:尽量不要使用MySQL的关键字作为字段名、表名或数据库名。
使用引号:如果确实需要使用关键字作为标识符(尽管不推荐这样做),可以使用反引号(`)将其括起来。但请注意,这可能会在未来的MySQL版本中引发问题,因为关键字列表可能会变化。

1.日期运算:
获取当前日期的前一天:

SELECT DATE(NOW() - INTERVAL 1 DAY);
  1. 时间运算:
    获取当前时间的前 5 小时:

    SELECT TIME(NOW() - INTERVAL 5 HOUR);
    
  2. 数据查询:
    查询最近一周的订单数据:

    SELECT *
    FROM orders
    WHERE order_date >= DATE(NOW() - INTERVAL 1 WEEK); 这将返回最近一周内的订单数据。
    

    查询过去一个季度的销售额:

    SELECT SUM(sales_amount)
    FROM sales
    WHERE sales_date >= DATE(NOW() - INTERVAL 3 MONTH)
      AND sales_date <= DATE(NOW()); 这将返回过去一个季度内的销售额总和。
    

    查询今年的生日在本月的客户:

    SELECT *
    FROM customers
    WHERE MONTH(birthday) = MONTH(NOW())
      AND YEAR(birthday) = YEAR(NOW());这将返回今年生日在当前月份的客户信息。
    
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值