oracle any 语法,Oracle 基础语法

字符串操作:

1:连接concat(char1,char2)

2:长度length(char1)

3:去除空格trim(char1)、ltrim(char1)、rtrim(char1)

4:补位LPAD(char1,n,char2)、RPAD(char1,n,char2)

5:索引instr(char1,char2,m,n)

6:截取substr(char1,m,n)

7:大小写Upper(char1)、Lower(chaer1)、initcap(char)//首字母大写

数字操作              (数字操作很重要,金融全是数字)

1.四舍五入round(m,n)

2.截取trunc(m,n)   //m被截取的数字,n截取几位小数

3.取余mod(m,n)     //mod(salary,1000)

4.floor(m)         //比m小的最大正整数

5.ceil(m)          //比m大的最小正整数

日期操作:

1.to_date()

2.to_char()

3.last_day(Date)

4.add_months(birth,4)

5.months_between(date1,date2)

6.next_day(date,char)//下一周周几char

7.east,greatest   //最大最小

8.extract(year from hiredate) //查询年份

exteact(day from systimestamp-hiredate)//查询天数

空值操作

1.显式insert into table_name values (x,x,x,null);

隐式insert into table_name (x,x,x) values (x,x,x);

2.update table_name set name=null where exp;

3.select * from table_name where name is null;

4.select * from table_name where name is not null;

create table table_name(id number(10) not null);

5.空值函数NVL(expr1,expr2)

若expr1不为null,则结果仍是expr1,否则为expr2,expr2必不为null;

6.NVL2(expr1,expr2,expr3)

expr1为空,结果为expr3

expr1不为空,结果为expr2

解锁

alter user scott account unlock;

修改密码:

alter user scott identified by 123456;

基本查询语句

1.from子句

select * from table_name

2.使用别名

select  xxx as a,xxx a

3.过滤 where子句

select * from table_name where exp1

//查询2002年1月1号以后入职的员工

select * from hiredate > to_date('2002-1-1','yyyy-mm-dd')

4.关键字and 、or

5.模糊查询 like

%:表示0到多个字符

_:标识单个字符

注意:like后跟的是数字类型,类型会自动转换

6.in和not in

in():查询符合列表范围内的数据

not in():查询不符合列表范围内的数据

7.between ... and ...

where sal between 10 and 100

等价与where sal>=10 and sal<=100

8.is null 和 is not null

9.使用ANY和ALL

>ANY():大于最小

>All():大于最大

10.ASC升序   DESC降序

order by 字段名1 DESC,字段名2 ASC;

11.过滤重复distinct

聚合函数

group by 分组

having限制分组结果

HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等

操作。

having后跟的也是聚合函数

或者

having后跟的是group by后的条件

注意:对分组加条件只能是having,不能是where,用where是不对的;

select * from emp group by deptno having count(*)>5 order by

deptno;

难点:

select distinct d.dname,d.loc,count(e.deptno),avg(e.sal)

from emp e left outer join dept d on e.deptno=d.deptno group

by e.deptno,d.dname,d.loc;

关联查询

连接查询:

select * from table1,table2 where

table1.column=table2.column;

或者

select * from table1 join table2 on

table1.column=table2.column;

select table1.*,table2.* from table1,table2 where

table1.column=table2.column;

内链接:

内连接返回两个关联表中所有满足连接条件的记录。

where table1.column=table2.column;

或者

from table1 join table2 on table1.column=table2.column;

外连接:

返回那些不满足连接条件的记录,需要使用外连接,即不仅返回满足

连接条件的记录,还将返回不满足连接条件的记录

SELECT table1.column,table2.column  FROM table1 [ LEFT |

RIGHT ] JOIN table2  ON table1.column1 = table2.column2;

左连接:

结果为两个表都有的值且包含左表有值而右表没有的值

left outer join

右连接

结果为两个表都有的值且包含右表有值而左表没有的值

right outer join

全连接

全外连接是指除了返回两个表中满足连接条件的记录,还会返回不满

足连接条件的所有其它行。即是左外连接和右外连接查询结果的总和

full outer join ...on...

自连接          有点难

自连接是一种特殊的连接查询,数据的来源是一个表,即关联关系来

自于单表中的多个列。表中的列参照同一个表中的其它列的情况称作

自参照表。

自连接是通过将表用别名虚拟成两个表的方式实现,可以是等值或不

等值连接

select worker.empno w_empno, worker.ename w_ename,

manager.empno m_empno, manager.ename m_ename     FROM emp

worker join emp manager     ON worker.mgr = manager.empno;

select * from table1 t1 join table1 t2 on

t1.column1=t2.column2;

连接操作符

where 1=1;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值