1. 课本给的表分析
2. 在执行表2.3.4(订单表)的创建时
-- 创建订单表
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
函数 | 用法 |
---|---|
RADIANS(x) | 将角度转化为弧度,参数x为角度值 |
DEGREES(x) | 将弧度转化为角度,参数x为弧度值 |
SELECT RADIANS(180),DEGREES(PI())
FROM DUAL;
可以为非空 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 的错误日志或者慢查询日志来进行排查。
可以看下这个问题的回答https://ask.csdn.net/questions/760553
DEFAULT CURRENT_DATE(),不要SELECT