Oracle数据库学习之事务,去重,空值处理,基本操作符(五)

--事务,保证数据的安全有效,事务主要对DML语言有效,commit,rollback(只能回滚未提交的事务),savepoint(保存点)
update emp set EMPNO = 1234 where EMPNO=7369;
savepoint a;
rollback to a;--回滚到保存点a
rollback ;--全部回滚

--oracle的数据字典,是Oracle存放数据库信息的地方,Oracle中常用的数据字典主要分为三类,以三种前缀开头user_*、all_*、dba_*
select * from user_users;
select * from all_users;
select * from dba_users;
select * from user_source;
--oracle基本查询语句,去出重复数据
select distinct job,deptno from emp;--这种数据去重只能去除完全相同的数据,保留其中一个,
--不能用在大数据数据去重方面,大数据数据去重是去重某个字段重复的数据,即number>=2
--查询日期格式字段
--查询中文/英文日期格式数据
alter session set nls_language = "SIMPLIFIED CHINESE";/AMERICAN;
--设置特定格式
alter session set nls_date_format='YYYY/MM/DD';

--大数据中根据某一字段进行数据去重,也可进行重复数据筛选
create table test(id varchar2(10),name varchar(10));
insert into test values(1,'w');
insert into test values(2,'s');
insert into test values(1,'r');
insert into test values(3,'z');
select * from test;
create table A as select id,count(name) as num from test GROUP BY id ;
select * from A;
CREATE table B as select id from A a where a.num =1;
select * from B;
select * from test;
select B.id,test.name as name from B  LEFT JOIN  test  on  B.id = test.id;
--Oracle 处理空值的函数
1.NVL(expr1,expr2)

如果expr1为NULL,则该函数显示expr2的值;

2.NVL2(expr1,expr2,expr3)

如果expr1的值为NULL,则该函数显示expr3的值;不为NULL,显示expr2的值;

3.NULLIF(expr1,expr2)

如果expr1=expr2,返回NULL;若不等,则返回第一个表达式的值;

4.COALSECE(expr1,expr2,expr3)

如果全为NULL,则函数值为NULL;若有一项不为NULL,则显示那一项exprN;若三项都不为空,则显示最前面的一项expr;

5.CASE 

SELECT cust_last_name,
   CASE credit_limit WHEN 100 THEN 'Low'
   WHEN 5000 THEN 'High'
   ELSE 'Medium' END
   FROM customers;

类似C语言的case

6.DECODE

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non-domestic') 
       "Location of inventory" FROM inventories
       WHERE product_id < 1775;


--Oracle中算术运算符(+,-.*,/)
select empno,ename,sal*12 from emp;
--空值与任何值进行算术运算都为空,我们可以在创建表时指定默认值
create table studentI (
             id varchar2(10) primary key,
             name varchar2(10),
             age number(2,0) default 20       
);
insert into studentI values('1001','小明',default);
select * from studentI;

--创建列的别名,别名中有特殊字符时用双引号括起来表示,as关键字可有可无
select id,name "*name",age from studentI;
select id,name xingming,age from studentI;
select id,name as xingming,age from studentI;
--用连接符将列和字符连在一起,可以用来合并列
select name||'的年龄为:'||age  as information from studentI;
select concat(name,age) as information from studentI;

--日期和字符串只能在单引号中出现,数字可以不用加单引号


--过滤数据where条件
select * from studentI where age =20;

 

你可能感兴趣的:(oracle,数据库)