--  创建数据库
CREATE DATABASE book;
-- 创建作者表
CREATE TABLE authors(
Id int not NULL,	-- 作者编号
Fname VARCHAR(10), -- 姓
Lname VARCHAR(12), -- 名
Sex CHAR(2),	
Sage int 
);
-- 创建图书表
CREATE table titles(
tId int not NULL , -- 图书编号
tname VARCHAR(25) , -- 书名
type VARCHAR(25),
price int 
);
-- 添加数据

INSERT authors VALUES (001,'*','**','男',100), (002,'张','三丰','男',43),(003,'丰','丰田','男',23),(004,'郭','丰男','男',34),(005,'李','晓莉','女',22);
INSERT titles VALUES (001,'***语录','文学类',20),(002,'三丰秘籍','武术类',230),(003,'汽车维修宝典','商业类',55),(004,'大话古典文化','文学类',22),(005,'古诗词赏析','文学类',10);

-- 查询:authors
SELECT Lname FROM AUTHORS WHERE Lname LIKE '丰%';  -- 1、	列出以字母‘丰’开头的名;
SELECT Lname FROM AUTHORS WHERE Lname LIKE '%丰%'; -- 2、	列出包含‘丰’字符的名; 
SELECT Lname FROM AUTHORS WHERE Lname LIKE '%丰'; -- 3、	列出以‘丰’结尾的名。
SELECT COUNT(*) 30岁以上的作者的人数 FROM AUTHORS WHERE Sage>30; -- 4、	列出作者表中年龄在30岁以上的作者的人数。
SELECT COUNT(*) 男作者人数 FROM AUTHORS WHERE Sex ='男';-- 5、	列出男作者的人数。
 -- 6、	列出最小年龄的作者
SELECT Fname,Lname FROM AUTHORS WHERE Sage=(SELECT MIN(Sage) FROM AUTHORS)  -- ??怎么合并两个列名得数据成 一列显示

-- 查询 图书表
-- 统计‘商业类’图书的数量;
SELECT COUNT(*) 数量 FROM titles WHERE type = '商业类'
-- 2、	统计各类图书的平均价格。
SELECT AVG(price) FROM titles
-- 3、	统计‘商业类’图书的总价格;
SELECT sum(price) 数量 FROM titles WHERE type = '商业类'
-- 4、	列出‘商业类图书’中最贵的书;
SELECT tname FROM titles WHERE price = (SELECT max(price) FROM titles WHERE type = '商业类')



--  创建 部门表
CREATE TABLE department (
deptno VARCHAR(20),
deptname VARCHAR(20),
marno int  -- 部门经理编号
);
-- 添加数据
INSERT into department VALUES ('1122','财务部',105),('119','消防队',103),('315','消费者协会',104);

-- 创建 雇员表
CREATE TABLE employee(
empno int,
ename VARCHAR(20),
job VARCHAR(20),
deptno VARCHAR(20),
hiredate date,-- 入职时间
sal int ,-- 薪水
comm int-- 佣金
);
-- 添加数据
INSERT into employee VALUES (11221,'王五','经理','1122','1921-1-1',2500,1000),(1201,'医院张三','院长','120','1996-1-1',4700,2000),(1191,'消防队张三','队长','119','1981-1-1',1500,2000),(3151,'消费者协会张三','会长','315','1998-1-1',3500,154);
 
-- 1、	显示雇员名、部门编号、部门名称。(内联)
SELECT ename 雇员名, employee.deptno 部门编号,deptname 部门名称 FROM employee INNER JOIN  department ON employee.deptno = department.deptno
-- 2、	显示职务是经理的员工名、部门编号、部门名。(内联)
SELECT ename 员工, employee.deptno 部门编号,deptname 部门名称 FROM employee  INNER JOIN  department ON employee.deptno = department.deptno AND job = '经理';
-- 3、	显示在‘财务部’工作的员工名、工作、部门编号、部门名。(内联)
SELECT ename 员工, job 工作,deptname 部门名称 FROM employee  INNER JOIN  department ON employee.deptno = department.deptno AND deptname = '财务部';
-- 4、	显示员工名、员工编号和他们经理的经理编号,部门编号。(内联)
SELECT ename 员工, empno 员工编号,marno 经理编号,employee.deptno 部门编号 FROM employee  INNER JOIN  department ON employee.deptno = department.deptno;

-- 5、	显示不同部门的部门名、员工数,员工的平均薪水。(内联)
SELECT deptname 部门名 ,COUNT(ename) 员工数 ,sum(sal+comm) 薪水 FROM employee   INNER JOIN  department ON   employee.deptno = department.deptno
GROUP BY 部门名 ORDER BY 薪水 ;