Oracle 增删改查三范式

一、 三范式

1: 原子性: 字段不可再分,必须有主键,列不可分,无重复性

例如: userInfo: '山东省烟台市 1318162008' 依照第一范式必须拆分成 userInfo: '山东省烟台市' 和 userTel: '1318162008'两个字段

2: 依赖性: 消除部分依赖,字段完全依赖主键

例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单ID相关。产品表只能描述产品相关的信息,所以所有的字段都必须与产品ID相关。因此在同一张表中不能同时出现订单信息与产品信息。

3: 传递性; 消除传递依赖

例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户ID即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户ID,而不是关联于订单ID。

第二范式与第三范式的本质区别:在于有没有分出两张表。

必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。

第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)。

4:数据库中的五大约束包括:

1.主键约束(Primay Key Coustraint) 唯一性,非空性;

2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个;

3.默认约束 (Default Counstraint) 该数据的默认值;

4.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;

5.非空约束(Not Null Counstraint):设置非空约束,该字段不能为空。

二、事务特性

1:原子性: 事务中所有数据的修改,要么全部执行,要么全部不执行 
2:一致性: 事务完成时,要使所有的数据都保持一致的状态,换言之,通过事务进行的所有数 
据修改,必须在所有相关的表中得到反映 
3:隔离性: 事务应该在另一事务对数据的修改前或修改后进行访问,防止脏读和幻读。 
4:持久性: 保证事务对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失数据。


三、增删改查

1. 管理员登录
    *. sqlplus sys/密码 as sysdba
    *. sqlplus / as sysdba

2. 解锁
alter user scott account unlock;

3. 修改密码
alter user scott identified by 新密码;

4. 基本查询函数

  • between ...and  在两个值之间
  • in (set)  等于两值中的一个
  • like  模糊查询
  • is null 叛断空值
  • order by 排序 : asc(升序)desc(降序)
  • lower ,upper 大小写控制函数(查询到的值变为大小写)
  • concat('hello','world')          helloword
  • substr  (‘helloworld’,1,5)   hello
  • length   ('helloworld')          10
  • instr     ('helloworld',w)         6
  • lpad     (id,5,'*')              ****1
  • rpad    (id,5,'*')               1****
  • trim    ('h' from 'hellorold)    elloworld
  • replace ('abcd' ,'b','m')        amcd
  • 数字函数:
    round   四舍五入
    trunc    截断
    mod     求余
  • 日期函数:           描述:
    months_between    两个日期相差的月数
    add_months        向指定日期中加上若干月数
    next_day          指定日期的下一个日期
    last_day          本月最后的一天
    round              日期四舍五入
    trunc              日期截断
  • 转换函数
    to_date
    to_char
    to_number
  • group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数;

5. 基本插入更新删除

insert into tablename(column) values (values);

update city set name='曼谷1’ where country='泰国';  如果没有where则所有的name都改变了

delete from  city   where  cid=9;  如果没有where条件那么表中所有数据都被删除

6. 事务提交和回滚
commit    rollback

保存回滚点:savapoint name .回滚到回滚点:rollback to name;

四、数据库表结构操作

1、创建一个含有约束的表

  • create table userInfo (
  • id number(6),
  • name varchar2(20),
  • age number(3) default 18,
  • birthday date,
  • address varchar2(50),
  • email varchar2(25),
  • deptno number(2),
  • constraint id_pk primary key (id),--也可以两个以上,联合主键
  • constraint dept_deptno_ref foreign key (deptno) references dept(deptno),
  • constraint emial_name_uqe unique (email, name)
  • );

2、给表添加约束

  • alter table userInfo add(msn varchar2(20));
  • alter table userInfo modify(msn varchar2(25));
  • alter table userInfo drop(msn);
  • alter table userInfo drop constraint id_pk;
  • alter table userInfo add constraint id_pk primary key (id);

3、不带约束名称

  • create table userInfo (
  • id number(6) primary key,--主键
  • name varchar2(20) not null,--非空
  • age number(3) default 18,
  • birthday date,
  • address varchar2(50),
  • email varchar2(25) unique,--唯一
  • deptno number(2) references dept(deptno)—外键
  • );
  • --复合外键
  • create table emp0(id number ,name varchar(8) ,constraint fk_nam1e foreign key(id,name) references emp9(id,name1));
  • --主键另外写法
  • create table emp2(id number,name varchar(8),id1 number, constraint pk_id primary key(id), constraint fk_name foreign key(id1) references emp(id))
  • --check 约束的写法
  • create table emp4(id number check(id in(1,2 ,3)),name varchar(8));
  • ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50)

猜你喜欢

转载自blog.csdn.net/yuqilin520/article/details/83059847