Error: 150 / MySQL 'Can't create table' - mysql

So I made a database model through the model creator in MySQL Workbench. However, I'm running into an error code when I try to convert it to an SQL file. The error says
Can't create table project2i2w.customer (error: 150 "Foreign key constraint is incorrectly formed") 0.032 sec.
Here is my script:
-- MySQL Workbench Forward Engineering
SET #OLD_UNIQUE_CHECKS=##UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET #OLD_FOREIGN_KEY_CHECKS=##FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET #OLD_SQL_MODE=##SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema project2i2w
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `project2i2w` ;
-- -----------------------------------------------------
-- Schema project2i2w
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `project2i2w` DEFAULT CHARACTER SET utf8 ;
USE `project2i2w` ;
-- -----------------------------------------------------
-- Table `project2i2w`.`services`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `project2i2w`.`services` (
`service_id` INT NOT NULL AUTO_INCREMENT,
`service_name` VARCHAR(50) NOT NULL,
`service_desc` VARCHAR(250) NOT NULL,
`os_id` INT NOT NULL,
`customer_id` INT NOT NULL,
PRIMARY KEY (`service_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `project2i2w`.`customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `project2i2w`.`customer` (
`customer_id` INT NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`city` VARCHAR(45) NOT NULL,
`street` VARCHAR(20) NOT NULL,
`province` VARCHAR(30) NOT NULL,
`postal` CHAR(7) NOT NULL,
PRIMARY KEY (`customer_id`),
CONSTRAINT `fk_customer_services`
FOREIGN KEY (`customer_id`)
REFERENCES `project2i2w`.`services` (`customer_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `project2i2w`.`op_sys`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `project2i2w`.`op_sys` (
`os_id` INT NOT NULL AUTO_INCREMENT,
`os_name` VARCHAR(25) NOT NULL,
`os_desc` VARCHAR(250) NULL,
`os_ver` VARCHAR(10) NOT NULL,
PRIMARY KEY (`os_id`),
CONSTRAINT `fk_op_sys_services1`
FOREIGN KEY (`os_id`)
REFERENCES `project2i2w`.`services` (`os_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=#OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=#OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=#OLD_UNIQUE_CHECKS;
-- -----------------------------------------------------
-- Data for table `project2i2w`.`services`
-- -----------------------------------------------------
START TRANSACTION;
USE `project2i2w`;
INSERT INTO `project2i2w`.`services` (`service_id`, `service_name`, `service_desc`, `os_id`, `customer_id`) VALUES (1, 'Virus Removal', 'Removing of viruses.', 1, 1);
INSERT INTO `project2i2w`.`services` (`service_id`, `service_name`, `service_desc`, `os_id`, `customer_id`) VALUES (2, 'Tune-up', 'Tuning system performance.', 2, 2);
INSERT INTO `project2i2w`.`services` (`service_id`, `service_name`, `service_desc`, `os_id`, `customer_id`) VALUES (3, 'Rooting', 'Accessing super-user status.', 3, 3);
INSERT INTO `project2i2w`.`services` (`service_id`, `service_name`, `service_desc`, `os_id`, `customer_id`) VALUES (4, 'Restore', 'Restoring to stock factory condition.', 4, 4);
INSERT INTO `project2i2w`.`services` (`service_id`, `service_name`, `service_desc`, `os_id`, `customer_id`) VALUES (5, 'Fix Permissions', 'Fixing file permissions.', 5, 5);
COMMIT;
-- -----------------------------------------------------
-- Data for table `project2i2w`.`customer`
-- -----------------------------------------------------
START TRANSACTION;
USE `project2i2w`;
INSERT INTO `project2i2w`.`customer` (`customer_id`, `first_name`, `last_name`, `city`, `street`, `province`, `postal`) VALUES (1, 'Kathryn', 'Trollinger', 'Kanata', '2337 Merivale Road', 'ON', 'K2K 1L9');
INSERT INTO `project2i2w`.`customer` (`customer_id`, `first_name`, `last_name`, `city`, `street`, `province`, `postal`) VALUES (2, 'Lori ', 'Frederick', 'Toronto', '799 Yonge Street', 'ON', 'M4W 1J7');
INSERT INTO `project2i2w`.`customer` (`customer_id`, `first_name`, `last_name`, `city`, `street`, `province`, `postal`) VALUES (3, 'Maxine ', 'Coley', 'Ingersoll', '1305 Albert Street', 'ON', 'N5C 1S2');
INSERT INTO `project2i2w`.`customer` (`customer_id`, `first_name`, `last_name`, `city`, `street`, `province`, `postal`) VALUES (4, 'June ', 'Harrison', 'Windsor', '1089 Goyeau Ave', 'ON', 'N9A 1H9');
INSERT INTO `project2i2w`.`customer` (`customer_id`, `first_name`, `last_name`, `city`, `street`, `province`, `postal`) VALUES (5, 'Joan ', 'Dunn', 'Oshawa', '615 Toy Avenue', 'ON', 'L1H 7M3');
COMMIT;
-- -----------------------------------------------------
-- Data for table `project2i2w`.`op_sys`
-- -----------------------------------------------------
START TRANSACTION;
USE `project2i2w`;
INSERT INTO `project2i2w`.`op_sys` (`os_id`, `os_name`, `os_desc`, `os_ver`) VALUES (1, 'Windows', 'OS by Microsoft', '10');
INSERT INTO `project2i2w`.`op_sys` (`os_id`, `os_name`, `os_desc`, `os_ver`) VALUES (2, 'Mac OSX', 'OS by Apple', 'El Capitan');
INSERT INTO `project2i2w`.`op_sys` (`os_id`, `os_name`, `os_desc`, `os_ver`) VALUES (3, 'Android', 'OS by Google', 'Marshmellow');
INSERT INTO `project2i2w`.`op_sys` (`os_id`, `os_name`, `os_desc`, `os_ver`) VALUES (4, 'iOS', 'OS by Apple', '10');
INSERT INTO `project2i2w`.`op_sys` (`os_id`, `os_name`, `os_desc`, `os_ver`) VALUES (5, 'Linux', 'Open-source OS', 'Ubuntu');
COMMIT;
If someone could fix this for me and tell me why it's not working, I would immensely apreciate it.
Nick

You need some kind of key for customer_id, that will do the trick.
CREATE TABLE IF NOT EXISTS `project2i2w`.`services` (
`service_id` INT NOT NULL AUTO_INCREMENT,
`service_name` VARCHAR(50) NOT NULL,
`service_desc` VARCHAR(250) NOT NULL,
`os_id` INT NOT NULL,
`customer_id` INT NOT NULL,
INDEX `customerid` (`customer_id`),
PRIMARY KEY (`service_id`))
ENGINE = InnoDB;
-- Table project2i2w.customer
CREATE TABLE IF NOT EXISTS `project2i2w`.`customer` (
`customer_id` INT NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`city` VARCHAR(45) NOT NULL,
`street` VARCHAR(20) NOT NULL,
`province` VARCHAR(30) NOT NULL,
`postal` CHAR(7) NOT NULL,
PRIMARY KEY (`customer_id`),
CONSTRAINT `fk_customer_services`
FOREIGN KEY (`customer_id`)
REFERENCES `project2i2w`.`services` (`customer_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Try this

Try this:
CREATE TABLE IF NOT EXISTS `project2i2w`.`services` (
`service_id` INT NOT NULL AUTO_INCREMENT,
`service_name` VARCHAR(50) NOT NULL,
`service_desc` VARCHAR(250) NOT NULL,
`os_id` INT NOT NULL,
PRIMARY KEY (`service_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `project2i2w`.`customer` (
`customer_id` INT NOT NULL AUTO_INCREMENT,
`services_id` INT NOT NULL,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`city` VARCHAR(45) NOT NULL,
`street` VARCHAR(20) NOT NULL,
`province` VARCHAR(30) NOT NULL,
`postal` CHAR(7) NOT NULL,
PRIMARY KEY (`customer_id`),
CONSTRAINT `fk_customer_services`
FOREIGN KEY (`services_id`)
REFERENCES `project2i2w`.`services` (`service_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
The foreign key must be primary key of reference table.

Related

Where is this unknown column in my MYSQL DB?

I have been trying to find out what or where this "unknown column" error is coming from. To my untrained eyes, the code looks ok from a syntax point of view. Obviously I'm missing something though..I get an error 1054.
Here is the database (it's only a little one). Can someone please tell what is going on?
The error refers to the INSERT INTO statement for the enrolment table.
-- MySQL Workbench Forward Engineering
SET #OLD_UNIQUE_CHECKS=##UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET #OLD_FOREIGN_KEY_CHECKS=##FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET #OLD_SQL_MODE=##SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema BR000726910
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `BR000726910` ;
-- -----------------------------------------------------
-- Schema BR000726910
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `BR000726910` DEFAULT CHARACTER SET utf8 ;
USE `BR000726910` ;
-- -----------------------------------------------------
-- Table `BR000726910`.`school`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `BR000726910`,`school` ;
CREATE TABLE IF NOT EXISTS `BR000726910`.`school` (
`SchoolName` VARCHAR(30) NOT NULL,
`Address` VARCHAR(30) NULL,
`PhoneNumber` VARCHAR(10) NULL,
`Email` VARCHAR(30) NULL,
PRIMARY KEY (`SchoolName`))
ENGINE = InnoDB;
INSERT INTO `school` (`SchoolName`, `Address`, `PhoneNumber`, `Email` )
VALUES ('Heartbreak_High', '46_Ratloch_Road_Craiglang', '0882346000', 'PimpZ#Hotrods.com' );
-- -----------------------------------------------------
-- Table `BR000726910`.`student`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `BR000726910`,`student` ;
CREATE TABLE IF NOT EXISTS `BR000726910`.`student` (
`StudentID` INT(8) NOT NULL,
`FirstName` VARCHAR(20) NULL,
`MiddleInitial` VARCHAR(5) NULL,
`LastName` VARCHAR(20) NULL,
`PhoneNumber` VARCHAR(10) NULL,
`ResidentialAddress` VARCHAR(30) NULL,
`Email` VARCHAR(50) NULL,
`DateOfBirth` DATE NULL,
`DateOfEnrolment` DATE NULL,
`Gender` CHAR(1) NULL,
`school_SchoolName` VARCHAR(30) NULL,
PRIMARY KEY (`StudentID`),
INDEX `fk_student_school1_idx` (`school_SchoolName` ASC) VISIBLE,
CONSTRAINT `fk_student_school1`
FOREIGN KEY (`school_SchoolName`)
REFERENCES `BR000726910`.`school` (`SchoolName`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
INSERT INTO `student` (`StudentID`, `FirstName`, `MiddleInitial`, `LastName`, `PhoneNumber`, `ResidentialAddress`, `Email`, `DateOfBirth`, `DateOfEnrolment`,
`Gender`) VALUES ('10002340', 'Benjamin', 'J', 'Roberts', '0476066591', 'Bermuda_Triangle', 'Goober#Ringworm.com', '1937-06-21', '1788-01-26', 'M' );
INSERT INTO `student` (`StudentID`, `FirstName`, `MiddleInitial`, `LastName`, `PhoneNumber`, `ResidentialAddress`, `Email`, `DateOfBirth`, `DateOfEnrolment`,
`Gender`) VALUES ('18831492', 'John', 'F', 'Kennedy', '0418812345', 'Arlington_National_Cemetary', 'conspiracy#theory.com', '1931-06-04', '2021-02-21', 'M' );
INSERT INTO `student` (`StudentID`, `FirstName`, `MiddleInitial`, `LastName`, `PhoneNumber`, `ResidentialAddress`, `Email`, `DateOfBirth`, `DateOfEnrolment`,
`Gender`) VALUES ('10110001', 'Homer', 'J', 'Simpson', '0400000001', '12_Donut_Street,Springfield', 'mmmdonuts#greedyguts.com', '1901-01-01', '2021-03-21', 'M' );
INSERT INTO `student` (`StudentID`, `FirstName`, `MiddleInitial`, `LastName`, `PhoneNumber`, `ResidentialAddress`, `Email`, `DateOfBirth`, `DateOfEnrolment`,
`Gender`) VALUES ('14921883', 'Jesus', 'H', 'Christ', '043142000', '01_Big_Bang_Avenue_Universe', 'praytoday#foryoursoul.com', '0001-12-25', '1238-09-20', 'M' );
INSERT INTO `student` (`StudentID`, `FirstName`, `MiddleInitial`, `LastName`, `PhoneNumber`, `ResidentialAddress`, `Email`, `DateOfBirth`, `DateOfEnrolment`,
`Gender`) VALUES ('19876543', 'Hannibal', 'K', 'Lecter', '0433666999', '02_Dank_Cell_CrazyTown', 'favabeans#chianti.com', '1949-03-27', '1111-12-13', 'M' );
-- -----------------------------------------------------
-- Table `BR000726910`.`teacher`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `BR000726910`,`teacher` ;
CREATE TABLE IF NOT EXISTS `BR000726910`.`teacher` (
`TeacherID` INT(8) NOT NULL,
`FirstName` VARCHAR(20) NULL,
`MiddleInitial` VARCHAR(5) NULL,
`Surname` VARCHAR(20) NULL,
`Email` VARCHAR(50) NULL,
`PhoneNumber` VARCHAR(10) NULL,
`school_SchoolName` VARCHAR(30) NULL,
PRIMARY KEY (`TeacherID`),
INDEX `fk_teacher_school1_idx` (`school_SchoolName` ASC) VISIBLE,
CONSTRAINT `fk_teacher_school1`
FOREIGN KEY (`school_SchoolName`)
REFERENCES `BR000726910`.`school` (`SchoolName`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
INSERT INTO `teacher` (`TeacherID`, `FirstName`, `MiddleInitial`, `Surname`, `Email`, `PhoneNumber`)
VALUES ('42424242', 'Vlad', 'D', 'Impaler', 'Beachbunny#wrongendofthestick.com', '082814444' );
INSERT INTO `teacher` (`TeacherID`, `FirstName`, `MiddleInitial`, `Surname`, `Email`, `PhoneNumber`)
VALUES ('48241206', 'Pablo', 'S', 'Cabar', 'DrugNazi#sinoloacartel.com', '1800008110' );
INSERT INTO `teacher` (`TeacherID`, `FirstName`, `MiddleInitial`, `Surname`, `Email`, `PhoneNumber`)
VALUES ('40801603', 'Tee', 'N', 'Wolf', 'dogbreath#hairloss.com', '0403020100' );
INSERT INTO `teacher` (`TeacherID`, `FirstName`, `MiddleInitial`, `Surname`, `Email`, `PhoneNumber`)
VALUES ('45677654', 'Wile', 'E', 'Coyote', 'winnerwinner#chickendinner.com', '0413579111' );
-- -----------------------------------------------------
-- Table `BR000726910`.`subject`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `BR000726910`,`subject` ;
CREATE TABLE IF NOT EXISTS `BR000726910`.`subject` (
`SubjectCode` VARCHAR(9) NOT NULL,
`TeacherID` INT(8) NOT NULL,
`SubjectDescription` VARCHAR(300) NULL,
`CostofSubject` DECIMAL(6,2) NOT NULL,
`CourseDuration` INT(3) NULL,
`NumberAssessmentItems` INT(3) NULL,
PRIMARY KEY (`SubjectCode`),
INDEX `fk_subject_teacher1_idx` (`TeacherID` ASC) VISIBLE,
CONSTRAINT `fk_subject_teacher1`
FOREIGN KEY (`TeacherID`)
REFERENCES `BR000726910`.`teacher` (`TeacherID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
INSERT INTO `subject` (`SubjectCode`, `TeacherID`, `SubjectDescription`, `CostofSubject`, `CourseDuration`, `NumberAssessmentItems` )
VALUES ('WEBSQL001', '42424242', 'A searing treatise on the seismic shifts taking place in the world of database stuff', '1200.00', '12', '3' );
INSERT INTO `subject` (`SubjectCode`, `TeacherID`, `SubjectDescription`, `CostofSubject`, `CourseDuration`, `NumberAssessmentItems` )
VALUES ('PYTHON101', '48241206', 'A charming voyage of self discovery looking at a snake coming of age', '1955.06', '12', '2' );
INSERT INTO `subject` (`SubjectCode`, `TeacherID`, `SubjectDescription`, `CostofSubject`, `CourseDuration`, `NumberAssessmentItems` )
VALUES ('BVHL90210', '40801603', 'The comatose idiocy of millenials trying to adult', '1000.00', '12', '56' );
INSERT INTO `subject` (`SubjectCode`, `TeacherID`, `SubjectDescription`, `CostofSubject`, `CourseDuration`, `NumberAssessmentItems` )
VALUES ('STRP00001', '45677654', 'Learn the exciting art of Latvian pole dancing', '49.94', '12', '1' );
-- -----------------------------------------------
-- Table `BR000726910`.`enrolment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `BR000726910`,`enrolment` ;
CREATE TABLE IF NOT EXISTS `BR000726910`.`enrolment` (
`Grade` VARCHAR(4) NOT NULL,
`ResultForStudent` INT(3) NOT NULL,
`DateOfGrade` DATE NULL,
`student_StudentID` INT(8) NOT NULL,
`subject_SubjectCode` VARCHAR(9) NOT NULL,
PRIMARY KEY (`Grade`),
INDEX `fk_enrolment_student1_idx` (`student_StudentID` ASC) VISIBLE,
INDEX `fk_enrolment_subject1_idx` (`subject_SubjectCode` ASC) VISIBLE,
CONSTRAINT `fk_enrolment_student1`
FOREIGN KEY (`student_StudentID`)
REFERENCES `BR000726910`.`student` (`StudentID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_enrolment_subject1`
FOREIGN KEY (`subject_SubjectCode`)
REFERENCES `BR000726910`.`subject` (`SubjectCode`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade`, `StudentID`, `SubjectCode`)
VALUES ('CRED', '78', '1981-03-03', '10002340', 'BVHL90210');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade`, `StudentID`, `SubjectCode`)
VALUES ('FAIL', '32', '1981-09-15' , '10110001', 'PYTHON101');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade`, `StudentID`, `SubjectCode`)
VALUES ('PASS', '61', '1981-11-08' , '14921883', 'WEBSQL001');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('CRED', '71', '1981-09-15' , '18831492', 'STRP00001');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade`, `StudentID`, `SubjectCode` )
VALUES ('CRED', '74', '1981-09-15' , '19876543', 'BVHL90210');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('DIST' , '98', '1981-09-15', '10002340', 'PYTHON101');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('DIST', '91', '1981-09-15' , '10110001', 'WEBSQL001');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('CRED', '75', '1988-08-15', '14921883', 'STRP00001');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('PASS', '63', '1981-09-15', '18831492', 'BVHL90210');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('FAIL', '12', '1981-09-14', '19876543', 'PYTHON101');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('CRED', '80', '1981-09-15', '10002340', 'WEBSQL001');
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade`, `StudentID`, `SubjectCode` )
VALUES ('CRED', '80', '1981-09-15', '10110001', 'STRP00001' );
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('DIST', '98', '1981-09-15', '14921883', 'BVHL90210' );
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('DIST', '98', '1981-09-15', '18831492', 'PYTHON101' );
INSERT INTO `enrolment` (`Grade`, `ResultForStudent`, `DateOfGrade` , `StudentID`, `SubjectCode`)
VALUES ('DIST', '98', '1981-09-15', '19876543', 'WEBSQL001' );
SET SQL_MODE=#OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=#OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=#OLD_UNIQUE_CHECKS;

how to gather data from all the six tabels in mysql

I tried Inner join, however i m not able to figure out what is wrong i m doing.
How can I query data from all the 6 tables in the blue box.
The studentprofile table is what is the link between the other 5 tables in the blue region.
I ran this query and this showed me all the data.
select * from users, roles_assigned,studentprofile,schoolwithusers;
Problem I am facing is that I need only filted data for user who are students and school name and student profile
Please Help.
here is my sql code.
--
-- Database: `onlinemarksheets`
--
-- --------------------------------------------------------
--
-- Table structure for table `exams`
--
CREATE TABLE `exams` (
`id` int(11) NOT NULL,
`examtye_id` int(11) DEFAULT NULL,
`schooluser_id` int(11) DEFAULT NULL,
`duration_to` date DEFAULT NULL,
`duration_from` date DEFAULT NULL,
`year` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `examtype`
--
CREATE TABLE `examtype` (
`id` int(11) NOT NULL,
`type` enum('Mid-Term','Half-yearly','Yearly') DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `examtype`
--
INSERT INTO `examtype` (`id`, `type`) VALUES
(1, 'Mid-Term'),
(2, 'Half-yearly'),
(3, 'Yearly');
-- --------------------------------------------------------
--
-- Table structure for table `marks`
--
CREATE TABLE `marks` (
`id` int(11) NOT NULL,
`exam_id` int(11) DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
`marks_obtained` int(11) DEFAULT NULL,
`marks_total` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `roles`
--
CREATE TABLE `roles` (
`id` int(11) NOT NULL,
`type` enum('Admin','Teacher','Student') DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `roles`
--
INSERT INTO `roles` (`id`, `type`) VALUES
(1, 'Admin'),
(2, 'Teacher'),
(3, 'Student');
-- --------------------------------------------------------
--
-- Table structure for table `roles_assigned`
--
CREATE TABLE `roles_assigned` (
`id` int(11) NOT NULL,
`role_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `roles_assigned`
--
INSERT INTO `roles_assigned` (`id`, `role_id`, `user_id`) VALUES
(1, 1, 1),
(2, 2, 2),
(3, 3, 3),
(4, 3, 4),
(5, 3, 5),
(6, 3, 6),
(7, 1, 1),
(8, 2, 2),
(9, 3, 3),
(10, 3, 4),
(11, 3, 5),
(12, 3, 6);
-- --------------------------------------------------------
--
-- Table structure for table `schools`
--
CREATE TABLE `schools` (
`id` int(11) NOT NULL,
`schoolname` varchar(45) DEFAULT NULL,
`school_email` varchar(45) DEFAULT NULL,
`school_phone` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `schools`
--
INSERT INTO `schools` (`id`, `schoolname`, `school_email`, `school_phone`) VALUES
(1, 'D.A.V Public school', 'info#davschool.com', '789456123'),
(2, 'saraswati Public school', 'info#saraswatischool.com', '9998887774'),
(3, 'S.G.R.R Public School', 'Info#sgrr.com', '54245645125'),
(4, 'Sun Valley Public', 'info#sunvalley.com', '23423423424'),
(5, 'Marshal Public school', 'info#marshalschool.com', '23482728347');
-- --------------------------------------------------------
--
-- Table structure for table `schoolwithusers`
--
CREATE TABLE `schoolwithusers` (
`id` int(11) NOT NULL,
`school_id` int(11) DEFAULT NULL,
`studentprofile_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `schoolwithusers`
--
INSERT INTO `schoolwithusers` (`id`, `school_id`, `studentprofile_id`) VALUES
(1, 1, 3),
(2, 3, 4);
-- --------------------------------------------------------
--
-- Table structure for table `studentprofile`
--
CREATE TABLE `studentprofile` (
`id` int(11) NOT NULL,
`user_id_fk` int(11) DEFAULT NULL,
`rollno` int(11) DEFAULT NULL,
`dob` date DEFAULT NULL,
`attendence` int(11) DEFAULT NULL,
`class` int(11) DEFAULT NULL,
`section` enum('A','B') DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `studentprofile`
--
INSERT INTO `studentprofile` (`id`, `user_id_fk`, `rollno`, `dob`, `attendence`, `class`, `section`) VALUES
(1, 3, 22, '2022-01-21', 60, 1, 'A'),
(2, 4, 21, '2012-01-04', 45, 1, 'A'),
(3, 4, 1, '2012-01-04', 100, 3, 'B'),
(4, 5, 30, '2007-04-26', 45, 3, 'B'),
(5, 6, 2, '2022-01-19', 50, 6, 'B');
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`fname` varchar(45) DEFAULT NULL,
`lname` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `fname`, `lname`, `email`, `password`) VALUES
(1, 'Shashank', 'Naithani', 'shashank8036#gmail.com', 'lol123'),
(2, 'Kuldeep', 'Negi', 'negikuldeep#gmail.com', 'lop123'),
(3, 'Arpit', 'Thakut', 'Aptha#gmail.com', 'arp123'),
(4, 'Ankit', 'Barthwal', 'ankitbarth#gmail.com', 'ankit123'),
(5, 'Mukesh', 'Thakur', 'sasdb#gmail.com', 'sha123'),
(6, 'Arjun', 'Negi', 'sasdb#gmail.com', 'sha123');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `exams`
--
ALTER TABLE `exams`
ADD PRIMARY KEY (`id`),
ADD KEY `examtye_id` (`examtye_id`) USING BTREE,
ADD KEY `schooluser_id` (`schooluser_id`);
--
-- Indexes for table `examtype`
--
ALTER TABLE `examtype`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `marks`
--
ALTER TABLE `marks`
ADD PRIMARY KEY (`id`),
ADD KEY `exam_id` (`exam_id`);
--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `roles_assigned`
--
ALTER TABLE `roles_assigned`
ADD PRIMARY KEY (`id`),
ADD KEY `role_id` (`role_id`) USING BTREE,
ADD KEY `user_id` (`user_id`) USING BTREE;
--
-- Indexes for table `schools`
--
ALTER TABLE `schools`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `schoolwithusers`
--
ALTER TABLE `schoolwithusers`
ADD PRIMARY KEY (`id`),
ADD KEY `school_id` (`school_id`) USING BTREE,
ADD KEY `studentprofile_id` (`studentprofile_id`);
--
-- Indexes for table `studentprofile`
--
ALTER TABLE `studentprofile`
ADD PRIMARY KEY (`id`),
ADD KEY `user_id_idx` (`user_id_fk`);
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `exams`
--
ALTER TABLE `exams`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `examtype`
--
ALTER TABLE `examtype`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `marks`
--
ALTER TABLE `marks`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `roles_assigned`
--
ALTER TABLE `roles_assigned`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
--
-- AUTO_INCREMENT for table `schools`
--
ALTER TABLE `schools`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
--
-- AUTO_INCREMENT for table `schoolwithusers`
--
ALTER TABLE `schoolwithusers`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT for table `studentprofile`
--
ALTER TABLE `studentprofile`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `exams`
--
ALTER TABLE `exams`
ADD CONSTRAINT `examtye_id` FOREIGN KEY (`examtye_id`) REFERENCES `examtype` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `schooluser_id` FOREIGN KEY (`schooluser_id`) REFERENCES `schoolwithusers` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `marks`
--
ALTER TABLE `marks`
ADD CONSTRAINT `exam_id` FOREIGN KEY (`exam_id`) REFERENCES `exams` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `roles_assigned`
--
ALTER TABLE `roles_assigned`
ADD CONSTRAINT `role_id` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `schoolwithusers`
--
ALTER TABLE `schoolwithusers`
ADD CONSTRAINT `school_id` FOREIGN KEY (`school_id`) REFERENCES `schools` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `studentprofile_id` FOREIGN KEY (`studentprofile_id`) REFERENCES `studentprofile` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `studentprofile`
--
ALTER TABLE `studentprofile`
ADD CONSTRAINT `user_id_fk` FOREIGN KEY (`user_id_fk`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;
You have to join each table on the primary key/foreign key. Some of the sample data is not quite correct because you have duplicate combinations of student_id and roles_id values in the roles_assigned table. Be sure to list the column names you need instead of *.
select *
from users
INNER JOIN roles_assigned ON users.id = roles_assigned.user_id
INNER JOIN roles ON roles.id = roles_assigned.role_id
INNER JOIN studentprofile on studentprofile.id = users.id
INNER JOIN schoolwithusers on schoolwithusers.studentprofile_id =
studentprofile.id
INNER JOIN schools ON schools.id = schoolwithusers.school_id
WHERE roles.type = 'Student';

converting MySQL syntax to PostgreSQL

So I designed a Bank database in MySQL, and now I want to convert some syntax to PostgreSQL
this is my account and branch table :
CREATE TABLE `account` (
`accountnumber` int(80) NOT NULL,
`balance` text COLLATE utf8_bin NOT NULL,
`date` date NOT NULL,
`time` time NOT NULL,
`branchID` int(25) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE `branch` (
`branchID` int(25) NOT NULL,
`bName` varchar(50) COLLATE utf8_bin NOT NULL,
`bCity` varchar(50) COLLATE utf8_bin NOT NULL,
`assests` bigint(20) NOT NULL,
`mainbankID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
I converted it already, but I have problems with these parts:
ALTER TABLE `account`
ADD PRIMARY KEY (`accountnumber`),
ADD KEY `branchID` (`branchID`);
ALTER TABLE `account`
ADD CONSTRAINT `account_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
for example, I tried to write the first one like this, and I got errors:
ALTER TABLE account
ADD PRIMARY KEY (accountnumber),
ADD KEY branchID (branchID);
and I got this error :
type "branchid" does not exist
and here's my piece of code that I converted and working in PostgreSQL :
--
-- Database: `bank`
--
-- --------------------------------------------------------
--
-- Table structure for table account
--
CREATE TABLE account (
accountnumber INTEGER NOT NULL,
balance text NOT NULL,
date date NOT NULL,
time time NOT NULL,
branchID INTEGER NOT NULL
) ;
--
-- Dumping data for table `account`
--
INSERT INTO account (accountnumber, balance, date, time, branchID) VALUES
(1132, 'توضیحات ترازنامه', '2021-07-12', '00:00:03', 516),
(1792, 'توضیحات ترازنامه', '2020-05-29', '11:17:27', 516),
(5130, 'توضیحات ترازنامه', '2016-02-23', '13:18:00', 123),
(7123, 'توضیحات ترازنامه', '2011-11-16', '10:25:00', 124),
(8210, 'توضیحات ترازنامه', '2019-01-11', '16:20:06', 215);
-- --------------------------------------------------------
--
-- Table structure for table `borrower`
--
CREATE TABLE borrower (
customerID INTEGER NOT NULL,
loanID INTEGER NOT NULL
) ;
--
-- Dumping data for table `borrower`
--
INSERT INTO borrower (customerID, loanID) VALUES
(7951, 357),
(1089, 357);
-- --------------------------------------------------------
--
-- Table structure for table `branch`
--
CREATE TABLE branch (
branchID INTEGER NOT NULL,
bName varchar(50) NOT NULL,
bCity varchar(50) NOT NULL,
assests bigint NOT NULL,
mainbankID INTEGER NOT NULL
) ;
--
-- Dumping data for table `branch`
--
INSERT INTO branch (branchID, bName, bCity, assests, mainbankID) VALUES
(123, 'سعادت اباد', 'تهران', 250000000, 1111),
(124, 'تجریش', 'همدان ', 5842000, 2222),
(215, 'خیابان قیام', 'یزد', 700000000, 2222),
(391, 'نقش جهان', 'اصفهان', 20100000, 1111),
(516, 'میرداماد', 'تهران', 953200000, 1111);
-- --------------------------------------------------------
--
-- Table structure for table `customer`
--
CREATE TABLE customer (
customerID INTEGER NOT NULL,
CName varchar(78) NOT NULL,
cphonenumber INTEGER NOT NULL,
cCity varchar(50) NOT NULL,
caddress text NOT NULL,
cage INTEGER NOT NULL
) ;
--
-- Dumping data for table `customer`
--
INSERT INTO customer (customerID, CName, cphonenumber, cCity, caddress, cage) VALUES
(412, 'معین سپهری', 387496, 'تهران', 'تهران شهرک غرب', 27),
(1089, 'سحر مقدم', 3254896, 'اصفهان', 'اصفهان پل خواجوو', 32),
(7951, 'ددا رضوی', 36232323, 'تهران', 'تهران شهرک اندیشه مجتمع رز', 26),
(463241, 'محمد فلاح', 3456213, 'یزد', 'یزد خیابان کاشانی کوچه علوی', 50);
-- --------------------------------------------------------
--
-- Table structure for table `depositor`
--
CREATE TABLE depositor (
customerID INTEGER NOT NULL,
accountnumber INTEGER NOT NULL
) ;
--
-- Dumping data for table `depositor`
--
INSERT INTO depositor (customerID, accountnumber) VALUES
(7951, 7123),
(463241, 5130),
(412, 1132),
(463241, 1132),
(1089, 1132);
-- --------------------------------------------------------
--
-- Table structure for table `employee`
--
CREATE TABLE employee (
EmployeeID INTEGER NOT NULL,
Employeework varchar(100) NOT NULL,
Employeename varchar(25) NOT NULL,
aphonenumber INTEGER NOT NULL,
Employmentyear smallint NOT NULL,
eaddress text NOT NULL,
esalary INTEGER NOT NULL,
branchID INTEGER NOT NULL
) ;
--
-- Dumping data for table `employee`
--
CREATE TABLE mainbank (
mainbankID INTEGER NOT NULL,
mainname varchar(25) NOT NULL,
constructionyear smallint NOT NULL,
budget INTEGER NOT NULL
) ;
--
-- Dumping data for table `mainbank`
--
INSERT INTO mainbank (mainbankID, mainname, constructionyear, budget) VALUES
(1111, 'saderat', 1925, 20000000),
(2222, 'melli', 1912, 100000000);
-- --------------------------------------------------------
--
-- Table structure for table `managment`
--
CREATE TABLE managment (
managmentID INTEGER NOT NULL,
managename varchar(25) NOT NULL,
mphonenumber INTEGER NOT NULL,
manageaddress text NOT NULL,
manageage INTEGER NOT NULL,
manageedu varchar(100) NOT NULL,
msalary INTEGER NOT NULL,
employmentyear smallint NOT NULL,
branchID INTEGER NOT NULL
) ;
--
-- Dumping data for table `managment`
--
INSERT INTO managment (managmentID, managename, mphonenumber, manageaddress, manageage, manageedu, msalary, employmentyear, branchID) VALUES
(1030, 'akbar fallah', 2146258, 'tehran pol sadr', 59, 'Master of Banking', 2100000000, 2011, 516),
(1046, 'mohammad alavi', 352146, 'yazd blv jomhorii', 63, 'Master of Banking', 18200000, 2016, 215);
-- --------------------------------------------------------
--
-- Table structure for table `safebox`
--
CREATE TABLE safebox (
safeboxID INTEGER NOT NULL,
price INTEGER NOT NULL,
date date NOT NULL,
time time(0) NOT NULL,
branchID INTEGER NOT NULL
) ;
--
-- Dumping data for table `safebox`
--
INSERT INTO safebox (safeboxID, price, date, time, branchID) VALUES
(162, 75000000, '2020-11-07', '20:03:41', 123),
(888, 28000000, '2020-04-22', '10:00:00', 391),
(1642, 160000, '2019-01-25', '10:25:04', 215);
-- --------------------------------------------------------
--
-- Table structure for table `servise`
--
CREATE TABLE servise (
serviseID INTEGER NOT NULL,
sname varchar(25) NOT NULL,
Employmentyear smallint NOT NULL,
sage INTEGER NOT NULL,
sphone INTEGER NOT NULL,
saddress text NOT NULL,
ssalary INTEGER NOT NULL,
branchID INTEGER NOT NULL
) ;
--
-- Dumping data for table `servise`
--
INSERT INTO servise (serviseID, sname, Employmentyear, sage, sphone, saddress, ssalary, branchID) VALUES
(13333, 'iman', 1999, 49, 213620, 'tehran andishe', 30000, 516),
(15555, 'hesam', 2015, 38, 216201, 'tehran tajrish', 300000, 124);
and this is my whole code in MySQL:
-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jan 23, 2022 at 11:37 PM
-- Server version: 10.1.38-MariaDB
-- PHP Version: 7.3.3
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET #OLD_CHARACTER_SET_CLIENT=##CHARACTER_SET_CLIENT */;
/*!40101 SET #OLD_CHARACTER_SET_RESULTS=##CHARACTER_SET_RESULTS */;
/*!40101 SET #OLD_COLLATION_CONNECTION=##COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `bank`
--
-- --------------------------------------------------------
--
-- Table structure for table `account`
--
CREATE TABLE `account` (
`accountnumber` int(80) NOT NULL,
`balance` text COLLATE utf8_bin NOT NULL,
`date` date NOT NULL,
`time` time NOT NULL,
`branchID` int(25) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `account`
--
INSERT INTO `account` (`accountnumber`, `balance`, `date`, `time`, `branchID`) VALUES
(1132, 'توضیحات ترازنامه', '2021-07-12', '00:00:03', 516),
(1792, 'توضیحات ترازنامه', '2020-05-29', '11:17:27', 516),
(5130, 'توضیحات ترازنامه', '2016-02-23', '13:18:00', 123),
(7123, 'توضیحات ترازنامه', '2011-11-16', '10:25:00', 124),
(8210, 'توضیحات ترازنامه', '2019-01-11', '16:20:06', 215);
-- --------------------------------------------------------
--
-- Table structure for table `borrower`
--
CREATE TABLE `borrower` (
`customerID` int(50) NOT NULL,
`loanID` int(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `borrower`
--
INSERT INTO `borrower` (`customerID`, `loanID`) VALUES
(7951, 357),
(1089, 357);
-- --------------------------------------------------------
--
-- Table structure for table `branch`
--
CREATE TABLE `branch` (
`branchID` int(25) NOT NULL,
`bName` varchar(50) COLLATE utf8_bin NOT NULL,
`bCity` varchar(50) COLLATE utf8_bin NOT NULL,
`assests` bigint(20) NOT NULL,
`mainbankID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `branch`
--
INSERT INTO `branch` (`branchID`, `bName`, `bCity`, `assests`, `mainbankID`) VALUES
(123, 'سعادت اباد', 'تهران', 250000000, 1111),
(124, 'تجریش', 'همدان ', 5842000, 2222),
(215, 'خیابان قیام', 'یزد', 700000000, 2222),
(391, 'نقش جهان', 'اصفهان', 20100000, 1111),
(516, 'میرداماد', 'تهران', 953200000, 1111);
-- --------------------------------------------------------
--
-- Table structure for table `customer`
--
CREATE TABLE `customer` (
`customerID` int(50) NOT NULL,
`CName` varchar(78) COLLATE utf8_bin NOT NULL,
`cphone number` int(11) NOT NULL,
`cCity` varchar(50) COLLATE utf8_bin NOT NULL,
`caddress` text COLLATE utf8_bin NOT NULL,
`cage` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `customer`
--
INSERT INTO `customer` (`customerID`, `CName`, `cphone number`, `cCity`, `caddress`, `cage`) VALUES
(412, 'معین سپهری', 387496, 'تهران', 'تهران شهرک غرب', 27),
(1089, 'سحر مقدم', 3254896, 'اصفهان', 'اصفهان پل خواجوو', 32),
(7951, 'ددا رضوی', 36232323, 'تهران', 'تهران شهرک اندیشه مجتمع رز', 26),
(463241, 'محمد فلاح', 3456213, 'یزد', 'یزد خیابان کاشانی کوچه علوی', 50);
-- --------------------------------------------------------
--
-- Table structure for table `depositor`
--
CREATE TABLE `depositor` (
`customerID` int(50) NOT NULL,
`accountnumber` int(80) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `depositor`
--
INSERT INTO `depositor` (`customerID`, `accountnumber`) VALUES
(7951, 7123),
(463241, 5130),
(412, 1132),
(463241, 1132),
(1089, 1132);
-- --------------------------------------------------------
--
-- Table structure for table `employee`
--
CREATE TABLE `employee` (
`EmployeeID` int(10) NOT NULL,
`Employeework` varchar(100) COLLATE utf8_bin NOT NULL,
`Employeename` varchar(25) COLLATE utf8_bin NOT NULL,
`aphonenumber` int(11) NOT NULL,
`Employmentyear` year(4) NOT NULL,
`eaddress` text COLLATE utf8_bin NOT NULL,
`esalary` int(20) NOT NULL,
`branchID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `employee`
--
INSERT INTO `employee` (`EmployeeID`, `Employeework`, `Employeename`, `aphonenumber`, `Employmentyear`, `eaddress`, `esalary`, `branchID`) VALUES
(1551, 'Official', 'ali akbari', 912512123, 1941, 'tehran andarzgoo', 1400000000, 123),
(1881, 'Official', 'nazi imanii', 91352412, 1998, 'yazd kashani', 80000000, 215);
-- --------------------------------------------------------
--
-- Table structure for table `loan`
--
CREATE TABLE `loan` (
`loanID` int(50) NOT NULL,
`amount` int(50) NOT NULL,
`branchID` int(25) NOT NULL,
`startdate` date NOT NULL,
`enddate` date NOT NULL,
`time` time NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `loan`
--
INSERT INTO `loan` (`loanID`, `amount`, `branchID`, `startdate`, `enddate`, `time`) VALUES
(357, 300000, 516, '2020-01-02', '2022-01-12', '10:00:00'),
(412, 1230000, 215, '1998-08-25', '2021-11-25', '09:00:00'),
(863, 5400000, 516, '1996-08-13', '2020-12-30', '07:14:00');
-- --------------------------------------------------------
--
-- Table structure for table `mainbank`
--
CREATE TABLE `mainbank` (
`mainbankID` int(10) NOT NULL,
`mainname` varchar(25) COLLATE utf8_bin NOT NULL,
`constructionyear` year(4) NOT NULL,
`budget` int(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `mainbank`
--
INSERT INTO `mainbank` (`mainbankID`, `mainname`, `constructionyear`, `budget`) VALUES
(1111, 'saderat', 1925, 20000000),
(2222, 'melli', 1912, 100000000);
-- --------------------------------------------------------
--
-- Table structure for table `managment`
--
CREATE TABLE `managment` (
`managmentID` int(10) NOT NULL,
`managename` varchar(25) COLLATE utf8_bin NOT NULL,
`mphonenumber` int(11) NOT NULL,
`manageaddress` text COLLATE utf8_bin NOT NULL,
`manageage` int(3) NOT NULL,
`manageedu` varchar(100) COLLATE utf8_bin NOT NULL,
`msalary` int(20) NOT NULL,
`employmentyear` year(4) NOT NULL,
`branchID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `managment`
--
INSERT INTO `managment` (`managmentID`, `managename`, `mphonenumber`, `manageaddress`, `manageage`, `manageedu`, `msalary`, `employmentyear`, `branchID`) VALUES
(1030, 'akbar fallah', 2146258, 'tehran pol sadr', 59, 'Master of Banking', 2100000000, 2011, 516),
(1046, 'mohammad alavi', 352146, 'yazd blv jomhorii', 63, 'Master of Banking', 18200000, 2016, 215);
-- --------------------------------------------------------
--
-- Table structure for table `safebox`
--
CREATE TABLE `safebox` (
`safeboxID` int(10) NOT NULL,
`price` int(20) NOT NULL,
`date` date NOT NULL,
`time` time NOT NULL,
`branchID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `safebox`
--
INSERT INTO `safebox` (`safeboxID`, `price`, `date`, `time`, `branchID`) VALUES
(162, 75000000, '2020-11-07', '20:03:41', 123),
(888, 28000000, '2020-04-22', '10:00:00', 391),
(1642, 160000, '2019-01-25', '10:25:04', 215);
-- --------------------------------------------------------
--
-- Table structure for table `servise`
--
CREATE TABLE `servise` (
`serviseID` int(10) NOT NULL,
`sname` varchar(25) COLLATE utf8_bin NOT NULL,
`Employmentyear` year(4) NOT NULL,
`sage` int(3) NOT NULL,
`sphone` int(11) NOT NULL,
`saddress` text COLLATE utf8_bin NOT NULL,
`ssalary` int(20) NOT NULL,
`branchID` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Dumping data for table `servise`
--
INSERT INTO `servise` (`serviseID`, `sname`, `Employmentyear`, `sage`, `sphone`, `saddress`, `ssalary`, `branchID`) VALUES
(13333, 'iman', 1999, 49, 213620, 'tehran andishe', 30000, 516),
(15555, 'hesam', 2015, 38, 216201, 'tehran tajrish', 300000, 124);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `account`
--
ALTER TABLE `account`
ADD PRIMARY KEY (`accountnumber`),
ADD KEY `branchID` (`branchID`);
--
-- Indexes for table `borrower`
--
ALTER TABLE `borrower`
ADD KEY `customerID` (`customerID`),
ADD KEY `loanID` (`loanID`);
--
-- Indexes for table `branch`
--
ALTER TABLE `branch`
ADD PRIMARY KEY (`branchID`);
--
-- Indexes for table `customer`
--
ALTER TABLE `customer`
ADD PRIMARY KEY (`customerID`);
--
-- Indexes for table `depositor`
--
ALTER TABLE `depositor`
ADD KEY `account number` (`accountnumber`),
ADD KEY `customerID` (`customerID`);
--
-- Indexes for table `employee`
--
ALTER TABLE `employee`
ADD PRIMARY KEY (`EmployeeID`),
ADD KEY `branchID` (`branchID`);
--
-- Indexes for table `loan`
--
ALTER TABLE `loan`
ADD PRIMARY KEY (`loanID`),
ADD KEY `branchID` (`branchID`);
--
-- Indexes for table `mainbank`
--
ALTER TABLE `mainbank`
ADD PRIMARY KEY (`mainbankID`);
--
-- Indexes for table `managment`
--
ALTER TABLE `managment`
ADD PRIMARY KEY (`managmentID`),
ADD KEY `branchID` (`branchID`);
--
-- Indexes for table `safebox`
--
ALTER TABLE `safebox`
ADD PRIMARY KEY (`safeboxID`),
ADD KEY `branchID` (`branchID`);
--
-- Indexes for table `servise`
--
ALTER TABLE `servise`
ADD PRIMARY KEY (`serviseID`),
ADD KEY `branchID` (`branchID`);
--
-- Constraints for dumped tables
--
--
-- Constraints for table `account`
--
ALTER TABLE `account`
ADD CONSTRAINT `account_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
--
-- Constraints for table `borrower`
--
ALTER TABLE `borrower`
ADD CONSTRAINT `borrower_ibfk_1` FOREIGN KEY (`customerID`) REFERENCES `customer` (`customerID`),
ADD CONSTRAINT `borrower_ibfk_2` FOREIGN KEY (`loanID`) REFERENCES `loan` (`loanID`);
--
-- Constraints for table `depositor`
--
ALTER TABLE `depositor`
ADD CONSTRAINT `depositor_ibfk_1` FOREIGN KEY (`accountnumber`) REFERENCES `account` (`accountnumber`),
ADD CONSTRAINT `depositor_ibfk_2` FOREIGN KEY (`customerID`) REFERENCES `customer` (`customerID`);
--
-- Constraints for table `employee`
--
ALTER TABLE `employee`
ADD CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
--
-- Constraints for table `loan`
--
ALTER TABLE `loan`
ADD CONSTRAINT `loan_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
--
-- Constraints for table `managment`
--
ALTER TABLE `managment`
ADD CONSTRAINT `managment_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
--
-- Constraints for table `safebox`
--
ALTER TABLE `safebox`
ADD CONSTRAINT `safebox_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
--
-- Constraints for table `servise`
--
ALTER TABLE `servise`
ADD CONSTRAINT `servise_ibfk_1` FOREIGN KEY (`branchID`) REFERENCES `branch` (`branchID`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=#OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=#OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=#OLD_COLLATION_CONNECTION */;
First, you need to replace the backticks (`) with standard conforming double quotes ("). This will also prevent branchID from getting folded to lower case.
Second, instead of ALTER TABLE ... ADD KEY (colname) you have to use ALTER TABLE ... ADD UNIQUE (colname). You need a unique constraint as target of foreign key.
You can use this software for that purpose:
https://soft-builder.com/how-to-convert-mysql-database-to-postgresql/

error of 1824: failed to open the referenced table

Not sure what i'm doing wrong here. Im trying to understand the relationships between tables? Please help thank you
DROP DATABASE IF EXISTS `sql_retail`;
CREATE DATABASE `sql_retail`;
USE `sql_retail`;
SET NAMES utf8 ;
SET character_set_client = utf8mb4 ;
CREATE TABLE `RETAIL_ORDER` (
`OrderNumber` int(4) NOT NULL,
`StoreNumber` int(2) NOT NULL,
`StoreZip` char(9) NOT NULL,
`OrderMonth` char(12) NOT NULL,
`OrderYear` int(4) NOT NULL,
`OrderTotal` float(10) NOT NULL,
PRIMARY KEY (`OrderNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `RETAIL_ORDER` VALUES (1000, 10, 98110, 'December', 2017, 445.00);
INSERT INTO `RETAIL_ORDER` VALUES (2000, 20, 02335, 'December', 2017, 310.00);
INSERT INTO `RETAIL_ORDER` VALUES (3000, 10, 98110, 'January', 2018, 480.00);
CREATE TABLE `ORDER_ITEM` (
`OrderNumber` int(11) NOT NULL,
`SKU` int(7) NOT NULL,
`Quantity` int(6) NOT NULL,
`Price` float(10) NOT NULL,
`Extended Price` float(10) NOT NULL,
PRIMARY KEY (`OrderNumber`),FOREIGN KEY(`OrderNumber`)REFERENCES RETAIL_ORDER(`OrderNumber`),
FOREIGN KEY(`SKU`)REFERENCES SKU_DATA(`SKU`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `ORDER_ITEM` VALUES (1000, 201000, 1, 300.00, 300.00);
INSERT INTO `ORDER_ITEM` VALUES (1000, 202000, 1, 130.00, 130.00);
INSERT INTO `ORDER_ITEM` VALUES (2000, 101100, 4, 50.00, 200.00);
INSERT INTO `ORDER_ITEM` VALUES (2000, 101200, 2, 50.00, 100.00);
INSERT INTO `ORDER_ITEM` VALUES (3000, 100200, 1, 300.00, 300.00);
INSERT INTO `ORDER_ITEM` VALUES (3000, 101100, 2, 50.00, 100.00);
INSERT INTO `ORDER_ITEM` VALUES (3000, 101200, 1, 50.00, 50.00);
CREATE TABLE `SKU_DATA` (
`SKU` int(11) NOT NULL,
`SKU_Description` varchar(50) NOT NULL,
`Department` varchar(20) NOT NULL,
`Buyer` varchar(15) NOT NULL,
PRIMARY KEY (`SKU`),FOREIGN KEY(`Buyer`)REFERENCES BUYER(`BuyerName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `SKU_DATA` VALUES (100100, 'Std. Scuba Tank, Yellow', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (100200, 'Std. Scuba Tank, Magenta', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (100300, 'Std. Scuba Tank, Light Blue', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (100400, 'Std. Scuba Tank, Dark Blue', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (100500, 'Std. Scuba Tank, Light Green', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (100600, 'Std. Scuba Tank, Dark Green', 'Water Sports', 'Peter Hansen');
INSERT INTO `SKU_DATA` VALUES (101100, 'Dive Mask, Small Clear', 'Water Sports', 'Nancy Meyers');
INSERT INTO `SKU_DATA` VALUES (101200, 'Dive Mask, Med Clear', 'Water Sports', 'Nancy Meyers');
INSERT INTO `SKU_DATA` VALUES (201000, 'Half dome tent', 'camping', 'Cindy Lo');
INSERT INTO `SKU_DATA` VALUES (202000, 'Half dome tent vestibule', 'camping', 'Cindy Lo');
INSERT INTO `SKU_DATA` VALUES (203000, 'Half dome tent vestibule wide', 'camping', 'Cindy Lo');
INSERT INTO `SKU_DATA` VALUES (301000, 'Light fly climbing harness', 'climbing', 'Jerry Martin');
INSERT INTO `SKU_DATA` VALUES (302000, 'Locking Carabiner, Oval', 'climbing', 'Jerry Martin');
CREATE TABLE `BUYER` (
`BuyerName` varchar(15) NOT NULL,
`Department` varchar(15) NOT NULL,
`Position` varchar(15) NOT NULL,
`Supervisor` varchar(15) NOT NULL,
PRIMARY KEY (`BuyerName`),FOREIGN KEY(`Supervisor`)REFERENCES BUYER(`BuyerName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `SKU_DATA` VALUES ('Cindy Lo', 'Purchasing', 'Buyer 2', 'Mary Smith');
INSERT INTO `SKU_DATA` VALUES ('Jerry Martin', 'Purchasing', 'Buyer 1', 'Cindo Lo');
INSERT INTO `SKU_DATA` VALUES ('Mary Smith', 'Purchasing', 'Manager','' );
INSERT INTO `SKU_DATA` VALUES ('Nancy Meyers', 'Purchasing', 'Buyer 1', 'Pete Hansen');
INSERT INTO `SKU_DATA` VALUES ('Pete Hansen', 'Purchasing', 'Buyer 3', 'Mary Smith');
You have some errors.
First you assign a foreign key to a table that don't exists yet and second you have duplicate values into your inserts for your primary keys.
I have fixed your table creation, check your insert datas.
Follow below approach to create your tables and then do the inserts:
DROP DATABASE IF EXISTS sql_retail ;
CREATE DATABASE sql_retail ;
USE sql_retail ;
SET NAMES utf8 ;
SET character_set_client = utf8mb4 ;
CREATE TABLE `RETAIL_ORDER` (
`OrderNumber` int(4) NOT NULL,
`StoreNumber` int(2) NOT NULL,
`StoreZip` char(9) NOT NULL,
`OrderMonth` char(12) NOT NULL,
`OrderYear` int(4) NOT NULL,
`OrderTotal` float(10) NOT NULL,
PRIMARY KEY (`OrderNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `ORDER_ITEM` (
`OrderNumber` int(11) NOT NULL,
`SKU` int(7) NOT NULL,
`Quantity` int(6) NOT NULL,
`Price` float(10) NOT NULL,
`Extended Price` float(10) NOT NULL,
PRIMARY KEY (`OrderNumber`),
FOREIGN KEY(`OrderNumber`)REFERENCES RETAIL_ORDER(`OrderNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `SKU_DATA` (
`SKU` int(11) NOT NULL,
`SKU_Description` varchar(50) NOT NULL,
`Department` varchar(20) NOT NULL,
`Buyer` varchar(15) NOT NULL,
PRIMARY KEY (`SKU`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
ALTER TABLE ORDER_ITEM ADD FOREIGN KEY(`SKU`)REFERENCES SKU_DATA(`SKU`);
CREATE TABLE `BUYER` (
`BuyerName` varchar(15) NOT NULL,
`Department` varchar(15) NOT NULL,
`Position` varchar(15) NOT NULL,
`Supervisor` varchar(15) NOT NULL,
PRIMARY KEY (`BuyerName`),
FOREIGN KEY(`Supervisor`)REFERENCES BUYER(`BuyerName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
ALTER TABLE SKU_DATA ADD FOREIGN KEY(`Buyer`)REFERENCES BUYER(`BuyerName`);
Demo: https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/28

Having trouble with creating tables using foreign key [duplicate]

This question already has answers here:
How can I add a foreign key when creating a new table?
(5 answers)
Closed 4 years ago.
I am trying creating two tables, aluno = student and usuario = user. MySQL Workbench keep showing me that codigo in table usario doesn´t exist. Anyone can help me plz?
drop database `web2`;
CREATE DATABASE `web2` DEFAULT CHARSET latin1;
USE `web2`;
CREATE TABLE `aluno` (
`id_aluno` bigint(20) not null auto_increment,
`nome` varchar(100) not null,
`cpf` varchar(20) not null,
`rg` varchar(20) not null,
`dataDeNascimento` date not null,
`endereco` varchar(50),
`cidade` varchar(150),
`telefoneFixo` varchar(14),
`telefoneCelular` varchar(14),
`email` varchar(30) not null,
PRIMARY KEY (`id_aluno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
INSERT INTO `aluno` (`id_aluno`, `nome`, `cpf`, `rg`,`dataDeNascimento`, `endereco`, `cidade`, `telefoneFixo`,
`telefoneCelular`,`email`) VALUES ('1', 'Marcela', '255665696363', '2153263699',
'1985-07-08', 'Rua Hum', 'Belo Horizonte', '(35)54321-9876', '(35)54321-9876','marcela#bh.mg');
INSERT INTO `aluno` (`id_aluno`, `nome`, `cpf`, `rg`,`dataDeNascimento`, `endereco`, `cidade`, `telefoneFixo`,
`telefoneCelular`,`email`) VALUES ('2', 'Paulo', '275865696361', '2183255599','1983-02-05', 'Rua Dois', 'Bela Vista', '(11)12345-6789',
'(11)12345-6789', 'paulo#saopaulo.sp');
INSERT INTO `aluno` (`id_aluno`, `nome`, `cpf`, `rg`,`dataDeNascimento`, `endereco`, `cidade`, `telefoneFixo`,
`telefoneCelular`,`email`) VALUES ('3', 'Marcos', '275812656361', '2183255599','1983-02-12', 'Rua Dois', 'Bela Vista', '(11)12345-6790',
'(11)12345-6789', 'paulo#saopaulo.sp');
INSERT INTO `aluno` (`id_aluno`, `nome`, `cpf`, `rg`,`dataDeNascimento`, `endereco`, `cidade`, `telefoneFixo`,
`telefoneCelular`,`email`) VALUES ('4', 'Rodolfo', '569865696361', '2183255599','1983-05-28', 'Rua Dois', 'Bela Vista', '(11)12345-6791',
'(11)12345-6789', 'paulo#saopaulo.sp');
INSERT INTO `aluno` (`id_aluno`, `nome`, `cpf`, `rg`,`dataDeNascimento`, `endereco`, `cidade`, `telefoneFixo`,
`telefoneCelular`,`email`) VALUES ('5', 'Larissa', '275865696361', '2183255599','1983-02-01', 'Rua Dois', 'Bela Vista', '(11)12345-6792',
'(11)12345-6789', 'paulo#saopaulo.sp');
CREATE TABLE `usuario` (
`id` bigint(20) not null auto_increment,
`login` varchar(10) not null,
`senha` varchar(10) not null,
PRIMARY KEY (`id`),
FOREIGN KEY (`codigo`) REFERENCES aluno (`id_aluno`),
UNIQUE KEY (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
INSERT INTO `usuario` (`id`, `login`, `senha`, `codigo` ) VALUES ('1', 'marcela', '54321', '1');
INSERT INTO `usuario` (`id`, `login`, `senha`, `codigo` ) VALUES ('2', 'paulo', '12345', '2');
INSERT INTO `usuario` (`id`, `login`, `senha`, `codigo` ) VALUES ('3', 'gustavo', '52321', '3');
INSERT INTO `usuario` (`id`, `login`, `senha`, `codigo` ) VALUES ('4', 'leandro', '19315', '4');
INSERT INTO `usuario` (`id`, `login`, `senha`, `codigo` ) VALUES ('5', 'bruna', '14045', '5');
Are you missing the "codigo" column name in "CREATE TABLE usuario"
...
`codigo` bigint(20)
...
You need codigo defined in create table statement:
CREATE TABLE `usuario` (
`id` bigint(20) not null auto_increment,
`login` varchar(10) not null,
`senha` varchar(10) not null,
`codigo` bigint(20)
PRIMARY KEY (`id`),
FOREIGN KEY (`codigo`) REFERENCES aluno (`id_aluno`),
UNIQUE KEY (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
The reason for this is that foreign keys are constraints applied to columns, so the table first needs the column to which the foreign key constraint is applied.