emp

sql查询

蓝咒 提交于 2020-01-25 01:12:43
sql语法 select * 列名1,列名2... from 表名 【连接查询 内连接/左链接 on条件】 where 条件 子查询/in/exists/between...and... group by分组列1,分组列2... having 字句 可以对分组结果进行筛选 order by 拍序列1,拍序列2... 写sql语句的步骤 1、先确定从哪个表查询数据,是要从一个表查询还是从多个表查询,如果是多个表必须使用连接查询 2、确定是否需要分组查询 3、写where条件 4、写需要返回的列 连接查询 连接查询分内连接和外连接,外连接又分左外连接,右外连接,全连接 内连接 返回所有满足连接条件的记录 select * from 表1 inner join 表2 on 表1.外键=表2.主键 --查询所有有部门的员工的信息 select * from emp e inner join dept d on e.deptno=d.deptno; 左外连接返回左表的所有数据+右表匹配到的数据,如果左表匹配不到右表的数据,显示为null --查询所有员工信息,如果员工有部门信息,显示出来,否则不显示 select * from emp e left join dept d on e.deptno=d.deptno; 右外连接同左外连接 全连接返回左表的所有数据+右表的所有数据

数据库修仙之路2

眉间皱痕 提交于 2020-01-25 01:11:50
根据函数的返回结果,我们将函数分为单行函数和多行函数 单行函数 ( 一条记录返回一个结果 ) 日期函数 转换函数 ( 重点 ) 其他函数 ( 保证类型兼容 ) 多行函数( 组函数 . 聚合函数 ) ( 多条记录 返回一个结果 ( 重点 )) 1) 、 count : 统计记录数 count() -->* 或一个列名 2) 、 max min: 最大值 最小值 3) 、 sum :求和 4) 、 avg: 平 均值 分组 分组 : group by , 将符合条件的记录 进一步的分组 过滤组 :having , 过滤组信息 ,表达式 同 where 一致 行转列 一 : 单行函数 日期函数 --sysdate/current_date 以 date 类型返回当前的日期 select sysdate from dual; select current_date from dual; --2 天以后的日期 select sysdate+2 from dual; -- 员工入职时候 3 天后的时间 select hiredate+3 from emp; -- 每个员工的转正日期 3 个月转正 select hiredate 入职日期 ,hiredate+ 30*3 转正日期 from emp; -- 月份只差 add_months(date, 月个数 ) select hiredate

函数之sql语句

女生的网名这么多〃 提交于 2020-01-25 01:11:17
1 函数 1.1 函数 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。 函数 根据处理的数据分为单行函数和聚合函数( 组 函数) 组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的 having 子句 单行函数对单个数值进行操作,并返回一个值。 dual 是 一个系统表。注意 用于 测试。 1.2 字符 相关 -- dual用于测试 select * from dual; -- 1.字符串连接 select concat('aa','12') from dual; select 'aa'||'12' from dual; -- 2.首字母大写 select initcap('abc') from dual; --- 把大写转化小写 select lower('ABc') from dual; select upper('abc') from dual; -- 把所有员工的姓名小写输出 select lower(e.ename),e.empno from emp e -- 3.填充字符lpad/rpad select lpad('sxt',5,'*') from dual; select rpad('sxt',5,'*') from dual; -- 4.去掉空白字符

数据结构与算法之哈希表

…衆ロ難τιáo~ 提交于 2020-01-24 15:59:16
哈希表 google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址…),当输入该员工的id时,要求查找到该员工的 所有信息. 要求: 不使用数据库,速度越快越好=>哈希表(散列) 添加时,保证按照id从低到高插入 (实际上就是叫我们创建链表数组) 代码实现 package hashtab ; import java . util . Scanner ; public class HashTabDemo { public static void main ( String [ ] args ) { // 创建哈希表 HashTab hashTab = new HashTab ( 7 ) ; // 写一个简单菜单 String key = "" ; Scanner scanner = new Scanner ( System . in ) ; while ( true ) { System . out . println ( "add: 添加雇员" ) ; System . out . println ( "list: 显示雇员" ) ; System . out . println ( "find: 查找雇员" ) ; System . out . println ( "del: 删除雇员" ) ; System . out

Oracle+SQL优化第二弹

◇◆丶佛笑我妖孽 提交于 2020-01-22 20:59:54
SQL 语句性能优化(未完待续) 要使 Oracle SQL 语句具有最优的性能,需要从多方面进行优化,下面分别进行说明。 1 选用合适的 ORACLE 优化器 ORACLE 的优化器共有 3 种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对 init.ora 文件中 OPTIMIZER_MODE 参数的各种声明,如 RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在 SQL 句级或是会话(session)级对 其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行 analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性. 如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过 analyze 命令有关. 如果 table 已经被 analyze 过, 优化器模式将自动成为 CBO , 反之,数据库将采用 RULE 形式的优化器. 在缺省情况下,ORACLE 采用 CHOOSE 优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用 CHOOSE 优化器,而直接采用基于规则或者基于成本的优化器.

SQL学习笔记1

梦想的初衷 提交于 2020-01-22 04:03:30
sql知识点学习 1.month_between ---------month_between------- select months_between ( sysdate , to_date ( '20190920' , 'yyyy-mm-dd' ) ) from dual ; select add_months ( sysdate , 2 ) from dual ; select Next_day ( sysdate , '星期三' ) from dual ; select last_day ( sysdate ) from dual ; select last_day ( to_date ( '20190803' , 'yyyy-mm-dd' ) ) from dual ; select to_char ( sysdate , 'yyyy' ) from dual ; select to_char ( sysdate , 'yyyy-mm-dd' ) from dual ; select to_char ( sal , 'L999,999,999' ) from emp ; select to_char ( sysdate , 'D' ) from dual ; --//返回星期 Select to_date ( '20090210' , 'yyyyMMdd' ) from

04.综合案例一【员工信息管理】

我与影子孤独终老i 提交于 2020-01-20 15:08:44
""" 需求:员工管理系统 功能: 1.添加员工信息 2.删除员工信息 3.修改员工信息 4.查看单个员工信息 5.查看所有员工信息 6.退出 技术:函数、数据类型(字典列表)、循环、条件语句 """ emps = [] # [{},{}] def chocieFunc(): """选择功能列表""" print("*" * 30) print("1.添加员工信息") print("2.删除员工信息") print("3.修改员工信息") print("4.查看单个员工信息") print("5.查看所有员工信息") print("6.退出") print("*" * 30) def addEmp(): """添加员工信息""" id = input("请输入要添加的员工编号:") name = input("请输入要添加的员工姓名:") gender = input("请输入要添加的员工性别:") age = input("请输入要添加的员工年龄:") emp = {"id": id, "name": name, "gender": gender, "age": age} emps.append(emp) print("添加OK!") def delEmp(): """删除员工信息""" id = input("请输入要删除的员工编号:") for emp in emps: if

MySQL的查询操作

和自甴很熟 提交于 2020-01-19 14:33:52
1.子查询 1. 将查询的结果集当做一张表再次进行查询[自连接查询] 查询每个员工的编号,姓名和其上司的编号姓名 select empno,ename,mgr from emp; select empno,ename from emp; select * from (select empno,ename,mgr from emp) a,(select empno,ename from emp) b; 如果从两张表或者两个结果集中取数据,一定需要等值条件,否则就会出现笛卡尔积 select * from a,b; 加上等值条件 select * from (select empno,ename,mgr from emp) a,(select empno,ename from emp) b where a.mgr=b.empno; select a.*,b.ename from (select empno,ename,mgr from emp) a,(select empno,ename from emp) b where a.mgr=b.empno; select empno,ename,mgr m ,(select ename from emp where empno=m) man from emp; 2..将查询的结果作为一个字段[只能返回一行数据] select empno

MySQL中的常用函数

為{幸葍}努か 提交于 2020-01-19 14:28:21
1.字符串函数 length(a) 获得字符串a的长度 concat(a,b,c) 将多个值拼接成一个字符串 trim(a) 去掉字符串a首尾的空格 replace(a,b,c) 将字符串a中出现的b字符串替换成c subString(str,index,len) 从第index个字符开始截取字符串str,最多取len个 reverse(a) 反转字符串a locate(a,b) 查询子字符串a在字符串b中出现的位置,从1开始 2.数学函数 abs(a) 取a的绝对值 sqrt(a) 取a的平方根 mod(a,b) 取a%b 计算a整除b之后的余数 ceiling(a); 向上取整,取得大于等于a的最小整数 floor(a); 向下取整,取得小于等于a的最大整数 round(a,b); 四舍五入对a保留b位小数 truncate(a,b); 对数值a保留b位小数,直接去掉多余的尾数 sign(a) 返回1 0 -1表示a是正数 0 或者负数 power(a,b) 返回a的b次方[次幂] rand() 返回0~1之间的一个随机数 floor(rand()*100) 获得0~100之间的随机数 3.日期时间函数 addDate(d,days) 在当前日期上加days天 addDate(d,interval num unit) 在当前日期上加days天 unit 可以是day month

简单介绍join,outer-join,semi-join,anti-join的区别

纵然是瞬间 提交于 2020-01-19 04:21:21
表连接的方式如join,semi-join,outer-join,anti-join; 表连接的实现方式如nested loop,merge,hash. 本文简单的介绍表连接的方式join,semi-join,outer-join,anti-join和适用情景。 假设2个数据源(row source). Emp(id pk,ename,deptno) Dept(deptno pk,dname) 如下是join select ename,dname from emp,dept where emp.deptno=dname.deptno; 2个数据源键值一一比较,返回相互匹配的记录集 for example: nested loop join for x in ( select * from emp ) loop for y in ( select * from dept) loop if ( x.deptno == y.deptno ) OutPut_Record(x.ename,y.dname) End if end loop end loop outer-join select ename,dname from emp,dept where emp.deptno= dept.deptno(+); select ename,dname from emp,dept where emp