oracle筆記2
alter user scott account unlock 更改用戶解鎖
conn scott/tiger 重新以上述用戶登錄
select語句:
1、desc emp 描述emp表,列出表的基本信息。
2、數據類型:NUMBER(7,2) 7位的數字,2位小數
學習例子:
三張表分別為:emp 雇員表,dept 部門表,salgrade 工資等級表
3、select from dept ; 註意:每個語句以;號結束
4、desc dual 空表 DUMMY 空表 空表用途
5、select sysdate from dual;
select ename,sal12 anuual_sal from emp;
select ename,sal12 "anuual sal" from emp; anuual sal 之間不能有空格,如果有空間需加雙引號
7、select ename,sal*12 + comm from emp ; 任何空值的數學表達式都為空值
8、兩字符連接起來表達(兩個字段間連接):select ename||sal from emp ;
9、字段與字符連接:select ename || ‘abcde ’from emp;
10、select distinct deptno from emp; distinct(關鍵字,去除部門字段中重復的部分)
11、where 過慮條件,not like‘_A%’第二個字母不能為A;
12、desc 描述 降序排列 asc 升序排列(默認)
13、 lower() 函數 把大寫變成小寫 如:select lower(ename) from emp ; 全部轉為大寫函數:upper() ,用法與lower()相同;
14、substr()函數 如:select substr(ename,2,3) from emp;從第二個字符開始取3個字符。
16、ascii()把字符轉義為數字 如:select ascii(‘A‘) from dual;
17、select round(23.652) from dual; 四舍五入
select round(23.652,2) from dual; 四舍五入到小數點後兩位 ,-1,如果是-1即是四舍五入到個位;
18、to_char(sal,‘$99,999.9999‘) 按指定格式輸出,如:select to_char(sal,‘$99,999.99999‘) from dual; 9代表一位數字,L代表本地貨幣,如:to_char(sal,‘L99,999.9999‘) ,0代表一位數字,數字格式模型。
19、轉換日期格式:select to_char(hiredate,‘yyyy-mm-dd hh:mi:ss‘) from emp;
20、to_date() 函數,把字串轉為日期,如
select ename,hiredate from emp where hiredate > to_date(‘1981-8-23 12:23:44‘, ‘yyyy-mm-dd hh:mi:ss‘);
21、 to_number() 函數,把字符串轉為數字;如:
select ename,sal12 from emp where sal12 > to_number(‘$123,3456.8997‘,‘$999,9999.9999‘);
22、nvl() 處理空值函數;nvl(comm,0)表示如果comm裏面的值為空則用0代替,如果不為空,則用原數表示
如:select ename,sal*12 +nvl(comm,0) from emp;
23、組函數:
max()
min()
avg()
sun()
count()
24、group by 分組函數的重要性,出現在select列表裏的字段,如果沒有出現在組函數裏面,必須出現在group by函數裏面,否則會出現錯誤:
如:select deptno,avg(sal) from emp group by deptno ; 求出各部門的平均薪水;
select deptno,job,max(sal) from emp group by deptno,job ;
以deptno job分組
25、子查詢應用:select ename,sal from emp where sal = (select max(sal) from emp ); 查找薪水最大的人的姓名;
26、having語句 對分組進行限制
select avg(sal),deptno from emp group by deptno having avg(sal) > 2000; 求出平均薪水大於2000的部門;
27、連接子查詢:
select ename,sal from emp join (select max(sal) max_sal , deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno =t.deptno );
求出每個部門薪水最高的人的姓名,與薪水
28、表的自連接:select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;
sql 99 新語法,where 只作過慮條件使用
十字連接:select dname,ename from emp cross join dept ;
29、表連接的兩個不同方法:where 與 join …… on
如:select ename,dname from emp,dept where emp.deptno = dept.no;
select ename,dname from emp join dept on (emp.deptno = dept.deptno);
30、不等於連接
如:select ename,grade from emp e, salgrade s where e.sal between s.losal and s.hisal;
select ename,grade from emp e join salgrade s on (e.sal between s.losal and s.hisal) ;
31、多表連接:
select ename,dname,grade from emp e
join dept d on (e.deptno = d.deptno)
join salgrade s on (e.sal between s.losal and s.hisal)
where ename not like ‘_A%‘
order by e.sal desc;
32、左外連接:
select e1.ename,e2.name from emp e1 left join emp e2 on (e1.mgr =e2.empno);
32、右外連接:
select ename,dname from emp e right outer join dept d on (e.deptno = d.deptno);
33、左右全連接 full
select ename,dname from emp e full join dept d on (e.deptno = d.deptno);
34、求部門平均薪水等級:
select t.deptno,dname,grade from
(select deptno,avg(sal) from emp group by deptno) t
join dept d on t.deptno = d.deptno
join salgrade s on t.avg_sal between s.losal and s.hisal
order by t.avg_sal desc;
35、用戶授權:
conn sys/tiger as sysdba
創建視圖:
create v$_dept_avg_sal_info as
select deptno,grade,avg_sal from
(select deptno,avg(sal) avg_sal from emp group by deptno ) t
join salgrade s on (t.avg_sal between s.losal and s.hisal)
;
grant create table ,create view to scott;
賦給用戶scott 建立表,建立視圖權限
刪除用戶:drop user scott cascade;(註:要以管理員身份才可執行)
36、conn sys/tiger as sysdba; 以管理員身份登錄
37、導出用戶數據:
進入一個空目錄下,建立一個空文件夾來存放導出來的數據:
c:\>cd temp
c:\temp>del .;
c:\temp>exp
38、創建用戶:creat user ming identified by tiger(密碼) default tablespace users quota 10M on users;
grant create session,create table,create view to ming; 授權
39、導入用戶數據:
c:\temp>imp
40、DML 語句:
在dept插入一條數據:insert into dept values (50,‘game‘,‘bj‘);
註:字符串數據要使用單引號
insert into dept (deptno,dname) values (60,‘game2‘)
insert into dept select * from dept; 把整張表都插入到裏面去
41、rollback:撤消上一步的操作
42、備份一張表:create table emp2 as select * from emp;
43、rownumber 的使用
oracle筆記2