oracle数据库之sql语句使用
SCOTT E-R模型图
DEPT 部门表 EMP 雇员表 BONUS 奖金表 GRADE 工资等级
DEPTNO 部门编号 EMPNO 雇员编号 ENAME 雇员名称 GRADE 工资等级
DNAME 部门名称 ENAME 雇员名称 JOB 工作职位 LOSAL 最低薪资
LOC 部门位置 JOB 工作职位 SAL 薪资 HISAL 最高薪资
MGR 领导编号 COMM 奖金
HIREDATE 雇用日期
SAL 薪资
COMM 奖金
DEPTNO 部门编号
语法结构
select 列名/表名 ---用于从表中选取数据
from 表名
where 条件
例子 select * from tab; 列出所有表
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.select 语句
select 列名称 from 表名称
select * from 表名称
例子1:列出emp中所有员工名
SQL> select ename from emp;
ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
ENAME
----------
JAMES
FORD
MILLER
14 rows selected.
例子2:列出emp表的所有信息
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-DEC-80 800
20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300
30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500
30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.distinct语句 ---用于返回唯一不同的值
语法:select distinct 列表名 from 表名称
例子:列出emp表中所有不重名的员工
SQL> select distinct ename from emp;
ENAME
----------
ALLEN
JONES
FORD
CLARK
MILLER
SMITH
WARD
MARTIN
SCOTT
TURNER
ADAMS
ENAME
----------
BLAKE
KING
JAMES
14 rows selected.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.where语句
语法:select 列表名 from 表名称 where 列 运算符 值
操作符
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
between。。and 。。 在某个范围内
like 搜索某种模式
例子:列出emp表中员工名为scott的所有信息
SQL> select * from emp where ename='SCOTT';
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7788 SCOTT ANALYST 7566 19-APR-87 3000
20
字符使用单引号,数值不用引号
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.and&or运算符 ----用于基于一个以上的条件对记录进行过滤
可在where子语句中把两个或多个条件结合起来
如果第一个条件和第二个条件都成立,则and运算符显示一条记录
如果第一个条件和第二个条件只有一个成立,则or运算符显示一条记录
例子1:and --列出emp表中员工名为king且工资为5000的所有信息
SQL> select * from emp where ename='KING' and sal=5000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7839 KING PRESIDENT 17-NOV-81 5000
10
例子2:or ---列出emp表中员工名为king或工资为3000的员工的所有信息
SQL> select * from emp where ename='KING' or sal=3000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7788 SCOTT ANALYST 7566 19-APR-87 3000
20
7839 KING PRESIDENT 17-NOV-81 5000
10
7902 FORD ANALYST 7566 03-DEC-81 3000
20
例子3:and&or ---列出emp表中员工名为scott或king的并且工资为3000的员工所有信息
SQL> select * from emp where (ename='SCOTT' or ename='KING') and sal=3000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7788 SCOTT ANALYST 7566 19-APR-87 3000
20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5.order by语句
order by语句用于根据指定的列队结果集进行排序,默认升
desc 为降序
asc为升序
例子1:按工资由高到低进行排序
SQL> select ename,sal from emp order by sal desc;
ENAME SAL
---------- ----------
KING 5000
FORD 3000
SCOTT 3000
JONES 2975
BLAKE 2850
CLARK 2450
ALLEN 1600
TURNER 1500
MILLER 1300
WARD 1250
MARTIN 1250
ENAME SAL
---------- ----------
ADAMS 1100
JAMES 950
SMITH 800
14 rows selected.
例子2:按工资由低到高进行排序
SQL> select ename,sal from emp order by sal asc;
ENAME SAL
---------- ----------
SMITH 800
JAMES 950
ADAMS 1100
WARD 1250
MARTIN 1250
MILLER 1300
TURNER 1500
ALLEN 1600
CLARK 2450
BLAKE 2850
JONES 2975
ENAME SAL
---------- ----------
SCOTT 3000
FORD 3000
KING 5000
14 rows selected.