Oracle数据库基础3-常用函数即技巧

--1.to_char ()将日期类型转换为字符串类型
SELECT to_char(t.birthday,'yyyy-mm-dd hh24:mi:ss') 员工生日 FROM t_emp t;--(员工生日是给此列起的别名)
--2.to_date() 将字符串转换成日期类型
SELECT to_date('20050314','yyyymmdd') FROM dual;--打印结果为2005/3/14;duai在数据库里为虚拟表,默认一行一列;
--分组函数(配合group by使用)
--3.avg()平均数函数
SELECT t.zhiwei, AVG(t.gongzi) FROM t_emp t GROUP BY t.zhiwei;--先根据zhiwei分组,然后计算每个分组中gongzi列的平均数;
--4.sum()求和函数
SELECT t.zhiwei,SUM(t.gongzi) FROM t_emp t GROUP BY t.zhiwei;--先根据职位f分组,然后计算每个分组中gongzi列的总和;
--5 max() 求最大/函数;min() 求最小函数
SELECT t.zhiwei,max(t.gongzi),MIN(t.gongzi)FROM t_emp t GROUP BY t.zhiwei;--先根据职位f分组,然后求出每个分组中最大和最小的数;
--6 count() 计数函数
SELECT COUNT(1) FROM t_emp;--求表中所有记录条数;count括号里可以写任意数,没有实际意义;
--7  mod()取余函数, 传两个参数, 前面的对后面的取余;
SELECT MOD(5,3) FROM dual;--取5除以3的余数;
--8 decode ()(与case when 相似)
SELECT t.name,DECODE(t.bumen,10,'人事部',20,'市场部','无此部门') FROM t_emp t;
--9 substr() 截取字符串,需要传三个参数(需要处理的字符串, 开始索引, 截取几个字符)
SELECT SUBSTR('abcdef',2,3) FROM dual;--打印结果为'bcd'
--10 trunc() 取整函数
SELECT TRUNC(11.4) FROM dual;--打印结果为11
SELECT TRUNC(sysdate) FROM dual;--打印结果为当前系统时间年月日;
--11 round() 四舍五入取整 ;ceil() 向上取整函数;floor() 向下取整; 
SELECT ROUND(12.3452) FROM dual;--打印结果为12.35;传两个(需要处理的数字, 精确到几位)或者一个参数(默认对整数位取整);
SELECT ceil(12.345) FROM dual;--打印结果为13;
SELECT floor(12.345) FROM dual;--打印结果为12;
--12 replace ()替换字符串(传三个参数, 1, 需要处理的字符串, 2, 需要进行替换的部分, 3新的字符串)--translate()类似函数
SELECT REPLACE('aabbcc','bb','xx') FROM dual;--打印结果为aaxxcc;
--13 length() 字符串长度
SELECT LENGTH('aabbcc') FROM dual;--打印结果为6;
--14 nvl()过滤空值函数;nvl2()
SELECT NVL(t.jiangjin,0) FROM t_emp t;--查询如果jiangjin列为空值则显示为0
SELECT NVL2(t.jiangjin,'有此值','没有此值') FROM t_emp t;--与nvl的区别为nvl函数第二个参数, 类型必须跟要判断的参数保持一致,nvl2可以为任意类型;
--15 lower()字母该小写;upper()字母改大写;
SELECT LOWER('BBB') FROM dual;--打印结果为bbb;
SELECT UPPER('aaa') FROM dual;--打印结果为AAA;
--16 concat()连接两个字符串
SELECT CONCAT('aaa','bbb')  FROM dual;--打印结果为aaabbb;
--17 wm_concat()列转行函数(也属于分组函数,纯净版无法用)
SELECT t.age wm_concat(t.name) FROM t_emp t GROUP BY t.age;--显示分组后该组中全部数据;
--常用技巧
--1 查询结果中额外添加一列
SELECT '额外一列' FROM t_emp t;
--2.查询不为空的数据
SELECT t.* FROM t_emp t WHERE t.age IS NOT NULL;
--3. 添加已存在表的数据
insert into t_emp(daihao,zhiwei) SELECT t.psw,t.uname FROM t_users t;--从users表中将psw列和uname列的数据添加到emp表中的daihao列和zhiwei列中;需要前后个数类型统一;
--4.查看其他用户下面的表
select * from 用户.表名(要拥有DBA角色);
--5.复制表
CREATE TABLE emp1 AS SELECT * FROM t_emp;--创建新表emp1并将t_emp表中的所有数据复制到新表中;
CREATE TABLE emp1 AS SELECT * FROM t_emp WHERE 1=2;--创建一个空表emp1,只拥有t_emp中的列的名字;
--6.删除表
DELETE (FROM) 表名;trancate 表名(慎用);
--6.将excel的表贴到oracle:在excel中选中一部分数据, 需要在第一列前面多选中一列;
--7.将查询结果导出excel对查询结果全部选中, 右键有copy to excel ;
--8.序列的创建
--序列的作用: 一般用来作为一个自增长的主键
--先在Sequences文件夹新建一个自定义命名序列,如命名为SQ_TEST.调用语句为:
INSERT INTO t_users(uindex,uname) VALUES (sq_test.nextval,'小明');--每调用一次,主键都会自增长;

猜你喜欢

转载自www.cnblogs.com/wyc1991/p/9065362.html
今日推荐