• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

标准SQL语句操作大全

发布: 2009-7-28 11:42 | 作者: 网络转载 | 来源: 领测软件测试网采编 | 查看: 599次 | 进入软件测试论坛讨论

领测软件测试网

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,缺省值)

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: sql SQL Sql 大全 语句

31/3123>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网