gpt4 book ai didi

mysql - 从sqlite语法到mysql语法

转载 作者:行者123 更新时间:2023-12-05 01:32:51 27 4
gpt4 key购买 nike

我在从 sqlite 语法迁移到 mysql 语法时遇到了一些麻烦。有人知道显示 sqlite 中的基本语法及其在 mysql 中的等效语法的资源吗?

在我的特殊情况下,我想将此 sqlite 代码转换为 mysql 代码:

DROP TABLE IF EXISTS post;


CREATE TABLE post (
a INTEGER PRIMARY KEY AUTOINCREMENT,
b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
c TEXT NOT NULL,
d TEXT NOT NULL,
e TEXT NOT NULL,
f TEXT NOT NULL,
g TEXT NOT NULL,
h TEXT NOT NULL,
i TEXT,
j TEXT NOT NULL,
k TEXT,
l TEXT NOT NULL,
m TEXT NOT NULL
);

目前,我是这样做的:

DROP TABLE IF EXISTS 帖子;

CREATE TABLE post (
a INT AUTO_INCREMENT PRIMARY KEY,
b CURRENT_TIMESTAMP(),
c TEXT NOT NULL,
d TEXT NOT NULL,
e TEXT NOT NULL,
f TEXT NOT NULL,
g TEXT NOT NULL,
h TEXT NOT NULL,
i TEXT,
j TEXT NOT NULL,
k TEXT,
l TEXT NOT NULL,
m TEXT NOT NULL
);

但是我在使用 CURRENT_TIMESTAMP() 和 TEXT 时遇到了错误。

如有任何帮助,我们将不胜感激。

最佳答案

实际上,您唯一需要做的更改是使用 AUTO_INCREMENT 而不是 SQLite 的 AUTOINCREMENT 关键字,您的语句在 MySql 中也能正常工作。
查看demo .

但是你最好不要用MySql的TEXT数据类型。
SQLite 只有一种数据类型用于存储字符串,这是 TEXT 数据类型。
另一方面,MySql 支持 VARCHAR and CHAR用于存储字符串值的数据类型。
如果列不包含很长的字符串,则首选数据类型是 VARCHAR 而不是 TEXT
您可以在这些线程中找到有关 2 种数据类型差异的更多信息:

所以一个有意义的声明是:

CREATE TABLE post (
a INTEGER PRIMARY KEY AUTO_INCREMENT,
b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
c VARCHAR(10) NOT NULL,
d VARCHAR(10) NOT NULL,
e VARCHAR(10) NOT NULL,
f VARCHAR(10) NOT NULL,
g VARCHAR(10) NOT NULL,
h VARCHAR(10) NOT NULL,
i VARCHAR(10),
j VARCHAR(10) NOT NULL,
k VARCHAR(10),
l VARCHAR(10) NOT NULL,
m VARCHAR(10) NOT NULL
);

您可以将 VARCHAR(10) 中的数字 10 替换为每列的最大预期长度。

关于mysql - 从sqlite语法到mysql语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65269932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com