JAVA入门到精通-第62讲-复杂查询

每个部门的平均工资是不一样的;

--from子句中使用查询

分析:

1.首先要知道各个部门的平均工资

select  avg(sal), deptno from emp group by deptno

2.把上面的查询结果当做一个临时表对待

两张表,sal进行比较

tem 临时表

 

tem表和emp表关联起来:

给所在部门的平均工资取别名 myavg

不给子查询取别名,会访问不到需要的字段;

--top ID *

top 取5到10个

top 后面的数表示要取出几条记录;

top挑出6条,从emp表来,编号不能在xxx里面 not in

排除不要的4个人,排除前4个人;

top查询:

100万条记录,1-2秒钟可以出结果

identity(1, 1)表示该字段testID字段自增长,从1,每次+1

通过这条语句进行疯狂地复制,用于压力测试;

insert into test (testName, testpass)

           select  testName, testpass 

            from   test;

比如用于邮件服务器的压力测试;

 

字段越多,速度越慢;上百万的数据,分页查询,越到最后,速度越慢;

--如何删除一张表中的重复记录

 1.select  distinct  *  into  #temp3 from  cat

 2.delete  from  cat

  3.insert  into  cat  select  * from  #temp3

  4.drop  table #temp3

1.把cat表的记录distinct后的结果放入到临时表#temp3中

2.把cat表的记录清空

3.把#temp表的数据(没有重复的记录),插入到cat表中 ;

4.删除临时表#temp3

--左外连接和右外连接

-要求没有上级的人名字也要显示出来null

 left  join 左外连

 where换成on

select  w.ename, b.ename

from  emp  w left join  emp  b on  w.mgr=b.empno

左外连接:

指左边的表的记录全部显示,

如果 没有匹配的记录就用null填

emp   w 表的记录全部出现;

--内连接:只有匹配上的才会出现

inner  join xx  on

--左外连接和右外连接

--思考题:显示公司每个员工和他的上级领导的名字

--内连接的处理方式(内连接只显示匹配的信息)

select worker.ename"员工名字",boss.ename"领导名字" from emp
worker,emp boss where worker.mgr=boss.empno

--思考题:显示公司每个员工和他的上级领导的名字,没有上级领导的也要显示出来

--左外连接:指如果左边的表记录全部显示,如果没有匹配的记录,就用null填写

select worker.ename"员工名字",boss.ename"领导名字" from emp
worker left join emp boss on worker.mgr=boss.empno

--右外连接:指如果右边的表记录全部显示,如果没有匹配的记录,就用null填写

select worker.ename"员工名字",boss.ename"领导名字" from emp
worker right join emp boss on worker.mgr=boss.empno

原文地址:https://www.cnblogs.com/xuxaut-558/p/10035752.html

时间: 2024-10-12 20:24:49

JAVA入门到精通-第62讲-复杂查询的相关文章

JAVA入门到精通-第61讲-复杂查询

--笛卡尔积: 不带任何条件会出现笛卡尔积: SQL是从右向左执行: 从右挑选一个条件和左边的表的每一条记录进行匹配: 这时,只会保留你需要的记录:其他记录会被删除:   找到关联,会再次拆选,再次筛选: emp.deptno=dept.deptno 否则,会出现笛卡尔集: --如果两张表都有相同名字的字段,则需要带表名(别名) from 后面取表的别名: select  ?, ?, ? from  emp, dept where --自连接(同一张表上的连接查询) 把自个儿的名字显示出来?  

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

JAVA入门到精通-第31讲-常见组件

面板组件-Jpanel  一个JFrame,多个JPanel: JPanel默认是流布局:FlowLayout:  通过JPanel达到复杂布局的目的:  可以认为是网格布局,有3个JPanel:2个Label:2个按钮: 一个密码框和一个文本输入框:   最终展现出来的还是靠JFrame展现的  网格布局好点,3个JPanel,用流布局,控件往里加: ButtonGroup按钮组:一组里面只能选择一个:    对单选框管理,就是把它加入到ButtonGroup里面: 单选框也是一个个放进JPa

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================

JAVA入门到精通-第32讲-swing编程实战

 JBorderLayout,左边是JList,拆分窗格: 图片是放在JLabel上的,图片的地址写好就行:  在相关项目下面建立一个文件夹Folder,放置图片:或者复制粘贴:   拆分:水平拆分?垂直拆分?    拆分之后把jList和jl1这两个组件放进去: 可以伸缩:  在窗口左上角出现自己的图标? Border布局: 多行文本框带滚动条,聊天窗口可滚动:   加入QQ左上角图标:      转成图片,getImage; Border布局很有用, CENTER会被自动挤满:  QQ号码.

JAVA入门到精通-第36讲-事件监听-坦克大战4

Java事件处理机制:  事件源:事件:事件监听者:事件处理方法:  任何一个类,只要实现了相应的接口,就可以去监听某个事件源: 一个类要实现监听的基本步骤:  a.实现相应的接口[KeyListener,MouseListener,ActionListener,WindowListener] b.把接口的处理方法根据需要重新编写(override) c.在事件源注册监听 d.事件传递是靠事件对象 通过ActionEvent传递事件: 通过事件进行委派事件模型进行事件处理:  一个事件源可能会生

JAVA入门到精通-第35讲-事件处理-坦克大战3

画出弧形: g.drawArc: 前两个参数:代表中心点,后面代表宽,高,后面是弧度的大小:  50代表弧度,后面方向:    SWING编程三个部分: (1)组件和布局管理器: (2)绘图技术: (3)事件处理机制:  鼠标,键盘按下的某个按钮或者移动等都是事件: JAVA认为,消息是一种事件对象:事件监听者也是一个类: 事件监听者中有函数或者方法专门去处理事件: import  java.awt.Event.*; 需要对事件进行处理,把Event包带进去:  Border布局中间是 默认的:

JAVA入门到精通-第70讲-学生管理系统2-增删改

-完成一个mini版本学生管理系统 jude软件:很好使的,安装一下就可以用了: -学生管理系统的添加 .修改.删除.上下页分页 ---------------------------------------------- 上面是一个流布局,JPanel 下面是一个流布局,JPanel 中间是Border布局,边界布局,CENTER JTextField jtf; 先加JLable--->Jtf文本域->JButton按钮 ------------------------- mis 系统:信息