|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
CREATE TABLE IF NOT EXISTS Depts(
Dno CHAR(3) NOT NULL COMMENT '系号',
Dname VARCHAR(5) NOT NULL COMMENT '系名',
PRIMARY KEY (Dno)
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
INSERT INTO Depts (Dno,Dname)
VALUES ('D01','自动化'),
('D02','计算机'),
('D03','数学'),
('D04','通信'),
('D05','电子');
CREATE TABLE IF NOT EXISTS Students(
Sno CHAR(3) NOT NULL COMMENT '学号',
Sname VARCHAR(5) NOT NULL COMMENT '姓名',
Ssex ENUM ('男','女') NOT NULL DEFAULT '男' COMMENT '性别',
Birthday DATE NOT NULL COMMENT '出生日期',
Dno CHAR(3) NOT NULL COMMENT '系号',
PRIMARY KEY (Sno)
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
INSERT INTO Students (Sno,Sname,Ssex,Birthday,Dno)
VALUES('S01','王建平','男','1995-10-12','D01'),
('S02','刘华','女','1997-08-21','D01'),
('S03','范进军','女','1998-02-11','D02'),
('S04','李伟','男','1996-12-22','D03'),
('S05','黄河','男','1999-10-31','D03'),
('S06','长江','男','1994-04-08','D03');
CREATE TABLE IF NOT EXISTS Couses(
Cno CHAR(3) NOT NULL COMMENT '课程号',
Cname VARCHAR(10) NOT NULL COMMENT '课程名',
Pre_Cno CHAR(3) NOT NULL COMMENT '前导课',
Credits FLOAT(3) NOT NULL COMMENT '学分数',
PRIMARY KEY (Cno)
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
INSERT INTO Couses(Cno,Cname,Pre_Cno,Credits)
VALUES('C01','英语','NULL','4'),
('C02','数据结构','C05','2'),
('C03','数据库','C02','2'),
('C04','DB_设计','C03','3'),
('C05','C++','NULL','3'),
('C06','网络原理','C07','3'),
('C07','操作系统','C05','3');
CREATE TABLE IF NOT EXISTS Reports(
Sno CHAR(3) NOT NULL COMMENT '学号',
Cno CHAR(3) NOT NULL COMMENT '课程号',
Grade FLOAT(3) NOT NULL COMMENT '成绩',
PRIMARY KEY(Grade)
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
INSERT INTO Reports(Sno,Cno,Grade)
VALUE('S01','C01','92'),
('S01','C03','84'),
('S02','C01','90'),
('S02','C02','94'),
('S02','C03','82'),
('S03','C01','72'),
('S03','C02','90'),
('S04','C03','75');
出错提示:
00:28:20 INSERT INTO Depts (Dno,Dname) VALUES ('D01','自动化'), ('D02','计算机'), ('D03','数学'), ('D04','通信'), ('D05','电子') Error Code: 1062. Duplicate entry 'D01' for key 'depts.PRIMARY' 0.000 sec
Error Code: 1062. Duplicate entry 'D01' for key 'depts.PRIMARY'
附一个问题:表Couses中有数据为空值,直接输入NULL显示该变量不能为空,输入'NULL'就不会显示错误了,可以这样写吗?需不需要重新写一行声明为空值?
谢谢
首先,关于您提到的出错提示,错误代码 1062 表示主键值重复。这里是因为您尝试插入重复的 Dno 值。请检查您的数据和表结构,确保所有插入操作中的 Dno 值是唯一的。
关于您提到的表 Couses 中的空值问题,您可以将字段 Pre_Cno 设置为允许 NULL 值,然后插入数据时使用 NULL 而不是 'NULL' 字符串。以下是修改后的表 Couses 的建表语句:
CREATE TABLE IF NOT EXISTS Couses(
Cno CHAR(3) NOT NULL COMMENT '课程号',
Cname VARCHAR(10) NOT NULL COMMENT '课程名',
Pre_Cno CHAR(3) COMMENT '前导课',
Credits FLOAT(3) NOT NULL COMMENT '学分数',
PRIMARY KEY (Cno)
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
注意 Pre_Cno 字段的定义已从 `NOT NULL` 更改为允许 NULL 值。然后在插入数据时使用 NULL 而不是 'NULL' 字符串:
INSERT INTO Couses(Cno,Cname,Pre_Cno,Credits)
VALUES('C01','英语',NULL,'4'),
('C02','数据结构','C05','2'),
('C03','数据库','C02','2'),
('C04','DB_设计','C03','3'),
('C05','C++',NULL,'3'),
('C06','网络原理','C07','3'),
('C07','操作系统','C05','3');
以上修改应该解决您的问题。如果您还有其他问题,请随时提问。
|
|