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. Scala入门到精通——第二十九节 Scala数据库编程
  2. 白牌交换机有什么特点?与传统换机相比有什么特别之处?
  3. 全球及中国洗衣粉市场消费调查与营销策略分析报告2022版
  4. python获取指定端口流量_利用python获取nginx服务的ip以及流量统计信息
  5. 使用xsodata文件将SAP HANA CDS view暴露成OData服务
  6. 八、梯度下降法和拟牛顿法
  7. Python 画图常用点的形状,Matplotlib 设置参数marker的值 - o + - ★☆►◁ - 够用
  8. bizagi simulation 仿真学习
  9. JavaScript简介---JS基础
  10. asp.net学习之GridView
  11. 详解用backgroundImage解决图片轮播切换
  12. opencv 骨架提取_抗爆墙方盛提取车间抗爆墙记录@温州贴吧
  13. Oracle 触发器 判断
  14. 快手抖音短视频如何解析去除视频水印
  15. Neo.4j 使用总结
  16. 聪明好学的王强用计算机设计了,五年级语文下册期中试卷-(1)(1).doc
  17. 学习笔记,神经网络和反向传播
  18. iOS 镜头变焦,推近或者拉远焦距--ZOOM
  19. 如何实现标签元素在HTML页面中居中显示
  20. 【券商报告】固态电池行业深度:技术变革之路任重道远,长期利好锂、镍需求——附下载链接

热门文章

  1. Windows 磁盘分区后如何再合并如何用Windows自带工具扩大某个分区
  2. 如何解决Ubuntu无法识别USB设备
  3. hdu 3397 Sequence operation(线段树,lazy,区间合并)
  4. 青岛学计算机的中专,青岛中专学校有哪些
  5. 数据库schema 同步工具
  6. Jdbc--2--jdbc的使用,数据库schema和catalog介绍
  7. 团队项目:惊喜商城pc端
  8. python读取docx文件_Python读写docx文件
  9. TalkTalk公司泄密事件时间轴
  10. mysql存储过程PROCEDURE