/*相当于DECODE作用*/
CASE WHEN case when fv=2 then 0 else 1 end
/*存储:基于一个表数据生成另一个表数据*/
insert into temp (
f1,f2
)
select temp.nextval,
v1
)
from tName;
/*习练SQL时常用造数据*/
with temp as (
SELECT '练习' act FROM DUAL UNION ALL ...
)
/*列转行*/
list agg(f1,','),f2 within group (order by f1) from tName group by f2
list agg(f1,',') within group (order by f1) over (patition by f2) from tName
/*存储*/
create procedure createnotdet(newYMonth number) is
firstDayNewMonth date;
lastDayNewMonth date;
begin
....
/*数据库表的创建*/
CREATE TABLE COURCE(
CNO VARCHAR2(8),
CNAME VARCHAR2(20),
CREDIT NUMBER(1),
CTIME NUMBER(2),
QUOTA NUMBER(3)
)
从上面来看,首先要明确编号是不是纯数字,如果不是应该建为 varchar2(8)
另外,从人数来看编号的位数,如老师,可以建 number(4),学生可建 number(6),
而系的话 number(2) 就可以了
/*接下来是表操作的语法*/
alter table COURCE add (constraint pk_cource primary key cno);
alter table COURCE MODIFY CNAME constraint NOT_NULL_CNAME NOT NULL ;
改名:
如果是表名的改名,直接 rename to ,而非对表的 alter
如果是改列,则是对表内部信息的 alter ,所以 alter tName rename column colName to
接下来的对列的精度、长度的修改,就不需要直点列名了:
alter table tName modify colName 型号
/*外键*/
alter table tName add [constraint constraint_name](foreign key tName(tFie1) REFERRENCEs tName1(tFie2) )