在线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附近出现语法错误
1条答案
按热度按时间xdnvmnnf1#
首先,不允许在sqlfiddle上创建或切换数据库。在您自己的mysql示例上,您可能可以这样做,这取决于您拥有的权限。这就是为什么前两行在sqlfiddle中不起作用;数据库是为您预先创建和选择的,您将在其中进行沙盒处理。
这个
CREATE TABLE
命令将抛出一个语法错误AUTO INCREMENT
-这不是一个关键词,应该写出来AUTO_INCREMENT
.这里仍然有一个错误:“只能有一个自动列,必须定义为键”。只有一个自动列,但它还不是键。所以,我们将通过附加
PRIMARY KEY
. 这样做有效:请注意
PRIMARY KEY
将暗示NOT NULL
,所以NOT NULL
是不必要的,可以删除而不产生任何后果。