第二十五天

表设计
–明确表的作用 表名
—明确表中的字段
–字段名
–字段类型 : number char varchar2 date
–字段约束 :
–主键约束(唯一+非空)
–唯一约束
–非空约束
–默认约束
–检查约束
–外键约束 Emp Dept
–涉及到两张表
–父表|主表
–子表|从表 : 子表中添加一个外键字段,关联主表的主键字段
–外键字段的值只能为主表中主键字段已有的值

–设计表的三范式 :
–最终的目的避免数据重复冗余
–1NF–>列不可再分最小原子 (避免重复);
–2NF–>主键依赖(确定唯一);
–3NF–>消除传递依赖(建立主外键关联 拆分表);**

–表与表之间的关系 :
–一对一关系 : 用户表 身份证信息表
–主外键关联关系
–一对多|多对一 : 班级表 学生表
–主外键关联关系 : 在多的一方设置外键,关联一的一方的主键
–多对多 : 订单与商品 学生与选课
–中间表 : 定义两张表的关联关系

–DDL 数据定义语言 了解能做修改
–create表创建 drop删除表 alter修改表结构

–create表创建
–创建表(不加约束)
create table tb_user(
userid number(5),
username varchar2(30),
userpwd varchar2(20),
age number(3) ,
gender char(1 char) ,
email varchar2(30),
regtime date
);
-数据类型(默认字节数) , varchar2(1 char)一个字符

-创建表(同时创建约束+指定名称) 在字段的后面指定约束名直接添加
–主键约束
userid number(5) constraint pk_user primary key,

–创建表(同时创建约束+指定名称) 在结构结束之前为当前表中指定字段添加约束

–已有表中拷贝结构
–create table 表名 as select 字段列表 from 已有表 where 1!=1;
–拷贝结构 emp
create table emp_his as select ename,sal from emp where 1!=1;
–拷贝结构 emp +数据
create table emp_his2 as select ename,sal from emp where sal>2000;

–删除 (先删除从表 再删除主表 ;同时删除约束)
–删除表
drop table emp_his;
–主外键关系下的两张表的删除 :
–删除从表 : 直接删除 drop table student
–删除主表 : 不能直接删除
–1)先删除所有从表,再删除主表
–2)删除主表的同时级联删除主外键约束 drop table clazz cascade constraints;
drop table tb_txt cascade constraints;
drop table tb_user cascade constraints;
drop table student cascade constraints;

–物理约束 : 表结构上为字段添加约束,推荐主外键约束可以定义物理约束
–逻辑约束 : 在后端逻辑代码上添加判断,逻辑,检查等约束建议定义为逻辑约束

–视图与索引
–视图 : 建立在结果集与表之间的虚拟表
–物理视图 : 真是存储数据
–逻辑视图 : 不会真是存储数据,数据来资源数据源
–简化封装sql
-权限问题 :
–登录sys管理员账号
–授权: grant dba to 账户名;
–回收: revoke dba from 账户名;
-create or replace view 视图名 as select语句 [with read only];
-修改数据源中的数据
update emp set sal = 1000 where empno = 7369;
update vw_xixi_haha set sal = 800 where empno = 7369;
–删除试图
drop view vw_xixi_haha;

–索引 :
–提高查询效率
–相当于目录
–索引是透明的,一个字段上是否添加了索引对字段的使用没有任何影响
–大数据量前提下,做查询才会提高效率,如果频繁做增删,反而会降低效率,索引也是数据库的对象之一,需要维护
–唯一性较好,少量修改,大量查询适合添加索引
–oracle数据库自动为主键添加索引
select * from emp where sal>1500;

–添加索引
create index index_sal on emp(sal);
drop index index_sal;

-事务
–事务是指作为单个逻辑工作单元执行的一组相关操作。这些操作要求全部完成或者全部不完成。
–使用事务是为了保证数据的安全有效。
–要求了解: 什么是事务,事务作用,事务特点|特性,事务隔离级别,幻读,脏读…,事务的成功与失败

–事务的开启: 执行DML中的insert delete update默认开启事务
–事务的结束 :
– 成功
–手动提交 :使用 commit
– 正常执行完成的 DDL 语句:create、alter、drop
– 正常执行完 DCL 语句 GRANT、REVOKE
– 正常退出的 SQLPlus 或者 SQL Developer 等客户端
– 如果人工要使用隐式事务,SET AUTOCOMMIT ON (只针对一个连接)
– 失败
–意外退出,强制断电
–手动提交 :使用 rollback

–DML : **
–insert
–insert into 表名 values(值列表);
insert into dept values(60,‘教学部’,‘上海’);
–insert into 表(指定列) values(值列表);
insert into dept(deptno,dname) values(70,‘营销部’);
–insert into 表名 select 查询列 from 源表 where 过滤数据;
insert into emp_his2 select ename,sal from emp where deptno = 30;
–insert into 表(指定列) select 查询列 from 源表 where 过滤数据;
insert into emp_his2(ename) select ename from emp where deptno = 10;

–update 更新修改
–update 表名 set 字段=值 [,…] where 过滤行记录;
update dept set loc=‘三亚’ where deptno = 70;
update dept set dname=‘A’||dname,loc=‘青岛’ where deptno in (50,60,70);

–update 表名 set (字段列表) =(select 字段列表 from 源表 where 过滤源表记录) where 更新记录的条件手动更改字段值:
update dept set (dname,loc) =(select ename,job from emp where empno=7369) where deptno in (50,60);

–delete
–删除一个或多个或所有数据
–delete from 表名; 删除一张表中所有数据
delete from emp_his2;
----delete from 表名 where 行过滤条件; 满足条件的数据删除
delete dept where deptno = 70;

–数据截断 :
–实现截断删除数据

–与delete区别:
–数据截断没有事务管理,而delete可以通过事务管理
–数据截断不能操作主表,从表结构上检查如果存在从表,不能截断 ,但是delete可以删除,可能存在3中方案
truncate table dept;

–序列 :
–工具 ,管理流水号
–管理类似主键字段的值,数值型的,有变化规律的
–序列没有与表与字段绑定,序列的 删除不影响之前的使用
–第一次使用序列需要先获取下一个最新值
–create sequence 序列名 start with 起始值 increment by 步进;
create sequence seq_deptno start with 70 increment by 1;
–当前值 序列名.currval
select seq_deptno.currval from dual;
–最新值 序列名.nextval
select seq_deptno.nextval from dual;

–删除
drop sequence seq_deptno;

select * from dept;

insert into dept values(seq_deptno.nextval,‘’,‘’);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值