一、表的创建
create table xxx (aaa number(10),bbb varchar2(20),ccc date);
二、表结构的修改
新增列:alter table xxx add aaa varchar(100);
注意:在添加表的列名的时候,不允许设置成not null
删除列:alter table xxx drop column aaa;
修改列:alter table xxx modify(aaa varchar(100));
三、重新命名表
rename old_name to new_name;
四、删除表
drop table xxx;
注意:
①在删除表的时候,经常会遇到多个表关联的情况,多个表关联的时候不能随意删除,需要使用级联删除
②cascade:如果表A、B,A中某个字段与B中某个字段做关联,那么删除表A的时候需要先将表B删除
③set null:在删除的时候,把表的关联字段设置成空
五、约束
约束:是在表上强制执行的数据校验规则
1、not null:非空约束
插入数据的时候某些列不允许为空
2、unique key:唯一键约束
可以限定某一个列的值是唯一的,唯一键的列一般被用作索引列
3、primary key:主键
非空且唯一,任何一张表,一般情况下最好有主键,用来唯一的标识一行记录
4、foreign key:外键
当多个表之间有关联关系的时候需要使用外键,一个表的某个列的值,依赖于另一张表的某个值
5、check:可以根据用户自己的需求限定某些列的值
重构建表语句:
create table xxx
(aaa number(10) primary key,
bbb varchar2(20) not null,
ccc date unique,
ddd number(3) check(ddd>0 and ddd<126),
eee number(2),
foreign key eee number(eee) references table_name(fff));
六、索引
1、索引是存在磁盘中的
2、索引的相关操作
创建:create index i_name on emp(ename);
删除:drop index i_name;
七、数据库设计三范式
数据库三范式是为了减少数据冗余
第一范式:确保每列保持原子性,即列不可分
如address中存储:北京市门头沟区西长安壹号,那么就不满足第一范式
正确应为:province:北京市 city:门头沟区 village:西长安壹号
第二范式:确保数据库中每一列都与主键相关
如下图,一个学生会对应多个老师,数据出现冗余
可以拆分成一张学生表,一张老师表,两张表进行关联
第三范式:表中的列不能出现其他表的非主键字段,即不能存在传递依赖
可以将学号与学生姓名放到一张表中,剩下三个字段放到另外的表中