1、创建表
create table 表名(
字段名 类型,
字段名 类型,
............
);
建立学生信息表,字段包括:学号、姓名、性别、出生日期、email、班级
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2),
birthday date,
email varchar2(50),
class_id number(10)
);
建立学生信息表,字段包括:学号、姓名、性别、出生日期、email、班级,并且性别默认是男,出生日期默认是当前日期
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10)
);
插入数据
insert into t_student(student_id,student_name,email,class_id) values(1001,'jack','jack@163.com',12);
其中 sex 和 birthday 会使用默认值
2、创建表的时候加入约束条件
常见的约束:
1)非空约束:not null
2)唯一约束:unique
3)主键约束:primary key
4)外键约束:foreign key
5)自定义检查约束:check
建立学生信息表,字段包括:学号、姓名、性别、出生日期、email、班级,并且性别默认是男,出生日期默认是当前日期,学生姓名不能为空
create table t_student(
student_id number(10),
student_name varchar2(50) not null,
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10)
);
针对以上的约束,可以自己起约束名称,如:
create table t_student(
student_id number(10),
student_name varchar2(50) constraint student_name_not_null not null,
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10)
);
值得注意的是:系统表user_constraints,描述当前数据库用户下所有的约束信息。
> select * from table_constraints where table_name = 't_student';此语句用户查询约束。
建立学生信息表,字段包括:学号、姓名、性别、出生日期、email、班级,并且性别默认是男,出生日期默认是当前日期,email不能重复
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50) unique,
class_id number(10)
);
针对以上的约束,可以自己起约束名称,如:
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50) constraint email_unique unique,
class_id number(10)
);
上述加的约束都是放在字段上,也称为字段级约束,还有一种将约束信息放在字段的后面,称为表级约束,但是not null只能有字段级约束,如:
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10),
constraint email_unique unique(email)
);
主键约束,primary key
每个表都应该具有主键,主键可以标识记录的唯一性,并且分为单一主键和复合主键,单一主键是由一个字段构成的,复合主键是由多个字段联合构成,如下:
单一主键,字段约束:
create table t_student(
student_id number(10) primary key,
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10),
);
单一字段,表级约束:
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10),
constraint student_id_pk primary key(student_id)
);
复合主键:
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10),
constraint student_id_name_pk primary key(student_id,student_name)
);
外键约束,foreign key
外键约束主要是维护表之间的关系,主要是为了保证参照完整性,也就是说,本表中的某个字段为外键字段,那么这个字段的值必须来自于所要参照的表的主键
建立学生与班级表,例如:
先建立班级表t_class
再建立学生表t_student
create table t_class(
class_id number(10),
class_name varchar2(30),
constraint t_class_class_id_pk primary key(class_id)
);
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10) references t_class(class_id),
constraint student_id_pk primary key(student_id)
);
值得注意的是,在删除时,先删除子,再删除父
delete from t_student;
delete from t_class;
建立外键还可以使用表级约束:
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10),
constraint student_id_pk primary key(student_id),
constraint student_fk_classes_id foreign key(classes_id) references t_classes(classes_id)
);
自检查约束,check
使用check可以检查表中的字段,是否符合某一个表达式,如性别
create table t_student(
student_id number(10),
student_name varchar2(50),
sex char(2) default '男',
birthday date default sysdate,
email varchar2(50),
class_id number(10) not null references t_class(class_id),
constraint student_id_pk primary key(student_id),
constraint student_check_sex check(sex in('男','女'))
);
综上,得出最后t_student表
create table t_student(
student_id number(10),
student_name varchar2(50) not null,
sex char(2) not null,
birthday date default sysdate,
email varchar2(50) unique,
class_id number(10) ,
constraint student_id_pk primary key(student_id),
constraint student_fk_class_id foreign key(class_id) references t_class(class_id),
constraint student_check_sex check(sex in('男','女'))
);
2、增加/删除/修改表结构 add/drop/modify
添加字段 如:需求发生改变,需要向 t_student 中加入联系电话字段,字段名称为:contatct_tel 类型 为 varchar2(40)
alter table t_student add(contact_tel varchar2(40));
修改字段 如:std_name 无法满足需求,长度需要更改为 50
如果数值类型的数据需要减小长度,那么该列必须为空,如果字符类型的数据需要减小长度,那么只要减小的长度大于已有数据的最大长度就可以了
alter table t_student modify(student_name varchar2(50));
删除字段 如:删除联系电话字段
alter table t_student drop(contact_tel); 或者 alter table t_student drop column contact_tel;
3、增加/删除/修改表约束
删除约束将 t_student 中的 class_id 外键约束删除
alter table t_student drop constraint student_fk_class_id;
添加约束 将 t_student 中的 class_id 加入外键约束
alter table t_student add constraint student_fk_class_id foreign key(classes_id) references t_class(class_id);
修改约束
alter table t_student modify(student_name varchar2(70) null);
删除表
drop table t_class;
drop table t_student;
务必先删除子表,再删除父表。