Oracle 语法

初次使用总结

Top条数

Select * FROM Table Where ROWNUM<=2 order by No desc

ROWNUM<=2 代表查询两条数据。

Date日期

to_date() 代表转换位Oracle能够识别的

Update talbe set A1 = to_date('" + model.Tstamp.ToString() + "','YYYY-MM-DD HH24:MI:SS');

to_char(sysdate,'yyyy-mm-dd')  2015-02-03

to_char(sysdate,' hh24:mi:ss')   16:02:18

时间戳 TIMESTAMP 

(SYSDATE + 1.1234)   其中一种。

字符串拼接 CONCAT

Select  ConCat(a,b) From Table

结果为 ab

Select ConCat(ConCat(ConCat('(',a),')'),b)  From Table

结果为 (ab)

起别名

Select AA as BB From   Table  可以

Select * From Table t 正确

Select * From Table  as t 错误

Select * From Table  Where 1=1 as W 错误

子查询排序

Select *from Table t1 Where t1.a  not in  (select t2.b from Table t2 where 1=1 order by t2.b)

在子查询内用order by t2.b程序会报错。亲测后得到结论,Oracle子查询内不支持排序功能。 报错(ORA-00907: 缺失右括号)

查询语句

Select  *,字段 from Table

”*,字段“ 是无法共用的,这样写 “*”无法找到表。所以必须指定表明。

正确写法是 Select  Table.*,字段 from Table 

获取表的主键列名

Select *  from  user_cons_columns where   table_name ='Table'

获取表所有列名

select  COLUMN_NAME from all_tab_columns where table_name = 'REPORTFORMFULL'

获取数据库当前用户下所有表名和表名的注释

select a.TABLE_NAME,b.COMMENTS from user_tables a,user_tab_comments b WHERE a.TABLE_NAME=b.TABLE_NAME order by TABLE_NAME

自增ID

1、Oracle没有自增属性 所以需要自定义一个SEQUENCE

CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区

create sequence emp_sequence
minvalue 1
maxvalue 999999
start with 1
increment by 1
cache 20

2、然后在创建一个触发器

Create or REPLACE TRIGGER emp BEFORE
insert ON Table FOR EACH ROW
begin
select emp_Sequence.nextval into:New.TableID from Dual;
end;

创建字段描述

comment on column Table.字段 is '描述信息'

修改字段类型

alter Table  表名 modify 字段 类型;

alter Table  T modify t.id varchar2(50);

修改字段类型(如果是主键字段)

alter table T add key_NO int; --添加字段
update T set key_NO =id; --给新字段赋值
alter table T drop column id; --删除老字段
alter table T add id varchar2(50);--重建老字段
update T set id=key_NO; --给老字段赋值
ALTER TABLE T ADD (CONSTRAINT CLIENTELE PRIMARY KEY(id)); --设置主键
alter table T drop column key_NO; --删除新增字段

删除主键

--ALTER TABLE CLIENTELE DROP CONSTRAINT PK_CLIENTELE;

可为空
--alter table CLIENTELE   modify CLIENTNO int not null; 

判断VAL1为空时,替换VLA2

SELECT  NVL(VAL1,VAL2);

待补充

原文地址:https://www.cnblogs.com/likeyou/p/3848917.html