Код SQL не работает: может быть, проблема с удалением таблиц и организацией?

Итак, это мой код. Когда я пытаюсь скомпилировать его на движке, предоставленном школой, я получаю пару ошибок, и они меняются каждый раз, когда я его запускаю, но в настоящее время у меня есть следующее:

ОШИБКА 1064 (42000) в строке 123: ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '9:30, 'L210', 103, 15), (86, 25, 2, 6/10/2007 9:30, 'L210' , 107, 15), (89, 25, 5' в строке 2

Я уже пробовал убрать пробелы, но это не имеет значения. Будет ли это иметь какое-либо отношение к порядку, в котором я получаю информацию? Или что-то еще?

Я также не уверен, что таблицы падают на первом этапе.

/*Step One: Drop Tables*/
DROP TABLE IF EXISTS Student;
DROP TABLE IF EXISTS Zipcode;
DROP TABLE IF EXISTS Instructor;
DROP TABLE IF EXISTS Enrollment;
DROP TABLE IF EXISTS Sections;
DROP TABLE IF EXISTS Course;


/*Step Two: Create Tables*/
CREATE TABLE Zipcode
(
zip             int(11), 
city            varchar(25)     NOT NULL,  
state           varchar(2)      NOT NULL,
PRIMARY KEY (zip)
);

CREATE TABLE Student
(
student_ID          int(6)          UNIQUE,
salutation          varchar(5), 
first_name          varchar(25)     NOT NULL, 
last_name           varchar(25)     NOT NULL, 
street_address      varchar(50), 
phone               int(15)         NOT NULL, 
employer            varchar(50) , 
registration_date   date            NOT NULL, 
zip                 int(11),
PRIMARY KEY (student_ID),
FOREIGN KEY (zip) REFERENCES Zipcode (zip)
);

CREATE TABLE Course
(
    course_ID           int(6)          UNIQUE,
    description         varchar(50)     NOT NULL,
    cost                dec(8,2)        NOT NULL,
    prerequisite        int(6),
    PRIMARY KEY (course_ID),
    FOREIGN KEY (prerequisite) REFERENCES Course (course_ID)
);

CREATE TABLE Instructor
(
Instructor_ID   int(6)              UNIQUE,
salutation      varchar(5), 
first_name      varchar(25)         NOT NULL, 
last_name       varchar(25)         NOT NULL, 
street_address  varchar(50), 
zip             int(11)             NOT NULL,
PRIMARY KEY (Instructor_ID),
FOREIGN KEY (zip) REFERENCES zipcode (zip)
);

CREATE TABLE Sections
(
section_ID          int(8)          UNIQUE,
course_id           int(6)          NOT NULL,
course_section_num  int(6)          NOT NULL,
start_date_time     datetime        NOT NULL,
location            varchar(10),
instructor_ID       int(6)          NOT NULL,
capacity            int(3),
PRIMARY KEY (section_ID),
FOREIGN KEY (instructor_ID) REFERENCES Instructor (instructor_ID),
FOREIGN KEY (course_ID) REFERENCES Course (course_ID)   
);

CREATE TABLE Enrollment
(
student_ID          int(6)          UNIQUE,
section_ID          int(8)          UNIQUE,
enroll_date         datetime        NOT NULL,
final_grade         char(1),
PRIMARY KEY (section_ID, student_ID),
FOREIGN KEY (section_ID) REFERENCES sections (section_ID),
FOREIGN KEY (student_ID) REFERENCES student (student_ID)
);


/*Step Three: Insert Rows*/
INSERT INTO Zipcode VALUES
(7024, 'Ft. Lee', 'NJ'),
(7047, 'North Bergen', 'NJ'),
(10005, 'New York', 'NY'),
(10015, 'New York', 'NY'),
(10025, 'New York', 'NY'),
(10035, 'New York', 'NY'),
(11419, 'Richmond Hill', 'NY'),
(11435, 'Jamaica', 'NY');

INSERT INTO Student VALUES
(102, 'Mr.', 'Fred', 'Crocitto', '101-09 120th St.', 718-555-5555, 'Albert Hildegard Co.', 1/22/2007, 11419),
(103, 'Ms.', 'J.', 'Landry', '7435 Boulevard East #45', 201-555-5555, 'Albert Hildegard Co.', 1/22/2007, 7047),
(104, 'Ms.', 'Laetia', 'Enison', '144-61 87th Ave', 718-555-5555, 'Albert Hildegard Co.', 1/22/2007, 11435),
(105, 'Mr.', 'Angel', 'Moskowitz', '320 John St.', 201-555-5555, 'Alex. & Alexander', 1/22/2007, 7024),
(163, 'Ms.', 'Nicole', 'Gillen', '4301 N Ocean #103', 904-555-5555, 'Oil of America Corp.', 2/2/2007, 10025),
(223, 'Mr.', 'Frank', 'Pace', '13 Burlington Dr.', 203-555-5555, 'Board Utilities', 2/8/2007, 10025),
(399, 'Mr.', 'Jerry', 'Abdou', '460 15th St. #4', 718-555-5555, 'Health Mgmt.Systems', 2/23/2007, 10025);

INSERT INTO Course VALUES
(330, 'Network Administration', 1195, 130),
(310, 'Operating Systems', 1195, NULL),
(142, 'Project Management', 1195, 20),
(140, 'Systems Analysis', 1195, 20),
(130, 'Intro to Unix', 1195, 310),
(25, 'Intro to Programming', 1195, 140),
(20, 'Intro to Information Systems', 1195, NULL);

INSERT INTO Instructor VALUES
(101, 'Mr.', 'Fernand', 'Hanks', '100 East 87th', 10015),
(102, 'Mr.', 'Tom', 'Wojick', '518 West 120th', 10025),
(103, 'Ms.', 'Nina', 'Schorin', '210 West 101st', 10025),
(104, 'Mr.', 'Gary', 'Pertez', '34 Sixth Ave', 10035),
(105, 'Ms.', 'Anita', 'Morris', '34 Maiden Lane', 10015),
(106, 'Rev.', 'Todd', 'Smythe', '210 West 101st', 10025),
(107, 'Dr.', 'Marilyn', 'Frantzen', '254 Bleeker', 10005);

INSERT INTO Sections VALUES
(81, 20, 2, 7/24/2007 9:30, 'L210', 103, 15),
(86, 25, 2, 6/10/2007 9:30, 'L210', 107, 15),
(89, 25, 5, 5/15/2007 9:30, 'L509', 103, 25),
(92, 25, 8, 6/13/2007 9:30, 'L509', 106, 25),
(104, 330, 1, 7/14/2007 10:30, 'L511', 104, 25),
(119, 142, 1, 7/14/2007 9:30, 'L211', 103, 25),
(155, 122, 4, 5/4/2007 9:30,  'L210', 107, 15);

INSERT INTO Enrollment VALUES
(102, 86, 1/30/2007, NULL, 'B'),
(102, 89, 1/30/2007, 92,'A'),
(103, 81, 1/30/2007, NULL),
(104, 81, 1/30/2007, NULL, 'A'),
(163, 92, 2/10/2007, NULL),
(223, 104, 2/16/2007, NULL,'C'),
(223, 119, 2/16/2007, NULL);


/*Step Four: Select Statements*/
SELECT * FROM Student;
SELECT * FROM Zipcode;
SELECT * FROM Instructor;
SELECT * FROM Course;
SELECT * FROM Sections;
SELECT * FROM Enrollment;

person Sierra    schedule 16.03.2016    source источник
comment
Попробуйте добавить одинарные кавычки вокруг полей даты...   -  person sgeddes    schedule 17.03.2016
comment
Я думаю, это ваш формат даты. Попробуйте отформатировать их как '2007-07-24 09:30:00' (в одинарных кавычках).   -  person Darwin von Corax    schedule 17.03.2016
comment
О, извините, я никогда раньше не писал SQL, это первое задание. Я даже не думал о формате даты. Я поработаю над этим сейчас, чтобы увидеть, единственная ли это проблема. Спасибо всем!   -  person Sierra    schedule 17.03.2016


Ответы (1)


Проблема, указанная в сообщении об ошибке, — это литерал даты и времени, здесь:

 INSERT INTO Sections VALUES
 (81, 20, 2, 7/24/2007 9:30, 'L210', 103, 15)
             ^^^^^^^^^^^^^^

Чтобы получить значение, присвоенное столбцу даты и времени, вы можете сделать это:

 (81, 20, 2, '2007-07-24 09:30', 'L210', 103, 15)
             ^^^^^^^^^^^^^^^^^^

Литералы даты и времени должны быть заключены в одинарные кавычки и представлены в формате, подобном 'YYYY-MM-DD' или 'YYYY-MM-DD HH:MI:SS'.

(Также можно передавать числовые десятичные значения. Но на самом деле никто этого не делает. Просто используйте строковый литерал в правильном формате. Я считаю, что новые версии MySQL более снисходительны, чем более ранние версии, в отношении строгости двух символов для месяца , и два символа для дня и с использованием разделителя, отличного от тире. Я думаю, что также можно опустить разделитель для даты и времени

Я думаю, что MySQL также примет что-то вроде этого:

   '20070724093000'

Но опять же, никто так не делает. Просто введите значения в виде строк в стандартном формате 'YYYY-MM-DD HH:MI:SS'.

person spencer7593    schedule 16.03.2016
comment
Спасибо за ответ! Сейчас буду работать над их заменой. Даже не подумал о формате даты и времени. Я уверен, что это решит многие мои проблемы. - person Sierra; 17.03.2016
comment
Я больше ничего не смотрел в вашем скрипте, я смотрел только на то место, на которое жаловалась ошибка MySQL. - person spencer7593; 17.03.2016
comment
Это совершенно нормально, это все равно оказало мне огромную услугу. У меня все работает, работает! Я не думаю, что вы знаете, как переформатировать номер телефона, не так ли? Может быть, чтобы читалось (123)456-7890? - person Sierra; 17.03.2016
comment
Я нашел достаточно похожее предложение по этой ссылке: заголовок stackoverflow.com/questions/1426487/ Но в моем коде это не работало, и я подумал, что это может быть как-то связано с размещением. - person Sierra; 17.03.2016
comment
Если текущее значение представляет собой строку в стандартном 10-значном формате, выражение, использующее функции SUBSTRING и оболочку CONCAT... CONCAT('(',SUBSTRING(n,1,3),')',SUBSTRING(n,4,3),'-') - person spencer7593; 17.03.2016
comment
Попробую это! Спасибо, что подтолкнули меня в правильном направлении! :) - person Sierra; 17.03.2016