天天看點

Oracle程式設計學習筆記

Sql語句 含義 備注
DESC EMP; 查詢表結構 EMP為表名
SELECT table_name FROM user_tables; 檢視目前使用者下的所有表的名字
select*from emp; 查詢emp表中的所有記錄
DELETE FROM 表名稱 WHERE 列名稱 = 值 DELETE 語句用于删除表中的行。 DELETE FROM Person WHERE LastName = 'Wilson' 
DELETE  FROM table_name where id=1 删除id為1 的記錄
DELETE  FROM table_name 所有表記錄删除
drop table subject; 删除表subject
select Ename,job from emp; 查詢ename和job這兩個字段的值(列)
SELECT DISTINCT 列名稱 FROM 表名稱 去除查詢出來的重複值 DISTINCT隻能在select後邊,去重的時候,要在一整行記錄都重複的情況下才會去重,否則打破資料對應關系
select id*2 as id2 from emp 查詢id*2的值顯示為id2

as也可以用空格代替,給表取别名的時候隻能用空格

eg:--查詢編号  姓名  年薪  月薪   日薪   

select EMPNO AS 編号, ENAME AS 姓名,SAL*12 AS 年薪,SAL as 月薪,SAL/30 AS 日薪 from EMP; 

|| 拼接字元串

select '編号:'|| empno ||'姓名:'|| ename ||'月薪'||sal 描述

from emp ;

ORDER BY  用于對結果集進行排序。

select  * from emp order by id  DESC   按照ID降序排序                       

  ASC是升序(預設)

DESC是降序

is noll、is not null 判斷null
=  null 判斷值是否為null
a>200 and     c  <300  或者 between 200 and 300 範圍查詢【閉區間】
IN(10,20,30) 取10,20或者30
NOT IN(10,20) 不取10或20
like

模糊查詢% 

表示任意個任意字元

_  (下劃線)表示一個任意字元

select * from emp where job like '%S%';      包含S的

select * from emp where job like '_S%';        第二個字元為S的

select * from emp where job like 'S%';       以S開頭的

select * from emp where job like '%S';      以S結尾的

SELECT table_name FROM user_tables; 檢視目前使用者下的所有表的名字
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值 Update 語句用于修改表中的資料。 update emp SET  sal=400 where empno=7369;

NVL(列,數值)

NVL(列,'文本')

如果這個之值為空,則替換為數值

如果這個之值為空,則替換為文本

select sal+nvl(comm,0) as 工資 from emp;

select distinct student.name,grade.score from subject,grade,student where grade.score=90 and STUDENT.id=1;

多表關聯查詢

單行函數
字元函數 upper(str) 把str變為大寫
lower(str) 把str變為小寫
initcap(str) 把str首字母變大寫
replace(str,f,s) 把f換為s
length(str) 長度
substr(str,index1,index2) 截取    左閉右開區間
substr(str,3) 截取3到結尾
substr(str,-3) 截取後三位
ASCII('a') 擷取字元ASCII碼
CHAR(100) 把ASCII碼轉化為字元
Ltrim(str) 去除str左邊空白
trim(str) 去除str兩邊空白字元
Rtrim(str) 去除str右邊空白
LPAD 填充       select LPAD('cc',10,'*')          用*代替cc左邊不足10位的字元
RPAD 填充       select RPAD('cc',10,'*')          用*代替cc右邊邊不足10位的字元
instr(‘hello’,‘ll’) 傳回ll在hello中的索引
concat    和    || 拼接
數值型函數 round(1.234) 四舍五入保留整數
round(1.234,2) 四舍五入保留2位小數
trunc(1.23) 直接舍棄小數
trunc(1.23,2) 保留兩位小數截取
MOD(10,3) 10/3的餘數(取模運算)
Ceil(45.67) 向上取整
Floor(45.56) 向下取整
日期函數 systimestamp 擷取目前時間
add_months(sysdate,3) 在sysdate日期之後3個月的日期
add_months(sysdate,-3) 在sysdate日期之前3個月的日期
next_day(sysdate,'Sunday') 下一個星期天的日期
last_day(sysdate) 傳回本月最後一天
Months_between(sysdate,hiredate) 傳回兩個日期的月差
extract(year from sysdate) 從sysdate中擷取年份
extract(month from sysdate) 從sysdate中擷取月份
extract(day from sysdate) 從sysdate中擷取天
extract(hour from systimestamp) 從sysdate中擷取時
extract(minute from systimestamp) 從sysdate中擷取分
extract(second from systimestamp) 從sysdate中擷取秒
to_timestamp(‘2018-12-12 12:3:4’,‘yyyy-mm-dd  hh24:mi:ss’) 格式化時間格式(字元串轉日期)
轉換函數 to_char(sysdate,‘yyyy-mm-dd  hh24:mi:ss’) 将日期格式轉化為字元串
to_char(1234567,'999,999,999,999')