Oracle简单基础命令

1  调用记事本。

       如果现在编写语句,那么直接在命令行方式下是很难完成的。有图形界面的时候这样的语句编写很容易,但是很多时候在没有图形界面下,直接写就累了,所以可以利用“ed”命令启动本机的记事本程序。

       输入:“ed hello”。

设置每行显示的数据长度:SET LINESIZE 300 ;

设置每次显示的行数:SET PAGESIZE 30

查询一个用户所有的数据表:select * from tab;

查询表结构:desc 表名称;

· DML(数据操作语言):数据的更新与查询操作(SELECTFROMINSERTGROUP BYHAVINGWHEREUPDATEDELETE),在开发之中几乎都是以DML操作为主的。

              · DDL(数据定义语言):数据库对象的定义语言,例如:数据表、约束、索引、同义词、用户;一般进行数据库设计的时候都必须掌握。

                   · DCL(数据库控制语言):数据库的权限控制

·2 关系运算:>=<>=<=!=<>);

                   · 范围运算:BETWEEN...AND

                   · 空判断:IS NULLIS NOT NULL

                   · IN判断:INNOT INexists()(复杂查询);

                   · 模糊查询:LIKENOT LIKE

 

以上的限定符都只能够判断一次,如果现在有若干个限定符,那么就需要进行若干个限定符的连接,可以使用逻辑运算:AND(与)、OR(或)、NOT(非);

                   · 与操作表示的所有的判断条件都满足时返回真(true);

                   · 或操作表示若干个判断条件只要有一个满足就返回真(true)。

3、模糊查询:LIKE

LIKE可以实现数据的模糊查询操作,如果要想使用LIKE则必须使用如下的两个匹配符号:

                   · “_”:匹配任意的一位符号;

                   · “%”:匹配任意的符号(包含匹配0位、1位、多位)。

         WHERE子句的执行优先于SELECT子句,WHERE子句确定数据行,SELECT子句确定数据列;

 

 

        

链接数据库:sqlplus scott/tiger

1查询全部内容:emp

select * from emp;

2查询每个雇员的编号、姓名、职位、基本工资

select empno,ename,job from emp;

 

3查询出每个雇员的编号、姓名、基本年薪(月工资是sal,年薪*12

select empno,ename,sal*12 income from emp;

 

4使用“||”进行连接

select '编号:' || empno ||  '  姓名:' || ename from emp;

 

5、使用distinct消除重复内容

select distinct job from emp;

select distinct ename,job from emp;

 

6查询工资低于1200的雇员(不包含1200

select * from emp where sal < 1200;

 

7查询出工资是3000的雇员

select * from emp where sal = 3000;

 

8查询职位不是办事员的雇员(职位是job字段,办事员的职位名称CLERK

select * from emp where job<>'CLERK' ;

select * from emp where job!='CLERK' ;

 

9要求查询出不是办事员,但是工资低于3000的雇员信息

    · 第一个条件(不是办事员):job<>'CLERK'

    · 第二个条件(工资低于3000):sal<3000

select * from emp wherejob<>'CLERK' AND sal<3000 ;

 

10查询出职位不是办事员也不是销售的雇员信息

    · 第一个条件:job<>'CLERK'

    · 第二个条件:job<>'SALESMAN'

select * from emp where job<>'CLERK' and job<>'SALESMAN';

 

11查询出职位是办事员,或者工资低于1200的所有雇员

    · 第一个条件:job='CLERK'

    · 第二个条件:sal<1200

    两个条件满足一个即可,使用OR连接。

select * from emp where job='CLERK' or sal<1200;

除了ANDOR之外,还可以使用NOT进行求反。即:true变为falsefalse变为true

此时表示的是工资小与等于2000

select * from emp where not sal<=2000;

 

12查询出工资在1500 ~ 3000之间的所有雇员, 使用BETWEEN...AND查询;

select * from emp where sal between 1500 and 3000;

 

13查询出所有在1981年雇佣的雇员信息

· 范围:1981-01-01'01-1-81' ~ 1981-12-31'31-12-1981'

select * from emp where hiredate between '01-1-1981' and '31-12-1981';

 

14查询所有领取佣金不为空的雇员信息

select * from emp where comm is not null;

 

15IN操作符(谓词IN核心查询出雇员编号是7369756677889999的雇员信息

select * from emp where empno=7369 or empno=7566 or empno=9999;

select * from emp where empno in(7369,7566,9999);

NOT IN,那么这个表示的是不在范围之中,NOT IN里面不能有null;

select * from emp where empno not in(7369,7566,9999);

 

16查询所有雇员姓名中以字母A开头的雇员信息

select * from emp where ename like 'A%';

 

17查询所有雇员姓名中第二个字母是A的所有雇员

select * from emp where ename like '_A%';

 

18查询雇员姓名中任意位置上存在有字母A的雇员信息

select * from emp where ename like '%A%';

 

19、查询全部

select * from emp where ename like '%%';

 

20LIKE可以在任意的数据类型上使用

select * from emp where ename like '%A%' or sal like '%1%' or hiredate like '%81%';

 

③ 选出所需要的数据列SELECT [DISTINCT] * | [别名], [别名], [别名]...

① 确定数据来源FROM 表名称 [别名]

② 筛选数据行[WHERE 限定条件(s)]

④ 数据排序[ORDER BY 排序字段 [ASC | DESC] , 排序字段 [ASC | DESC] , ...];

既然ORDER BY是在SELECT子句之后执行,那么就意味着ORDER BY可以使用SELECT子句定义的别名。

         但是对于字段排序有两种形式:

                   · 升序:ASC,默认不写排序也是升序;

                   · 降序:DESC,由高到低进行排序。

1   SELECT子句确定数据列;

2   WHERE子句控制数据行;

3   ORDER BY子句永远最后执行。

 

1、    按照工资由高到低排序,此时应该使用的是一个降序排序

select * from emp order by sal desc;

 

2、    按照雇佣日期由早到晚排序

select * from emp order by hiredate asc;

select * from emp order by hiredate;

 

3、    按照工资由高到低排序(降序),如果工资相同,则按照雇佣日期由早到晚排序(升序)

select * from emp order by sal desc,hiredate;

 

4、    所有的排序操作都是在WHERE筛选之后进行的

查询出所有办事员的编号、职位、年薪,按照年薪由高到低排序

办事员:job=’CLERK’;

select empno,job,sal*12 年薪 from emp where job='CLERK' order by 年薪;

 

5、    选择部门30中的所有员工,限定查询使用where子句,部门编号deptno

select * from emp where deptno=30;

 

6、    列出所有办事员(CLERK)的姓名,编号和部门编号,限定查询使用where

select ename,empno,deptno from emp where job='CLERK';

 

7、    找出佣金高于薪金的60%的员工,佣金使用的是comm字段,而薪金是sal,而且comm本身包含有nullnull进行任何数学计算结果都是null

select * from emp where comm>sal*0.6;

 

8、    找出部门10中所有经理(MANAGER)或部门20中所有办事员(CLERK)的详细资料

select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');

 

9、    找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料

第一组条件(部门10中所有经理):deptno=10 AND job='MANAGER'

第二组条件(部门20中所有办事员):deptno=20 AND job='CLERK'

第三组条件(不是经理又不是办事员但其薪金大于或等于2000):job NOT IN('MANAGER','CLERK') AND sal>=2000

select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK') or (job not in('MANAGER','CLERK') and sal>=2000);

 

10、  找出收取佣金的员工的不同工作, 销售具备佣金,但是现在要的是工作,工作就会有重复数据

select distinct job from emp where comm is not null;

 

11、  找出不收取佣金或收取的佣金低于100的员工

对于null的判断使用IS NULLIS NOT NULL

select distinct job from emp where comm is null or comm<100;

 

12、           显示不带有“R”的员工的姓名

select * from emp where ename not like '%R%';

 

13、  显示姓名字段的任何位置包含“A”的所有员工的姓名,显示的结果按照基本工资由高到低排序,如果基本工资相同,则按照雇佣年限由早到晚排序,如果雇佣日期相同,则按照职位排序

select * from emp where ename like '%A%' order by sal desc,hiredate,job;

猜你喜欢

转载自404168219.iteye.com/blog/2337610