前言

总结了一下SQL关于查询的语句,希望能给大家带来一些帮助

1.简单查询语句的语法 

select ....(列名) from ...(表名)

select后面跟是你要从数据库里取的数据,from后面跟表名,表示你要从哪张中读取这些数据

如:

--查询emp表中员工的编号、姓名、工作、工资

select empno,ename,job,sal from emp;

--查询emp表中所有列的信息

select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;

注释:在项目时尽量避免使用select * from...   ,*是对表中全部数据进行查询,会减少执行效率,尽量需要什么写什么,但是在我们平时自己练习的时候还是可以使用的。

2.注释

     单行注释:--

     多行注释:以/* 开始,以*/结尾     

3.sql中的别名

      对象名 as 别名

      对象名  别名

如:

select empno as 员工编号,ename 姓名,job 工作,mgr 上级编号,hiredate 入职日期,sal 工资,comm 佣金,deptno 部门编号 from emp; 这样的话出来的表中的列名就是我们自己设置的表名

注意:给表、视图取别名时不能加as

select e.* from emp e; --select * from emp;

4.带条件的查询

select 列名,列名,...,列名 from 表名 where 条件表达式;

where:条件关键字,后面跟条件表达式,这个条件一般是和数据库中列相关

例:

--查询工资大于1500的员工信息

select * from emp where sal>1500;

--查询名字叫SMITH的员工的信息

select * from emp where ename='SMITH';

where 后面的条件表达式

  >

   <

  >=

  <=

  !=,<>:表示不等于

  =

in:后面跟一个集合或者子查询

oracle中表示一个简单的集合 ,(元素,元素,元素,... 元素) 例如 (1,2,3,4,5)  ('a','b','c','d')

--查询emp表中,工资是800,1600,或者3000的员工信息

select * from  emp  where sal in(800,1600,3000);

not in:和in是相反的,语句格式都是相同的

like:它只用在字符串列,表示对字符串进行模糊匹配有两个点位符:

           %:表示在这个%出现的地方可以有0个或者多个字符

           _: 表示在_出现的地方有且只能一个任意字符

例如

--查询员工姓名以S结尾的员工信息

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

--查询emp表中员工姓名的第二个字符是L的员工信息

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

--查询emp表中员工姓名第三个字符是A的员工信息

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

--查询员工姓名中有_的员工信息

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

exists:它不和任何列一起使用,后面跟的是一个子查询(查询语句select语句),如果子查询能查出结果,那么这个条件就是成立的,查不出结果条件不成立

not exists:和exists相反

select * from emp where exists(select * from emp where 1=0);
select * from emp where exists(select * from emp);

条件连接符

and:表示并且,当and连接的两个条件同时成立时,总条件才算成立,只要有一个条件不成立,整体不成立

or:表示或者,当or连接的两个条件有一个条件成立,整体条件成立,只有两个条件都不成立时,整体才不成立

between value1 and value2:value1的值比value2值小,value1和value2一般是数字类型,还可以是日期,表示值在value1和value2之间它的取值是包含value1和value2的。

--查询10号部门,工资大于1000的员工信息

select * from emp where deptno=10 and sal>1000;

--查询10号部门,或者工资小于2000的员工信息

select * from emp where deptno=10 or sal<2000;

--查询工资在1000到3000之间的员工信息

select * from emp where sal>=1000 and sal<=3000;

第二种写法

select * from emp where sal between 1000 and 3000;

--查询工资大于1000并且小于3000的员工信息

select * from emp where sal>1000 and sal<3000;
select * from emp where sal between 1000 and 3000 and sal!=1000 and sal!=3000;

is null:表示这个值是空时条件成立

is not null:表示值不为空间条件成立

select * from emp where comm is null;
select * from emp where comm is not null;

dual表:它是oracle内置的一个单行表,就是你写什么里面都会直接呈现。

select 1 from dual;
select 'abc' from dual;
select 2*3 from dual;
select 1,2,3,4 from dual;

--查询员工的年薪

select sal*12 from emp;

以上就是我个人对一些sql查询的一些个人总结,希望对各位有帮助。