sql数据插入到列时出错

ukdjmx9f  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(744)

我用sql创建了下表。然后输入数据。然后我又加了一个专栏(email)。接下来我需要在email列中插入数据。但是有一个错误。

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”的条目“”重复

rjee0c15

rjee0c151#

你需要使用 update 语句查询而不是再次插入。尝试下面的查询,为每封电子邮件使用学生id为where子句。

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

rkue9o1l2#

INSERT INTO student VALUES (S01, 'name',...)

用于在创建表之后将一组完整的值(整行)插入到表中。
但要将数据输入到使用ALTERTABLE语句创建的新列中,必须使用update,

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

要用不同的(differant)数据值更新多行,需要多次使用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');

只有在更新相同的值时,此选项才有效。

相关问题