DDL

一、表的创建

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:西长安壹号

第二范式:确保数据库中每一列都与主键相关

  如下图,一个学生会对应多个老师,数据出现冗余

  

   可以拆分成一张学生表,一张老师表,两张表进行关联

  

第三范式:表中的列不能出现其他表的非主键字段,即不能存在传递依赖

  

  可以将学号与学生姓名放到一张表中,剩下三个字段放到另外的表中

原文地址:https://www.cnblogs.com/lyc-code/p/13510220.html