我的mysql代码不会通过语法检查器运行

roejwanj  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(344)

在线sql语法检查器已经给了我很多关于我的简单sql代码的废话,我不明白为什么。。。

CREATE DATABASE IF NOT EXISTS DB ;
USE DB ;
CREATE TABLE IF NOT EXISTS teachers( 
   ID INT NOT NULL AUTO INCREMENT,
   LAST_NAME TEXT,
   FIRST_NAME TEXT,
   COMPUTER_ID TEXT);

我几乎是从一些sql示例中复制了这段代码。我正在使用mysql,并在sqlfiddle.com上进行测试,sqlfiddle.com设置为使用mysql 5.6。如果我在数据库“db”中有前两行,则表示拒绝用户“user\u 9\u 79940c”@“%”对数据库“db”的访问,如果删除了前两行,则表示create table在auto increment附近出现语法错误

xdnvmnnf

xdnvmnnf1#

首先,不允许在sqlfiddle上创建或切换数据库。在您自己的mysql示例上,您可能可以这样做,这取决于您拥有的权限。这就是为什么前两行在sqlfiddle中不起作用;数据库是为您预先创建和选择的,您将在其中进行沙盒处理。
这个 CREATE TABLE 命令将抛出一个语法错误 AUTO INCREMENT -这不是一个关键词,应该写出来 AUTO_INCREMENT .
这里仍然有一个错误:“只能有一个自动列,必须定义为键”。只有一个自动列,但它还不是键。所以,我们将通过附加 PRIMARY KEY . 这样做有效:

CREATE TABLE IF NOT EXISTS teachers( 
   ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   LAST_NAME TEXT,
   FIRST_NAME TEXT,
   COMPUTER_ID TEXT);

请注意 PRIMARY KEY 将暗示 NOT NULL ,所以 NOT NULL 是不必要的,可以删除而不产生任何后果。

相关问题