Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使此代码在SQL Server上工作_Sql_Sql Server_Tsql_Sql Insert_Create Table - Fatal编程技术网

如何使此代码在SQL Server上工作

如何使此代码在SQL Server上工作,sql,sql-server,tsql,sql-insert,create-table,Sql,Sql Server,Tsql,Sql Insert,Create Table,我想知道为什么我的SQL代码在SQL Server上不能正常工作,而当我将它上传到phpmyadmin上时,它却能正常工作。这些SQL之间有什么区别吗?有人能让这段代码在SQL Server上正常工作吗?我只发布了数据库的一部分,但在你的帮助下,我会完成其余的工作 create database Biblioteka; use Biblioteka; create table Autorzy ( ID_Autora int(5) Primary Key auto_increment,

我想知道为什么我的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');

我已更改语法以使用MS SQL Server。请在插入新记录之前检查外键

create database Biblioteka;
go

use Biblioteka;

create table Autorzy(
ID_Autora  int Primary Key identity(1,1),
Imie varchar(25),
Nazwisko varchar(25));

create table Czytelnicy(
ID_Czytelnika int Primary Key identity(1,1),
ID_Klasy int,
Imie varchar(25),
Nazwisko varchar(25),
PESEL char(11));

create table Klasa(
ID_Klasy int Primary Key identity(1,1),
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中的最佳实践)

  • 您需要先在表
    Klasa
    中插入
    insert
    ,然后插入到引用表
    Czytelnicy

在将其转换为SQL Server时:

  • 不支持自动增量
    ;您可以使用
    identity(1,1)

  • int
    不接受长度

这将有助于:

create table Autorzy(
    ID_Autora int identity(1, 1) Primary Key,
    Imie varchar(25),
    Nazwisko varchar(25)
);

create table Czytelnicy(
    ID_Czytelnika int identity(1, 1) Primary Key,
    ID_Klasy int,
    Imie varchar(25),
    Nazwisko varchar(25),
    PESEL char(11)
);

create table Klasa(
    ID_Klasy int identity(1, 1)Primary Key,
    Nazwa_Klasy varchar(5)
);

alter table Czytelnicy
add foreign key (ID_Klasy) references Klasa(ID_Klasy);

insert into Autorzy(Imie, Nazwisko) values('Stefan','Batory');
insert into Autorzy(Imie, Nazwisko) values('Gabriela','Zapolska');
insert into Autorzy(Imie, Nazwisko) values('Joanne','Rowling');

insert into Klasa(Nazwa_Klasy) values('1A');
insert into Klasa(Nazwa_Klasy) values('2B');
insert into Klasa(Nazwa_Klasy) values('3C');

insert into Czytelnicy(ID_Klasy, Imie, Nazwisko, PESEL) values(1,'Adam','Nowak','97091309264');
insert into Czytelnicy(ID_Klasy, Imie, Nazwisko, PESEL) values(2,'Anna','Kowalczyk','99062312546');
insert into Czytelnicy(ID_Klasy, Imie, Nazwisko, PESEL) values(2,'Jan','Dabrowski','77022610926');

MySQL和SQL Server是两个不同的数据库,它们的SQL方言不同。您不能期望MySQL脚本像SQL Server中一样工作。您遇到了什么错误?您的代码可能不会在MySQL上运行:我希望在自动递增列中插入空字符串会失败。我遇到了很多错误。首先,它说数据库“name”不存在,我只需要执行其中的一行代码。当它被创建时,它会说“在‘auto_increment’附近的语法不正确”。当我处理它时,它的int有另一个问题。每个RDBMS都有不同的SQL方言。SQLServer使用T-SQL(Transact-SQL),而MySQL也使用自己的SQL版本。从一个RDBMS迁移到另一个RDBMS时,您必须(手动)将以前的方言转换为新的方言。很少有代码可以在RDBMS之间传输,因为它们都有不同的实现。即使不是每个RDBMS都支持ISO SQL,它们都倾向于支持这些标准的不同数量/部分。