【Oracle】第二章常用操作

来源:互联网 发布:中国象棋人工智能算法 编辑:程序博客网 时间:2024/05/16 11:48

ORACLE 第二章常用操作

修改表中的列信息:

       alter table vendor_master modify(vencode varchar(20));

给表中列添加一个默认值约束

      alter table mytable modify(name varchar2(20) default 'abc');

为现有表中的列添加一个主键约束:

      alter table testtable add(constraint "idkey" primary key("ID"));

为现有的表添加一个列:

alter table vendor_master add(vid number(5));

为现有表删除一个列:

      alter table vendor_master drop column vid;

删除一个表:

      drop table vendor_master;

修改列名:

alter table mytable rename column name to newName

-- unio 返回两个查询选定的所有不重复的行。unio的使用

select vencode from vendor_master 

union  select vencode  from order_master

--unio all返回两个查询选定的所有行,包括重复的行 ,unio all的使用

select vencode from vendor_master 

union all select vencode  from order_master

--intersect 返回两个查询都有的行,intersect 的使用

select vencode from vendor_master 

intersect select vencode  from order_master

--minus 的使用操作符只返回由第一个查询选定但是没有被第二个查

--询选定的行,也就是在第一个查询结果中排除在第二个查询结果中出现的行

select vencode from vendor_master 

 minus

 select vencode  from order_master

 --- || 连接符的使用

 select ('供应商'||venname||'地址为:'||venadd1||'  '||venadd2||' '||venadd3) as 地址 from vendor_master

--使用DATE 关键字向数据库提供一个日期文本字符串,此日期必--须使用yyyy-mm-dd格式,以下代码演示了 date关键字;

insert into MYTABLE (ID, NAME, ADDRESS, EMAIL,REGDATE)

values (6, 'rose', 'tianjin', 'rose@sdi.com', date '2007-10-12')

--下列代码演示了通过 to_date() 函数返回的值添加到数据库中

insert into MYTABLE 

(ID, NAME, ADDRESS, EMAIL,REGDATE)
values (6, 'rose', 'tianjin', 'rose@sdi.com', to_date('2007-10-23 12:36:58','yyyy-mm-dd hh24:mi:ss'))

 -- add_month 的使用

 select del_date ,add_months(del_date,2) from order_master

 

 --months_between 的使用该函数返回两个日期之间的月数,格式为MONTHS_BETWEENd1d2

 select to_date('2009-11-30','yyyy-mm-dd') from dual

 select months_between(to_date('2009-12-31','yyyy-mm-dd'),to_date('2008-12-20','yyyy-mm-dd')) from dual

 

 -- last_day的使用,该函数返回指定日期当月的最后一天的日期值,格式为LAST_DAY(d)

 select sysdate,last_day(sysdate) from dual

 

 -- ROUND, 格式为ROUND(d[fmt]),d是日期,fmt是格式模型。

 --fmt是一个可选项,日期默认舍入为最靠近的那一天。

 --如果指定格式为年”YEAR,则舍入到年的开始,即11日;如果格式为月”MONTH,则舍入到月的第一日;如果格式为周”DAY,则舍入到最靠近的星期日。

select round(to_date('2009-8-13','yyyy-mm-dd hh24:mi:ss'),'day') as m from dual

 

 -- NEXT_DAY ,该函数返回指定的下一个星期几的日期,格式为

-- NEXT_DAY(d,day)d是日期,day指周内任何一天。

 select next_day(sysdate,'星期五') from dual

--trunc函数将指定日期截断为由格式模型指定的单位的日期,

--ROUND函数不同的是它只舍不入

select trunc(to_date('2009-12-12','yyyy-mm-dd'),'day') from dual

--函数提取日期时间类型中都特定部分,格式为

--EXTRACT(fmt FROM d)

select extract(year from sysdate) from dual

--根据ASCII码返回对应的字符

select chr(97) from dual

--LPAD 函数由三个参数 ,第一个参数是字符串,

--该字符串左边需要填充,第二个是数字,

--它表示返回值的总长度,第三个是字符串,

--需要时用它进行左填充。

Select lpad('function',10,'=') from dual;

--TRIM函数从字符串的开始或者结尾,裁剪特定的字符,默认裁剪空格

-- leading 表示从左往右,trailing 表示从右往左

-- leadingtrailing 都不指定的情况下裁剪前后特定的字符

select trim(leading 9 from 99977589678999) from dual

select trim(9 from 99977589678999) from dual

--length 函数返回字符串的长度

select length('abcd') from dual

--decode 函数进行逐个值的替换

-- select decode(expr,search1,result1,search2,result2...[default])

select decode(2,1,'相同') from dual

-- to_char 转换字符串函数

SELECT TO_CHAR(sysdate,'YYYY""fmMM""fmDD"" HH24:MI:SS')   FROM dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual 

-- to_date 日期转换函数

select to_date('2009-10-10 13:12:12','yyyy-mm-dd hh24:mi:ss') from dual

--将空值转换为指定的值,NVL(expression1,expression2)

select vencode,venname,nvl(venadd1,'no') from vendor_master

--NVL2  使用 (如果第一个参数不为空返回第二个参数,否则返回第三个参数)

select vencode,venname,nvl2(venadd1,'北京','没有地址') from vendor_master

--NULLIF 使用(判断两个参数是否相等,如果相等返回 null ,否则返回第一个参数)

select nullif(1,2) from dual

--使用 rollup 子句为每个分组返回一条小计,并为全部分组返回总计:

Select  division_id,sum(salary),count(*) from employees2

Group by division_id

使用oracle 伪列删除表中重复记录:

delete from testtable t where t.rowid!=(select max(t1.rowid) from testtable t1 where t1.name=t.name)

oracle 翻页代码:

 select * from (select rownum r,o.* from order_master o where rownum <=12) where r>9

0 0