-- 创建出版社表
CREATE TABLE t_publish(
p_id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,出版社ID
p_name VARCHAR(100) NOT NULL, -- 名称
p_address VARCHAR(200) DEFAULT '北京', -- 出版社地区,默认为北京
p_head VARCHAR(100) DEFAULT '未知' -- 出版社负责人,默认为未知
);
-- 创建书籍表
CREATE TABLE t_book(
book_id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,书籍ID
book_name VARCHAR(100) NOT NULL, -- 名称
book_author VARCHAR(100) NOT NULL , -- 作者
book_date DATETIME DEFAULT '2012-12-31', -- 出版时间,默认 '2012-12-31'
p_id INT , -- 外键,出版社表
CONSTRAINT fk_p_id FOREIGN KEY (p_id) REFERENCES t_publish(p_id) -- 增加外键
);
-- 查出版社全表
SELECT * FROM t_publish;
-- 查书籍全表
SELECT * FROM t_book;
-- 增出版社
INSERT INTO t_publish VALUES(NULL,'吉林教育出版社','吉林','高岩'),
(NULL,'海天出版社','深圳',NULL);
-- 增书籍
INSERT INTO t_book VALUES(NULL,'三国演义','罗贯中','1984-09-01',1),
(NULL,'西游记','吴承恩','1984-01-01',2);
-- 1修改海天出版社负责人的名字为'老王'
UPDATE t_publish t SET t.`p_head`='老王' WHERE t.`p_name`='海天出版社';
-- 2 新增一条java从入门到精通书籍.包括出版社(清华大学出版社).
INSERT INTO t_publish VALUES(NULL,'清华大学出版社','长沙','凯杰');
INSERT INTO t_book VALUES(NULL,'java从入门到精通','冯修真','2019-08-01',3);
-- 新增,四大名著:出版社与西游记相同.余下的两本书 出版时间均为2013-01-01
INSERT INTO t_book VALUES(NULL,'红楼梦','曹雪芹','2013-01-01',2),
(NULL,'水浒传','施耐庵','2013-01-01',2);
-- 新增,sql,html,面向对象从入门到精通,出版社与<java从入门到精通(清华大学出版社---大毛)>一致. 出版时间均为2016-01-01
INSERT INTO t_book VALUES(NULL,'sql','王鑫','2016-01-01',3),
(NULL,'html','肖悦','2016-01-01',3),
(NULL,'面向对象从入门到精通','肖恺','2016-01-01',3);
-- 1 查询书籍表 按出版时间分组,各时间段分别出版了几本书.
SELECT b.`book_date`, COUNT(b.`book_id`) FROM t_book b GROUP BY b.`book_date` ;
-- 2 查询出版社表 各地区有多少个出版社
SELECT p.`p_address`,COUNT(p.`p_id`) FROM t_publish p GROUP BY p.`p_address`;
-- 3 查询出版社表 出版的书籍大于1 的出版社
SELECT p.`p_name`,COUNT(b.`book_id`) FROM t_publish p,t_book b
WHERE p.`p_id`=b.`p_id`
GROUP BY p.`p_address`
HAVING COUNT(b.`book_id`)>1;
-- 4 找出出版时间最早的书籍
SELECT b.`book_name`,b.`book_date` FROM t_book b WHERE b.`book_date`=(SELECT MIN(b2.`book_date`) FROM t_book b2);