plsql查询语句参考

插入

==================插入单条数据=========================
insert into table_1 values(280,6,2000,3000,4000,5000,6000);
===============union 插入多条数据==================
insert into table_1 
select 50,'公关部','taiwan' from dual
union
select 60,'研发部','japan'  from dual
union
select 70,'培训部','uk' from dual
==================插入一个查询结果集==========================
insert into table_1 select 条件 from table_2;
==================向表中插入一个常量结果集=====================
INSERT INTO table_1 SELECT 's100106','卢俊义','男',23,
 TO_DATE('2009-8-9 08:00:10','YYYY-MM-DD HH24:MI:SS'),'1001'
FROM DUAL; 

select ... from dual,dual 表在系统中只有一行一列,为了select…from 的语法完整性而使用

备份

1. 备份表
create table [备份名] as select * from [表名];
/*根据结果集创建一个新表*/
2. 恢复表
truncate table org_group;
insert into org_group select * from [备份名] ;

删除重复数据

delete from table_1 a where rowid>(select min(rowid) from table_1 b where a.字段名1=b.字段名1)
/*根据字段名1删除重复数据*/
 SELECT DISTINCT 字段名 FROM table_name; /*删除重复行*/

ROWID 伪列返回的就是该行的物理地址,ROWID 值可以唯一的标识表中的一行。
ROWNUM 标识的是查询结果中的行的次序。

统计相同数据的个数

select 字段名,count(1) from table_1 group by 字段名

拼接两个表的查询结果

内连接:即等值连接。

##简易写法
select a.字段名1,a.字段名2,d.字段名3 from table_1 a,table_2 d 
where a.字段名4=d.字段名4 and 筛选条件
===========sql/92标准写法(推荐),INNER 可以省略==================
SELECT a.字段名1,a.字段名2,d.字段名3 
FROM table_1 a INNER JOIN table_2 d ON a.字段名4=d.字段名4
WHERE 筛选条件

左外连接:在内连接的基础上加上主表中的未匹配数据
右外连接:在内连接的基础上加上被连接表的不匹配数据
(+):Oracle 专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外
联接。

##简易写法
select  a.字段名1,a.字段名2,d.字段名3 from table_1 a,table_2 d  where a.字段名4(+)=d.字段名4
==============sql/92标准写法(推荐),outer 可以省略==================
select  a.字段名1,a.字段名2,d.字段名3 from table_1 a right outer join table_2 d on a.字段名4(+)=d.字段名4

嵌套查询

在 SELECT、UPDATE、DELETE 语句内部可以出现 SELECT 语句。内部的 SELECT 语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表;包括exists、in、any、all等

#单行单行单列子查询
select 字段名1,字段名2 from table_1  
where 字段名3 比较运算符 (select 字段 from table_2 where 条件 )

比较运算符:=、>、<、>=、<=、<>等
All:只有当其所有数据都满足条件时,条件才成立
Any:只要有一条数据满足条件,条件就成立

=ANY:表示与子查询中的每个元素进行比较,功能与IN类似(然而<>ANY不等价于NOT IN)
>ANY:比子查询中返回结果的最小的要大(还包含了>=ANY)
<ANY:比子查询中返回结果的最大的要小(还包含了<=ANY)

ALL有如下三种使用形式:

ALL操作符有以下三种用法:
<>ALL:等价于NOT IN(但是=ALL并不等价于IN)
>ALL:比子查询中最大的值还要大(还包含了>=ALL)
<ALL:比子查询中最小的值还要小(还包含了<=ALL)

例子:

select 字段名1,字段名2 from table_1  
where 字段名3 比较运算符 any(select 字段 from table_2 where 条件 )

oracle函数

字符函数:
数字函数:
日期函数:

ADD_MONTHS(d,n),在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期。d 表示日期,n 表示要加的月数。

LAST_DAY(d),返回指定日期当月的最后一天。

ROUND(d[,fmt]),返回一个以 fmt 为格式的四舍五入日期值,d 是日期,fmt 是格式模型。默认 fmt 为 DDD,即月中的某一天。
TRUNC(d[,fmt]),不对日期进行舍入,直接截取到对应格式的第一天

EXTRACT(fmt FROM d),提取日期中的特定部分。fmt 为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。

转换函数:

TO_CHAR(d|n[,fmt])把日期和数字转换为制定格式的字符串。fmt 是格式化字符串,使用双引号对非格式化字符进行引用
TO_DATE(x [,fmt])把一个字符串以 fmt 格式转换为一个日期类型
TO_NUMBER(x[,fmt])把一个字符串以 fmt 格式转换为一个数字

聚合函数:

发布了10 篇原创文章 · 获赞 0 · 访问量 959

猜你喜欢

转载自blog.csdn.net/weixin_43572702/article/details/105409343
今日推荐