emp

sql中筛选第一条记录【分组排序】

末鹿安然 提交于 2019-12-08 14:49:25
问题描述 我们现在有一张表titles,共有4个字段,分别是emp_no(员工编号),title(职位),from_date(起始时间),to_date(结束时间),记录的是员工在某个时间段内职位名称,因为会存在升职,转岗之类的,里面emp_no可能会对应多个职位,我们现在要取到所有员工最近的职位信息,包括离职员工。 本文介绍两种方法去实现结果: 方法一 嵌套一个group by+max()子查询获取最近的职位信息。 思路 通过对emp_no分组取每个emp_no对应的最大的from_date; SELECT emp_no, max( from_date ) AS max_date FROM titles GROUP BY emp_no 结果如下: 通过查询出来的最大的from_date取筛选最近的的一条职位信息。 SELECT t.emp_no, t.title FROM titles t LEFT JOIN ( SELECT emp_no, max( from_date ) AS max_date FROM titles GROUP BY emp_no ) et ON t.emp_no = et.emp_no AND t.from_date = et.max_date 结果如下: 方法二 通过rank over partition by函数实现,这个目前是Oracle独有的函数

索引,索引的建立、修改、删除

China☆狼群 提交于 2019-12-07 16:45:59
索引 索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。下面给出建立索引的方法和要点。 §3.5.1 建立索引 1. CREATE INDEX命令语法: CREATE INDEX CREATE [unique] INDEX [user.]index ON [user.]table (column [ASC | DESC] [,column [ASC | DESC] ] ... ) [CLUSTER [scheam.]cluster] [INITRANS n] [MAXTRANS n] [PCTFREE n] [STORAGE storage] [TABLESPACE tablespace] [NO SORT] Advanced 其中: schema ORACLE模式,缺省即为当前帐户 index 索引名 table 创建索引的基表名 column 基表中的列名,一个索引最多有16列,long列、long raw 列不能建索引列 DESC、ASC 缺省为ASC即升序排序 CLUSTER 指定一个聚簇(Hash cluster不能建索引) INITRANS、MAXTRANS 指定初始和最大事务入口数 Tablespace 表空间名

SQL优化--使用分析函数

≡放荡痞女 提交于 2019-12-07 15:55:44
前段时间在 http://www.itput.net/ 看到 一篇文章, http://www.itpub.net/thread-1031306-1-4.html 提到一个SQL语句: 建立环境: create table t_emp(id numeric(10) ,name varchar(10), salary numeric(10,2)); 插入数据: insert into t_emp values(1,'jack',10000.50); insert into t_emp values(2,'jack2',8000.50); insert into t_emp values(3,'jack3',120000); insert into t_emp values(4,'jack4',5000); insert into t_emp values(5,'jack5',3000); 要求:取出t_emp表中salary列中第2高的人和倒数第2高的人SQL语句。用一条SQL语句取出来 一般的写法如下: select * from (select emp.*, row_number() over (order by salary asc) as rank from t_emp emp) t where rank=2 union all select * from (select

也议MySQL中隐式转换

China☆狼群 提交于 2019-12-06 20:52:37
1. 环境说明 blog地址: http://blog.csdn.net/hw_libo/article/details/39252427 RHEL 6.4 x86_64 + MySQL 5.6.19 测试表: MySQL [test]> show create table emp\G *************************** 1. row *************************** Table: emp Create Table: CREATE TABLE `emp` ( `EMPNO` int(11) NOT NULL, `ENAME` varchar(15) NOT NULL, `JOB` varchar(15) NOT NULL, `MGR` int(11) DEFAULT '0', `HIREDATE` timestamp NULL DEFAULT NULL, `SAL` int(20) DEFAULT '0', `COMM` int(11) DEFAULT '0', `DEPTNO` int(11) NOT NULL, PRIMARY KEY (`EMPNO`), KEY `idx_deptno` (`DEPTNO`), KEY `idx_sal` (`SAL`), KEY `idx_comm` (`COMM`), KEY `idx_ename

mysql的查询

喜夏-厌秋 提交于 2019-12-06 16:25:27
/********************************部门表dept********************************/ /*创建表*/ DROP TABLE IF EXISTS DEPT; CREATE TABLE DEPT( DEPTNO INT PRIMARY KEY, DNAME VARCHAR(14) , LOC VARCHAR(13) ); /*插入数据*/ INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'), (20,'RESEARCH','DALLAS'), (30,'SALES','CHICAGO'), (40,'OPERATIONS','BOSTON'); /*查询数据*/ SELECT * FROM DEPT; /********************************员工表emp********************************/ /*创建表*/ DROP TABLE IF EXISTS EMP; CREATE TABLE EMP( EMPNO INT PRIMARY KEY, ENAME VARCHAR(14) , JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL DECIMAL(7,2), COMM DECIMAL

数据库----mysql表的约束和查询

江枫思渺然 提交于 2019-12-06 16:16:30
一,mysql中表的约束   为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以 确保数据库中存储的数据正确、有效、相容。 约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: NOT NULL :非空约束,指定某列不能为空; 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 mysql> create table t12 (id int not null); Query OK, 0 rows affected (0.02 sec) mysql> select * from t12; Empty set (0.00 sec) mysql> desc t12; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int(11) | NO | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row

sql server查询(SELECT 简单)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 13:03:38
基本查询: 实例表 1 示例表 2 --部门表 3 4 create table dept( 5 6 deptno int primary key,--部门编号 7 8 dname nvarchar(30),--部门名 9 10 loc nvarchar(30)--地址 11 12 ); 13 14 15 16 --雇员表 17 18 create table emp( 19 20 empno int primary key,--雇员号 21 22 ename nvarchar(30),--员工姓名 23 24 job nvarchar(30),--雇员工作 25 26 mrg int,--雇员上级 27 28 hiredate datetime,--入职时间 29 30 sal numeric(10,2),--薪水 31 32 comm numeric(10,2),--奖金 33 34 deptno int foreign key references dept(deptno)--设置外键 35 36 ); 37 38 39 40 insert into dept values (10,'ACCOUNTING','NEW YORK'); 41 42 insert into dept values (20,'RESEARCH','DALLAS'); 43 44 insert

MySQL程序员篇-python

筅森魡賤 提交于 2019-12-06 11:11:40
连接数据库案例: import mysql.connector cnx = mysql.connector.connect(user='scott', password='tiger', host='127.0.0.1', database='employees') cnx.close() 或者 from mysql.connector import (connection) cnx = connection.MySQLConnection(user='scott', password='tiger', host='127.0.0.1', database='employees') 异常处理 import mysql.connector from mysql.connector import errorcode try: cnx = mysql.connector.connect(user='scott', database='testt') except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print("Something is wrong with your user name or password") elif err.errno ==

数据库入门

≯℡__Kan透↙ 提交于 2019-12-06 09:45:20
知识点 △用数据库的原因 1文件操作的复杂度 2同步 3并发处理 4安全 △数据库系统(DBS) 数据库(DB) + 数据库管理系统 (DBS)+ 数据库应用程序 + 数据库管理员 (BDA)+ 最终用户 △数据库管理系统-DBM 网络应用服务端 我们要使用服务端的数据 - 需要有一个客户端 客户端可以自己写 : 未来写代码的时候 也可以用别人写好的 : 第三方的工具 数据库管理软件的公司出版的官方客户端 数据库管理系统本质上也是管理一堆文件 只不过人家的管理方式比我们更高效 更安全 △数据库管理员-DBA 搭建数据库服务环境 用户的创建 权限的管理 性能\语句的优化 数据库的二次开发 : 让数据库具有公司的特质 △软件 mysql : 小公司 甲骨文 oracle : 事业单位 金融企业 微软 sql server sqllite △数据库的分类 关系型数据库 mysql oracle sqlserver sqllite 非关系型数据库 redis mongodb memcache hbase 关系型数据库 优点: 1、易于维护:都是使用表结构,格式一致 2、使用方便:SQL语言通用,可用于复杂查询 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询 缺点: 1、读写性能比较差,尤其是海量数据的高效率读写 2、固定的表结构,灵活度稍欠 3、高并发读写需求

SpringBoot---web开发

情到浓时终转凉″ 提交于 2019-12-06 06:21:00
1、简介 使用SpringBoot; 1)、创建SpringBoot应用,选中我们需要的模块; 2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3)、自己编写业务代码; 自动配置原理? 这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx xxxxAutoConfiguration:帮我们给容器中自动配置组件; xxxxProperties:配置类来封装配置文件的内容; 2、SpringBoot对静态资源的映射规则 @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) public class ResourceProperties implements ResourceLoaderAware { //可以设置和静态资源有关的参数,缓存时间等 WebMvcAuotConfiguration: @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default