测试实用sql

一、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

原文地址:https://www.cnblogs.com/yinwenbin/p/10504971.html