数据库设计三范式
解决数据冗余的问题
第一范式
确保每列保持原子性
如果数据库表中的所有字段值都是不可分解的原子值,就满足了第一范式。
第二范式
确保表中的每列都和主键相关,而不能只于主键的某一部分相关。
主要是在联合主键的情况下。
第三范式
每一列都与主键直接相关,而不能与主键简介相关。
创建表
新建表时,指定的表名必须不存在,否则出错。
/**
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr] , …
);
**/
create table student(
stu_id number(10),
name varchar2(20),
age number(3),
hiredate date,
grade varchar2(10) default 1,
classes varchar2(10),
email varchar2(50));
-- 插入数据
insert into student values(20191109,'zhangsan',22,to_date('2019-11-09','yyyy-mm-dd'),'2','1','123@qq.com');
修改表结构
添加列
--再添加表的列的时候,不能允许设置成not null
alter table student add address varchar2(100);
删除列
alter table student drop column address;
修改字段
alter table student modify(email varchar2(100));
重新命名表
rename student to stu;
删除表
drop table stu;
添加外键
-- add constraint 添加约数 (名称)
alter table student add constraint fk_0001 foreign key(deptno) references dept(deptno);
外键删除
有三个方式:
RESTRICT:只有当依赖表中没有一个外键与要删除的主表中的主键值相对应是,才能删除。
CASADE:将依赖表中所有与外键值与主表中眼删除的主键值相对应的记录一起删除
SET NULL:将依赖表中所有与主表中被删除的主键值相对应的外键值设为空值。
约束constraint
分为五大类:
not null: 非空约束,插入数据的时候某些列不允许为空
unique key:唯一键约束,可以限定某一个列的值是唯一的,唯一键的列一般被用作索引列。
primary key:主键:非空且唯一,任何一张表一般情况下最好有主键,用来唯一的标识一行记录,
foreign key:外键,当多个表之间有关联关系(一个表的某个列的值依赖与另一张表的某个值)的时候,需要使用外键
check约束:可以根据用户自己的需求去限定某些列的值