准备工作:
安装Oracle(Oracle11g):
https://www.2cto.com/database/201701/588135.html
卸载Oracle(安装出错重新安装时需要):
https://blog.csdn.net/Devin_LiuYM/article/details/59539020
访问数据库
方法一:
Sqlplus:sqlplus是Oracle自带的访问Oracle数据库的工具
打开运行(或者win + R)输入sqlplus点击回车
方法二:
CMD运行:通过Windows系统自带的cmd进入Oracle
- 1.环境变量
- 2.打开运行(或者win + R)输入 sqlplus 用户/密码
SQL语句
SQL语言分类:
数据定义语言(DDL Data Definition):
- create创建
- alter更改
- truncate截断
- drop删除
数据操纵语言(DML Data Manipulation Language):
- insert插入
- select选择
- delete删除
- update更新
事务控制语言(TCL Transaction Control Language):
- commit提交
- savepoint保存点
- rollback回滚
数据控制语言(DCL Data Control Language):
- grant授予
- revoke回收
简单查询(执行顺序)
DISTINCT:消除重复
- 【3.选择所需要的数据链】SELECT[DISTINCT] * | 列 [别名],列 [别名]…
- 【1.确定数据来源】FROM 表名称 [别名]
- 【2.筛选数据行】[WHERE限定条件]
数据连接查询:用 “||”(EMPNO与ENAME分别是表emp中的字段)
例子:SELECT EMPNO || ENAME FROM EMP
EMPNO||ENAME
- 7369SMITH
- 7499ALLEN
如上所示:|| 是将字段做了拼接然后展示出来
关系运算符
关系运算符主要进行大小的判断
- where
Select * from emp where sal<1200;
Select * from emp where sal=1200;
- 对于 = 需要注意:
也可以用来查询字符串
Select * from emp where ename = ‘SMITH‘;- 在oracle中,数据是区分大小写的。
对于不等于的判断,有两个 ‘!=‘,’<>’;
除了and 与 or之外,还可以使用NOT进行求反
Select * from emp where not sal>2000;
取得是 sal不大于两千的数,也就是小于等于。
范围运算between..and
- between..and的主要功能是进行范围的查询,其使用语法形式如下
- Where 字段|数值 between 最小值 and 最大值。
使用between。。and与关系运算符相比效率更高。
- 在Oracle中的所有运算符都不受数据类型的控制,在之前使用的数字进行判断,除了数字外,还可以用字符串或者是日期判断,重点看日期判断
例子:
- select * from emp where hiredate between ‘01-1月-1981’and’31-12月-1981’
空判断
在某些数据列上是允许存在null值的,但是对于null不能够使用关系运算符进行判断,可以使用is null来判断为空用is not null 来判断不为空
-查询所有领取佣金的雇员
- select * from emp where comm is not null
In操作符(谓词IN)
In指的是根据一个指定的范围进行数据查询
- 例子:
- select * from emp where empno=7499 or empno=7521 or empno=7844;
如果按照以上代码查询的话,将会查询三次,性能很差,面对指定范围数据查询的时候可以用IN操作- select * from emp where empno in(7499,7521,7844);
- select * from emp where empno in(7499,7521,null);
将代码变为以上代码,会提升性能,在in中可以使用null
对数据进行筛选的时候也可以用not in
- select * from emp where empno not in(7499,7521,7844);
以上代码含义是查询到不包含以上三个中的任意一个。- 但是:如果使用not in就不可以使用null
模糊查询
like可以实现数据的模糊查找操作,使用like,必须使用如下两个匹配符号:
- “_”:匹配任意一位符号
- “%”:匹配任意符号(包含匹配0位、1位、多位)
- 字符串用单引号’’
查询排序 order by子句
一般是自然顺序是不可控的,所以往往由用户自己进行排序操作。那么使用orderby
- 【3.选择所需要的数据链】SELECT[DISTINCT] * | 列 [别名],列 [别名]…
- 【1.确定数据来源】FROM 表名称 [别名]
- 【2.筛选数据行】[WHERE限定条件]
- 【4.数据排序】[ORDER BY 排序字段 [ASC|DESC],排序字段 [ASC|DESC],…]
Order by 是在select后面执行,说明它可以使用select定义的别名:- 升序:ASC默认不写就是升序
- 降序:DESC,由高到低排序
排序可以在任意字符串上进行,包括字符串、日期- 例:
- 按照日期排序降序
- select * from emp order by hiredate desc
总结:
Select子句确定数据列;
Where子句控制数据行;
Orderby子句永远最后执行。