標準SQL語句操作大全

發表于:2009-07-28來源:作者:點擊數: 標簽:sqlSQLSql大全語句
SQL語句大全一 基本操作 1) desc,describe 作用是顯示數據表的結構 使用形式: desc 數據表名 2) distinct 消除重復的數據 使用形式:select distinct 字段名 from 數據表 3) order by 字段1 asc,字段2 desc 4) 嵌套查詢 select emp.empno,emp.ename,emp.job

SQL語句大全一

基本操作
1) desc,describe 作用是顯示數據表的結構 使用形式: desc 數據表名
2) distinct 消除重復的數據 使用形式:select distinct 字段名 from 數據表
3) order by 字段1 asc,字段2 desc
4) 嵌套查詢 select emp.empno,emp.ename,emp.job,emp.sal
     from scott.emp
     where sal>=(select sal from scott.emp where ename = 'WARD');
5) in 嵌套查詢 select emp.empno,emp.ename,emp.job,emp.sal
        from scott.emp
        where sal in (select sal from scott.emp where ename = 'WARD');
6) any 嵌套查詢 select emp.empno,emp.ename,emp.job,emp.sal
         from scott.emp
         where sal > any (select sal from scott.emp where job = 'MANAGER');
   等價于 (1) select sal from scott.emp where job = 'MANAGER'
          (2) select emp.empno,emp.ename,emp.job,emp.sal
         from scott.emp
   where sal > (1)中查出的數據a or sal > (1)中查出的數據b or sal > (1)中查出的數據c
eg:
   select sal from scott.emp where job = 'MANAGER'結果;12,10,13
   等價于 sal=12,10,13 或者 SAL>(12 OR 10 OR 13)

7) 交操作就是集合中交集的概念。屬于集合A且屬于集合B的元素總和就是交集。 在【命令編輯區】執行下列語句。

eg:
(select djbh from ck_rwd_hz) intersect(select djbh from ck_rwd_mx) 單據編號相同的
select * from ck_rwd_mx a,
((select djbh from ck_rwd_hz) intersect(select djbh from ck_rwd_mx)) b
   where a.djbh =b.djbh

二 函數

1)ceil 取大于等于數值N的最小整數 ceil(N); select mgr,mgr/100,ceil(mgr/100) from scott.emp;
2)floor 取小于等于數值N的最大整數 floor(N); select mgr,mgr/100,floor(mgr/100) from scott.emp;
3)mod m整除n后的余數 mod(m,n)
4)power m的n次方 mod(m,n)
5)round m的四舍五入,保留n位 mod(m,n)
select round(8.655,2)from dual; 8.66
select round(8.653,2)from dual; 8.65

6)sign n>0,取1;n=0,取0;n<0,取-1;
7)avg 求平均值 avg(字段名)
8)count 統計總數 count(字段名) select (*) from scott.emp; select count(distinct job) from scott.emp;
9)min 計算數值型字段最小值 select min(sal) 最少薪水 from scott.emp;
10)max 計算數值型字段最大值 select max(sal) 最高薪水 from scott.emp;
11)sum 計算數值型字段總和 select sum(sal) 薪水總和 from scott.emp;

三 錄入數據
1)單行數據錄入
insert into 數據表(字段1,字段2,...)valuse(字段名1的值,字段名2的值,...)
數值型字段可以直接寫值;字符型字段加單引號;日期型字段加單引號,同時要注意年月日的排列順序
2)多行數據錄入
insert into 數據表(字段名1,字段名2,...)
(select(字段名1或運算,字段名2或運算,...)from數據表 where 條件)

3)表間的數據復制
create table scott.test
as
(
select distinct empno,ename,hiredate from scott.emp where empno>=7000
);
     create table spkpk_liu as select * from spkfk;   創建表又復制數據,但是創建的表信息不全
     全表備份的時候可以這樣些。
一般在建了表之后根據需要再看是否要把索引和主鍵這些再建上去。

而且" create table spkpk_liu as select * from spkfk
"
這樣建表后,表的很多參數值都是默認的最小的值,比如原表的初始值10M,新表的可能只有256K。
正式的環境里面用到的表,一般不推薦這樣建表。

用這個方法僅僅有點偷懶,這樣做的話,一個語句可以實現建表和插入數據的目的。
比如需要修改表A的數據,修改前可能考慮把A表的數據備份一個。
這個時候就可以用create table ... as...
這樣方便將來回復A表的數據
自己調試程序的時候都可以這樣處理 但是不能像這樣創建過程、包、函數

四 刪除數據
delete 刪除數據; truncate刪除整個表數據但保留結構
1)刪除記錄
delete from scott.test where empno >= 7500 and empno <=8000;
2)刪除整個數據
truncate table scott.test;

truncate,delete,drop的異同點
注意:這里說的delete是指不帶where子句的delete語句

相同點:truncate和不帶where子句的delete, 以及drop都會刪除表內的數據
不同點:
1. truncate和 delete只刪除數據不刪除表的結構(定義)
     drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴于該表的存儲過程/函數將保留,但是變為invalid狀態.


2.delete語句是dml,這個操作會放到rollback segement中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發.
truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger. 顯然drop語句將表所占用的空間全部釋放

3.速度,一般來說: drop> truncate > delete
使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大,可以通過ROBACK回滾,相當有恢復的余地
想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可.   truncate table xx 刪除整個表的數據,沒有恢復的余地,好處可以整理表內碎片,釋放空間
所以最好一般先備份數據
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據


五 更新數據
update 數據表
set 字段名1=新的賦值,字段名2=新的賦值,....
where 條件

update scott.emp
set empno=8888,ename='TOM',hiredate='03-9月 -2002'
where empno = 7566;

update scott.emp
set sal=
(select sal+300 from scott.emp where empno = 8099)
where empno=8099;


decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,缺省值)

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97