#sql #oracle
#sql #Oracle
Вопрос:
Я пытаюсь вставить приведенный ниже код, но он ничего не запускает. Честно говоря, у меня нет большого опыта работы с SQL, поэтому я не совсем уверен, что делать. По сути, мы пытаемся создать таблицу Bowler и использовать таблицу Bowler в качестве внешнего ключа. Приведенный код предназначен для оценки каждого котелка
CREATE TABLE Score(
Game1 int(3),
G1Score1 int(3),
G1Score2 int(3),
G1Score3 int(3),
Game1Date date(9)
Game2 int(3),
G2Score1 int(3),
G2Score2 int(3),
G2Score3 int(3),
Game2Date date(9)
Game3 int(3),
G3Score1int(3),
G3Score2 int(3),
G3Score3 int(3),
Game3Date date(9)
BowelerId
CONSTRAINT ScorePK PRIMARY KEY (Score)
CONSTRAINT BowlerIdFK FOREIGN KEY (BowlerId) );
INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
VALUES ( '235462', 'Game 1', '210' '114', ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘230’, ‘200’, ‘160’, ‘08-APR-2019’ ‘Game 3’, ‘100’, ‘120’, ‘150’, ‘16-APR-2019’) ;
INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
VALUES ('1234576''Game 1', '109', '149', ‘114’, ‘01-APR-2019’, ‘Game 2’, ‘180’, ‘210’, ‘240’, ‘08-APR-2019’, ‘Game 3’, ‘120’, ‘206’, ‘180’, ‘16-APR-2019’)
INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
VALUES ('768403','Game 1', '230', '200’, ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘270’, ‘202’, ‘276’, ‘08-APR-2019’, ‘Game 3’, ‘164’, ‘210’, ‘150’‘, ‘16-APR-2019’)
INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
VALUES ('159635', 'Game 1', '109', '150', ‘150’, ‘01-APR-2019’, ‘Game 2’, ‘260’, ‘242’, ‘220’, ‘08-APR-2019’, ‘Game 3’, ‘109’, ‘180’, ‘150’, ‘16-APR-2019’)
INSERT INTO Score
(BowlerId, Game1, G1Score1, G1Score2, G1Score3, Game1Date, Game2, G2Score1, G2Score2, G2Score3, Game2Date, Game3, G3Score1, G3Score2, G3Score3, Game3Date)
VALUES ('457910', 'Game 1', '200', '202', ‘180’, ‘01-APR-2019’, ‘Game 2’, ‘220’, ‘230’, ‘220’, ‘08-APR-2019’, ‘Game 3’, ‘109’, ‘180’, ‘260’, ‘16-APR-2019’)
create table Bowler(
BowlerId char(6) not null,
FirstName varchar2(30) not null,
LastName varchar2(30) not null,
PhoneNum char(12),
Email char(20) not null,
Status char(15),
CONSTRAINT BowlerPK PRIMARY KEY (BowlerId) );
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
VALUES ( '235462', 'Faizan','Khan','417-555-5555', 'fkhan698@hotmail.com', 'Active');
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
VALUES ('1234576', 'John','Smith','417-666-6666', 'johnsmith@gmail.com', 'Active');
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
VALUES ('768403', 'Jane', 'Smith', '417-777-7777', 'janesmith@gmail.com', 'Active');
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
VALUES ('159635', 'Harry', 'Colbert', '573-616-3145', 'truesmith@gmail.com', 'Active');
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
VALUES ('457910', 'Frank', 'Reynolds', '417-953-7676', 'frank666@gmail.com', 'Active');
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
(VALUES (‘234839’, ‘Michael’, ‘Scott’, ‘573-268-3934’, ‘gdaddy@gmail.com’, ‘Inactive’);
INSERT INTO Bowler
(BowlerId, FirstName, LastName, PhoneNum, Email, Status)
(VALUES (‘374837’, ‘Dwight’, ‘Schrute’, ‘418-392-3493’, ‘beets@gmail.com’, ‘Inactive’);
Комментарии:
1. Что конкретно означает, что он ничего не будет запускать ? Вы еще не описали проблему.
2. Мне кажется, что опубликованный вами SQL содержит ошибки. Во-первых, ограничение внешнего ключа выглядит неверно. Также я не знаком с типом данных
date(9)
. Существует ли такой тип данных в Oracle ? Если отправленный вами SQL является фактическим SQL, который вы пытались выполнить, тогда вы должны получать ошибки. Возможно, вы могли бы опубликовать ошибки, которые вы получаете?
Ответ №1:
Вот ваше CREATE TABLE
заявление, отмеченное и исправленное как можно лучше:
CREATE TABLE Score
(ID_SCORE NUMBER
CONSTRAINT PK_SCORE
PRIMARY KEY
USING INDEX,
BOWLERID CHAR(6)
NOT NULL
CONSTRAINT SCORE_FK1
REFERENCES BOWLER(BOWLERID),
Game1 int, -- scale or precision are not allowed on the INT data type
G1Score1 int,
G1Score2 int,
G1Score3 int,
Game1Date date, -- scale or precision are not allowed on the DATE data type
Game2 int,
G2Score1 int,
G2Score2 int,
G2Score3 int,
Game2Date date,
Game3 int,
G3Score1 int,
G3Score2 int,
G3Score3 int,
Game3Date date);
Ваши INSERT
инструкции завершатся ошибкой, потому что вы пытаетесь сохранить строки (например 'Game 1'
) в столбцах, определенных как INT
, что означает, что вы можете хранить в них только числа. Но как только вы создадите свою таблицу, вы можете продолжить оттуда.
Удачи.
Редактировать
Я вижу, что есть таблица BOWLER с BOWLERID в качестве первичного ключа. Я не заметил этого раньше. В этом случае кажется, что вы хотели иметь столбец BOWLER_ID в SCORE в качестве внешнего ключа для BOWLER. Я также добавил столбец SCORE_ID для ОЦЕНКИ в качестве первичного ключа.
Удачи.
Комментарии:
1. Здравствуйте. Итак, я смог создать
Score
таблицу, но у меня все еще возникают проблемы сINSERT
операторами. Как мне внедритьBowlerId
вScore
таблицу, как я пытался сделать в своих первых статусах ВСТАВКИ, потому что должен быть способ определить оценку каждого человека.