以Oracle数据库为目标的数据库进阶(三、四)

以Oracle数据库为目标的数据库进阶(三、四)

分组函数:(会自动忽略空值NULL)(查询语句包含分组函数后,查询字段只能是分组函数或者分组字段)

count(); 计数,count(*)
max(); 最大值
min(); 最小值
sum(); 
avg(); 平均值


group by 按什么分组
having 包含分组函数的条件(wherehaving都可以做条件,区别是having专为分组函数使用)


最全select语句:
select ..
from ..
where ..
group by..
having ..
order by..


------------------------------------------------------------------------------------------------------------------------------------------
子查询:一次执行多条查询。一个查询使用另外一个查询做条件。select...(select...)

分组函数只能嵌套2次。

子查询返回多条数据时,需另外处理。
in,not in
any:任意一个
all:所有

------------------------------------------------------------------------------------------------------------------------------------------
DDL语句


删表:
drop table tablename;

建表:
create table tableName(
字段名 类型 默认值 字段约束,
...
表约束
);

类型:number()\char()\varchar2()\date

------------------------------------------------------------------------------------------------------------------------------------------
DML语句

新增数据:
insert into 表名(字段名,...) values(字段值,...);
                 缺省则全部输入

修改数据:
update 表明 set 字段=新值,... where 条件;

删除数据:
delete from 表名 where 条件;

------------------------------------------------------------------------------------------------------------------------------------------
事务处理:

commit:提交之后才生效。
rollback:回滚。

如果不进行事务处理,数据库中数据不会改变,新数据只在当前窗口可被看到,会锁定本次操作涉及到的数据,没涉及到的数据不被影响。

commit之后新书据写入数据库,旧数据不再存在。解除锁定数据,所有窗口看到数据一致为新数据。

rollback后新数据不再存在,锁定解除。

在一些情况下会自动提交(DDLDCL、正常退出sqlplus)或者自动回滚(非正常退出)

------------------------------------------------------------------------------------------------------------------------------------------
约束constraint

5

(非空、

唯一,不限制空值因为空值之间不相等、

主键约束=非空+唯一、

外键约束 1对多、

check约束)

not null;写在字段后。(字段名 类型 not null;  字段名 类型 constraint 约束名 not null

unique;会加索引,增加查询速度。(同上)

primary key;(同上,)

部门表提供主键,员工表加外键字段。
表级约束写法,在创建员工表时写:constraint 约束名 foreign key (员工表关联外键字段) references 部门表(主键字段)
员工表的外键字段必须来自部门表或者NULL,删除时也需要注意(先清除子表相关数据再删除父表;级联删除,父子表一起删除,on delete cascade;置空关联字段on delete set nullon delete都在建表时使用。

SQL语句单行注释 --

check (表达式)在创建表时使用。

DB支持子查询建表。(create table ..as..)

------------------------------------------------------------------------------------------------------------------------------------------
view 视图:保存查询结果。下次使用时直接查找试视图。视图本身没有数据,具体数据依然存在表中,不推荐通过修改视图修改表中数据。
create or replease view viewname as 子查询 with read only;

index索引:提升查询效率,降低增、删效率。
create index indexname on 表名(字段名)

sequence序列:ORACLE主键的一种对象。
create sequence sname increment by 自增n start with 从几开始,drop sequence sname;
序列提供主键值:取自增后的值 nextval,当前值currval
使用时:
create sequence sname
insert into tname values(sname.nextval,'guanyu',1600);

------------------------------------------------------------------------------------------------------------------------------------------
top noracle使用rownum实现,但是他只认得小于号:select * from (子查询) where rownum<11;

分页处理,3层嵌套:select * from (select rownum row_id,.. from (select ..from tname order by .. desc)) where row_id范围;

------------------------------------------------------------------------------------------------------------------------------------------
DB设计,范式3:对于单表
1、无重复字段;
2、非主属依赖主属;
3、不能有字段依赖非主属;

多表:
1V1;合并;共同主键;
1VN;主外键关联;
NVN;建立关联表,存放2个表的主键;
没关系;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值