oracle函数参与select运算,ORACLE学习笔记--基本select语句、函数、多表关联

ORACLE学习笔记--基本select语句、函数、多表关联

select name,age from users;

select name,age from users where age>20;

select a.name,a.age,b.sex,b.pay from users a,salary b where a.name=b.name;

select * from users;

select 语句不区分大小写,可以跨行。

关键字不可以简写和跨行。

字符和日期列居左,数字列居右。

+ - * /运算,有()改变优先级

select age+5 from users;

null与任何值运算都为null

定义别名

select name as xingming from users;

用双引号不改变别名大小写和空格

select name "XINGMING" from users;

连接字符

select name||'is'||age from users;

排除重复的行

select distince age from users;

select中引号内区分大小写

select name from users where name like 'W%'

比较表达式

betweeb and 大于等与,小于等于

in()

like 一个'_a' 多个like '%a'

is null

逻辑条件

and

or

not

排序

默认是升序

select * from users order by age

select * from users order by age desc

select * from users order by 1

单行函数

select sum(age) from users

select substr(name,1,2) from users

select substr(name,-1,2) from users;负数表示从右边第几个开始

lower()大写转小写,upper()小写转大写,initcap()第一个字母大写,其他小写,concat()两个字符连在一起

instr(name,'A')A在name中的第几个位置

lpad(name,10,'*')不够10位左边以*填充

rpad(name,10,'$')

trim('H' from 'hello')从hello中去掉h,去掉空格

round(45.332,2)四舍五入,两位小数

trunc(45.332,2)不四舍五入,两位小数

mod(130,3)求余数

dual是一个虚的表,可以用来从函数和计算中查看结果。

日期缺省显示是DD-MON-RR

select sysdate from dual;

select (sysdate-birthday)/7 from users;多少个星期

select months_between(sysdate,order_date) from users;间隔多少个月

select add_months(sysdate,4) from dual;当前时间加4个月

select next_day(sysdate,'sunday') from dual;当前时间的下个星期天是什么时候

select last_day(sysdate) from dual;当前月的最后一天

假设当前时间是2006-09-25

round(sysdate,'month')----01-10-06

round(sysdate,'year')-----01-01-07

trunc(sysdate,'month')----01-09-06

trunc(sysdate,'year')-----01-01-06

转换函数

隐式数据类型转换

varchar2 or char to number

varchar2 or char to date

number to varchar2

date to varchar2

显式数据类型转换

to_char(date,'dd-mm-yyyy')

to_char(number,'$9999'),9表示一个数字,0占位,$美圆符号,L本地货币符号,。小数,,千位指示

to_number(char)

to_date(char,'dd-mm-yyyy')

函数是可以嵌套的

substr(name,length(name),1)

通用函数

nvl(name,0)name为空则显示0,不为空则显示原值

nvl2(name,0,1)name不为空,显示0,为空,显示1

nullif(length(name),length(address))相等则返回null,不相等则返回第一个值

coalesce(name,age,10)显示第一个不为空的值

decode(age,10,1,20,2,30,3)

case then else end

多表数据访问

select a1.id,a1.name,a2.age from student a1,teather a2 where a1.id=a2.id

不给where条件得到的是一个笛卡儿集

等值连接(主键和外键之间)

多个条件用and子句

两个表有相同的列名,用表的别名加以区分

select a.name,b.name from student a,teather b where a.id=b.id

连接N张表,至少有N-1个连接条件

非等值连接

等值连接、非等值连接找出的结构都是相互匹配的

外连接

不满足条件的结果也反映出来

select a.name,a.age,b.pay from student a,teacher b where a.id(+)=b.id

(+)出现在右边,左连接

(+)出现在左边,右连接

自连接

select * from student s ,student t where s.id=t.id;[@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值