oracle中sysdate函数 ro,Database-basic knowledge(Oracle)

数据库(Oracle)基础知识:

1.SQL分类:

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)

DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)

DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

2.几个简单的基本的sql语句

选择:select * from table1 where范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where范围

更新:update table1 set field1=value1 where范围

查找:select * from table1 where field1 like ‘%value1%’ ---like的语法很精妙

排序:select * from table1 order by field1,field2 [desc|asc]

总数:select count(*) as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

没有重复的:selectdistinctmsisdnfromaddress

3.几个高级查询运算词

并集union (aUb):select * from a union(all)select * from b

union all,不去掉重复的。交集intersect(anb):select * from a intersect select * from b差集minus(a-b):select * from a minus select × from b

取第6到第10条数据:

select*fromdualwhererownum<=10minusselect*fromdualwhererownum<5

4.总结为日期字段赋值的几种方式,并举例说明

oracle中有个到当前系统时间--sysdate,如:

select sysdate from dual; // 2008-07-29 11:30:01

给当前日期加上2年:

select add_months(sysdate,24) from dual;// 2010-07-29 11:21:24

取得当前日期中下个周一的日期:

select next_day(sysdate,'Monday') from dual;//2008-08-04 11:23:39

取得当前日期中月份的最后一天:

select last_day(sysdate) from dual; // 2008-07-31 11:25:37

取得二个日期之间的间隔月数:

select months_between('01-sep-08','11-jan-08') from dual; //7.677

可对日期进行算述运算:

select (last_day(sysdate)-sysdate)from dual; // 2

5.总结join几种用法,并举例说明

inner join: select * from A join B on A.id=B.id (default是inner join)

left join: select * from A left join B on A.id=B.id

right join: select * from A right join B on A.id=B.id

笛卡尔积: select * from A,B;

selectcount(*)fromaddress;// 12

selectcount(*)fromaddress a, address b;//12*12=144

自连接:

已知一个表的结构为:

1姓名科目成绩

2张三语文20

3张三数学30

4张三英语50

5李四语文70

6李四数学60

7李四英语90

怎样通过select语句把他变成以下结构:

1姓名语文数学英语

2张三20 30 50

3李四70 60 90

select A.姓名,A.科目as语文,B.科目as数学,C.科目as英语from student A,student B,student C

where A.姓名 =B.姓名and B.姓名 =C.姓名and A.科目 ='语文 'and B.科目 ='数学 'and C.科目 ='英语 '

6.数字函数

round(45.926,2)---将前一数保留指定的小数位,并四舍五入(45.93),假如指定位是负数则意为在小数点左边保留指定位,如:

round(45.923,-1)=50,rount(45.923,0)=46,round(45.93,-2)=0,round(55.93,-2)=100

trunc(45.926,2)---同上,得不四舍五入(45.92) ,trunc(55.926,-1)=50, trunc(55.926,-2)=0mod(1600,300)---求余(100)

select round(sysdate,'month')RM,round(sysdate,'year')RY,trunc(sysdate,'month')TM, trunc(sysdate,'year')TY from dual;

RM

RY

TM

TY

2008-08-01 00:00:00

2009-08-01 00:00:00

2008-07-01 00:00:00

2008-01-01 00:00:00

7.字符处理

upper(str)---将字符串str全部转换成大写

lower(str)---将字符串str全部转换成小写

initcap(str)---将字符串中每个单词的首字母大写

concat(str1,str2)---将字符串str1与str2连接起来(也可以通过'||'号直接相连)

substr(str,a,b)---取字符串str中的指定字符,从位置a开始取长度为b的字符串,若a为正则从左边开始,则从右边开始

instr(str,'z')---取得str字符串中从左边开始每一次出现z字符的下标位置(下标从1开始)

lpad(str,12,'*')---左填充,即将字符串str长度填充到12,假如其不足12位则在左边以*号填充

rpad(str,12,'*')---右填充,同上

length(str)---计算字符串str的长度

8.SQL操作符,举例说明

||字符串相加 select sysdate||'_奥运' from dual; // 29-JUL-08_奥运>

<

=

Like

Between and

9.注意事项:

9.1 group by之外的字段如果出現在select里面的話必須使用聚集函數,否則不合法。比如:select a, b, sum(c) from tab group by a, b  (OK) select a, b, c from tab group by a, b (X)

9.2 having子句对group by子句所确定的行组进行控制,having子句条件中只允许涉及常量,聚组函数或group by子句中的列.

9.3 rownum只能用符号(

select * from tablename where rownum != 10;返回的是前9条记录。不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle认为这种条件 不成立,查不到记录.

9.4 快速复制一个表和数据:

create table TEST3 as select * from TEST

insert into TEST3 select * from TEST

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值