create table Users
(
AttendeeID varchar not null,
FRAG boolean null,
FirstName string null,
LastName string null,
BadgeName varchar null,
BadgeNumber int not null,
DateOfBirth date null,
EmailAddress int not null,
Password password null,
PrivacyPolicy boolean null,
TermsConditions boolean null
);
create unique index Users_AttendeeID_uindex
on Users (AttendeeID);
create unique index Users_BadgeNumber_uindex
on Users (BadgeNumber);
create unique index Users_EmailAddress_uindex
on Users (EmailAddress);
alter table Users
add constraint Users_pk
primary key (AttendeeID);
因此,我正在学习数据库,并将datagrip用于我的dbms,但当我尝试执行此操作时,收到如下错误:
[42000][1064]您的sql语法有错误;请查看与您的mysql服务器版本对应的手册,以了解第3行中使用“not null,frag boolean null,firstname string null,lastname string null,ba”附近的正确语法。
最初代码读取为not null,因此我将其更改为null,因为不了解问题所在。我在前面的问题中没有找到答案,任何帮助都会很好。谢谢。
2条答案
按热度按时间q1qsirdb1#
我知道已经很晚了,但我看到了就写:
我用
CHAR
而不是VARCHAR
为了提高性能,这种情况的原因对于db引擎来说,查找数据在数学上很容易,因为行的大小是固定的。我用
ENUM
为了便于阅读,您还可以在将来添加not sure
作为第三选择。关于尺寸:
TINYINT(1)
存储为一个字节的数据ENUM('n','y')
也存储为1字节的数据。BadgeNumber
是CHAR
因为可能会有这样的情况0
零。比如:0000001023423
或者可能有业务任务来列举客人,比如:G00001
-所以对我来说最好用CHAR
徽章号码。你也可能有
UserBadges
表并将其与Users
表-如果某个用户可能有很多徽章,比如他丢失了一个旧徽章,或者只是为了历史,你会有徽章吗A case
徽章B case
.按想法
User
徽章是不同的实体。所以也要澄清。我相信这样的问题可能会迫使人们从一开始就让项目变得更加灵活。
nhn9ugyo2#
varchar
需要指定长度,如varchar(30)
30个字符。string
不是类型,使用varchar(LENGTH)
.password
不是类型,使用varbinary(LENGTH)
我认为你做的是对的,用的是咸土豆。