Oracle应用实战五——SQL查询

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 ;

原文发布于微信公众号 - Java帮帮(javahelp)

原文发表时间:2017-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linux运维学习之路

MySQL索引

索引管理 索引是什么? 索引就好比一本书的目录,它会让你更快的找到内容; 让获取的数据更有目的性,从而提高数据库检索数据的性能; 索引建立在表的列上(字段)。 ...

4595
来自专栏技术博客

Oracle初级性能优化总结

  关于对Oracle数据库查询性能优化的一个简要的总结。 从来数据库优化都是一项艰巨的任务。对于大数据量,访问频繁的系统,优化工作显得尤为重要。由于Oracl...

1453
来自专栏c#开发者

oracle 常用command

Lunatic 整理 1. 删除表的注意事项 在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DE...

3703
来自专栏GreenLeaves

Oracle 多行、多列子查询

本文使用到的是oracle数据库scott方案所带的表,scott是oracle数据库自带的方案,使用前请确保其解锁 ? 一、多行子查询 多行子查询子查询是嵌入...

2187
来自专栏Albert陈凯

2018-07-20 oracle优化:避免全表扫描

例如:在City-State-Zip列创建了三列复合索引,那么仅对State列限定条件不能使用这个索引,因为State不是索引的主列。

2504
来自专栏IT技术精选文摘

MySQL的索引是什么?怎么优化?

1034
来自专栏battcn

MySQL - WHERE优化篇

在做JAVA开发中,通过指令重拍会对代码做一定程度的优化,在数据库中 MYSQL优化器也做了一系列相关优化工作,下面要介绍的就是数据库做的内置优化

1172
来自专栏抠抠空间

MySQL之表的约束

一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的...

2916
来自专栏aoho求索

Mysql探索(一):B-Tree索引

MySQL是目前业界最为流行的关系型数据库之一,而索引的优化也是数据库性能优化的关键之一。所以,充分地了解MySQL索引有助于提升开发人员对MySQL数据库的使...

1221
来自专栏PHP在线

MySQL索引入门简述

用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,MYSQL必须从第一条记录开始读完整个表,直到找出相关的行。表越大,花...

1493

扫码关注云+社区

领取腾讯云代金券