笛卡尔积:多表时查询的总记录为 多表记录之积。
n个表做连接时,连接条件至少为n-1个。
等值连接 不等值连接
外连接:
左外连接: (+)放到右边,左边表不符合条件的记录也进行显示。
右外连接: (+)放到左边,右边表不符合条件的记录也进行显示。
全连接:(99语法):from 表1 full join 表2 on 连接条件
自连接: 自己和自己做笛卡尔积,通过连接条件删选记录。
select1 union select2 取两个select去除重复的。
select1 union all select 不去除重复的。
select1 intersect select2 取交集
select1 minus select2 取差集。
sum() over(partion by) order by 可以不写 写不写注意区别。
row_number() over(partion by order by) order by 必须写
grouping sets((list),(list),(list)):跟在group by 之后,根据指定list分别进行分组计算。
null就是全表计算。
了解: cube() rollup()
rownum : oracle 分页
select b.*
from ( select a.*, rownum r_num
from(
select e.* from emp e order bye.sal) a
) b
whereb.r_num >=5 and b.r_num<=10;
rowid:数据存放地址的表现形式
99语法:
交叉连接: cross join
自然连接: natural join
using连接: 表1 join 表2 using (字段名) 注意字段名不包含表别名。
on连接: 表1 join 表2 on 连接条件
join 表3 on 连接条件
左外连接: 表1 left outer join 表2 on 连接条件。
右外连接: 表1 right outer join 表2 on 连接条件
内连接 : 表1 inner join 表2 on
增删改
增: 添加一行完整数据: insert into 表名 values (值1,值2,。。。);
添加一行中指定列数据:
insert into 表名(列1,列2.。。。) values (值1,值2,。。。);
根据表结构拷贝数据:
insert into 表 select 选择列表 from 表1,表2where 连接条件
删: delete from 表名 where 条件
删除全表:delete from 表名; truncate table 表名(此方法更好);
删除重复数据:
delete from 表1as a where rowid !=(select max(rowid)from 表1as b where a.某字段 =b. 某字段)
改: update 表名 set 列1= 值1,。。。where 过滤条件
顺序: from表 where 最后set
事务的概念或者特征:
原子性 一致性 隔离性 持久性 (详见文档)
commit; rollback;