表连接
概念: 将多张表的数据合并成一张表,然后进行查询处理.[放在from后面]
内连接: 关键词:[inner] join
语法:表1 join 表2 on 表1.xx字段=表2.xx字段
人工思路图示
特点:
合并左表中存在且右表中与之对应的数据
左表中存在,但右表中没有与之对应的数据,直接舍弃.
外连接
分类:
左外连: [常用]
关键词: left [outer] join
语法:表1 left join 表2 on 连接规则.
特点:
左表中存在,且右表中有与之对应的数据,合并保留.
左表中存在,且右表中没有与之对应的数据,保留,不存在的数据补空.
右外联:[了解]
语法: 表1 right [outer] join 表2 on 连接规则
特点: 保留右表存在,但左表中不存在的数据.
表连接应用
建表
建表语法
数据类型
数字
字符串
日期
约束
外键约束
单词:forienkey
语法关键词: refrences
外键列:
作用: 表名当前表的数据和另一张表数据的关系.
特点:
通过外键关联表的数据.
该列的值,必须来源于另一张表的中字段中的已存在的值.
语法:
增删改SQL
[重点]
SQL分类
DQL: Data query Language 数据查询语言
功能: 查询数据 select
DML: Data Manipulation language 数据操纵语言
添加insert /修改update /删除delete 数据
添加数据
关键词:insert
语法规则: 表 字段 值
向t_emp表中添加一条数据
注意:
表名后的字段顺序,必须和values后的值的顺序保持一致.
表名后的列名可以省略,默认oracle会按照表的字段的顺序,全部罗列出来.
修改数据
关键词:update
语法规则:update 表名 set 列名=新值,列名=值,列名=值 [where 条件]
删除数据
关键词:delete
细节: 逐行删除数据.
语法规则:delete from 表 [where 条件]
补充删除全表:
如果delete没有wehere,会导致全表数据删除
表截断
本质: 直接将存储表数据部分的空间,直接清除,进而删除数据[非DML]
truncate table 表名
特点: 效率远远高于delete.
视图(View)
关键词: view
创建视图:create view 视图名 as select语句
含义: 将select语句的查询结果,作为视图,可以供查询使用.
使用视图: view 就是一个虚拟表.
优点:
简化SQL语句.
安全性,对开发人员屏蔽掉表 和字段信息.
注意:
视图提高查询效率 ×
视图本质就是存储了select语句, 视图基本不会占用硬盘空间.
删除视图:drop view 视图名;
序列(sequence)
概念: oracle提供的工具,产生一系列连续且不重复的值.
创建序列:
使用序列获得值:
删除序列
索引 Index[重要]
问题: 数据量1000w(Oracle)会出现查询效率急剧降低?
作用: 提高select查询效率.
核心思路:
创建索引:
create index 索引名 on 表(字段)
相当于: create index 索引名 on 字典表(拼音)
使用索引: 不需要手动使用, 默认使用索引字段为条件进行查询时,数据库会自动使用索引查找数据.
删除索引: drop index 索引名;
索引特点:
索引会占用硬盘空间.
增删改操作,会牵涉索引的修改和维护, 降低了DML的效率.[缺点]
PK(Primary key) UK(unique key) 主键和唯一约束的列,数据库会自动添加索引.
事务[重要]
问题:
概念: 数据库的最小执行单元,有多个sql组成的一个整体
事务中的sql执行结果: 要么全部执行成功,要么全部执行失败.
结论: 实际开发中,一个独立的功能中,包含的多个SQL,要作为一个事务来操作.
事务的使用(边界):
成功结束事务: commit(提交);-- 事务中多个sql执行生效.
失败结束事务: rollback(回滚);-- 事务中的多个sql执行失效.
事务的实现原理
数据库会为每个客户端都分配一个独立的回滚段(临时空间 rollback seagment), 临时存放当前客户端sql执行结果.
commit: 将回滚段中的sql执行结果一次性同步到数据库中.
rollback: 将回滚段中sql的执行结果,舍弃丢失.
事务特性: [笔试]
A(Atomic) 原子性: 事务中的多个sql语句是一个整体, 要么全部成功,要么全部失败.
C(Consistency) 一致性: (数据的合理性),事务执行前后(无论失败还是成功),最终数据是合理的.
I(Isolation) 隔离性: 事务与事务之间是相互独立的.
D(Durability) 持久性: 事务结束(成功或失败),对数据库的数据修改时永久性的.