本文记录 oracle 环境下对表的创建、字段处理(增、删、改、重命名)、删除、重命名操作,其中包含了在创建表时常用的约束条件及数据类型。
最简单的创建表命令
CREATE TABLE dept(deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));
创建后表结构如下:
也可以通过其他表的数据来创建新的表,参考:sql 根据其他表结构创建新表并批量插入数据
常见数据类型
在创建表时,每一个字段你都需要给其指定数据类型,oracle 有非常多的数据类型,但是有一些是不常用的,下表列出了一些经常使用的数据类型。
数据类型 | 描述 |
---|---|
VARCHAR2(size) | 可变长字符数据 |
CHAR(size) | 定长字符数据 |
NUMBER(p,s) | 可变长数值数据 |
DATE | 日期型数据 |
LONG | 可变长字符数据,最大可达到 2G |
CLOB | 字符数据,最大可达到 4G |
RAW and LONG RAW | 原始的二进制数据 |
BLOB | 二进制数据,最大可达到 4G |
BFILE | 储存外部文件的二进制数据,最大可达到 4G |
ROWID | 行地址 |
修改表字段信息
在已经创建的表中,我们可以对其字段(列)信息进行修改,具体的修改有如下几种。
1、添加新字段
ALTER TABLE dept ADD (job_id, VARCHAR2(9)) /* 给dept表新增一个字段job_id,数据类型为 VARCHAR2(9) */
2、修改字段信息
ALTER TABLE dept MODIFY (last_name, VARCHAR2(30)) /* 修改已有字段信息 */
3、重命名字段
ALTER TABLE dept RENAME COLUMN last_name to last_name_new
4、删除字段
ALTER TABLE dept DROP COLUMN (last_name)
删除表
oracle 下删除一张表默认情况下是存入到 oracle 的回收站中,如下:
drop table tablename
要想彻底删除,还要对回收站进行清空:
purge recyclebin
如果向直接删除不经过回收站,可以使用如下方法:
drop table test1 purge /* 直接删除表不经过回收站 */
重命名表
rename test1 to test2
常见表字段约束
Not Null:保证列的值不能为空
Unique:保证字段数据不重复,唯一
Primary Key:主键约束,默认主键约束包含 Not Null 和 Unique
Foreign Key:外键约束,关联另外一张表的一个主键
- FOREIGN KEY: 在子表中,定义了一个表级的约束
- REFERENCES: 指定表和父表中的列
- ON DELETE CASCADE: 当删除父表时,级联删除子表记录
- ON DELETE SET NULL: 将子表的相关依赖记录的外键值置为null
check:定义每一行记录所必须满足的条件
一个综合案例:
/* constraint 是声明一种错误名称,当对该表插入数据时不符合后面的约束条件时,则会弹出 constraint 后面的错误名称 */ create table student ( sid number constraint student_pk primary key, /*number类型,primary key为主键*/ sname varchar2(20) constraint student_name_not_null not null, /*varchar2 不能为null*/ email varchar2(20) constraint student_email_unique unique /*varchar2 不能重复*/ constraint student_email_notnull not null, /*不能为null*/ age number constraint student_age_min check(age > 10), /*检查条件 age 必须大于10*/ gender varchar2(6) constraint gender_female_or_male check(gender in ('man', 'wman')), /*只能插入 man 或者 woman*/ deptno number constraint student_fk references dept(deptno) on delete set null /*增加外键为dept(deptno)*/ )