emp

数据库SQL实战(牛客网):查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次

不问归期 提交于 2020-02-19 23:15:55
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t CREATE TABLE salaries ( emp_no int(11) NOT NULL, salary int(11) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY ( emp_no , from_date )); select emp_no , count ( emp_no ) as t from salaries group by emp_no having t > 15 ; 1、用COUNT()函数和GROUP BY语句可以统计同一emp_no值的记录条数 2、根据题意,输出的涨幅次数为t,故用AS语句将COUNT(emp_no)的值转换为t 3、由于COUNT()函数不可用于WHERE语句中,故使用HAVING语句来限定t>15的条件 4、最后存在一个理解误区,涨幅超过15次,salaries中相应的记录数应该超过16(从第2条记录开始算作第1次涨幅),不过题目为了简单起见,将第1条记录当作第1次涨幅,所以令t>15即可 /** 注意: 严格来说,下一条salary高于本条才算涨幅,但本题只要出现了一条记录就算一次涨幅,salary相同可以理解为涨幅为0,salary变少理解为涨幅为负 **/ 来源:

spring hibernate 注解 方式 使用 HibernateTemplate 实现crud 模糊查询

冷暖自知 提交于 2020-02-19 11:47:01
在这里插入代码片 javabean package wlt.net.vo; import java.io.Serializable; import java.util.Date; import javax.persistence.Entity; @Entity public class Student implements Serializable { private int emp_id; private String emp_name; private String emp_der; private int emp_age; private Date emp_date; private String emp_address; public int getEmp_id() { return emp_id; } public void setEmp_id(int empId) { emp_id = empId; } public String getEmp_name() { return emp_name; } public void setEmp_name(String empName) { emp_name = empName; } public String getEmp_der() { return emp_der; } public void setEmp_der

多表查询(重点)

好久不见. 提交于 2020-02-19 08:45:43
在之前查询之中  from  子句之后只有一个数据表,所谓的多表查询是同时从多张数据表中取出数据实现查询 COUNT(*)统计一个表格的数据量 SELECT COUNT(*) FROM EMP ; 将emp和dept表多表查询 如果使用这样的语句查询: SELECT * FROM EMP ,DEPT ; 这样查出的是 emp*dept的表格 所以要这样: SELECT * FROM EMP ,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO ; 虽然消除了笛卡尔积,但是笛卡尔积依然存在 如果表格名称过长,往往会为其定义一个别名, SELECT * FROM EMP E ,DEPT D WHERE E.DEPTNO = D.DEPTNO ; 范例, 1.要求查出每个雇员的编号,名字,职位,工资,部门,部门名称   -选择数据表     emp表,dept表。   -确定已知的关联条件     雇员和部门关联  emp.deptno = dept.deptno ; 第一步,查询每个雇员的编号。。。。 SELECT e.empno, e.ename ,e.job ,e.deptno FROM emp e ; 第二步,加入部门表,要增加消除笛卡尔积的条件: SELECT e.empno, e.ename ,e.job ,e.deptno ,d.dname,d.loc

(数据库)12_创建和管理表

喜夏-厌秋 提交于 2020-02-19 05:15:59
12_创建和管理表 一、常见的数据库对象 二、Oracle 数据库中的表 1.查询数据字典 三、表的命名规则 四、表空间 五、CREATE TABLE 语句 1.创建表 2.数据类型 3.使用子查询创建表 六、ALTER TABLE 语句 1.使用 ALTER TABLE 语句追加, 修改, 或删除列的语法 2.实例 七、删除表 八、清空表 九、改变对象的名称 总 结 目标 描述主要的数据库对象 创建表 描述各种数据类型 修改表的定义 删除,重命名和清空表 一、常见的数据库对象 二、Oracle 数据库中的表 ①用户定义的表: 用户自己创建并维护的一组表 包含了用户所需的信息 如:SELECT * FROM user_tables;查看用户创建的表 ②数据字典: 由 Oracle Server 自动创建的一组表 包含数据库信息 1.查询数据字典 查看当前用户的所定义的表: SELECT * FROM user_tables 查看用户定义的各种数据库对象: --查询用户所定义的数据库对象类型 SELECT DISTINCT object_type FROM user_objects ; 查看用户定义的表, 视图, 同义词和序列: --查看用户定义的表, 视图, 同义词和序列 SELECT * FROM user_catalog 三、表的命名规则 表名和列名: 必须以 字母开头 必须在

oracle中将同一组的数据拼接(转)

放肆的年华 提交于 2020-02-18 14:52:46
需要用wm_concat函数来实现。 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ename) from emp group by deptno; 查询结果: 转 https://www.cnblogs.com/muhy/p/10558107.html 需要用wm_concat函数来实现。 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ename) from emp group by deptno; 查询结果: 转 https://www.cnblogs.com/muhy/p/10558107.html 来源: https://www.cnblogs.com/ZJ0065/p/12326087.html

ORACLE SEQUENCE 介绍

醉酒当歌 提交于 2020-02-18 09:09:55
在oracle中sequence就是所谓的序列号,每次取的时候它会自己主动添加�,一般用在须要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1開始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; 一旦定义了emp_sequence,你就能够用CURRVAL,NEXTVAL CURRVAL=返回 sequence的当前值 NEXTVAL=添加�sequence的值,然后返回 sequence 值 比方: emp_sequence.CURRVAL emp_sequence.NEXTVAL 能够使用sequence的地方: - 不包括子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 - NSERT语句的VALUES中 - UPDATE 的 SET中 能够看例如以下样例: INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

必备Mysql命令

百般思念 提交于 2020-02-15 22:25:12
文章来源:https://macrozheng.github.io/mall-learning/#/reference/mysql 开发者必备Mysql命令 开发者必备Mysql常用命令,涵盖了数据定义语句、数据操纵语句及数据控制语句,基于Mysql5.7。 数据定义语句(DDL) 数据库操作 登录数据库: mysql -uroot -proot 创建数据库: create database test 查看所有数据库: show databases 选择数据库并使用: use test 查看所有数据表: show tables 删除数据库: drop database test 表操作 创建表: create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2)) create table dept(deptno int(2),deptname varchar(10)) 查看表的定义: desc emp 查看表定义(详细): show create table emp \G 删除表: drop table emp 修改表字段: alter table emp modify ename varchar(20) 添加表字段: alter table emp add column age int

oracle提高查询效率的34条方法

帅比萌擦擦* 提交于 2020-02-15 09:36:04
oracle提高查询效率的34条方法 1、选择最有效率的表名顺序   (只在基于规则的优化器中有效):   ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 2、WHERE子句中的连接顺序   ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT子句中避免使用 " * "   ORACLE在解析的过程中, 会将"*" 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 4、减少访问数据库的次数   ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; 5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数   可以增加每次数据库访问的检索数据量 ,建议值为200 6、使用DECODE函数来减少处理时间  

JDBC工具包使用

雨燕双飞 提交于 2020-02-14 14:04:12
数据库结构图: 第一种组合 :   只有官方驱动 mysql-connector-java-5.1.13-bin.jar 包结构: 代码:简单实现增删改查 可以自己做一个配置文件工具包,见上一篇文章 1 package com.jdbc.onlyconnector; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.Scanner; 9 10 import org.junit.Test; 11 12 public class ConnectorTest { 13 @Test 14 public void test01() throws ClassNotFoundException, SQLException { 15 //jdbc四大参数,driver的全限命名,url,user,password 16 String driverClassName = "com.mysql.jdbc.Driver"; 17 String url = "Jdbc:mysql:/

Mysql表连接

浪子不回头ぞ 提交于 2020-02-14 12:32:26
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。 从大类上分,表连接分为内连接和外连接,它们之间的最主要区别是內连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。我们最常用的是内连接。 例如:查询出所有雇员的名字和所在部门名称,因为雇员名称和部门分别存放在表emp 和dept 中,因此,需要使用表连接来进行查询: select ename,deptname from emp,dept where emp.deptno=dept.deptno; ename是表emp里的字段 deptname是表dept里的字段 条件表示查出表emp和表dept里deptno相同的记录 再连接成一条记录,从这记录里查出ename和deptname字段 外连接有分为左连接和右连接,具体定义如下: 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录 左连接:select ename,deptname from emp left join dept on emp.deptno=dept.deptno;右连接:select ename,deptname from dept right join emp on dept.deptno=emp.deptno; 这两个查出来是一模一样的记录