Orcale常用SQL語法

創建

sql 代码
  1. create table a_bak as select * from a where 1=2;    
  2. create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;    
  3.   
  4. -- 視圖中不能用order by,但可以用group by來達到排序的目的   
  5. create view a as select b1,b2 from b group by b1,b2;    
  6.   
  7. -- 建立序列   
  8. create sequence seq1   
  9. increment by 1    
  10. start with 1    
  11. maxvalue 999999999    
  12. cycle;   
  13.   
  14. insert into  values(seq1.nextval,1,2);  

 

刪除

sql 代码
  1. -- 每一個記錄都有唯一的rowid,在整個數據庫中唯一   
  2. -- 刪除重復的記錄   
  3. select rowid,bm,mc from a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);   
  4. delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);   
  5.   
  6. -- 刪除表a,b中重復的記錄   
  7. delete from a where exists (select 'X' from b where a.bm=b.bm and a.mc=b.mc);   
  8. delete from a where (bm,mc) in (select bm,mc from b);   
  9.   
  10. -- 刪除不含日志   
  11. TRUNCATE TABLE  OTS_ISSUE_CONFIG_TBL;   
  12.   

 

插入

sql 代码
  1. -- 把&和'插入表中   
  2. insert into a values('i''m good'); -- 兩個''表示一個'   
  3. insert into a values('i'||chr(39)||'m good');-- chr(39)代表字符'   
  4. insert into a values('a'||'&'||'b'); --   
  5.   

 

選擇

sql 代码
  1. -- 生成no   
  2. SELECT 'CI' || to_char(sysdate, 'yymmdd') || trim(to_char((to_number( substr( nvl(max(ID), 'CI991231000'), 9, 3)) + 1), '000')) as next_comment_id   
  3.         FROM NEWBUZ.CS_COMMENT   
  4.   
  5. -- 日期   
  6. select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;   
  7.   
  8. -- 連接字符串   
  9. select 1||2 from 1;   
  10. select concat(1,2) from 1;   
  11.   

 

管理

sql 代码
  1. -- 察看所有對象   
  2. select * from tab;    
  3.   
  4. --察看數據庫大小,空間使用情況   
  5. select b.file_id     文件id,   
  6. b.tablespace_name空間名,   
  7. b.file_name物理文件名,   
  8. b.bytes字節,   
  9. (b.bytes-sum(nvl(a.bytes,0)))已經使用,   
  10. sum(nvl(a.bytes,0))剩餘,   
  11. sum(nvl(a.bytes,0))/(b.bytes)*100剩下百分比   
  12. from dba_free_space a,dba_data_files b    
  13. where a.file_id=b.file_id    
  14. group by b.tablespace_name,b.file_name,b.file_id,b.bytes    
  15. order by b.tablespace_name   
  16. /   
  17. dba_free_space --空間剩餘情況   
  18. dba_data_files --    空間佔用情況   
  19.   
  20. -- 會滾段   
  21. segment_name,owner,tablespace_name,segment_id,file_id,status from dba_rollback_segs;    
  22.   
  23. -- 文件放置路徑   
  24. col file_name format a50   
  25. select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;    
  26.   
  27. -- 當前用戶   
  28. show user  
  29.   
  30. --IO競爭和負載平衡   
  31. v$datafile數據文件信息   
  32. v$filestat訪問信息   
  33.   
  34. select    
  35.     df.name filename,   
  36.     fs.phyrds readdegree,   
  37.     fs.phywrts writedegree,   
  38.     (fs.readtim/decode(fs.phyrds,0,-1,fs.phyrds)) readtime,   
  39.     (fs.writetim/decode(fs.phywrts,0,-1,fs.phywrts)) writetime   
  40. from    
  41.     v$datafile df,   
  42.     v$filestat fs   
  43. where df.file#=fs.file#   
  44. order by df.name  
  45.   
  46. -- 察看被鎖的對話和表   
  47. select object_id from v$locked_object;   
  48. -- 察看被鎖表的id和name   
  49. select object_id,object_name from dba_objects where object_id=v$locked_object.object_id    
  50. -- 察看被鎖表的sid和serial   
  51. select sid ,serial# from v$session where sid=v$locked_object.object_id   
  52. -- 刪除對話   
  53. alter system kill session 'sid,serial#'   
  54.   
  55.   

常用

sql 代码
  1. ASCII   
  2. --返回与指定的字符对应的十进制数   
  3. select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;   
  4.   
  5. CHR   
  6. --给出整数,返回对应的字符   
  7. select chr(54740) zhao,chr(65) chr65 from dual;   
  8.   
  9. CONCAT   
  10. --连接两个字符串   
  11. select concat('010-','88888888')||'转23'  高乾竞电话 from dual;   
  12.   
  13. INITCAP   
  14. --返回字符串并将字符串的第一个字母变为大写   
  15. select initcap('smith') upp from dual;   
  16.   
  17. INSTR(C1,C2,I,J)   
  18. --在一个字符串中搜索指定的字符,返回发现指定的字符的位置   
  19. --C1    被搜索的字符串   
  20. --C2    希望搜索的字符串   
  21. --I     搜索的开始位置,默认为1   
  22. --J     出现的位置,默认为1   
  23. select instr('oracle traning','ra',1,2) instring from dual;   
  24.   
  25. LENGTH   
  26. --返回字符串的长度;   
  27. select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;   
  28.   
  29. LOWER  
  30. --返回字符串,并将所有的字符小写   
  31. select lower('AaBbCcDd')AaBbCcDd from dual;   
  32.   
  33. UPPER  
  34. --返回字符串,并将所有的字符大写   
  35. select upper('AaBbCcDd') upper from dual;   
  36.   
  37. RPAD  LPAD (粘贴字符)   
  38. --RPAD  在列的右边粘贴字符   
  39. --LPAD  在列的左边粘贴字符   
  40. select lpad(rpad('gao',10,'*'),17,'*')from dual;   
  41.   
  42. LTRIM RTRIM   
  43. --LTRIM  删除左边出现的字符串   
  44. --RTRIM  删除右边出现的字符串   
  45. select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;   
  46.   
  47. SUBSTR(string,start,count)   
  48. --取子字符串,从start开始,取count个   
  49. select substr('13088888888',3,8) from dual;   
  50.   
  51. REPLACE('string','s1','s2')   
  52. --string   希望被替换的字符或变量    
  53. --s1       被替换的字符串   
  54. --s2       要替换的字符串   
  55. select replace('he love you','he','i') from dual;   
  56.   
  57. SOUNDEX   
  58. --返回一个与给定的字符串读音相同的字符串   
  59. select xm from table1 where soundex(xm)=soundex('weather');   
  60.   
  61. TRIM('s' from 'string')   
  62. --LEADING   剪掉前面的字符   
  63. --TRAILING  剪掉后面的字符   
  64. --如果不指定,默认为空格符   
  65.   
  66. ABS  
  67. --返回指定值的绝对值   
  68. select abs(100),abs(-100) from dual;   
  69.   
  70. ACOS   
  71. --给出反余弦的值   
  72. select acos(-1) from dual;   
  73.   
  74. ASIN   
  75. --给出反正弦的值   
  76. select asin(0.5) from dual;   
  77.   
  78. ATAN   
  79. --返回一个数字的反正切值   
  80. select atan(1) from dual;   
  81.   
  82. CEIL   
  83. --返回大于或等于给出数字的最小整数   
  84. select ceil(3.1415927) from dual;   
  85.   
  86. COS   
  87. --返回一个给定数字的余弦   
  88. select cos(-3.1415927) from dual;   
  89.   
  90. COSH   
  91. --返回一个数字反余弦值   
  92. select cosh(20) from dual;   
  93.   
  94. EXP   
  95. --返回一个数字e的n次方根   
  96. select exp(2),exp(1) from dual;   
  97.   
  98. FLOOR   
  99. --对给定的数字取整数   
  100. select floor(2345.67) from dual;   
  101.   
  102. LN   
  103. --返回一个数字的对数值   
  104. select ln(1),ln(2),ln(2.7182818) from dual;   
  105.   
  106. LOG(n1,n2)   
  107. --返回一个以n1为底n2的对数    
  108. select log(2,1),log(2,4) from dual;   
  109.   
  110. MOD(n1,n2)   
  111. --返回一个n1除以n2的余数   
  112. select mod(10,3),mod(3,3),mod(2,3) from dual;   
  113.   
  114. POWER   
  115. --返回n1的n2次方根   
  116. select power(2,10),power(3,3) from dual;   
  117.   
  118. ROUND和TRUNC   
  119. --按照指定的精度进行舍入   
  120. select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;   
  121.   
  122. SIGN   
  123. --取数字n的符号,大于0返回1,小于0返回-1,等于0返回0   
  124. select sign(123),sign(-100),sign(0) from dual;   
  125.   
  126. SIN   
  127. --返回一个数字的正弦值   
  128. select sin(1.57079) from dual;   
  129.   
  130. SIGH   
  131. --返回双曲正弦的值   
  132. select sin(20),sinh(20) from dual;   
  133.   
  134. SQRT   
  135. --返回数字n的根   
  136. select sqrt(64),sqrt(10) from dual;   
  137.   
  138. TAN   
  139. --返回数字的正切值   
  140. select tan(20),tan(10) from dual;   
  141.   
  142. TANH   
  143. --返回数字n的双曲正切值   
  144. select tanh(20),tan(20) from dual;   
  145.   
  146. TRUNC   
  147. --按照指定的精度截取一个数   
  148. select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;   
  149.   
  150. ADD_MONTHS   
  151. --增加或减去月份   
  152. select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;   
  153.   
  154. MONTHS_BETWEEN(date2,date1)   
  155. --给出date2-date1的月份   
  156. select months_between('19-12月-1999','19-3月-1999') mon_between from dual;   
  157.   
  158. NEW_TIME(date,'this','that')   
  159. --给出在this时区=other时区的日期和时间   
  160. select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time(sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;   
  161.   
  162. NEXT_DAY(date,'day')   
  163. --给出日期date和星期x之后计算下一个星期的日期   
  164. select next_day('18-5月-2001','星期五') next_day from dual;   
  165.   
  166. SYSDATE   
  167. --用来得到系统的当前日期   
  168. select to_char(sysdate,'dd-mm-yyyy day') from dual;   
  169.   
  170. CHARTOROWID   
  171. --将字符数据类型转换为ROWID类型   
  172. select rowid,rowidtochar(rowid),ename from scott.emp;   
  173.   
  174. CONVERT(c,dset,sset)   
  175. --将源字符串 sset从一个语言字符集转换到另一个目的dset字符集   
  176. select convert('strutz','we8hp','f7dec') "conversion" from dual;   
  177.   
  178. HEXTORAW   
  179. --将一个十六进制构成的字符串转换为二进制   
  180.   
  181. RAWTOHEXT   
  182. --将一个二进制构成的字符串转换为十六进制   
  183.   
  184. ROWIDTOCHAR   
  185. --将ROWID数据类型转换为字符类型   
  186.   
  187. TO_CHAR(date,'format')   
  188. select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;   
  189.   
  190. TO_DATE(string,'format')   
  191. --将字符串转化为ORACLE中的一个日期   
  192.   
  193. TO_MULTI_BYTE   
  194. --将字符串中的单字节字符转化为多字节字符   
  195. select to_multi_byte('高') from dual;   
  196.   
  197. TO_NUMBER   
  198. --将给出的字符转换为数字   
  199. select to_number('1999') year from dual;   
  200.   
  201. BFILENAME(dir,file)   
  202. --指定一个外部二进制文件   
  203. insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));   
  204.   
  205. DECODE   
  206. --   
  207. select sid,serial#,username,decode(command,   
  208.     0,'none',   
  209.     2,'insert',   
  210.     3,'select',   
  211.     6,'update',   
  212.     7,'delete',   
  213.     8,'drop',   
  214.     'other') cmd  from v$session where type!='background';   
  215.   
  216.   
  217. DUMP(s,fmt,start,length)   
  218. --DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值   
  219. col global_name for a30   
  220. col dump_string for a50   
  221. set lin 200   
  222. select global_name,dump(global_name,1017,8,5) dump_string from global_name;   
  223.   
  224.   
  225. EMPTY_BLOB()和EMPTY_CLOB()   
  226. --这两个函数都是用来对大数据类型字段进行初始化操作的函数   
  227.   
  228. GREATEST   
  229. --返回一组表达式中的最大值,即比较字符的编码大小.   
  230. select greatest('AA','AB','AC') from dual;   
  231.   
  232. LEAST   
  233. --返回一组表达式中的最小值    
  234. select least('啊','安','天') from dual;   
  235.   
  236. UID   
  237. --返回标识当前用户的唯一整数   
  238. show user  
  239. select username,user_id from dba_users where user_id=uid;   
  240.   
  241. USER  
  242. --返回当前用户的名字   
  243. select user from  dual;   
  244.   
  245. USEREVN   
  246. --返回当前用户环境的信息,opt可以是:   
  247. --ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE   
  248.   
  249. --ISDBA  查看当前用户是否是DBA如果是则返回true   
  250. select userenv('isdba') from dual;   
  251. --SESSION 返回会话标志   
  252. select userenv('sessionid') from dual;   
  253. --ENTRYID 返回会话人口标志   
  254. select userenv('entryid') from dual;   
  255. --INSTANCE 返回当前INSTANCE的标志   
  256. select userenv('instance') from dual;   
  257. --LANGUAGE 返回当前环境变量   
  258. select userenv('language') from dual;   
  259. --LANG 返回当前环境的语言的缩写   
  260. select userenv('lang') from dual;   
  261. --TERMINAL 返回用户的终端或机器的标志   
  262. select userenv('terminal') from dual;   
  263.   
  264. VSIZE(X)   
  265. --返回X的大小(字节)数   
  266. select vsize(user),user from dual;   
  267.   
  268. AVG(DISTINCT|ALL)   
  269. --all表示对所有的值求平均值,distinct只对不同的值求平均值   
  270. create table table3(xm varchar(8),sal number(7,2));   
  271. insert into table3 values('gao',1111.11);   
  272. insert into table3 values('gao',1111.11);   
  273. insert into table3 values('zhu',5555.55);   
  274. commit;   
  275. select avg(distinct sal) from gao.table3;   
  276. select avg(all sal) from gao.table3;   
  277.   
  278. MAX(DISTINCT|ALL)   
  279. --求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次   
  280. select max(distinct sal) from scott.emp;   
  281.   
  282. MIN(DISTINCT|ALL)   
  283. --求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次   
  284. select min(all sal) from gao.table3;   
  285.   
  286. STDDEV(distinct|all)   
  287. --求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差   
  288. select stddev(sal) from scott.emp;   
  289.   
  290. VARIANCE(DISTINCT|ALL)   
  291. --求协方差    
  292. select variance(sal) from scott.emp;   
  293.   
  294. GROUP BY  
  295. --主要用来对一组数进行统计   
  296. select deptno,count(*),sum(sal) from scott.emp group by deptno;   
  297.   
  298. HAVING  
  299. --对分组统计再加限制条件   
  300. select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;   
  301. select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;   
  302.   
  303. ORDER BY  
  304. --用于对查询到的结果进行排序输出   
  305. select deptno,ename,sal from scott.emp order by deptno,sal desc;   
  306.   

你可能感兴趣的:(oracle,sql,J#)