Oracle中的基本SQL知识

时间:2022-07-22
本文章向大家介绍Oracle中的基本SQL知识,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是SQL语言

a) SQL, Structured Query Language, 结构化查询语言 b) SQL 是最重要的关系数据库操作语言,是所有关系数据库 管理系统的标准语言. c) SQL 语言是非过程化的语言, 只需要告诉做什么, 不需要 关注怎么做, 简单.

SQL语言的作用

a) 增删改查(CRUD) b) 操作数据库对象(用户, 数据库,表格, 序列, 索引…) c) 操作用户权限和角色的授予跟取消 d) 事务(Transaction)管理

分类

a) DQL, Data Query Language, 数据查询语言 执行数据库的查询操作, select

b) DML, Data Manipulation Language, 数据操作语言 操作表格中的数据, 执行增删改, insert, delete, update

c) DDL, Data Definition Language, 数据定义语言 用于操作数据库对象, create, alter, drop

d) DCL, Data Control Language, 数据控制语言 操作用户权限, grant, revoke

e) TCL, Transaction Control Language, 事务控制语言 用于管理事务, commit, rollback

关系数据库的概念

开始设置使用Oracle时的相关准备

设置字体

关闭自动备份,避免生成同名文件

select基本语句

一般使用的是Oracle自带的scott用户,密码默认为tiger,不过要手动创建一下。

1、通配符

a) 查询 emp 表格的所有列数据 ‘*’ 通配符, 表示所有的列

select * from emp;

2、 指定列

a) 查询所有员工的编号, 姓名和职位

select empno, ename, job from emp;

3、 支持算数运算

a) 查询所有员工的姓名, 职位和年薪  select 子句中, 支持算数运算

select ename, job, sal*12 from emp;

4、 列别名

a) select 子句中, 可以通过 as 关键字给列起别名

select ename, job, sal*12 as nianxin from emp; 

b) as 关键字可以被省略, 一般都省略

select ename, job, sal*12 nianxin from emp;

c) 别名中, 尽量不要使用特殊符号, 例如空格; 如果非要有特殊符号, 可以使用双引号括起来. d) 在 Oracle 中, 双引号表示原样输出.

select ename, job, sal*12 "ni a n xin" from emp;

5、 distinct

用于去除重复行信息 a) 查询所有的职位信息

select distinct job from emp; 

b) 查询所有员工的姓名和职位

distinct 只能去除重复行, distinct 的作用范围是它后面的所有列**

select distinct ename, job from emp;

6、字符串连接符

Oracle 中, 用单引号表示字符串 a) 查询所有员工的姓名, 职位和薪资, 以姓名:xxx, 职位:xxx, 薪资:xxx 的形式显示

select '姓名:'||ename||',职位:'||job||',薪资:'||sal info from emp;
order by子句

a) 查询所有员工的信息, 按照工资升序排序 asc, 表示升序(ascend)

默认情况下, 按照升序排序, 所以, asc 一般被省略

select * from emp order by sal asc;

b) 查询所有员工的信息, 按照标号降序排序 desc, 表示降序排序(descend)

select * from emp order by empno desc; 

c) 查询所有员工的信息, 按照入职日期降序排序

select * from emp order by hiredate desc; 

d) 查询所有员工的信息, 按照姓名排序

select * from emp order by ename; 

e) 查询所有员工信息, 按照薪资降序排序, 如果薪资相同, 将新员工排在前面.

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

f) 查询所有员工的姓名和年薪, 按照年薪排序

select ename, sal*12 nianxin from emp order by nianxin desc;

where子句

1、等值条件

c) 查询在 1982-01-23 入职的员工信息

日期必须用单引号括起来; 日期格式必须是: DD-MM 月-YY,且月份格式不能改变

select * from emp where hiredate='23-1 月-82';

2、非等值条件

a) 查询工资在 1500 到 3000 之间的员工信息 between…and…表示一个范围, 包含边界

select * from emp where sal>=1500 and sal<=3000; 
select * from emp where sal between 1500 and 3000; 

b) 查询 SCOTT 和 KING 的详细信息

select * from emp where ename='SCOTT' or ename='KING'; 
select * from emp where ename in ('SCOTT', 'KING'); 

c) 查询所有员工的信息, 排除 20 部门

select * from emp where deptno != 20; 
select * from emp where deptno <> 20;   

3、模糊查询

使用 like(像)实现, 配合通配符实现 _, 表示任意一个字符 %, 表示任意个任意字符

a) 查询姓名首字母为 A 的员工的信息

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

b) 查询姓名第二个字母是 A 的员工的信息

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

c) 查询姓名中带有字母 C 的员工的信息

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

d) 查询姓名中带有下划线的员工的信息

escape 用于声明转义字符. 将通配_符转换成普通字符

select * from emp where ename like '%a_%' escape 'a';

4、IS NULL

用于判断空值 ,但不能判断是否为0 a) 查询所有没有提成的员工信息

select * from emp where comm is null; 

b) 查询所有有提成的员工信息

select * from emp where comm is not null; 
select * from emp where not comm is null;

5、and or 的优先级

and 的优先级高于 or 的优先级

a) 查询所有CLERK的信息和工资大于1250的SALESMAN的信…

select * from emp where job='CLERK' or job='SALESMAN' and sal>1250; 

b) 查询所有的 CLERK 和 SALESMAN 的信息同时工资要大于 1250.

select * from emp where (job='CLERK' or job='SALESMAN') and sal>1250;