数据库对象
表,数据
操作
增,删,改,查
基本元素
- 表
a.表名
b.归属用户
c.注释(comment on table表名 is ‘注释内容’) - 列
a.列名
b.类型(varchar2、number、date)
c.是否可为空(not null)
d.默认值(default 值)
e.注释(comment on column 表名.字段名 is ‘注释内容’) - 字段约束(键)
a.主键(不为空,不重复,primary key )
b.唯一(不重复,空可以出现1次,unique)
c.外键(该字段的值,必须在指定外部表中存在,foreign key) - 索引(index)
a.主键索引(默认的,不用写)
b.普通索引 - 权限(o用户:owner所有权用户、c用户:customer使用客户用户;grant)
把表的增删改查权限有选择性的赋权给其它用户(比如程序连接的数据库用户名)
数据的基本元素
image.png1. 组合因子
- 视图:可以是表、可以是sql处理结果
- 操作方法
from
join on
where
group by
having
select :rownum、rowid
top
order by
2. 组合规则
- 操作方法传入一个视图,输出一个视图
- 操作方法可以套接成串执行,但是有固定的先后顺序
- sql和sql的结果可以做加减运算(minus、union、union all、intersect)
3.表的增删改查
- 增:create table 表名(属性)
- 删:drop table 表名;
- 改:alter table 表名
- 查:select * from user_tables t ;
4.数据的增删改查
- 增:insert into 表名(字段名,字段名)values(字段值,字段值);
- 删:delete 表名 where 条件;(或者全删 truncat table 表名,这个会释放空间降低水位线);
- 改:update 表名 set 字段名=字段值,字段名=字段值 where 条件
- 查:select * from 表名 where 条件 ;
5.单项解释
索引
原理
1.1 将索引字段单独生成一个二叉树B-TREE(字段值=数据地址,类似java的变量名)
1.2 如果查询条件用到了该字段,先到索引树里面查找
1.3 索引树中查到节点后,取出数据所在地址
1.4 按照地址,到表中取数据
表跟索引,是2个独立的对象,各存各的数据
l连接
内连接(B)
左连接(A+B)
右连接(C+B)
全连接(A+B+C)
SQL组合
image.pngminus(A)
sql1
minus
sql2
union(A+B+C)
sql1
union
sql2
union all(A+2B+C)
sql1
union all
sql2
intersect(B)
sq1
intersect
sql2
重中之重:
group by后的视图,只有group by的字段+5个聚合函数,select要展现的字段,只能从group by后面的字段+5个聚合函数中取,*也不能用
如果要展现的字段不在group by后面的字段和5个聚合函数内,缺失的字段,再引入新表进行关联
分页查询
生成数据视图:查询排序,生成视图1
添加行号:最对视图1做查询,添加rownum列,列名rn
限制最大行号:对视图2用where限制rownum的最大值,生成视图2
限制最小行号:再对视图2做查询,where限制rn最小值
image.png
视图
sql的每一步,都会生成视图
有些复杂的视图,可以把sql存起来,当表用
存的类型,就是视图
网友评论