oralce第二天:简单查询

oralce第二天:简单查询

查询

简单查询

查询全部

mysql:

SELECT e.* From emp e

oracle:

SELECT e.* From emp e;

查询特定列

mysql:

SELECT e.empno,e.ename,e.job from emp e

oracle:

SELECT e.empno,e.ename,e.job from emp e

别名使用

mysql:

select  e.empno '员工编号',e.ename '员工姓名',e.job '员工职位',e.mgr '上级领导',
       e.hiredate '入职时间',e.sal '薪水',e.comm '奖金',e.deptno '所在部门'
       from emp e

oracle:

select  e.empno '员工编号',e.ename '员工姓名',e.job '员工职位',e.mgr '上级领导',
       e.hiredate '入职时间',e.sal '薪水',e.comm '奖金',e.deptno '所在部门'
       from emp e

去重(使用关键字distinct)

只有当查询出来的所有列全部相同的时候才会合并
mysql:

select  distinct  job from emp;

oracle

select  distinct  job from emp;

字符串连接查询

mysql:

select concat('员工编号是:',empno,'姓名是:',ename,'的工作是:',job)
    '员工姓名是:姓名是:的工作' from  emp;

oracle:

select '员工编号是'|| empno||'姓名是:'||ename||'的工作是:'||job from  emp;

查询中的四则运算

乘法(剩余的一样)

mysql:

select ename,sal*12 from emp
select concat('姓名是:',ename,'年薪是:',sal*12) as '姓名是: 年薪是:  ' from emp;

oracle:

select ename,sal*12 from emp
select concat('姓名是:',ename,'年薪是:',sal*12) as '姓名是: 年薪是:  ' from emp;

限定查询

查询工资大于1500的所有雇员

mysql:

select  ename '姓名',e.sal '薪水' from emp e where e.sal>1500

oracle:

select  ename '姓名',e.sal '薪水' from emp e where e.sal>1500

非空和空的限制

is not 和 is null 如果是not则是取非

SELECT *from emp WHERE comm is not null;
SELECT *from emp WHERE not(comm is null);

mysql:

select *from  emp where comm is not null

oracle:

select *from  emp where comm is not null

多条件查询

使用 and 进行连接

mysql:

 select  *from  emp where sal>1500 and comm is not null;

oracle:

 select  *from  emp where sal>1500 and comm is not null;

使用or进行连接

 select  *from  emp where sal>1500 orcomm is not null;

oracle:

 select  *from  emp where sal>1500 or comm is not null;

between and 的用法

下面的两句sql在查询结果上一模一样

mysql:

SELECT *from emp WHERE sal>=1500 AND sal<=3000;
SELECT *from emp WHERE sal BETWEEN 1500 and 3000;

oracle:

SELECT *from emp WHERE sal>=1500 AND sal<=3000;
SELECT *from emp WHERE sal BETWEEN 1500 and 3000;

IN的用法

范例:查询雇员编号是7369,7499,7521的雇员编号的具体信息
下面的两条sql在查询结果完全相同
此外还可以使用 not in

mysql:

select *from  emp where empno='7369' or empno='7499' or empno='7521';

select *from emp where empno in('7369','7499','7521');
select *from emp where empno not in('7369','7499','7521');

oracle:

select *from  emp where empno='7369' or empno='7499' or empno='7521';

select *from emp where empno in('7369','7499','7521');
select *from emp where empno not in('7369','7499','7521');

通配符

在常用的站点中经常会有模糊查询,即:输入一个关键字,把符合的内容全部的查询出来,在sql中使用LIKE语句完成。
在LIKE中主要使用以下两种通配符
“%”:可以匹配任意长度的内容
“_”:可以匹配一个长度的内容
范例:查询出所有雇员姓名中第二个字符包含“M”的雇员
mysql:

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

oracle:

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

在LIKE中如果没有关键字表示查询全部

对结果集排序

在sql中可以使用ORDER BY对查询结果进行排序
语法:SELECT * |列名 FROM 表名 {WEHRE 查询条件} ORDER BY 列名1 ASC|DESC,列名2…ASC|DESC
范例:查询雇员的工资从低到高
分析:ORDER BY 列名 默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESC
mysql:

# 升序
select *from emp order by sal asc;
# 降序
select *from emp order by sal desc;

oracle:

# 升序
select *from emp order by sal asc;
# 降序
select *from emp order by sal desc;

如果存在多个排序字段可以用逗号分隔

select *from emp order by sal asc,hiredate desc ;

注意ORDER BY语句要放在sql的最后执行。

上一篇:MySQL(5)


下一篇:mysql 聚合函数