我有一个mySql查询要为类编写,但我收到错误1146,Customer表不存在,对于我的Customer表。我修复了所有其他问题,但无法查看Customer表的问题所在。这是我的代码:
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';
DROP SCHEMA IF EXISTS PiqueExpenses;
CREATE SCHEMA IF NOT EXISTS PiqueExpenses DEFAULT CHARACTER SET utf8 ;
DROP DATABASE IF EXISTS PiqueExpenses;
CREATE DATABASE IF NOT EXISTS PiqueExpenses DEFAULT CHARACTER SET utf8 ;
USE PiqueExpenses;
CREATE TABLE IF NOT EXISTS JobPay (
pay_rate DOUBLE NOT NULL AUTO_INCREMENT,
j_id INT NULL,
pay_hrs_worked DOUBLE NULL,
job_mileage DOUBLE NULL,
pay_per_mile DOUBLE NULL,
PRIMARY KEY (pay_rate),
INDEX fk_JobPay_Jobs_idx (j_id ASC),
CONSTRAINT fk_JobPay_Jobs
FOREIGN KEY (j_id)
REFERENCES Jobs (job_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE PiqueExpenses;
CREATE TABLE IF NOT EXISTS Jobs (
job_id INT NOT NULL AUTO_INCREMENT,
em_id INT NULL,
cus_id INT NULL,
job_name VARCHAR(45) NULL,
job_type VARCHAR(45) NULL,
PRIMARY KEY (job_id),
INDEX fk_Jobs_Employee_idx (em_id ASC),
CONSTRAINT fk_Jobs_Employee
FOREIGN KEY (em_id)
REFERENCES Employee (emp_id),
INDEX fk_Jobs_Customer_idx (cus_id ASC),
CONSTRAINT fk_Jobs_Customer
FOREIGN KEY (cus_id)
REFERENCES Customer (cust_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE PiqueExpenses;
CREATE TABLE IF NOT EXISTS Employee (
emp_id INT NOT NULL AUTO_INCREMENT,
emp_lname VARCHAR(45) NULL,
emp_initial VARCHAR(45) NULL,
emp_fname VARCHAR(45) NULL,
l_id INT NULL,
PRIMARY KEY (emp_id),
INDEX fk_Employee_Location_idx (l_id ASC),
CONSTRAINT fk_Employee_Location
FOREIGN KEY (l_id)
REFERENCES Customer (loc_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE PiqueExpenses;
CREATE TABLE IF NOT EXISTS Customer (
cust_id INT NOT NULL AUTO_INCREMENT,
cust_fname VARCHAR(45) NULL,
cust_initial VARCHAR(45) NULL,
cust_lname VARCHAR(45) NULL,
lo_id INT NULL,
PRIMARY KEY (cust_id),
INDEX fk_Customer_Location_idx (lo_id ASC),
CONSTRAINT fk_Customer_Location
FOREIGN KEY (lo_id)
REFERENCES Location (loc_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE PiqueExpenses;
CREATE TABLE IF NOT EXISTS Location (
loc_id INT NOT NULL AUTO_INCREMENT,
loc_address VARCHAR(45) NULL,
loc_city VARCHAR(45) NULL,
loc_state VARCHAR(45) NULL,
loc_zip VARCHAR(45) NULL,
loc_phone_num VARCHAR(45) NULL,
PRIMARY KEY (loc_id))
ENGINE = InnoDB;
START TRANSACTION;
USE PiqueExpenses;
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (32.00, 0001, 4, 48.0, .53);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (29.50, 0002, 3.8, 35.0, .44);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (38.75, 0003, 7.6, 49.0, .48);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (42.00, 0004, 8.9, 21.0, .25);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (31.42, 0005, 3.5, 64.0, .58);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (42.25, 0006, 5.6, 82.0, .57);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (38.95, 0007, 6.7, 57.0, .57);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (31.52, 0008, 4.8, 66.0, .61);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (29.60, 0009, 4.4, 52.0, .49);
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked,
job_mileage, pay_per_mile) VALUES (32.50, 0010, 6.4, 70.0, .50);
COMMIT;
START TRANSACTION;
USE PiqueExpenses;
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0001, 44201, 22001, 'CCTV', 'Install');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0002, 44202, 22002, 'Network','Install');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0003, 44203, 22003, 'Alarm', 'Time&Mater');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0004, 44204, 22004, 'DigitalMenuBoard', 'Install');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0005, 44205, 22005, 'Telecom', 'Troubleshoot');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0006, 44206, 22006, 'DigitalMenuBoard', 'Install');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0007, 44207, 22007, 'Alarm', 'Troubleshoot');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0008, 44208, 22008, 'Telecom', 'Troubleshoot');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0009, 44209, 22009, 'Network', 'Troubleshoot');
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type)
VALUES (0010, 44210, 22010, 'CCTV', 'Install');
COMMIT;
START TRANSACTION;
USE PiqueExpenses;
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44201, 'Tom', 'I', 'Butler', 33401);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44202, 'Marty', 'M', 'Tucker', 33402);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44203, 'Tammy', 'T', 'Rivera', 33403);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44204, 'Alicia', 'L', 'Robinson', 33404);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44205, 'Mary', 'J', 'Watson', 33405);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44206, 'Rachel', 'J', 'Owens', 33406);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44207, 'Barb', 'L', 'Wright', 33407);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44208, 'Peter', 'F', 'Parker', 33408);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44209, 'Kathy', 'W', 'Alvarez', 33409);
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial,
emp_lname, l_id) VALUES (44210, 'Frank', 'M', 'Morris', 33410);
COMMIT;
START TRANSACTION;
USE PiqueExpenses;
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22001, 'Fred', 'F', 'Flinstone', 33411);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22002, 'Buford', 'L', 'Tannen', 33412);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22003, 'Yosimite', 'P', 'Sam', 33413);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22004, 'John', 'A', 'Wayne', 33414);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22005, 'James', 'K', 'Hetfield', 33415);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22006, 'Lars', 'P', 'Ulrich', 33416);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22007, 'Kirk', 'Q', 'Hammet', 33417);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22008, 'Robert', 'F', 'Trajillo', 33418);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22009, 'Alfred', 'P', 'Yankovich', 33419);
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial,
cust_lname, lo_id) VALUES (22010, 'Odell', 'X', 'Beckham', 33420);
COMMIT;
START TRANSACTION;
USE PiqueExpenses;
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33401, '7613 Bellflower',
'Mentor', 'OH', '44060', '1-(440)654-7744');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33402, '2346 15th', 'Akron',
'OH', '44314', '1-(330)848-9413');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33403, '6915 Giddings',
'Atwater', 'OH', '44201', '1-(330)358-2026');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33404, '11241 Mahoning', 'North
Jackson', 'OH', '44451', '1-(330)666-9283');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33405, '685 Deercrest',
'Wadsworth', 'OH', '44281', '1-(330)954-2209');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33406, '675 Wolf Ledges',
'Akron', 'OH', '44309', '1-(330)996-9756');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33407, '111 Center', 'Medina',
'OH', '44256', '1-(330)335-1803');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33408, '222 State', 'Cuyahoga
Falls', 'OH', '44223', '1-(330)388-6354');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33409, '489 Bridge', 'Brimfield',
'OH', '44240', '1-(330)321-6223');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33410, '44 Chitauqua',
'Cleveland', 'OH', '44134', '1-(678)980-0852');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33411, '4123 Anniversary Road',
'Nashville', 'TN', '37215', '1-(615)995-7744');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33412, '9807 Ruskin Crossing',
'Bellevue', 'WA', '98008', '1-(425)975-9413');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33413, '39 Montana Parkway',
'Saint Paul', 'MN', '55166', '1-(651)866-2047');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33414, '3 Westridge Street',
'Stamford', 'CT', '06905', '1-(203)677-2492');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33415, '659 Homewood Junction',
'Gary', 'IN', '46406', '1-(219)971-2522');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33416, '86460 Kensington Place',
'Columbus', 'OH', '43240', '1-(614)282-8239');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33417, '4360 Bluestem Pass',
'Bradenton', 'FL', '34205', '1-(941)335-5180');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33418, '0178 Hallows Pass', 'San
Antonio', 'TX', '78265', '1-(210)523-6354');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33419, '1816 Trailsway Alley',
'Sacramento', 'CA', '94245', '1-(916)618-3467');
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city,
loc_state, loc_zip, loc_phone_num) VALUES (33420, '72464 Armistice Drive',
'San Jose', 'CA', '95133', '1-(408)405-1270');
COMMIT;
SELECT *
FROM JobPay,
Jobs,
Employee,
Customer,
Location;
SELECT *
FROM Employee
WHERE emp_initial = 'J';
SELECT *
FROM Jobs
WHERE job_type = 'Install';
SELECT *
FROM JobPay
LEFT OUTER JOIN Jobs ON JobPay.j_id = Jobs.job_id
UNION
SELECT *
FROM JobPay
RIGHT OUTER JOIN Jobs ON JobPay.j_id = Jobs.job_id;
SELECT *
FROM Customer
LEFT OUTER JOIN Location ON Customer.lo_id = Location.loc_id
UNION
SELECT *
FROM Customer
RIGHT OUTER JOIN Location ON Customer.lo_id = Location.loc_id;
同样,除非我没有看到某些内容,否则似乎所有表格和插入内容都设置相似,但客户似乎并不存在。为什么不创建表或存在?非常感谢任何帮助。
答案 0 :(得分:0)
您尝试在Customer
中创建一个在创建Location
表之前引用Location
表的外键。
语句SET FOREIGN_KEY_CHECKS=0
为您提供了一些灵活性,就像您可以加载引用的父表尚未具有相同值的数据值一样。这允许使用循环引用加载数据。
但如果该表尚不存在,它不允许您引用FK约束中的表。
将FK约束的所有定义推迟到脚本末尾是正常的。在创建所有表后,使用ALTER TABLE将FK约束添加到表中。
答案 1 :(得分:0)
使用尚不存在的内容创建链接。多数民众赞成位置表...