【发布时间】:2020-09-03 15:06:18
【问题描述】:
我想知道为什么我的 SQL 代码在 SQL Server 上无法正常运行,而当我将其上传到 phpmyadmin 时却运行良好。这些SQL之间有什么区别吗?有人能让这段代码在 SQL Server 上运行良好吗?我只发布了数据库的一部分,但在您的帮助下,我会完成其余的。
create database Biblioteka;
use Biblioteka;
create table Autorzy
(
ID_Autora int(5) Primary Key auto_increment,
Imie varchar(25),
Nazwisko varchar(25)
);
create table Czytelnicy
(
ID_Czytelnika int(3) Primary Key auto_increment,
ID_Klasy int(3),
Imie varchar(25),
Nazwisko varchar(25),
PESEL char(11)
);
create table Klasa
(
ID_Klasy int(3) Primary Key auto_increment,
Nazwa_Klasy varchar(5)
);
alter table Czytelnicy
add foreign key (ID_Klasy) references Klasa(ID_Klasy);
insert into Autorzy values('','Stefan','Batory');
insert into Autorzy values('','Gabriela','Zapolska');
insert into Autorzy values('','Joanne','Rowling');
insert into Czytelnicy values('','1','Adam','Nowak','97091309264');
insert into Czytelnicy values('','2','Anna','Kowalczyk','99062312546');
insert into Czytelnicy values('','2','Jan','Dabrowski','77022610926');
insert into Klasa values('','1A');
insert into Klasa values('','2B');
insert into Klasa values('','3C');
【问题讨论】:
-
MySQL和SQL Server是两个不同的数据库,SQL方言不同。您不能期望 MySQL 脚本在 SQL Server 中按原样工作。
-
你遇到了什么错误?
-
您的代码可能无法在 MySQL 上运行:我希望在自动递增的列中插入空字符串会失败。
-
我遇到了很多错误。首先,它说数据库“名称”不存在,我只需要执行该代码的 1 行。创建它时,它会显示“'auto_increment' 附近的语法不正确”。当我处理它时,它与int的另一个问题..
-
每个 RDBMS 都有不同的 SQL 方言。 SQL Server 使用 T-SQL (Transact SQL),而 MySQL 也使用自己的 SQL 版本。当从一个 RDBMS 迁移到另一个 RDBMS 时,您必须(手动)从以前的方言翻译成新的方言。很少有代码可以在 RDBMS 之间传输,因为它们都有不同的实现。甚至 ISO SQL 也不是每个 RDBMS 都支持,它们都倾向于支持这些标准的不同数量/部分。
标签: sql sql-server tsql sql-insert create-table