CREATE DATABASE 商品库; USE 商品库; CREATE TABLE 商品表 ( 编号 INT PRIMARY KEY AUTO_INCREMENT, 商品名字 VARCHAR(40) NOT NULL, 规格 VARCHAR(40), 单价 DECIMAL(10,2) ); INSERT INTO 商品表 VALUES(NULL,'香蕉','大','10'),(NULL,'苹果','小','20'),(NULL,'榴莲','超大','30'); SELECT * FROM 商品表; CREATE TABLE 库存表 ( 编号 INT PRIMARY KEY AUTO_INCREMENT, 商品名称 VARCHAR(40) NOT NULL, 数量 INT, FOREIGN KEY (商品名称) REFERENCES 商品表(商品名字) );为什么报错
时间: 2023-12-25 07:03:50 浏览: 124
在创建库存表时,你指定了一个外键约束,该约束将库存表中的商品名称列与商品表中的商品名字列进行关联。但是,这个外键约束无法工作,因为你在商品表中定义了一个名为“编号”的主键列,而在库存表中却没有引用该列。因此,你需要修改库存表中的外键约束,使其引用商品表中的“编号”列。
以下是修改后的代码:
```
CREATE TABLE 库存表 (
编号 INT PRIMARY KEY AUTO_INCREMENT,
商品名称 VARCHAR(40) NOT NULL,
数量 INT,
FOREIGN KEY (商品名称) REFERENCES 商品表(编号)
);
```
根据上述代码,库存表中的外键约束将商品名称列与商品表中的编号列进行关联。这样,当你在库存表中插入记录时,系统会检查商品名称列中的值是否存在于商品表的编号列中。如果不存在,就会出现外键约束错误。
相关问题
13:49:06 create table t_studentInfo( id int primary key auto_increment, name varchar(45) unique, age int default 18, sex enum('男','女') not null ) Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar. 0.000 sec
这是一段SQL语句,但是在执行时出现了错误,错误代码为1046,意味着没有选中数据库。你需要在执行该语句之前先选择要使用的数据库,可以在MySQL命令行工具中使用以下命令选择要使用的数据库:
```
use database_name;
```
其中,database_name是你要使用的数据库名称。执行完该命令后,再执行上述SQL语句即可创建名为t_studentInfo的表。
CREATE DATABASE IF NOT EXISTS person; USE person; CREATE TABLE students ( `Sno` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `Sname` VARCHAR(20) NOT NULL, `Ssex` VARCHAR(20) NOT NULL, `Sbirthday` DATETIME, `SClass` varchar(20) ); INSERT INTO students (sno, sname, ssex, sbirthday, sclass) VALUES ('108', '曾华', '男','1977-09-01,95033');报错
根据您提供的 SQL 语句,我注意到在插入数据时出现了一些错误。具体来说,日期值 `'1977-09-01,95033'` 的格式不正确。
请注意,日期值应该使用单引号 `'` 或双引号 `"` 包裹,并且日期和时间之间应使用空格分隔。此外,根据表结构,`sbirthday` 列的数据类型应该是 `DATETIME`,而不是 `VARCHAR`。
以下是修正后的 SQL 语句:
```sql
CREATE DATABASE IF NOT EXISTS person;
USE person;
CREATE TABLE students (
Sno INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex VARCHAR(20) NOT NULL,
Sbirthday DATETIME,
SClass varchar(20)
);
INSERT INTO students (Sno, Sname, Ssex, Sbirthday, SClass) VALUES ('108', '曾华', '男', '1977-09-01 00:00:00', '95033');
```
修正后的语句应该可以成功创建表并插入数据。请注意,我将日期值修改为 `'1977-09-01 00:00:00'`,确保日期格式正确并且与 `DATETIME` 数据类型匹配。
阅读全文