常用oracle sql函数及语句积累
2016-12-17 15:30
399 查看
SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数:
以上四个函数都是用于如何处理字段为空的情况。
在SQL Server / MS Access中,使用ISNULL()函数,isnull(字段名,0)意思是当这字段为空时返回0值。
在Oracle中,使用NVL()函数,nvl(字段名,0)意思一样
在Mysql中,使用IFNULL() 和 COALESCE(),用法和意思也和上面的函数一样。
DECODE()函数,
DECODE(value,'a','b','c'),意思为,若value为a,则返回b,否则返回c
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),意思为,若value为if1,则返回1,若value为if2,则返回2。。。
exists判断条件是否存在
用法:update waitscore b set b.effect='1' where exists (select 1 from member a where b.member_no=a.member_no and b.createdt<sysdate and b.effect='0'); 意思为:更新在b表中满足(b.member_no=a.member_no and ...)条件的记录中的effect字段
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = 'm' and exists(select 1 from grade where ...) ,只要
exists引导的子句有结果集返回,那么exists这个条件就算成立了,注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。
与in的区别,in只能限制一个字段是否存在
trunc处理日期格式
参考网址http://blog.csdn.net/oracle1858/article/details/7162765
insert into select 语句:从一个表复制数据,然后把数据插入到一个已存在的表中
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2
SELECT * FROM table1;
或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
查询数据库表中重复数据
select id,count(*) from table_name group by id having count(*)>1
结果只取n条记录
SELECT * FROM Persons WHERE ROWNUM <= n
delete删除表中的记录,从另一表中取条件
Delete From Tbl_Acc_User A where A.Userid in(select u.useremployid From tbluser u where U.Useremployeestatus = '0');
或DELETE Tbl_Acc_User A where exists (select 1 from tbluser B where A.Userid=B.useremployid and B.Useremployeestatus = '0');
如果是删除表a记录,可以使用: truncate table 表a,意思是清空表a所有数据
如果是连表结构一起删除可以用:drop table 表a
错误用法:delete Tbl_Acc_User from Tbl_Acc_User A,tbluser B where A.Userid=B.useremployid and B.Useremployeestatus = '0';
多表更新:
update at1 a set a.bb(select b.dd from at2 b where a.aa=b.cc) where a.aa in (select cc from at2);
Update At3 C Set C.sup=(Select distinct A.sup From At1 A Left Join At2 B On A.Account=B.Account Where B.Cc=C.Cc) Where C.Cc In (Select b.Cc From At2 b right join At1 a on a.account=b.account);
类似于账号工号-上下级-账号上级 三表,如果返回无法更新,单查询返回多个值说明同一个账号下的工号对应的上级工号不唯一
update多列select from:update t_table a set (f1,f2,f3)=(select f1,f2,f3 from test b where a.id=b.id) where id=2;
查询数据库某天的全部操作
select t.SQL_TEXT, t.FIRST_LOAD_TIME
From V$sqlarea T
Where T.First_Load_Time Like '2016-10-19%'
order by t.FIRST_LOAD_TIME desc
查询数据库某个时间点的数据
select * from test_tmp as of timestamp to_timestamp('2014-05-28
11:00:00','yyyy-mm-dd hh24:mi:ss')
union与union all
默认地,UNION 操作符选取不同的值。如果允许重复的值,使用 UNION ALL。
数值型字段操作
round(m,n)可以四舍五入
trunc(m,n)直接丢弃,不四舍五入
m值,n保留几位
索引:如果希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX index_name
ON table_name (column_name)
删除索引oracle:DROP INDEX index_name
视图:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
更新视图:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
删除视图:DROP VIEW view_name
sql表关联语句:
参考网址:http://www.nowamagic.net/librarys/veda/detail/936
以上四个函数都是用于如何处理字段为空的情况。
在SQL Server / MS Access中,使用ISNULL()函数,isnull(字段名,0)意思是当这字段为空时返回0值。
在Oracle中,使用NVL()函数,nvl(字段名,0)意思一样
在Mysql中,使用IFNULL() 和 COALESCE(),用法和意思也和上面的函数一样。
DECODE()函数,
DECODE(value,'a','b','c'),意思为,若value为a,则返回b,否则返回c
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),意思为,若value为if1,则返回1,若value为if2,则返回2。。。
exists判断条件是否存在
用法:update waitscore b set b.effect='1' where exists (select 1 from member a where b.member_no=a.member_no and b.createdt<sysdate and b.effect='0'); 意思为:更新在b表中满足(b.member_no=a.member_no and ...)条件的记录中的effect字段
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = 'm' and exists(select 1 from grade where ...) ,只要
exists引导的子句有结果集返回,那么exists这个条件就算成立了,注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。
与in的区别,in只能限制一个字段是否存在
trunc处理日期格式
参考网址http://blog.csdn.net/oracle1858/article/details/7162765
insert into select 语句:从一个表复制数据,然后把数据插入到一个已存在的表中
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2
SELECT * FROM table1;
或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
查询数据库表中重复数据
select id,count(*) from table_name group by id having count(*)>1
结果只取n条记录
SELECT * FROM Persons WHERE ROWNUM <= n
delete删除表中的记录,从另一表中取条件
Delete From Tbl_Acc_User A where A.Userid in(select u.useremployid From tbluser u where U.Useremployeestatus = '0');
或DELETE Tbl_Acc_User A where exists (select 1 from tbluser B where A.Userid=B.useremployid and B.Useremployeestatus = '0');
如果是删除表a记录,可以使用: truncate table 表a,意思是清空表a所有数据
如果是连表结构一起删除可以用:drop table 表a
错误用法:delete Tbl_Acc_User from Tbl_Acc_User A,tbluser B where A.Userid=B.useremployid and B.Useremployeestatus = '0';
多表更新:
update at1 a set a.bb(select b.dd from at2 b where a.aa=b.cc) where a.aa in (select cc from at2);
Update At3 C Set C.sup=(Select distinct A.sup From At1 A Left Join At2 B On A.Account=B.Account Where B.Cc=C.Cc) Where C.Cc In (Select b.Cc From At2 b right join At1 a on a.account=b.account);
类似于账号工号-上下级-账号上级 三表,如果返回无法更新,单查询返回多个值说明同一个账号下的工号对应的上级工号不唯一
update多列select from:update t_table a set (f1,f2,f3)=(select f1,f2,f3 from test b where a.id=b.id) where id=2;
查询数据库某天的全部操作
select t.SQL_TEXT, t.FIRST_LOAD_TIME
From V$sqlarea T
Where T.First_Load_Time Like '2016-10-19%'
order by t.FIRST_LOAD_TIME desc
查询数据库某个时间点的数据
select * from test_tmp as of timestamp to_timestamp('2014-05-28
11:00:00','yyyy-mm-dd hh24:mi:ss')
union与union all
默认地,UNION 操作符选取不同的值。如果允许重复的值,使用 UNION ALL。
数值型字段操作
round(m,n)可以四舍五入
trunc(m,n)直接丢弃,不四舍五入
m值,n保留几位
索引:如果希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX index_name
ON table_name (column_name)
删除索引oracle:DROP INDEX index_name
视图:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
更新视图:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
删除视图:DROP VIEW view_name
sql表关联语句:
参考网址:http://www.nowamagic.net/librarys/veda/detail/936
相关文章推荐
- oracle常用sql函数和语句
- Oracle常用语句积累(慢慢更新)
- oracle常用sql函数和语句
- oracle 常用sql语句积累
- oracle 常用sql语句
- 常用数据表结构修改sql语句(oracle)
- Oracle 常用SQL函数
- [导入]Oracle 常用SQL函数
- Oracle维护常用SQL语句
- oracle常用sql语句
- oracle常用SQL语句
- oracle常用SQL语句
- Oracle常用的SQL语句
- oracle中SQL语句的一些有效常用用法
- Oracle维护常用SQL语句
- ORACLE基础SQL,常用语句大集合
- 比较常用的SQL语句语法(Oracle)
- Oracle维护常用SQL语句
- oracle常用SQL语句
- Oracle 常用SQL函数