请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 297|回复: 0

oracle知识精简一览

[复制链接]

2493

主题

2892

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10294
发表于 2021-12-2 16:25:58 | 显示全部楼层 |阅读模式
Oracle知识太多,只总结常用的,或面试中容易问到的,如下:
1.修改单列名称
alter table test rename column A to B;
2.增加单列
alter table test add A VARVHAR(2);
3.删除单列
alter table test drop column A;
4.增加多列
alter table test add(A VARCHAR(2),B VARCHAR(10));
5.修改多列(注意,此处只能修改数据类型,不能修过列名称)
alter table test modify(A VARCHAR(10),B VARCHAR(15));
6.删除多列
alter table test drop(A,B);
7.创建表,只含结构
create table ta as select * from tb where 1=0;
8.创建表,结构和数据都有
create table ta as select * from tb where 1=1;
9.删除表中所有内容
delete from ta;(仅删除内容)
truncate table ta;(仅删除内容)
drop table ta;(删除所有,包括结构和内容)
10.复制内容
update ta set 字段1=trim(字段2) #将字段2的内容复制到字段1中  
11.oracle查找指定时间范围内的记录(to_date/to_char)
eg:查找2号到30号的数据
A:select * from test where time>=to_date('2017-07-02','yyyy-mm-dd')and time<=to_date('2017-07-30','yyyy-mm-dd');
结果:无法查出30号的数据,进过实践有两种解决方案:
a.将'2017-07-30'改'2017-07-31'即可
b.将'2017-07-30 23:59:59','yyyy-mm-dd hh24:mi:ss'即可
#上面格式也可改where time between to_date()and to_date();
B.用to_char可以解决此问题
a.select * from test where to_char(time,'yyyy-mm-dd')between'2017-07-02'and'2017-07-30';
b.select * from test where to_char(time,'yyyy-mm-dd')>='2017-07-02'and to_char(time,'yyyy-mm-dd')<='2017-07-30';
12.高效分页查询语句(很好用,很好用,很好用)
select * from (select a.* ,Rownum rn from(select * from tablename)a where Rownum<=30)where rn>=11;

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-5-18 12:05 , Processed in 0.060944 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表