初次使用总结
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);
待补充