以下在ubuntu14.04 mysql 5.5.62 驗證正常。
1.數據庫,卡車表,貨運站表,汽車型號表創建,定義必要的實例完整性和參照完整性。
CREATE DATABASE IF NOT EXISTS 車管理;
USE 車管理;
CREATE TABLE IF NOT EXISTS 貨運站表(
貨運站編號 VARCHAR(128) PRIMARY KEY,
地址 VARCHAR(128),
聯繫電話 VARCHAR(128),
負責人 VARCHAR(128)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 貨運站表 (貨運站編號,地址,聯繫電話,負責人) VALUES ('A01','北京市東城區花市大街111號','010-67301234','張華');
INSERT INTO 貨運站表 (貨運站編號,地址,聯繫電話,負責人) VALUES ('A02','北京市海淀花園路101號','010-64248892','李玉明');
INSERT INTO 貨運站表 (貨運站編號,地址,聯繫電話,負責人) VALUES ('A03','北京市東城區花市大街111號','010-45363542','周強永');
INSERT INTO 貨運站表 (貨運站編號,地址,聯繫電話,負責人) VALUES ('A04','北京市東城區花市大街111號','010-54634645','王桂平');
CREATE TABLE IF NOT EXISTS 汽車型號表(
類型 VARCHAR(128) PRIMARY KEY,
汽車型號 VARCHAR(10)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 汽車型號表 (類型,汽車型號) VALUES ('11','DJS130');
INSERT INTO 汽車型號表 (類型,汽車型號) VALUES ('22','DLS121');
CREATE TABLE IF NOT EXISTS 卡車表(
車號 VARCHAR(128) PRIMARY KEY,
貨運站編號 VARCHAR(128),
類型 VARCHAR(128),
總行程 FLOAT(2),
購入日期 VARCHAR(128)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE 卡車表 ADD CONSTRAINT FK_FSN FOREIGN KEY(貨運站編號) REFERENCES 貨運站表(貨運站編號);
ALTER TABLE 卡車表 ADD CONSTRAINT FK_TYPE FOREIGN KEY(類型) REFERENCES 汽車型號表(類型);
INSERT INTO 卡車表 (車號,貨運站編號,類型,總行程,購入日期)VALUES('1001','A01','11',59002.7,'10/06/01');
INSERT INTO 卡車表 (車號,貨運站編號,類型,總行程,購入日期)VALUES('1002','A02','22',54523.8,'17/08/03');
INSERT INTO 卡車表 (車號,貨運站編號,類型,總行程,購入日期)VALUES('1003','A03','22',32116.6,'16/12/05');
INSERT INTO 卡車表 (車號,貨運站編號,類型,總行程,購入日期)VALUES('1004','A02','22',3256.9,'12/04/25');
2.聯合查找 '李玉明' 管理卡車號 及 總行程。
SELECT 車號,總行程,負責人 FROM 卡車表 JOIN 貨運站表 ON 卡車表.貨運站編號=貨運站表.貨運站編號 WHERE 負責人='李玉明';
3.
SELECT 貨運站表.貨運站編號,COUNT(車號) AS 車數 ,ROUND(AVG(總行程),1) AS 平均總行程 FROM 卡車表 RIGHT JOIN 貨運站表 ON 卡車表.貨運站編號=貨運站表.貨運站編號 GROUP BY 貨運站表.貨運站編號 ORDER BY 平均總行程 DESC;
4.
UPDATE 卡車表 K LEFT JOIN 汽車型號表 Q ON K.類型=Q.類型 SET K.貨運站編號='A04' WHERE 汽車型號='DLS121' AND 總行程<5000;
5.
SELECT 車號,購入日期,聯繫電話,汽車型號 FROM 卡車表 K LEFT JOIN 貨運站表 H ON K.貨運站編號=H.貨運站編號 LEFT JOIN 汽車型號表 Q ON K.類型=Q.類型 WHERE 汽車型號='DJS130';