首页 > 解决方案 > 我试图用 sql 实现这段代码,但仍然给我一个错误,我真的不知道为什么

问题描述

create table student (
student_ID number(6) primary key,
student_name varchar (25) unique ,
address varchar ,
sex char, 
manager_ID number(6) REFERENCES maneger (manager_ID) , 
birth_date date NOT NULL 
);
create table Classes (
class_ID number(6) primary key ,
student_ID number (6)REFERENCES student (student_ID), FOREIGN KEY
);
create table manager (
manager_ID number (6) primary key,
manager_name char ,
address varchar,
Teacher_ID number (6) FOREIGN KEY, REFERENCES teacher (Teacher_ID),
sex char
);
create table teacher (
Teacher_ID number (6), primary key,
teacher_name varchar, 
address varchar , 
class_ID number (6)  FOREIGN KEY REFERENCES Classes (class_ID) ,
subject_name varchar REFERENCES subject (subject_name)
);
create table subject (
subject_name varchar  primary key,
marks number 
);
create learn (
student_ID number (6) REFERENCES student (student_ID), 
subject_name varchar REFERENCES subject (subject_name) , 
constraint PK_student primary key (student_ID,subject_name)
);
create table teach (
student_ID number (6)REFERENCES student (student_ID) , 
Teacher_ID number (6) REFERENCES teacher (Teacher_ID),
constraint PK_teach primary key (student_ID,Teacher_ID)
);

标签: mysqlsql

解决方案


您的代码中有多个问题:

  • 很少有语法不正确
  • int(6)应该使用而不是number(6)在 mysql中使用
  • varchar必须有数据大小。-varchar(200)
  • 创建引用表后必须创建外键

您的示例架构的正确语法示例很少是

create table student 
(
    student_ID int(6) primary key,
    student_name varchar (25) unique ,
    address varchar(200) ,
    sex char(10), 
    manager_ID int(6),
    birth_date date NOT NULL 
);

create table Classes 
(
    class_ID int(6) primary key ,
    student_ID int (6) references student (student_ID) 
);

Db<> 摆弄正确的表定义。请使用添加外键alter table table_name add constraint ....


推荐阅读