素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等
CREATE TABLE `worker` (
?`部门号` int(11) NOT NULL,
?`职工号` int(11) NOT NULL,
?`工作时间` date NOT NULL,
?`工资` float(8,2) NOT NULL,
?`政治面貌` varchar(10) NOT NULL DEFAULT '群众',
?`姓名` varchar(20) NOT NULL,
?`出生日期` date NOT NULL,
?PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `worker` (
?`部门号` int(11) NOT NULL,
?`职工号` int(11) NOT NULL,
?`工作时间` date NOT NULL,
?`工资` float(8,2) NOT NULL,
?`政治面貌` varchar(10) NOT NULL DEFAULT '群众',
?`姓名` varchar(20) NOT NULL,
?`出生日期` date NOT NULL,
?PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');
select * from worker;
select distinct 部门号 from worker;
select count(*) as 职工人数 from worker;
select min(工资),max(工资) from worker;
select avg(工资) as 平均工资 from worker;
creat table `工作日期表` as select `职工号`,`姓名`,`工作时间` as `参加工作` from `worker`;
select * from `工作日期表`;
这里创建表可以从头开始,但是我直接利用复制旧表有的属性,没有的可以增加或者更改旧表有的属性;
alter table worker add 性别 varchar(10);
update worker set 性别='男' where 部门号=101;
update worker set 性别='女' where 部门号=102;
select 姓名,timestampdiff(year,出生日期,curdate()) as 年龄 from worker where 性别="女";
select 职工号,姓名,出生日期 from worker where 姓名 like '刘%';
表中没有姓刘的职工;
select 姓名, 出生日期 from worker where year(出生日期)<1960;
select 姓名 from worker where 工资 between 1000 and 2000;
select 姓名 from worker where 姓名 like '陈%' or 姓名 like '李%';
select 职工号,姓名,政治面貌 from worker where 部门号 in (102,103);
select * from worker order by 出生日期 asc;
SELECT 职工号,姓名 FROM worker ORDER BY 工资 DESC LIMIT 3;
SELECT 部门号,COUNT(*) AS 党员人数 FROM worker WHERE 政治面貌 = "党员" GROUP BY 部门号;
SELECT 部门号,SUM(工资) AS 总工资,AVG(工资) AS 平均工资 FROM worker GROUP BY 部门号;
SELECT 部门号,COUNT(*) AS 总人数 FROM worker GROUP BY 部门号 HAVING COUNT(*) >=4;