欢迎您的访问
专注于Java技术系列文章的Java技术分享网站
关注我们

—— 加入社群 ——
「十大城市」工作内推
「微信/QQ」技术讨论
「面试真题」随时领取
公众号名称:搜云库技术团队  公众号ID:souyunku
关注公众号后发送 口令 获取关闭弹窗地址
公众号每天中午 12:20 为你推送一篇技术文章

Oracle数据库常用命令(持续更新)

号外:限时领取:2020,全网最新、最全的技术知识体系

1. 查询当前用户所有的表

select * from user_tables;

2. 查询当前用户能访问的表

select * from all_tables;

3. 获取表字段

 select * from user_tab_columns where table_name='用户表';
 select * from all_tab_columns where table_name='用户表';
 select * from dba_tab_columns where table_name='用户表';

4. 日期范围查询的两种实现方式

oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来通过一个实例来介绍这一过程。假设要查询2011-05-02到2011-05-30之间的数据。

to_date方式

select * from tablename where time >= to_date('2011-05-02','yyyy-mm-dd') and 
time <= to_date('2011-05-30','yyyy-mm-dd') ;

运行的结果是:可以显示05-02的数据,但是不能显示05-30的数据。

所有可以得出结论:

1)如果想显示05-30的数据可以<to_date(‘2011-05-31′,’yyyy-mm-dd’),这样就能显示30号的了。

2)如果想要显示05-30的数据可以<=to_date(‘2011-05-30 23:59:59 999′,’yyyy-mm-dd hh24:mi:ss’)也是可以查出来的。

to_char方式:

select * from tablename where to_char(time,'yyyy-mm-dd') >= '2011-05-02'  and 
to_char(time,'yyyy-mm-dd') <= '2011-05-30';

运行的结果是:可以同时显示05-02和05-30的数据。

5. 模糊查询-like后面的通配符

关于like后面的条件,oracle提供了四种匹配模式:

1)%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

select * from user where name like '%三%';

将会把name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

如果需要找出name中既有“三”又有“猫”的记录,请使用and条件

select * from user where name like '%三%' and name like '%猫%';

2)_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

select * from user where name like '_三_';

只找出“唐三藏”这样name为三个字且中间一个字是“三”的记录。

select * from user where name like '三__';

只找出“三脚猫”这样name为三个字且第一个字是“三”的记录。

3)regexp_like:正则表达式函数查询。

select * from user where card_number like '1____60';
select * from user where regexp_like(card_number, '1....60');

可以找出card_number中以1开头60结束并且查询为7位的记录,其中card_number字段属性为字符串。

但如果card_number属性为数字,使用like就不是很好实现了,可以使用如下方式:

select * from user where regexp_like(card_number, '1[0-9]{4}60');

也可以通过使用字符集的方式实现:

select * from user where regexp_like(card_number, '1[[:digit:]]{4}60');

查询card_number中不是纯数字的记录:

select * from user where not regexp_like(card_number, '^[[:digit:]]+$');

查询card_number中不包含任何数字的记录:

select * from user where regexp_like(card_number, '^[^[:digit:]]+$');

查询以12或者1b开头的记录,不区分大小写:

select * from user where regexp_like(card_number, '^1[2b]','i');

查询以12或者1b开头的记录,区分大小写:

select * from user where regexp_like(card_number, '^1[2B]');

查询数据中包含空白的记录:

select * from user where regexp_like(card_number, '[[:space:]]');

查询所有包含小写字母或者数字的记录:

select * from user where regexp_like(card_number, '^([a-z]+|[0-9]+)$');

查询任何包含标点符号的记录:

select * from user where regexp_like(card_number, '[[:punct:]]');

6. 修改字段类型和长度

alter table user modify(name varchar(255));

7. 插入时插入UUID

select sys_guid() from dual;
insert into user(id) values(sys_guid());

文章永久链接:https://tech.souyunku.com/?p=15513

赞(74) 打赏

版权归原创作者所有,任何形式转载请联系作者;搜云库技术团队 » Oracle数据库常用命令(持续更新)
本站:免责声明!

评论 抢沙发

一个专注于Java技术系列文章的技术分享网站

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏