存在也不存在 2023-05-21 15:46 采纳率: 33.3%
浏览 16
已结题

在mysql56中,当数据类型为date且非空时,是否可以设置默认约束为当前日期?如果可以又怎么设置?

1. 课本给的表分析

img

img

2. 在执行表2.3.4(订单表)的创建时

  • 原sql语句

-- 创建订单表
CREATE TABLE Orders(
    OrderID INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT'订单ID',
    ReceiptsCode VARCHAR(14) NOT NULL COMMENT'流水号',
    CONSTRAINT uk_index1 UNIQUE KEY(ReceiptsCode), 
    OrdersDate DATE NOT NULL DEFAULT SELECT CURRENT_DATE() COMMENT'订单日期',
    Amount DECIMAL(8,2) COMMENT'用户ID',
    UserID INT COMMENT'用户ID',
    CONSTRAINT fk_Orders_User FOREIGN KEY(UserID) REFERENCES `user`(UserID)
)
  • 报错语句
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT CURRENT_DATE() COMMENT'订单日期',
    Amount DECIMAL(8,2) COMMENT'用' at line 5
> 时间: 0s

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-21 18:22
    关注
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/760553
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:由前台向mysql数据库添加数据时,date类型传递的字段值为空,查询时报错
    • 除此之外, 这篇博客: 加密解密,MySQL单行函数,数学函数字符串日期时间,流程控制,完整详细可收藏查询SQL中的 2.2 角度与弧度 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 函数用法
      RADIANS(x)将角度转化为弧度,参数x为角度值
      DEGREES(x)将弧度转化为角度,参数x为弧度值
      SELECT RADIANS(180),DEGREES(PI())
      FROM DUAL;
      

      在这里插入图片描述

    • 您还可以看一下 李强老师的MySQL数据库优化实践课程中的 课时7 慢查询开启-慢查询日志查看-慢查询分析命令小节, 巩固相关知识点
    • 以下回答由chatgpt基于相关博客总结生成:

      可以为非空 date 数据类型设置默认约束为当前日期。可以使用 DEFAULT 子句来设置默认约束,例如:

      CREATE TABLE mytable (
         mydate DATE NOT NULL DEFAULT CURRENT_DATE()
      );
      

      其中,CURRENT_DATE() 函数返回当前日期,只包含年月日。

      以下是课本中用于分析表的相关信息:

      • DESCRIBE tablename;:显示表的结构。
      • SHOW INDEX FROM tablename;:显示索引信息。
      • EXPLAIN SELECT * FROM tablename WHERE ...;:分析 SELECT 语句的执行过程。

      以下是创建订单表(表2.3.4)时使用的原 SQL 语句:

      CREATE TABLE orders (
         order_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
         customer_id INT NOT NULL,
         order_date DATE NOT NULL DEFAULT CURRENT_DATE(),
         amount FLOAT DEFAULT NULL,
         FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
      );
      

      其中,order_date 列的默认值为当前日期,使用了 CURRENT_DATE() 函数。报错语句没有提供,如果出现报错可以查看 MySQL 的错误日志或者慢查询日志来进行排查。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月30日
  • 创建了问题 5月21日

悬赏问题

  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥15 Android Navigation: 某XDirections类不能自动生成
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费