前言
最近用Oracle较多,整理一下常用的命令以及一些常见的问题
一、常用的命令
1.不指定表查询
一般来说这个是最长用的,你可能不清楚某个命令的时候,就需要进行测试。 但是oracle又不像mysql那样,可以直接使用select xxx oracle是必须要加表名的(虚拟表dual)
select * from dual
2.如何去查看一个表的建表语句
SELECT DBMS_METADATA.GET_DDL('TABLE','XXX') FROM DUAL;
XXX处需要大写,oracle在大小写这一块是比较严格的;
3.建立一张与别的表结构相同的表
create table t1 as select * from scott.emp;
create table t1 as select * from scott.emp where 1=0;
t1是要建立表的名称 这里尤其提一句,where 1=1和where 1=0:这种写法是比较常见的,特别是在多表联合进行测试的时候完全可以,但是也得考虑性能情况。
select * from
A
LEFT JOIN
B
ON 1=1
这种情况就就相当于交叉连接了。
4.建表增加comment
一般来说,建表的时候对字段进行解释是特别有必要的,当你做的表越来越多的时候,你可能就完全分不清这个表是用来干什么的,所以对相应的表和字段进行注释是对你后续开发很有帮助的。
create table xxx
(name varchar2(20),
sex varchar2(20)
)
COMMENT ON table xxx(表名) IS 'xxx表';
comment on column xxx.name is '姓名';
comment on column xxx.sex is '性别';
二、关于oracle的时间操作
1.如何截取时间
- 一般在写存储过程的时候,就需要确定时间,你的模型多久跑一次,间隔多久
- 又或者是在查询的时候限定时间范围进行查询
- 这个时候一般就是用trunc函数,以及to_data函数
trunc()函数
查询当前时间
select sysdate from dual
结果:显示的时间精确到秒
2022-03-02 21:26:25
截取到分钟
select trunc(sysdate,'mi') from dual
结果:2022-03-02 21:26:00
截取到小时
select trunc(sysdate,'mi') from dual
结果:2022-03-02 21:00:00
截取到天
select trunc(sysdate,'dd') from dual
结果:2022-03-02 00:00:00
默认是天
依次类推,月和年
to_date函数()
一般to_date函数更多的用于查询
比如
select to_date('2022-03-02 21:39:25','yyyy-mm-dd hh24:mi:ss') from dual
select to_date('20220302213925','yyyymmddhh24miss') from dual
以上两种都可以,建议第一种,规范方便查错,第二种忘记写0的话就会出现很大的偏差
2.关于时间格式的使用
我推荐的是在建表的时候使用date格式,这样不仅方便而且,好看,同时也方便作为分区字段进行操作,极大的减少了查询时间,但是很多时候事情都是不随我们意愿的,我们可能接手某个项目的时候,他可能时间格式要求的很奇怪,有些时候他要求时间格式,有时候就直接字符串。 有兴趣的话,可以看看我在下一章写的关于我前段时间在时间格式上踩的坑。
|