Oracle基础知识

(1)Oracle 数据库简介

① 计算机如何存储数据
  • 内存 : 存取都快,但是只能临时存储
    程序在运行过程中产生的数据存储在内存中.

  • 硬盘 : 相比较内存的存取数据,效率更低一些,但是硬盘上的数据不会丢失
    早期以文件的形式存储数据,例 : txt记事本/Word文档/Excel表格

随着时代的发展,数据量越来越大,并且还要对数据进行分析等操作,早期的存储数据的方式以及不再适用(不能并发访问,效率差,安全性不能保障),所以数据库应运而生…

② 数据库的分类
  • 关系型数据库 : (甲骨文)Oracle//(瑞典AB)MySql(已被Oracle收购)
    (微软)SqlServer//(IBM)DB2

  • 非关系型数据库: Redis//Mongodb

sql : Structred Query Language (结构化 查询 语言) (sql不是数据库,是结构化查询语言,是操作数据库的一种语言)

③ 关系型数据库里常见的概念

表 : 数据库里存储数据的基本结构,基础数据都是以表的形式存储的
行 : 一行对应一个实体(对象)
列 : 同一列存储的是不同实体的同一类型的数据
主键 : 每个表都有主键,作为不同实体间的绝对唯一区别

(2) 查询(重点)

查询注意事项 :

A. 关键字不区分大小写,表名,字段名,同样不区分大小写.(底层实现会把关键字等统统转为大写)
B. sql脚本里的标点符号都是英文符号.
C. 查询的最后可以不跟分号;也可以跟上分号,多条sql可以同时执行.

① 简单查询

查询单个字段 : select 字段 from 表名 ;
查询全部 : select * from 表名 ;
(这种写法只在开发阶段做测试时使用,因为写着简单,但运行效率不高)
给字段起别名 : select 原字段名 (as) 别名 from 表名 ; (as可以不写)
拼接字符串 : Oracle中拼接字符串用 || (双竖线)
去重复 : select distinct 字段 from 表名 ;

② 条件查询

条件查询 : select * 字段 from 表名 where 查询条件 ;
等值查询符号 : > < >= <= !=(不等)<>
sql中单个 = 号表示判断(类似java的==)
空值查询 : select * from 表名 where 字段 is null ; (非空值 : is not null)
多条件查询 : where 条件一 and 条件二 ; (and两边都为真才为真)
where 条件一 or 条件二 ; (or两边任意一个为真就为真)
区间查询 : select * from 表名 between 值1 and 值2 ;
(判断的区间包括值1和值2本身)
枚举查询 : where 字段 in(值1,值2,值3…) ;
(查询该字段中满足任意一个值的实体)
模糊查询 : where 字段 like ‘%abc%’ ;
%统配符,表示任意字符串 _表示任意字符(单个的)
分支查询 : select 字段 字段1,字段…
case
when 条件 then ‘输出内容’
when 条件 then ‘输出内容’
else ‘输出内容’ end 别名
from 表名
排序 : order by decs(降序) asc(升序)

③ sql中的一些关键字

哑表 : dual
系统时间(当前时间) : sysdate

查询当前系统时间 : select sysdate from dual ;
查询1+1等于多少 : select 1+1 as howmuch ;

④ 伪列

伪列不是表中真实的列,但是他的用法跟表中的列是一样的.
Oracle中每个表都有伪列.
rownum : 对查询结果进行编号,表示一个行号.
行号的值做比较时不能大于一个值,只能小于一个值.
rowid : 表示数据的物理地址.可以唯一标示一行数据的物理位置.

⑤ Oracle中的函数

类似于java的方法,传入实参,运行完该函数,就会返回一个结果.
可以在select后边的输出语句中或者where条件后边使用函数.

A 单行函数

单行函数 : 没行数据运行完单行函数后,都会返回一个结果.
length() : 返回实参这个字符串长度.
mod() : 求余数.
to_date() : 把字符串转换为date类型的数据.有两个参数,第一个参数是字符串类型的数据,第二个参数是字符串的格式.
to_char():把其它类型的数据转换为字符串.有两个参数,第一个参数是date类型的数据,第二个参数是要转换成字符串的格式.‘yyyy-mm-dd hh24:mi:ss’

B 组合函数(聚合函数)

组函数 : 多行数据运行完组函数后,返回一个结果.
max : 最大值
min : 最小值
avg : 平均值
count : 总行数
sum : 总和
注意 :

  1. 使用组函数时,select后不能跟其他字段.
  2. 使用组函数时,统计时会自动排除值为null的数据.
  3. count(*)表示所有字段的值都为空时,才不纳入统计.
  4. 只有count函数才能使用*.

(3) 分组查询

在分组查询中使用组函数,那么数据被分到几个组里面,返回结果就会有几个.
分组 : 根据某列进行分组,这一列相同的数据会合并成一行(一组).
语法 :
select 分组的字段或组函数
from 表名
where 条件
group by 分组字段
order by 排序字段

注意 :

  1. select后面只能跟分组的字段和组函数
  2. group by后面是可以跟多个字段的.这些字段的值都相同的情形下,数据才被分到一个组里面.
① 分组查询后的过滤having

作用 : 对分组之后的查询结果进行筛选过滤.
语法 : select 字段名
from 表名
where 分组前的排除
group by 分组字段
having 分组后的过滤

注 :

  1. having需要和group by 分组配合使用.
  2. where和having的区别
    相同之处 : 都是对数据进行筛选过滤.
    不同之处 : where是在分组前对数据筛选,having是在分组后对数据进行筛选.

(4) sql语句编写与执行顺序

select …
from …
where …
group by …
having …
order by …
执行顺序 :
在这里插入图片描述
下一篇:SQL的基础使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值