insert into reader values(1,'《所有》','刘江林',20217329,17264440107,1,100);哪里错了
时间: 2024-01-28 20:03:07 浏览: 22
这个 SQL 语句缺少关键字 `VALUES`,正确的语法应该是:
```
INSERT INTO reader VALUES (1, '《所有》', '刘江林', 20217329, 17264440107, 1, 100);
```
如果你还没有创建 `reader` 表的话,你需要先使用 `CREATE TABLE` 语句创建该表。例如:
```
CREATE TABLE reader (
id INT,
book_name VARCHAR(50),
author VARCHAR(50),
card_number INT,
phone_number BIGINT,
is_vip INT,
deposit FLOAT
);
```
请根据你的具体需求来修改表的字段类型和约束条件。
相关问题
CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY key(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;create table reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance double, PRIMARY KEY(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;delimiter%% CREATE TRIGGER reader_borrow AFTER INSERT on reader FOR EACH ROW INSERT INTO borrow VALUES(new.number,new.borrowname,new.name,new.id,new.phone,NOW(),DATE_ADD(NOW(),INTERVAL 30 day),new.borrownum)%% delimiter;insert into reader values(1,'《所有》','刘江林',20217329,17264440107,1,100);哪里出错了
您的SQL语句有一些问题,可能是以下几个原因导致的错误:
1. 在第一行和第二行之间没有添加分号,应该在第一条语句后面添加分号。
2. 在第一行的 borrow 表中,borrownum 的数据类型没有指定,应该使用 BIGINT 或其他适当的数据类型。
3. 在第二行的 reader 表中,originalbalance 的数据类型没有指定,应该使用 DOUBLE 或其他适当的数据类型。
4. 在第三行的 TRIGGER 语句中,应该使用 NEW.number 代替 new.number。
以下是已经修改过的 SQL 语句:
CREATE TABLE borrow(
number BIGINT,
borrowname varchar(10),
name varchar(10),
id BIGINT,
phone BIGINT,
borrowtime date,
returntime date,
borrownum BIGINT,
PRIMARY KEY(number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE reader(
number BIGINT,
borrowname varchar(10),
name varchar(10),
id BIGINT,
phone BIGINT,
sex varchar(10),
borrownum BIGINT,
originalbalance DOUBLE,
PRIMARY KEY(number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER %%
CREATE TRIGGER reader_borrow AFTER INSERT ON reader
FOR EACH ROW
INSERT INTO borrow VALUES(
NEW.number,
NEW.borrowname,
NEW.name,
NEW.id,
NEW.phone,
NOW(),
DATE_ADD(NOW(),INTERVAL 30 DAY),
NEW.borrownum
)
%%
DELIMITER ;
INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100);
CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance DOUBLE, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DELIMITER %% CREATE TRIGGER reader_borrow AFTER INSERT ON reader FOR EACH ROW INSERT INTO borrow VALUES( NEW.number, NEW.borrowname, NEW.name, NEW.id, NEW.phone, NOW(), DATE_ADD(NOW(),INTERVAL 30 DAY), NEW.borrownum ) %% DELIMITER ; INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100);出现1136 - Column count doesn't match value count at row 1错误
在执行最后一条SQL语句时,你在reader表中插入了7个值,但是reader表中定义了8个列。因此,你需要在INSERT语句中指定8个值,或者在表中删除一个列。
可以将INSERT语句修改为:
```
INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100, 0.0);
```
其中0.0是originalbalance列的默认值。这样就可以成功插入一条记录了。
阅读全文