用户名:  密码:   
您当前的位置:首页 > SQL数据库 >  Oracle > 

第8讲 清屏,显示查询时间,快速建表插入大量数据,删除重复行,查询大于、小于、乘于、除于或某区间值,查询null值,like与in操作符

上次修改时间: 2015-10-13 16:04:58      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\SQL数据库相关\Oracle数据库学习\韩顺平.玩转oracle教程笔记1_30讲\      下一页

清屏,显示查询时间,快速建表插入大量数据,删除重复行,查询大于、小于、乘于、除于或某区间值,查询null值,like与in操作符

下面以scott用户下的emp(职员)和dept(部门)表为例。
一、基础命令与知识
清屏:clear;
查看表的结构 字段。类型,是否允许为空等:desc dept //desc后结表名
显示执行此命令所需时间:set timing on; //在底部会会显示查询的时间
查询某表所有数据:select * from 表名  //少用,数据太多会很慢
查询部分字段的数据:select ename,sal,job,deptno from emp;   //查询emp表中ename,sal,job,deptno字段的内容
Oracle的SQL语句不区别大小写但值区分,例:select deptno,job,sal from emp where ename='SMITH;  //查询ename='SMITH'的行,
注:sql语句大小写不区分,但内容即值区分大小写,因为数据库的SMIHT是大写,所以这里“SMIHT”必须大写,否则查询不出来

二、快速创建一个表并插入大量数据
create table users (userid varchar2(20), username varchar2(30), userPss varchar2(30));
insert into users values('a001','aaaaa','bbbbb');
insert into users (uerid,username,userpss) select * from users; //查询所有数据再插入到表users中 重复多次执行此命令可快速插入大量数据到此表中。

三、删除某些字段内容相同的行: select distinct deptno,job from emp; //经测试该句意为过滤emp表deptno和job字段都相同的在查询出的的结果中只出现一次

四、查询大于,小于,等于、乘于,除于或在某某值之间的内容
查询所有员工12个月的工资:select sal*12,ename from emp;
查询所有员工12个月的工资(有别名):select sal*12 "年工资", ename from emp; //给年工资加别名
查询工资高于3000的员工:select ename,sal from emp where sal>3000;
查询1982.11.1后入职的员工:select ename,hiredate from emp where hiredate>'1-1月-1982';
查询工资在2000-2500间员工:select ename,sal from emp where sal>=2000 and sal<=2500;

三、如何查询与处理null值
例:查询所有员工12个月的工资+资金:select sal*12+comm*12 “年工资”,ename from emp; //注:此查询方法错误,oracle中两个相加值其中一个为空,如果comm的某值为空,那么相加结果为空
 正确的写法:select sal*12+nvl(comm,0)*12 “年工资”,ename,comm from emp; //注:nul(comm,0)表如果comm字段的值为空,那么把该值设为0
例2:显示没有上级的人员:select * from emp where mgr is null;  //查询所有mgr值为null的项

四、like操作符及其通配符的用法,
%百分号代表0到多个字符,例:显示首字母为S的员工姓名工资:select ename,sal from emp where ename like 'S%';
_下划线代表任意一个字符,例:显示第三个字符为O的员式姓名工资:select ename,sal from emp where like ename like '__O%'; //这里是两个下划线

五、in操作符用法:
例:查询编号中为包括7844、234,456的行 in的用法:select * from emp where empno in (7844,234,456);