1. 程式人生 > >oracle基本語法(5)

oracle基本語法(5)

pac rop pan 會話 規範 信息 ant 作用 類型轉換

1>2個數值處理函數
2>5個字符處理函數
3>2個類型轉換函數
4>5個分組函數
5>1個空值轉換函數
6>常見數據庫對象
7>內連接與外連接

1、數值處理函數:
round(參數1,參數2):進行四舍五入,參數1,需要處理的數據(原數據),參數2,截取位數;參數2>0,向右,<0,向左,=0,小數點位置
trunc(參數1,參數2):直接截取,參數1,需要處理的數據(原數據),參數2,截取位數;參數2>0,向右,<0,向左,=0,小數點位置
select count(*),round(avg(sal),0),deptno from emp group by deptno;


select count(*),trunc(avg(sal),-2),deptno from emp group by deptno;

2、字符處理函數:
lower(參數):將所有字母都變成小寫;
upper(參數):將字母都變成大寫;
initcap(參數):首字母大寫,其余小寫
length(參數):求字符串長度
substr(參數1,參數2,參數3):取子串 ,參數1,被截取的字符串;參數2,從哪裏開始截取;參數3,截取幾位,截取的位數;

參數:可以是字符串,也可以字符串類型的列名,普通字符串
例如:查詢員工的姓名和崗位,姓名要小寫;
select ename,lower(ename),job from emp;


普通字符串:‘HELlo wOrLd!‘

select lower(‘HELlo wOrLd!‘),upper(‘HELlo wOrLd!‘),initcap(‘HELlo wOrLd!‘),length(‘HELlo wOrLd!‘),substr(‘HELlo wOrLd!‘,2,6) from dual;
虛表:dual 作用:處理跟查詢表數據,表結構沒有直接關系查詢操作;
select 456*789 from dual;
select sysdate from dual;

3、轉換函數:to_char, to_date
to_char(參數1,參數2):主要是將日期類型的數據轉換成字符串類型的數據,還可以規範日期格式;


參數1,是日期類型的列名或者數據;參數2 是格式,常用的格式:“yyyy-mm-dd hh24:mi:ss”
用法:to_char(參數1,參數2):參數1,待轉換列名;參數2:轉換成格式
用途一:單純的規範日期數據的格式
select ename, hiredate,to_char(hiredate,‘yyyy-mm-dd hh24:mi:ss‘),job from emp;
用途二:用在查詢條件中,根據日期類型的列來查詢;
例如:查詢在1981年10月1日之前入職的員工信息?
select * from emp where to_char(hiredate,‘yyyy-mm-dd‘)<‘1981-10-01‘;
to_date(參數1,參數2):主要是將字符串類型的日期數據轉換成日期類型的;主要用在插入insert語句中
用法:to_date(參數1,參數2):參數1,待轉換的字符串;參數2:轉換成格式

例如:插入入職日期是1999-10-10的員工;
insert into emp values(2222,‘sunsun‘,‘CLERK‘,7902,‘1999-10-10‘,2000,100,10); --》報錯,格式不匹配
insert into emp values(2223,‘sunsun‘,‘CLERK‘,7902,to_date(‘1999-10-10‘,‘yyyy-mm-dd‘),2000,100,10);
select * from emp where ename=‘sunsun‘;
4、分組函數
count(參數):統計查詢語句返回的行數;
max(參數):最大
min(參數):最小
avg(參數):平均值
sum(參數):求和

註意:參數一般是列名

5、空值轉換函數
nvl(參數1,參數2)
功能:轉換空值為一個特定的值
參數1:需要轉換到列名,參數2:需要指定的特定的值

6、常見的數據庫對象

①表(table):由行和列組成的二維表格;表格中的行也叫記錄,列也叫屬性;
②視圖(view):用來簡化查詢語句的,可以讓一個復雜的查詢語句變得簡單;
例如:
create view v0726 as
select cname, chour, tname from course where cid in (select cid from score where sid=(select sid from student where sname=‘王五‘));
select * from v0726;
可見創建視圖的語法create view 視圖名 as + select 語句;

創建備份表:create table 表名 as select 語句
create table empbf as select * from emp;
賦系統權限grant 權限1,權限2... to 用戶名;
例如:
普通用戶沒有創建view的權限,需要sys授權,命令:grant create view to scott;
create session ----登錄數據庫,創建會話;
create table ----創建表的權限
create view ---創建視圖的權限
create sequence ---創建序列的權限
create procedure ---創建存儲過程的權限
create synonym ----創建同義詞的權限
create tablespace ---創建表空間的權限

③索引(index):提高查詢效率;如果有索引,可以查詢的快一些,主要用在表中數據量很大的情況才有效果;
select * from student where sphone=18183929386 ;
創建索引語法:create index 索引名 on 表名(列名);

註意:索引不宜多建,索引會占用表空間,犧牲了空間換取了效率...
④存儲過程:數據庫裏編程;數據庫中寫代碼(procedure),別名:存過 ,過過
作用:將業務當中的業務邏輯、企業規則、公用的部分寫成存儲過程或者函數保存到數據庫中,以便其他模塊調用,簡化程序開發和維護,提高效率和性能。
create [or replace] procedure 存儲過程名稱
(

[arg1 [IN|OUT|IN OUT]] 數據類型,

[arg2 [IN|OUT|IN OUT]] 數據類型,
...
)

is|as

聲明部分;

begin

執行部分;

exception

異常處理部分;

end;

7、內連接、外連接
內連接:多表聯合查詢的另外一種寫法;表名1 inner join 表名2 on 連接條件;
select * from student, department where student.did=department.did;
select * from student inner join department on student.did=department.did;

註:外連接,並非主外鍵關系
左外連接:left outer join;先將符合條件的數據查詢出來,再將左表中不符合條件的數據查詢出來;
右外連接:right outer join;先將符合條件的數據查詢出來,再將右表中不符合條件的數據查詢出來;
全外連接:full outer join;先將符號條件的數據查詢出來,再將左表不符合查詢出來,再將右表不符合查詢出來;

8、刪除主鍵約束:
alter table 表名 drop constraint 約束名;
查找主鍵約束名語句:
select owner,constraint_name,column_name from user_cons_columns where table_name=‘SALGRADE‘;

oracle基本語法(5)