Oracle 数据库笔记

01、select 3+5 from dual      注:dual表的使用

02、select sysdate from dual        注:获取当前时间, 如:2014/11/25 16:22:52

03、select trunc(sysdate) from dual     注:获取当前日期,如:2014/11/25

04、select to_char(trunc(sysdate), 'yyyy/mm/dd hh24:mi:ss') from dual;   获取当天第一秒, 如:2014/11/25 00:00:00

05、update T_temptable set c_boss = c_boss || 'Hello this is a tail'  oracle中, 用||连接字符串, 而不是用 ‘+’

06、select substr(boss, 1, 3) 等价于 select substr(boss, 0, 3) , 1代表第一个位置, 0特殊处理到第一个位置, -1代表倒数第一个, -2代表倒数第二个

exp.   substr('123456789', -4, 3) 的值为 ‘678’

07、 小数格式化select to_char(1000.3,'FM999999999990.0099') from dual;

08、查询字段不含英文字母 where UPPER(字段名) = LOWER(字段名)

查询字段只含大写字母 where UPPER(字段名) <> LOWER(字段名) and UPPER(字段名) =字段名

查询字段只含小写字母 where UPPER(字段名) <> LOWER(字段名) and LOWER(字段名) =字段名

查询字段同时包含大小写字母 where UPPER(字段名) <> LOWER(字段名) and UPPER(字段名) <>字段名 and LOWER(字段名) <>字段名

09、update  视图, 要求外键必须unique才能update   

 alter table EXP_Table modify XXX_ID unique;

10、从SQL导出到Oracle的表,需要带双引号的表名和列名进行重命名处理

ALTER TABLE old_table_name RENAME TO new_table_name;--重命名表

ALTER TABLE [table_name] RENAME COLUMN [column_name] TO [new_column_name];--重命名列

11、PL/SQL 常用函数 链接:http://leeyee.github.io/blog/2011/11/18/plsql-sql-comm-func/


12、怎样将Oracle一张表的多个字段更新到另一张表中去

假设表a中有多个字段(province ,city)需要从b表获取(两张表的mobile一样),总结了几种写法。
一、updatea set a.province=(select province from b where b.mobile=a.mobile);
updatea set a.city=(select cityfrom b where b.mobile=a.mobile);
这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。
二、update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile.
或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile.
三、update a inner join b on a.mobile=b.mobile set a.province=b.province,a.city=b.city
注意:第二种和第三种写法在oracle行不通的,老是报错,折腾了好长时间,最后还是用下面的语句解决了问题
四、update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile)
其实第四种方法是第一种方法的合并。
项目中写的真实例子:
注:用a.city=null不行的


你可能感兴趣的:(DataBase)