Oracle数据库中,表的操作

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;

务必先删除子表,再删除父表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值