常见的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,缺省值) 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容