Oracle之scott用户表、相关SQL语句
2012-08-20 20:52
465 查看
1.scott用户下的表结构:
雇员表EMP | |||
No. | 名称 | 类型 | 描述 |
1 | EMPNO | NUMBER(4) | 雇员编号 |
2 | ENAME | VARCHAR2(10) | 雇员姓名 |
3 | JOB | VARCHAR2(9) | 职位 |
4 | MGR | NUMBER(4) | 领导编号 |
5 | HIREDATE | DATE | 雇佣日期 |
6 | SAL | NUMBER(7,2) | 月薪,工资 |
7 | COMM | NUMBER(7,2) | 奖金,佣金 |
8 | DEPTNO | NUMBER(2) | 部门编号 |
部门表DEPT | |||
No. | 名称 | 类型 | 描述 |
1 | DEPTNO | NUMBER(2) | 部门编号 |
2 | DNAME | VARCHAR2(14) | 部门名称 |
3 | LOC | VARCHAR2(13) | 部门位置 |
工资等级表SALGRADE | |||
No. | 名称 | 类型 | 描述 |
1 | GRADE | NUMBER | 工资等级 |
2 | LOSAL | NUMBER | 最低工资 |
3 | HISAL | NUMBER | 最高工资 |
奖金表BONUS | |||
No. | 名称 | 类型 | 描述 |
1 | ENAME | VARCHAR2(10) | 雇员姓名 |
2 | JOB | VARCHAR2(9) | 职位 |
3 | SAL | NUMBER | 工资 |
4 | COMM | NUMBER | 奖金 |
2.SQL之SELECT(查询)语句:
i)查询语句格式:SELECT * | 具体的列 别名 FROM 表名称;
ii)对个别表列的查询:
SELECT empno,ename,job FROM emp ;
iii)为返回列起个别名:
SELECT empno 编号,ename 姓名,job 工作 FROM emp ;
iv)使用DISTINCT直接消除所有的重复列:
SELECT {DISTINCT} * | 具体的列 别名 FROM 表名称 ;
v)对显示格式的设定:
要求: 编号是: 7369的雇员,姓名是:SMITH ,工作是:CLERK
实现这个功能,则可以使用Oracle提供的字符串连接操作,使用”||“ 表示。如果要加入一些显示信息的话,所有的其他的固定信息要用“‘“括起来。
SELECT ' 编号是:' || empno || '的雇员,姓名是: ' || ename || ',工作是: ' || job FROM emp ;
vi)在查询中也可以使用四则运算功能:
例如:求出每个雇员的姓名和年薪。
SELECT ename ,sal*12 FROM emp;
当然,也可以为列名 sal*12 起一个别名,注意回避中文:
SELECT ename ,sal*12 income FROM emp;
3.SQL之限定查询(WHERE字句)语句:
根据指定的条件查询,必须指定限定查询。限定的查询语法:
SELECT {DISTINCT} * | 具体的列 别名 FROM 表名称 {WHERE 条件(s)}
范例:
i)查询出工资大于1600的所有雇员信息:
SELECT * FROM emp WHERE sal>1600 ;
ii)查询每月可以得到奖金的雇员信息:
使用NOT
SELECT * FROM emp WHERE comm IS NOT NULL ; --奖金是comm字段,只需not null,就OK。
ii.v)同样查询每月没有奖金的雇员的信息:
SELECT * FROM emp WHERE comm IS NULL ;
iii)AND-查询基本工资大于1000,同时可以领取奖金的雇员信息:
SELECT * FROM emp WHERE sal>1000 AND comm IS NOT NULL ;
iv)OR-查询,基本工资大于1000,或者可以领取奖金的 雇员信息。
SELECT * FROM emp WHERE sal>1000 OR comm IS NOT NULL ;
·使用NOT可以取反,把真的条件变为假的,假的变为真。
v):BETWEEN…AND…
语法格式:字段 BETWEEN…最小值…AND…最大值…
SELECT * FROM empWHERE sal BETWEEN 1500 AND 3000 ;以上等价于:
SELECT * FROM empWHERE sal >=1500 AND sal<=3000 ;
v.v)日期表示要加单引号”’“:
SELECT * FROM emp WHERE hiredate BETWEEN '1-1 月-81' AND '31-12月-81' ;
vi)IN
语法格式: 字段 IN (值1,值2,……,值n)
SELECT * FROM emp WHERE empno IN (7369,7499,7521) ;
也可以使用NOT取反:字段 NOT IN (值1,值2,……,值n)
SELECT * FROM emp WHERE empno NOT IN (7369,7499,7521) ;
不仅仅限于数字:
SELECT * FROM emp WHERE ename IN ('SMITH','ALLEN','KING') ;
vii)LIKE
在LIKE中主要使用两种通配符:
· ”%“可以匹配任意长度的内容
SELECT * FROM emp WHERE ename LIKE '_M%' ;
· ”_“可以匹配一个长度的内容
SELECT * FROM emp WHERE ename LIKE '%M%' ;
· '%%' 可以查询全部
SELECT * FROM emp WHERE ename LIKE '%%' ;
viii) <>和!= 不等于号
SELECT * FROM emp WHERE empno<>7369 ;
SELECT * FROM emp WHERE empno!=7369 ;
4. ORDER BY字句
语法格式:
SELECT {DISTINCT} * |具体的列 别名 FROM 表名称{WHERE 条件(s)} {ORDER BY 排序的字段1, 排序的字段2 ASC|DESC}
->ASC表示升序、 DESC表示降序
范例:对员工按照工资升序排序:
SELECT * FROM emp ORDER BY sal ASC ;
范例:查询出10部门所有员工信息,查询的信息按照工资由高到低排序,如果工资相等,则按照雇佣日期由早到晚排序:
SELECT * FROM emp WHERE deptno=10 ORDER BY sal DESC,hiredate ASC ;
注:排序操作是放到整个SQL语句最后才执行。
相关文章推荐
- Oracle中scott用户下基本表练习SQL语句
- oracle创建scott用户下表的sql语句
- oracle中scott用户下四个基本表SQL语句练习
- 查看oracle 用户执行的sql语句历史记录
- Oracle练习:有关Oracle用户scott的sql练习
- oracle 创建表空间、用户、授权的详细操作sql语句
- Oracle SQL语句优化的相关技术分析
- Oracle新建用户、角色,授权,建表空间的sql语句
- oracle基本查询语句(一)用户相关语句
- Oracle导入SQL脚本执行 scott 用户下的表删除了
- Oracle:SQL语句--撤销用户权限
- Oracle新建用户、角色,授权,建表空间的sql语句
- 在Oracle 9i中修改表的结构的相关sql语句
- 初学者应该了解的一些SQL语句及hr 用户解锁相关
- oracle查询用户什么时间执行了什么SQL语句
- Oracle sql语句创建表空间、数据库、用户及授权
- oracle的scott用户默认表sql删除后恢复和字段
- Oracle新建用户、角色,授权,建表空间的sql语句
- ORACLE--查询当前连接的用户信息及操作的SQL语句
- scott用户下SQL语句表结构查询对照表