这是我第一次学习数据库。教授要求我们创建两个表并更改它们。
我正在尝试创建一个表
student
:
create table student
(
name varchar(25) not null,
std_num int(12),
std_num(primary)
);
当我单击“运行 SQL”时,它显示以下消息:
错误:“(”附近:语法错误
没有额外的细节。
知道导致错误的原因以及如何修复它吗?
注意:我使用的是 Programiz 在线 SQL 编辑器。
我尝试删除以下代码:
std_num int(12),
std_num(primary)
然后,它创建了表。我是否以错误的方式在表中写入主键?
我的问题是:
Error: near "(": syntax error
我非常确定您使用的是 MySQL 或 MariaDB,它们通常不会指示错误的性质,这与其他提供详细信息的 RDBMS 不同。 因此,您犯了 3 个语法错误:
这是很多错误,我建议你在开始编写查询之前先学习 SQL 语言......
正确的代码是:
create table student
(
name varchar(25) not null,
std_num int(12),
PRIMARY KEY std_num
);
由于您没有提供您正在使用的数据库,所以我只是快速猜测它应该是其中之一:
MySQL
,PostgreSQL
,SQL Server
,Oracle
或SQLite
对于上述所有数据库类型,定义主键的语法
std_num(primary)
(如代码中所示)不是标准 SQL 语法。
定义主键有两种方法:
CREATE TABLE student (
std_num INT PRIMARY KEY,
name VARCHAR(25) NOT NULL
);
CREATE TABLE student (
std_num INT,
name VARCHAR(25) NOT NULL,
PRIMARY KEY (std_num)
);
此外,MySQL 中的
int(12)
语法并不意味着整数有 12 位。相反,它指定了显示宽度,这通常是一个令人困惑的地方。对于主键,通常只需 int
就足够了,除非您对显示宽度有特定要求。