Day18——数据库编程
员工表emp:员工编号,姓名,工作职位,雇佣日期,工资,奖金,部门
部门表dept:部门编号,名称,部门领导

员工数据:
1001,’张三’,’销售’,’1999-12-1’,3000.0,1100.0,’102’
1002,’李四’,’研发员’,’1998-2-11’,3500.0,null,’101’
1003,’王五’,’研发员’,’2001-1-15’,4000.0,null,’101’
1004,’赵六’,’美工’,’2001-12-1’,4000.0,null,’101’
1005,’武六奇’,’研发员’,’2001-7-1’,5500.0,null,’101’
1006,’齐八九’,’销售’,’2001-6-16’,3000.0,1500.0,’102’
1007,’钱多多’,’经理’,’2009-11-10’,6500.0,2000.0,’102’
1008,’张一一’,’销售’,’2007-12-10’,3800.0,1000.0,’102’
1009,’李丽丽’,’研发员’,’1999-8-19’,4500.0,null,’101’
1010,’王旺旺’,’销售’,’1999-9-1’,3600.0,1600.0,’102’
1011,’赵有才’,’经理’,’1999-4-30’,7000.0,1800.0,’101’
1012,’李雷’,’出纳’,’2007-10-10’,5000.0,500.0,’103’
1013,’韩梅’,’会计’,’2005-3-1’,6600.0,1000.0,’103’
1014,’张向阳’,’经理’,’2002-6-1’,7000.0,1500.0,’103’
1015,’李向东’,’销售’,’2004-5-1’,4300.0,1000.0,’102’

部门数据:
‘101’,’研发部’,1007
‘102’,’销售部’,1011
‘103’,’财务部’,1014

1、查询员工姓名及所做工作

SELECT ename,title FROM emp;

2、查询员工姓名及年薪

SELECT ename,salary*12 AS '年薪' FROM emp;

3、查询工资大于4000的员工信息

SELECT * FROM emp WHERE salary>4000;

4、查询年薪大于20000的员工信息

SELECT * FROM emp WHERE salary*12>20000;

5、查询没有奖金的员工

SELECT eid,ename,bonus FROM emp WHERE bonus IS NULL;

6、查询工资大于3000同时有奖金的员工信息

SELECT * FROM emp WHERE salary>2000 AND bonus IS NOT NULL;

7、查询工资大于3500但是小于5000的员工信息

SELECT * FROM emp WHERE salary BETWEEN 3500 AND 5000;

8、查询编号是1001、1003、1004的员工信息

SELECT * FROM emp WHERE eid IN(1001,1003,1004);

9、查询编号不是1001、1003、1004的员工信息

SELECT * FROM emp WHERE eid NOT IN(1001,1003,1004);

10、查询员工姓名是3个字的员工信息

SELECT  * FROM emp WHERE ename LIKE'___';

11、查询姓张的员工信息

SELECT * FROM emp WHERE ename LIKE'张%';

12、查询出在99年雇佣的员工信息

SELECT * FROM emp WHERE hiretime LIKE'%999%';

13、查询出员工工资没有包含6和8的员工信息

SELECT * FROM emp WHERE salary NOT LIKE'%6%'AND SALARY NOT LIKE'%8%';

14、按照工资由高到低查询员工信息

SELECT * FROM emp ORDER BY salary desc;

15、要求查询出101部门的所有雇员信息,查询的信息按照工资由高到低排序,如果工资相等,则按照雇佣日期由早到晚排序。

SELECT * FROM emp WHERE depart='101' ORDER BY salary DESC,hire ASC;

16、查询101部门有多少员工,每月发多少工资

SELECT depart,COUNT(eid) AS '员工数',AVG(salary) AS '平均工资'
FROM emp WHERE depart=101 GROUP BY depart;

17、查询101部门的所有员工信息,并显示所在部门名称

SELECT emp.eid,ename,title,hiretime,salary,bonus,depart,dept.dname AS '部门名称'
FROM emp,dept
WHERE emp.depart=dept.did;

18、查询1001员工的部门领导信息

SELECT * FROM emp WHERE eid=(SELECT leader FROM deptWHERE did='101' );

19、查询部门员工数量,平均工资,最低工资及最低工资的员工姓名

SELECT depart,COUNT(eid)'员工数量',AVG(salary)'平均工资',MIN(salary)'最低工资',ename
FROM emp GROUP BY depart;

20、查询所有部门领导的信息,并统计领导的员工数量及总工资,统计中不包含领导及领导的工资

SELECT * FROM emp WHERE EXISTS(SELECT * FROM dept WHERE leader=emp.eid AND leader!=0);
SELECT depart,COUNT(eid)'员工数量',SUM(salary)'总工资' FROM emp GROUP BY depart;

经过夜里一位高人指点,得以领悟,修改如下:

SELECT l.*,c.num,c.工资 FROM(SELECT e.* FROM emp e INNER JOIN dept d ON e.eid = d.leader) lINNER JOIN (SELECT depart,COUNT(IF(title='经理',null,salary)) AS num,SUM(IF(title='经理',0,salary)) AS '工资' FROM emp GROUP BY depart)c ON l.depart = c.depart;

代码部分

我在eclipse里没有显示,把表创建完之后在MySQL的unicode里操作,都出结果了。
最后一题我分开查有结果,还没想出合为一句的方法,如果您有解决方案,敬请指教。

//连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class WorkJDBC {public static void main(String[] args) {connSQLServer();}public static void connSQLServer() {String url = "jdbc:mysql://localhost:3306/student";//连接数据库的地址String user = "root";String password = "1234";try {Class.forName("com.mysql.jdbc.Driver");// 数据库厂家提供的驱动程序,就是一个实现了jdbc标准的类Connection conn = DriverManager.getConnection(url, user, password);System.out.println(conn);// String sql = "create table emp(eid int,ename char(40),title// varchar(20)," + "hiretime date,salary float,bonus float,depart varchar(10))";//创建emp表// String sql = "create table dept(did varchar(10),dnamechar(40),leader int);";//创建dept表//添加员工表的数据String sql = "insert into emp(eid,ename,title,hiretime,salary,bonus,depart) values"+ "(1001,'张三','销售','1999-12-1',3000.0,1100.0,'102'),"+ "(1002,'李四','研发员','1998-02-11',3500.0,null,'101'),"+ "(1003,'王五','研发员','2001-01-15',4000.0,null,'101'),"+ "(1004,'赵六','美工','2001-12-1',4000.0,null,'101'),"+ "(1005,'武六奇','研发员','2001-7-1',5500.0,null,'101'),"+ "(1006,'齐八九','销售','2001-6-16',3000.0,1500.0,'102'),"+ "(1007,'钱多多','经理','2009-11-10',6500.0,2000.0,'102'),"+ "(1008,'张一一','销售','2007-12-10',3800.0,1000.0,'102'),"+ "(1009,'李丽丽','研发员','1999-8-19',4500.0,null,'101'),"+ "(1010,'王旺旺','销售','1999-9-1',3600.0,1600.0,'102'),"+ "(1011,'赵有才','经理','1999-4-30',7000.0,1800.0,'101'),"+ "(1012,'李雷','出纳','2007-10-10',5000.0,500.0,'103'),"+ "(1013,'韩梅','会计','2005-3-1',6600.0,1000.0,'103'),"+ "(1014,'张向阳','经理','2002-6-1',7000.0,1500.0,'103'),"+ "(1015,'李向东','销售','2004-5-1',4300.0,1000.0,'102')";//添加部门表的数据// String sql="insert into dept(did,dname,leader) values"// + "('101','研发部',1007),"// + "('102','销售部',1011),"// + "('103','财务部',1014);";// String sql="SELECT ename,title FROM emp;";Statement st = conn.createStatement();boolean b = st.execute(sql);st.close();conn.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
} 

Java——MySQL数据库编程练习相关推荐

  1. java mysql数据库编程_java JDBC数据库(mysql)编程

    什么是JDBC • JDBC(Java Data Base Connectivity,Java数据库连接) • 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问 • 它由一组用 ...

  2. Java的数据库编程之入门案例

    通过上一篇博客Java的数据库编程之背景概述,可以得出: 1.JDBC API与驱动器管理器是有SUN公司制定并退出的: 2.每个数据库的驱动器程序是由每个数据库开发商以及数据库工具开发商在遵循SUN ...

  3. 【Java】数据库编程

    Java中数据库编程是通过JDBC实现的.使用JDBC技术涉及三种不同的角色:Java官方,开发人员和数据库厂商.如下图所示: Java官方提供JDBC接口,如:Connection,Statemen ...

  4. MySQL数据库实训题_实训六 MySql数据库编程练习

    实训六MySql数据库编程练习 一.实训目的 1.掌握Mysql数据库.Navicat  for Mysql等软件的安装配置方法. 2.掌握使用JDBC驱动程序连接MySql数据库的使用方法. 3.掌 ...

  5. JAVA实现数据库编程第三章_[数据库]使用Java实现数据库编程—03 第三章 高级查询(一)...

    [数据库]使用Java实现数据库编程-03 第三章 高级查询(一) 0 2018-07-21 03:01:10 1.修改表:(1)修改表名语法: ALTER TABLE RENAME [ TO ] : ...

  6. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

  7. mysql 数据库编程_MySQL数据库编程(C++语言)

    MySQL数据库编程(C++语言) 发布时间:2018-05-24 21:06, 浏览次数:452 , 标签: MySQL 本文主要介绍使用C++语言连接和操作 MySQL 数据库的方法. 1. 准备 ...

  8. 有关数据库MySQL的演讲_有关Mysql数据库编程的文章推荐10篇

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  9. mysql数据库编程题题_mysql数据库编程题测试

    <mysql数据库编程题测试>由会员分享,可在线阅读,更多相关<mysql数据库编程题测试(3页珍藏版)>请在人人文库网上搜索. 1.1.自行创建测试数据2.查询"生 ...

最新文章

  1. php error_reporting 详解
  2. java 获取第一帧_java获取视频的第一帧
  3. URAL 1993 This cheeseburger you don't need 模拟题
  4. python的turtle怎么设置rgb颜色_Python : turtle色彩控制实例详解
  5. 华为云服务器自己维护吗,云服务器要维护吗
  6. 彻底搞清楚浏览器渲染过程
  7. python读取日志统计ip_如何通过命令行统计和排列访问日志里的ip数
  8. 2020蓝桥杯省赛---java---B---6(分类计数)
  9. 学习基础和C语言基础调查
  10. 【Python CheckiO 题解】Speech Module
  11. Cgroup 好文集合
  12. 带有审图号的区位图制作
  13. 颇有微词 小模式 大蓝海 by 曹继忠 - 2013中国SEO排行榜
  14. 产品管理工作的文档管理
  15. 这月到手的工资多了没?
  16. Hadoop入门之命令参考
  17. PR剪辑视频工作流程 大剪辑师分享的高级视频编辑技巧
  18. response下载zip文件
  19. Win10卸载edge浏览器与后悔重装
  20. 【渝粤教育】21秋期末考试招投标与合同管理10217k2

热门文章

  1. hdu 1540 Tunnel Warfare(线段树区间合并)
  2. Power BI DAX函数学习:EARLIER
  3. Python 入门之元组与字典
  4. Biotin-PEG-Pyrene,Pyrene-PEG-Biotin,芘丁酸-PEG-生物素peg化芘衍生物
  5. 如何实现动态加载Javascript 文件模块
  6. 判断IE浏览器版本和Edge代码(js/javascript)
  7. JavaWeb - 获取访问者真实的 IP 地址(一)
  8. 启动Android项目时出现adb]* daemon not running; starting now at tcp:5037
  9. 生活随记-积极的生活态度
  10. WebStorm-2021安装教程