首页 > 数据库技术 > 详细

数据库——Oracle

时间:2018-04-30 13:06:58      阅读:215      评论:0      收藏:0      [点我收藏+]

Oracle简介

1、sqlplus连接远程Oracle命令

sqlplus(需要设置环境变量) scott(用户名)/5456(密码)@192.168.230.128:1521(IP)/orcl(数据库名)

2、查看当前用户

show user  -- sqlplus命令

3、查看当前用户下的表

select * from tab;

4、执行上一条SQL语句

/  -- sqlplus命令

表操作

1、查看员工表结构

desc emp;

2、查询员工表中的数据

select * from emp;

3、查询员工表中的员工号,姓名,月薪,年薪(月薪*12)

SELECT EMPNO,ENAME,SAL,SAL*12 FROM EMP;

4、取别名的3种方式

/**
 * 取别名的3种方式:
 * 1.加不加as是一样的
 * 2.如果起的别名中没有特殊字段,可以不用加""
 */
SELECT
	EMPNO "员工id",
	ENAME AS "员工姓名",
	SAL 月薪,
	SAL * 12 "年   薪",		-- 有空格,要加""
	NVL( COMM, 0 ) "奖select金",	-- 有特殊字段,要加""
	SAL * 12+NVL ( COMM, 0 ) 年收入 
FROM
	EMP;

4、去重

SELECT DISTINCT
	JOB,
	EMPNO 
FROM
	EMP;	-- 去重,distinct修饰的后面的所有字段,只要字段们不重复就展示

5、字符串连接

连接符 “||”

/**
 * 字符串连接
 * MySQL版:select concat(‘hello‘,‘ world‘);	-- 要用 单引号(单引号表示日期和字符串,双引号表示列的别名)
 * Oracle版:select concat(‘hello‘,‘ world‘) from dual;	-- 如果前面的操作,和任何表都没有关系就用dual表(伪表)
 *			 select ‘hello‘ || ‘ world‘ from dual;
 */

6、排序

order by后面可以+列、表达式、别名、序号

SELECT
	EMPNO,
	ENAME,
	SAL,
	SAL * 12 "年薪" 
FROM
	EMP 
ORDER BY
	"年薪",
	SAL;-- 多个列排序,order by先按照第一个排序,在按照后面的列排序

desc只作用于离他最近的字段

SELECT
	EMPNO,
	ENAME,
	SAL,
	SAL * 12 "年薪" 
FROM
	EMP 
ORDER BY
	EMPNO,
	"年薪" desc;	-- desc只作用于离他最近的字段

空值的3大特性

1)包含null的表达式结果都为null

SELECT
	EMPNO,
	ENAME,
	SAL,
	SAL * 12,
	COMM,
	SAL * 12+COMM
FROM
	EMP;

技术分享图片

此时我们需要一个方法NVL

nvl(a,b)   -- 判断a是否为null,如果为null则取b的值

修改后的:

SELECT
	EMPNO,
	ENAME,
	SAL,
	SAL * 12,
	NVL(COMM, 0),
	SAL * 12+NVL(COMM, 0)
FROM
	EMP;

2)null永远不为null

空值是无效的,未指定的,未知的或不可预知的值;空值不是0或者空格

SELECT
	* 
FROM
	EMP 
WHERE
	COMM IN ( 300, 500, NULL );

技术分享图片

3)如果集合中含有null,不能使用not in,可以使用in

SELECT
	* 
FROM
	EMP 
WHERE
	COMM NOT IN ( NULL );

 技术分享图片

4)null值的排序问题

SELECT
	* 
FROM
	emp 
ORDER BY
	COMM DESC;  -- 原因:在Oracle中,空值最大

技术分享图片

解决办法:

SELECT
	* 
FROM
	emp 
ORDER BY
	COMM DESC NULLS LAST;

SQL与SQLPLUS

技术分享图片

SQL优化

1.*和列名,尽量使用列名  -- 列名:减少了分析过程
2.where解析顺序是从右-->左,尽量把假的放前面

 

数据库——Oracle

原文:https://www.cnblogs.com/x54256/p/8973269.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!