2011-08-24 sql
alter user scott account unlock 更改用戶解鎖
conn scott/tiger 從新以上述用戶登陸session
select語句:ide
一、desc emp 描述emp表,列出表的基本信息。
二、數據類型:NUMBER(7,2) 7位的數字,2位小數函數
學習例子:
三張表分別爲:emp 僱員表,dept 部門表,salgrade 工資等級表學習
三、select from dept ; 注意:每一個語句以;號結束
四、desc dual 空表 DUMMY 空表 空表用途
五、select sysdate from dual;
六、select ename,sal12 from emp; 計算每一個人的年薪
select ename,sal12 anuual_sal from emp;
select ename,sal12 "anuual sal" from emp; anuual sal 之間不能有空格,若是有空間需加雙引號spa
七、select ename,sal*12 + comm from emp ; 任何空值的數學表達式都爲空值
八、兩字符鏈接起來表達(兩個字段間鏈接):select ename||sal from emp ;
九、字段與字符鏈接:select ename || ‘abcde ’from emp;
若是出現字符串裏有引號的狀況,便可以用兩個引號表示一個引號,如:select ename || 'abc''de' from emp ;
十、select distinct deptno from emp; distinct(關鍵字,去除部門字段中重複的部分)
十一、where 過慮條件,not like‘_A%’第二個字母不能爲A;
十二、desc 描述 降序排列 asc 升序排列(默認)ci
1三、 lower() 函數 把大寫變成小寫 如:select lower(ename) from emp ; 所有轉爲大寫函數:upper() ,用法與lower()相同;字符串
1四、substr()函數 如:select substr(ename,2,3) from emp;從第二個字符開始取3個字符。
1五、chr() 把數字轉義爲字符 如:select chr(65) from dual;
1六、ascii()把字符轉義爲數字 如:select ascii('A') from dual;
1七、select round(23.652) from dual; 四捨五入
select round(23.652,2) from dual; 四捨五入到小數點後兩位 ,-1,若是是-1便是四捨五入到個位;
1八、to_char(sal,'$99,999.9999') 按指定格式輸出,如:select to_char(sal,'$99,999.99999') from dual; 9表明一位數字,L表明本地貨幣,如:to_char(sal,'L99,999.9999') ,0表明一位數字,數字格式模型。
1九、轉換日期格式: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');
2一、 to_number() 函數,把字符串轉爲數字;如:
select ename,sal12 from emp where sal12 > to_number('$123,3456.8997','$999,9999.9999');
2二、nvl() 處理空值函數;nvl(comm,0)表示若是comm裏面的值爲空則用0代替,若是不爲空,則用原數表示
如:select ename,sal*12 +nvl(comm,0) from emp;
2三、組函數:
max()
min()
avg()
sun()
count()
2四、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分組
2五、子查詢應用:select ename,sal from emp where sal = (select max(sal) from emp ); 查找薪水最大的人的姓名;
2六、having語句 對分組進行限制
select avg(sal),deptno from emp group by deptno having avg(sal) > 2000; 求出平均薪水大於2000的部門;數學
2七、鏈接子查詢:
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 );
求出每一個部門薪水最高的人的姓名,與薪水
2八、表的自鏈接:select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;it
sql 99 新語法,where 只做過慮條件使用
十字鏈接:select dname,ename from emp cross join dept ;
2九、錶鏈接的兩個不一樣方法: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) ;
3一、多表鏈接:
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;
3二、左外鏈接:
select e1.ename,e2.name from emp e1 left join emp e2 on (e1.mgr =e2.empno);
3二、右外鏈接:
select ename,dname from emp e right outer join dept d on (e.deptno = d.deptno);
3三、左右全鏈接 full
select ename,dname from emp e full join dept d on (e.deptno = d.deptno);
3四、求部門平均薪水等級:
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;
3五、用戶受權:
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;(注:要以管理員身份纔可執行)
3六、conn sys/tiger as sysdba; 以管理員身份登陸
3七、導出用戶數據:
進入一個空目錄下,創建一個空文件夾來存放導出來的數據:
c:\>cd temp
c:\temp>del .;
c:\temp>exp
3八、建立用戶:creat user ming identified by tiger(密碼) default tablespace users quota 10M on users;
grant create session,create table,create view to ming; 受權
3九、導入用戶數據:
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; 把整張表都插入到裏面去
4一、rollback:撤消上一步的操做
4二、備份一張表:create table emp2 as select * from emp;
4三、rownumber 的使用