1、四舍五入保留两位小数
select cast(123456 as number(18,2)) as aa from dual;
2、生成数据字典
select m.*, decode(n.column_name, null, '', 'Y') 主键, a.nullable 非空
from (select t.table_name 表代码,
t2.comments 表名称,
t.column_name 字段代码,
t1.comments 字段名称,
t.data_type 字段类型,
decode(t.data_type, 'NUMBER', T.DATA_PRECISION, T.DATA_LENGTH) 字段长度,
T.DATA_SCALE 小数位数
from user_tab_cols t, user_col_comments t1, user_tab_comments t2
where t.table_name = t1.table_name
and t.column_name = t1.column_name
and t.table_name = t2.table_name) m
left join (select t3.table_name, t4.column_name
from user_constraints t3, user_cons_columns t4
where t3.constraint_name = t4.constraint_name
and t3.constraint_type = 'P') n on m.表代码 = n.table_name
and m.字段代码 = n.column_name
left join (select t5.table_name, t5.column_name, t5.nullable
from user_tab_columns t5) a on m.表代码 = a.table_name
and m.字段代码 = a.column_name
order by m.表代码, M.字段代码
3、多表数量查询
select '表名',count(*) from 表名 union all
最后一张表不加 union all
4、数据库中存储的性别是1和2,查询的时候怎么让1和2变成男,女显示出来
select case when 性别 = 1 then '男' when 性别 = 2 then '女' else '不男不女' end from table;
5、查询数据,空值放在末尾
select * from 表代码 t order by 过滤字段 nulls last
6、查看Oracle数据库服务端字符集
select * from nls_database_parameters
7、少量数据误删除恢复语句,时间为要回滚的时间节点
select * from xbbf_dydb_gbjl as of timestamp to_timestamp('2020-01-07 23:30:00','yyyy-mm-dd HH24:MI:SS')
8、删除表
MySql 的tuancate命令是直接truncate tableName,但在Oracle需要写成truncate table tableName,改正就好了。
truncate table zzwk_11340000002986432d0057_1
DELETE FROM T_SW_QT_JRKXX WHERE substr(rkrq,1,4) = '2018';
1、delete from t
2 、truncate table t
区别:
1、truncate与不带where的delete :只删除数据,而不删除表的结构(定义)
2、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。如果想保留标识计数值,请改用delete。
3、如果要删除表定义及其数据,请使用 drop table 语句。
4、执行速度,一般来说: drop> truncate > delete。
5、delete语句是数据库操作语言(dml),这个操作会放到 rollback segement中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
6、truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。
THE END
暂无评论内容