Oracle學習筆記 2

2021-08-30 18:13:19 字數 4339 閱讀 1001

個人部落格:

修改表中的列資訊:

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;

-- 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', '[email protected]', date '2007-10-12')

--下列**演示了通過 to_date() 函式返回的值新增到資料庫中

insert into mytable

(id, name, address, email,regdate)

values (6, 'rose', 'tianjin', '[email protected]', 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_between(d1,d2)

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」,則捨入到年的開始,即1月1日;如果格式為月」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 表示從右往左

-- leading和trailing 都不指定的情況下裁剪前後特定的字元

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 testtable t where t.rowid!=(select max(t1.rowid) from testtable t1 where t1.name=t.name)

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

Oracle學習筆記(2)

pl sql pl sql優點 1 良好的互動性 2 無法替代的觸發器功能 3 自動優化 尤其針對余大迴圈,pl sql效能更優 pl sql塊的結構 declare 宣告部分 在此宣告pl sql用到的變數,型別及游標,以及區域性的儲存過程和函式 begin 執行部分 過程及sql 語句 即程式的...

oracle 學習筆記 2

oracle 表管理 表名必須以字母開頭,不能超過30個字元,不用保留字,只能使用如下字元a z,a z,0 9,等。oracle資料型別 字元型char 定長 最大2000字元,效率高,查詢速度很快。char 10 不足10的用空格補齊。varchar2 變長 最大4000字元 clob 字元型大...

Oracle 學習筆記2

如何檢視一台機器的windows server 2003 系統是32位還是64位 開始 執行 cmd systeminfo 檢視資料庫是否處於force logging 模式?select force logging from v database 查詢oracle server端 的字符集?sel...