oracle基础

基本查询


sqI简介

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

       DML(数据库操作语言):其语句包括动词INSERTUPDATEDELETE。它们分别用于添加修改删除表中的行。也称为动作查询语言。
       DDL(数据库定义语言):其语句包括动词CREATEDROP。在数据库中创建新表或删除表(CREAT TABLE或DROP TABLE);为表加入索引等。DDL 包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
       DCL(数据库控制语言):它的语句通过GRANTREVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

Select语句的语法格式和示例

oracle基础

1. 查询语法

Select   *   |   列名   from   表名

oracle基础
oracle基础

2. 别名用法

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

Select    列名  别名,列名  别名,   ······   from   表名;
别名中,有没有双引号的区别就在于别名中有没有特殊的符号或者关键字。
oracle基础

3. 消除重复的数据

Select   distinct   *   |   列名,  ······  from   表名;

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

4. 查询中四则运算

查询每个雇员的年薪

select   name,   sal*12   from   emp;

select   name,   sal*12   income   from   emp;
oracle基础
sql中支持四则运算  +  -  *  /

什么是空值?

空值是无效的、未指定的、未知的或不可预知的值
空值不是空格或者0
包含null的表达式都为null
空值永远不等于空值

连接符||

字符串连接查询
mysql中实现方法:
oracle基础
oracle中实现方法:
oracle基础
oracle中字符串的连接使用 II

条件查询和排序


使用where语句对结果进行过滤

oracle基础


比较运算符

oracle基础

其他比较运算符

oracle基础

逻辑运算符

oracle基础

where语句示例


1. 非空和空的限制

非空:
列名   is   not   null
oracle基础
为空:
列名   is   null
oracle基础

➢查询工资大于1500并且有奖金的员工
oracle基础
➢查询工资大于1500或者有奖金的员工
oracle基础
➢查询工资不大于1500和没有奖金的员工
oracle基础

2. 范围限制

➢查询工资大于1500但是小于3000的员工
oracle基础
oracle基础
➢查询出生日期在1981-2-1到1981-6-28的员工
oracle基础

3. 模糊查询

在常用的站点中经常会有模糊查询,即输入一个关键字,把符合的内容全部的查询出来,在sql中使用LIKE语句完成。
在LIKE中主要使用以下两种通配符:
"%"可以匹配任意长度的内容
"_"可以匹配一个长度的内容

➢查询出所有雇员姓名中第二个字符包含"海"的员工
oracle基础
在LIKE中如果没有关键字表示查询全部
oracle基础
➢查询名字带有"王"字的员工
oracle基础
在oracle 中不等号的用法可以有两种形式"<>“和”!="
➢查询topid不是1011的员工信息
oracle基础

使用order by对结果排序

asc升序
desc降序

order  by  列名默认的排序规则是升序排列,可以不指定ASC,如果按着降序排列必须指定DESC
如果存在多个排序字段可以用逗号分隔,注意ORDER BY语句要放在sql的最后执行
当排序时有可能存在null时就会产生问题,我们可以用nulls first,nulls last来指定null值显示的位置。
oracle基础
oracle基础

单行函数

oracle基础
oracle基础
oracle基础

✔ 字符函数

oracle基础
接收字符输入返回字符或者数值,dual 是伪表

  1. 字符串的连接可以使用concat也可以使用"||",建议使用"||"
    oracle基础
  2. 字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数长度,开始的索引使用1和0效果相同
    oracle基础
    oracle基础
  3. 获取字符串的长度
    oracle基础
  4. 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串
    oracle基础

✔ 数值函数

oracle基础

✔ 日期函数

➢查询雇员的进入公司的周数
分析:员工进入公司的天数除以7就是进入公司的周数:(sysdate - 入职日期)/7
oracle基础
oracle基础oracle基础
➢获得两个时间段中的月数: MONTHS_BETWEEN()
oracle基础
➢获得几个月后的日期:ADD_MONTHS()
oracle基础

✔ 转换函数

oracle基础

  1. TO_CHAR函数对日期的转换
    oracle基础日期的格式:
    oracle基础
  2. TO_CHAR函数对数字的转换
    oracle基础数字转换的格式:
    oracle基础

oracle基础
oracle基础

  1. to_char():字符串转换函数
    oracle基础
    在结果中10以下的月前面被补了前导零,可以使用fm去掉前导零
    oracle基础
  2. TO_NUMBER:数值转换函数
    TO_NUMBER可以把字符串转换成数值
    oracle基础
  3. TO_DATE:日期转换函数
    TO_DATE可以把字符串的数据转换成日期类型
    oracle基础

✔ 通用函数

通用函数适用于任何数据类型,同时也适用于空值
常用的通用函数:
oracle基础

✔ 条件表达式

  1. case表达式:
    oracle基础
  2. decode函数:
    oracle基础

多行函数

分组函数作用于一组数据,并对一组数据返回一个值。
多行函数也叫:组函数、分组函数。
组函数会忽略空值。
NVL函数使分组函数无法忽略空值

分组数据:
oracle基础

常用的多行函数:
oracle基础

➢查询出部门平均工资不到2000的部门
oracle基础
oracle基础

单行子查询

查询每个部门工资最少的员工的信息:
oracle基础