一、oracle常用数据类型
二、日期查询
select * from table where date_create >to_date('2019-03-12 20:07:19','yyyy-mm-dd hh24:mi:ss')
三、统计函数(avg、count、sum)
---COUNT:如果列上存在null,那么null是不会进行统计
如果使用DISTINCT,那么列上如果有重复,重复的记录也不会统计。
SELECT CONUT(*),COUNT(empo),COUNT(ename),COUNT(comm),COUNT(DISTNCT job) FROM emp;
---COUNT(*|DISTINCT 列) 求出全部的记录数
SUM(列) 求出总和,操作的列是数字
AVG(列) 平均值
MAX(列) 最大值
MIN(列) 最小值
四、case when
1、--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
2、--Case搜索函数 ,简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
3、在使用mysql的过程中出现判断null时遇到的问题的解决办法:https://blog.csdn.net/Dax1n/article/details/83037839,如下示例
SELECT bill_id, ( CASE id IS NULL WHEN TRUE THEN a_id ELSE b_id END ) AS id FROM TABLE WHERE aaa = '123';
4、使用pymysql模块拿到的时间问题
SELECT CAST( begin_time AS CHAR ) AS begin_time FROM TABLE WHERE is_valid = "1"
五、重复记录查询
select * from tablename where 重复字段1,重复字段2 in
(select 重复字段1,重复字段2 from tablename group by 重复字段1,重复字段2 having count(*)>1)
六、复制表
1. create table table1 as select * from table2 where 1=2;
创建一个表结构与table2一模一样的表,只复制结构不复制数据;
2.create table table1 as select * from table2 ;
创建一个表结构与table2一模一样的表,复制结构同时也复制数据;
3.create table table1(columns_a,columns_b) as select columns1,columns2 from table2;
创建一个表结构与table2一模一样的表,复制结构同时也复制数据,但是指定新表的列名,这种格式也用于复制table2部分字段;
后面两种格式,如果后面跟上合适的查询条件,可以只复制符合条件的数据到新的表中,例如:
create table table1 as select * from table2 where columns1>=1;
可能的情况下,建议用第二种方式,这种方式不仅能一次完成建表和插入数据,而且效率高,特别是当复制的数据量比较大时,可以避免大量数据存在回滚空间中等待提交。
七、创建视图
create or replace view 创建的视图名 as select 可查看的字段名 from 库名.表名 where 条件
八、with as用法
with a as( select *from table where data>sysdate)
select * from a