- 数据库
- 存储和管理数据的仓库
- 作用:提高了应用的开发效率
- DBMS数据库管理系统
- 指一种操作和管理数据库的大型软件
- 用于建立使用和维护数据库
- 保证了数据库的安全性和完整性
- 数据库分类
- 关系型数据库
- 支持SQL语言
- 指的就是二维表格模型
- 由二维表格及其之间的联系所组成的一个数据组织
- 非关系型数据库
- 指数据以对象的形式存储在数据库中
- 对象之间的关系由对象自身的属性决定
- 常用于存储非结构化的数据
- 关系型数据库
- SQL
- DDL
- 数据定义语言
- 用来定义数据库对象(数据库、表、字段 等)
- DML
- 数据管理语言
- 用来对数据库中的数据进行增删改
- DQL
- 数据查询语言
- 用来查询数据库中的记录
- DCL
- 数据控制语言
- 用来创建数据库用户,控制数据库的访问权限
- DDL
- ORACLE 特点
- 支持多用户、大事务量的事务处理
- 数据安全性和完整性控制
- 支持分布式数据处理
- 可移植性
- ORACLE 体系结构
- 数据库
- 实例
- 数据文件(dbf)
- 表空间
- -用户
- 数据类型
- 字符型
- CHAR
- 固定长度的字符类型,最多存储 2000 个字节
- VARCHAR2
- 可变长度的字符类型,最多存储 4000 个字节
- LONG
- 大文本类型。最大可以存储 2 个 G
- CHAR
- 数值型
- NUMBER
- 数值类型
- 例如
- NUMBER(5) 最大可以存的数为 99999
- NUMBER(5,2) 最大可以存的数为 999.99
- NUMBER
- 日期型
- DATE
- 日期时间型,精确到秒
- TIMESTAMP
- 精确到秒的小数点后 9 位
- DATE
- 二进制型(大数据类型)
- CLOB
- 存储字符,最大可以存 4 个 G
- BLOB
- 存储图像、声音、视频等二进制数据,最多可以存 4 个 G
- CLOB
- truncat 与 delete 实现数据删除
- delete 删除的数据可以 rollback
- delete 删除可能产生碎片,并且不释放空间
- truncate 是先摧毁表结构,再重构表结构
- 字符型
- Select
SELECT [DISTINCT] {*,column alias,..}
FROM table alias
WHERE 条件表达式
ORDER BY 排序字段列表 [asc|desc]- 部分列
- 查询部分字段,指定的字段名
- 查询部分字段,指定的字段名
- 所有列
- 查询所有的字段 通配符 * ( 书写方便、可以检索未知列;但是降低检索的性能) ,数据的顺序跟定义表结构的顺序一致
- 去除重复
- 使用distinct去重,确保查询结果的唯一性
- 可用于一列,也可以用于多列
- 别名
- 使用别名便于操作识别 、隐藏底层信息。存在字段别名和表别名
- as
- 字段别名可以使用as;表别名不能使用as
- ""
- 原样输出,可以存在 空格与区分大小写
- 字符串
- 使用’’表示字符串(注意区分””) ,拼接使用 ||
- select 'my' from emp;sql
- select ||'a'||'-->' info from emp;
- 使用’’表示字符串(注意区分””) ,拼接使用 ||
- 伪列
- 不存在的列,构建虚拟的列
- select empno, 1*2 as count,'cmj' as name,deptno from emp;
- 不存在的列,构建虚拟的列
- 虚表
- 用于计算表达式,显示单条记录的值
- select 1+1 from dual;
- 用于计算表达式,显示单条记录的值
- null
- null 遇到数字参与运算的结果为 null,遇到字符串为空串
- 一个字段没有赋值,默认值为null
- null值与数字运算结果为null
- 部分列
- 条件查询
- Select 要查询的数据 from 数据源 where 行过滤条件
- 条件判断运算符
< > <= >= = != <>
- 执行流程
from--->where--->select
- 条件接连符
and(两者都、且)、or(或者)、not(条件反取)
- 区间判断
条件1 and 条件2 / between 值1 and 值2
- null
判断null值要是用is null不能使用条件判断,只能使用is
- 集合操作
- Union并集(去重)
对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
- Union All全集(不去重)
对两个结果集进行并集操作,包括重复行,不进行排序 ;
- Intersect交集(找出重复)
对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
- Minus差集(减去重复)
对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序
- Union并集(去重)
- 模糊查询(Like)
- 效率低
- 模糊查询,使用通配符
- %
零个及以上(任意个数的)的字符
- _
一个字符
- +
- %
- in与exists
- in
- 判断值是否在in后面的值列表中,如果再就满足条件,不在就不满足
- in相当于使用or的多个等值,定值集合 ,如果存在 子查询,确保 类型相同、字段数为1,如果记录多,效率不高,用于 一些 少量定值判断上
- ==>in
- 如果记录多,效率不高,用于 一些 少量定值判断上
- exists
- exists 条件为true
- 存在记录,则返回结果,后续不再继续 ,与字段无关,与记录有关
- exists 难点
- 外层结果集 内层结果集、 关系列(没有关系列 true)
- exists 条件为true
- in
- 排序(Order by)
- 排序不是真实改变存储结构的顺序,而是获取的集合的顺序
- 顺序
- asc(升序)(默认) desc(降序)
- 多字段
- 在前面字段相等时,使用后面的字段排序
- 空排序
- 降序为 desc,注意 null 为最后
- 顺序
- 排序不是真实改变存储结构的顺序,而是获取的集合的顺序
- 子查询
- 查询语句嵌套查询语句
- 当条件与要查询的数据在不同的数据源,而两个数据源之间存在一定的关联方式,可以子查询中转查询
- 函数
- 函数分
- 系统内置函数
- 自定义函数
- 单行函数
- 一条记录返回一个结果
- 将每条数据进行独立的计算,然后每条数据得到一条结果
- 多行函数
- 多条数据同时计算,最终得到一条结果数据
- 也成为聚集函数、分组函数, 主要用于完成一些统计功能
- 单行函数
- 字符串函数、数值函数、日期与时间函数、流程函数
- 日期函数
- 注意区分 db数据库时间 ,java应用服务器的时间。以一方为准
- oracle
以内部数字格式存储日期年月日小时分钟秒
- sysdate/current_date
以date类型返回当前的日期
- add_months(d,x)
返回加上x月后的日期d的值
- LAST_DAY(d)
返回的所在月份的最后一天
- months_between(date1,date2)
返回date1和date2之间月的数目
- next_day(sysdate,星期一) 下一个星期一
- oracle
- 注意区分 db数据库时间 ,java应用服务器的时间。以一方为准
- 转换函数
- to_date(c,m)
字符串以指定格式转换为日期
- to_char(d,m)
日期以指定格式转换为字符串
- to_date(c,m)
- 函数分