建表是否需要逐个创建?MariaDB运行SQL报1064语法错误问题咨询
问题排查结果
1. 建表是否需要逐个执行
不需要,只要SQL语法符合规范,你可以批量执行多条建表语句,不需要单独拆分运行。
2. 报错核心原因
你使用了错误的DATE类型语法:MySQL/MariaDB 中的DATE类型不支持指定长度参数,DATE是固定存储格式(YYYY-MM-DD),不需要加(10)这类长度声明。
你代码里两处DATE(10)的写法都有问题:
Employee表的Bdate DATE(10) NOT NULLDependent表的BirthDate DATE(10)
3. 修正后可正常运行的代码
USE dleeat_db; CREATE TABLE Employee( SSN VARCHAR(10) NOT NULL, Bdate DATE NOT NULL, Fname VARCHAR(30) NOT NULL, Lname VARCHAR(30) NOT NULL, Minit VARCHAR(30) NOT NULL, Sex CHAR(1) NOT NULL, Address VARCHAR(30) NOT NULL, Salary INTEGER NOT NULL ); CREATE TABLE Department( Noofemployees INTEGER NOT NULL, Locations VARCHAR(30) NOT NULL, NAME VARCHAR(30) NOT NULL, Number INTEGER NOT NULL ) ; CREATE TABLE Project( NAME VARCHAR(30) NOT NULL, Number INTEGER NOT NULL, Location VARCHAR(30) ) ; CREATE TABLE Dependent( NAME VARCHAR(30), Sex CHAR(1), BirthDate DATE, Relationship VARCHAR(30) );
如果业务需要存储带时分秒的时间,可以把DATE替换为DATETIME,如果需要保留精度,可以写为DATETIME(6)(数字代表秒的小数位精度,最多支持6位微秒)。
内容的提问来源于stack exchange,提问作者Donghyok Lee
相关产品推荐
相关产品推荐

