Вставка данных SQL в ошибку столбца - PullRequest
0 голосов
/ 29 мая 2018

Я создал следующую таблицу в SQL.затем введенные данные.Затем я добавил еще один столбец (электронная почта).Далее мне нужно вставить данные в столбец электронной почты.Но есть ошибка.

CREATE TABLE Library_books (
    ISBN VARCHAR(15),
    Book_name VARCHAR(20),
    subject TEXT(12),
    student_id VARCHAR(4),
    borrow_date DATE,
    PRIMARY KEY (ISBN),
    FOREIGN KEY (student_id)
    REFERENCES student (SID)
);


INSERT INTO Library_books VALUES  ('1-22-5567-4'    ,'Vectors'            ,'Mathematics', 'S021', '2015-04-23'),
                              ('978-14840-0'    ,'The C Programming ' ,'Computer'   , 'S005', '2016-03-01'),
                              ('567-2-13-145-3' ,'Code complete'      ,'Computer'   , 'S005', '2016-06-04'),
                              ('345-6-7889-5'   ,'How to solve it'    ,'Mathematics', 'S090', '2016-08-12'),
                              ('34-22-34556-4'  ,'Real Analysis'      ,'Mathematics', 'S021', '2016-10-22'),
                              ('3-445-7-8'      ,'Python'             ,'Computer'   , 'S021', '2016-09-11');



INSERT INTO student (email) VALUES   ('Bob@gmail.com'),
                                 ('John@gmail.com'),
                                 ('Albert@gmail.com'), 
                                 ('Sam@gmail.com'), 
                                 ('Tom@gmail.com'),
                                 ('Liz@gmail.com') ;

CREATE table student (SID varchar(4) NOT NULL,
                  student_name varchar(10) NOT NULL,
                  address varchar(12) NOT NULL,
                  age int NOT NULL,
                  telephoneNo varchar(12) NOT NULL,
                  primary key (SID));

Результат:

ОШИБКА 1062 (23000): дубликат записи '' для ключа 'PRIMARY'

Ответы [ 2 ]

0 голосов
/ 29 мая 2018
INSERT INTO student VALUES (S01, 'name',...)

используется для вставки полного набора значений (полная строка) в таблицу после ее создания.

Но для ввода данных в новый столбец, созданный с помощью ALTER TABLE оператор вы должны использовать UPDATE ,

UPDATE student
SET email = 'bob@gmail.com'
WHERE SID = 'S01';

Чтобы обновить несколько строк с различными (разными) значениями данных, вам нужно использовать оператор UPDATE несколько раз, как указано ниже,

UPDATE student SET email = 'Bob@gmail.com' WHERE SID = 1;
UPDATE student SET email = 'John@gmail.com' WHERE SID = 1;
UPDATE student SET email = 'Albert@gmail.com.com' WHERE SID = 1;
UPDATE student SET email = 'Sam@gmail.com' WHERE SID = 1;
UPDATE student SET email = 'Tom@gmail.com' WHERE SID = 1;
UPDATE student SET email = 'Liz@gmail.com' WHERE SID = 1;

Но если новые данные одинаковы для всех записей, вы можете использовать следующий способ.

UPDATE student
SET email = 'bob'@gmail.com
WHERE SID IN ('S01', 'S02', 'S03', 'S04', 'S05');

Это допустимо, только если обновляется то же значение.

0 голосов
/ 29 мая 2018

Вам нужно использовать update оператор запрос вместо вставки снова.попробуйте запрос ниже для каждого электронного письма, используйте идентификатор студента для предложения where.

UPDATE student set email='Bob@gmail.com' where SID='S021';
...