前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle应用实战五——SQL查询

Oracle应用实战五——SQL查询

作者头像
Java帮帮
发布2018-03-19 16:13:16
1.3K0
发布2018-03-19 16:13:16
举报

Oracle SQL

SQL学习是重点,请仔细阅读。

O

Oracle

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈɛs kjuː ˈɛl/ "S-Q-L"),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

Ø DML(Data Manipulation Language):数据库操作语言。其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

Ø DDL(Data Definition Language) :数据库定义语言。其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

Ø DCL(Data Control Language) :数据库控制语言。它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

Ø TCL(Transaction Control Language)事务控制语言。例如:COMMIT – 保存已完成的工作。ROLLBACK – 回滚等等

简单查询

1

查询语法

Select * |列名 from 表名

2

别名用法

在查询的结果列中可以使用别名

Select 列名 别名,列名别名,... from emp;

3

消除重复的数据

Select distinct *|列名, ... from emp;

使用distinct可以消除重复的行,如果查询多列的必须保证多列都重复才能去掉重复

4

字符串连接查询

Mysql中实现方法:

查询雇员编号,姓名,工作

编号是:7369的雇员, 姓名是:smith,工作是:clerk

5

查询中的四则运算

查询每个雇员的年薪

select ename, sal*12 from emp;

select ename, sal*12 income from emp;

Sql中支持四则运算“+,-,*,/”

条件查询

1

条件查询

在查询绝大多数都会有条件的限制

语法:select *|列名 from 表名 where 条件

例如:查询工资大于1500的所有雇员

2

非空和空的限制

示例:查询每月能得到奖金的雇员

分析:只要字段中存在内容表示不为空,如果不存在内容就是null,

语法:列名 IS NOT NULL

为空 列名 IS NULL

范例:查询工资大于1500并且有奖金领取的雇员

分析:多个查询条件同时满足之间使用‘AND’

范例:查询工资大于1500或者有奖金的雇员

分析:多个查询条件或满足,条件之间使用“OR”

范例:查询工资不大于1500并且没有奖金的人

语法:NOT(查询条件)

3

范围限制

范例:基本工资大于1500但是小于3000的全部雇员

分析:sal>1500, sal<3000

Between and等于 sal > =1500 and sal <= 3000

范例:查询1981-1-1到1981-12-31号入职的雇员

分析:between and 不仅可以使用在数值之间,也可以用在日期的区间

范例:查询雇员名字叫smith的雇员

在oracle中的查询条件中查询条件的值是区分大小写的

范例:查询雇员编号是7369,7499,7521的雇员编号的具体信息

如果使用之前的做法可以使用OR关键字

实际上,此时指定了查询范围,那么sql可以使用IN关键字

语法: 列名 IN (值1,值2,....)

列名 NOT IN (值1, 值2,...)

其中的值不仅可以是数值类型也可以是字符串

范例:查询雇员姓名是’SMITH’,’ALLEN’,’WARD’的雇员具体信息

4

模糊查询

在常用的站点中经常会有模糊查询,即:输入一个关键字,把符合的内容全部的查询出来,在sql中使用LIKE语句完成。

在LIKE中主要使用以下两种通配符

“%”:可以匹配任意长度的内容

“_”:可以匹配一个长度的内容

范例:查询出所有雇员姓名中第二个字符包含“M”的雇员

在LIKE中如果没有关键字表示查询全部

查询名字中带有“M”的雇员

在oracle中不等号的用法可以有两种形式“<>”和“!=”

范例:查询雇员编号不是7369的雇员信息

对结果集排序

1

排序的语法

在sql中可以使用ORDER BY对查询结果进行排序

语法:SELECT * |列名 FROM 表名 {WEHRE 查询条件} ORDER BY 列名1 ASC|DESC,列名2...ASC|DESC

范例:查询雇员的工资从低到高

分析:ORDER BY 列名 默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESC

如果存在多个排序字段可以用逗号分隔

注意ORDER BY语句要放在sql的最后执行。

2

排序中的空值问题

排序 order by 经验:当排序时存在null时就会产生问题 nulls first , nulls last

--查询雇员的工资从低到高

select * from emp order by sal nulls first;

select * from emp order by sal desc nulls last ;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档