1.创建表
create table 表名( 列名(字段名) 数据类型 约束 默认值,--约束、默认值都是可以省略的 列名 数据类型 约束 默认值, 列名 数据类型 约束 默认值, ... 表级约束 --可选 )tablespace 表空间名;--可省略的,默认表会保存到用户的默认表空间中 --表名、列名、表空间名等都叫做标识符,它一般以字母开头,可以有_、数字等,长度不能超过30个英文字符; --创建person表: create table person( id number(11), name varchar2(20), age number(3), sex number(1), birthday date ); drop table 表名;--删除表 create table 表名 as select语句; --经常用作数据备份 create table emp_bak as select * from emp; create table emp as select * from emp_bak;
2.约束
约束可以分为行级约束和表级约束
行级约束:建表时跟在字段定义后面,约束当前行定义的列的约束叫做行级约束
表级约束:建表时写在所有字段定义之后的约束,它可以约束某个列或者多个列
not null --非空约束,它是唯一个行级约束,不能写成表级约束 列名 数据类型 not null --行级约束语法 unique --唯一约束,表示这个列的值在整个表的数据中,是唯一的不可重复 列名 数据类型 unique --行级约束语法 constraint 约束名 unique(列名) --表级约束,在所有列定义之后 primary key --主键约束,是not null和unique的结合,表示这个列的值不能为空且不能重复 列名 数据类型 primary key --行级约束语法 constraint 约束名 primary key(列名[,列名]) --表级约束,在表级约束中,如果有多个列时,表示这几个列为联合主键() foreign key --外键约束,表示这个列的取值,只能在主表的主键列的值中去取 列名 数据类型 references 主表名(主表主键列) --行级约束语法 create table emp_t( empno number(7) primary key, --主键约束 ename varchar2(30) not null, --非空约束 job varchar2(30), sal number(7,2), hiredate date, deptno number(7) references dept(deptno) --外键约束 ); constraint 约束名 foreign key(外键列) references 主表名(主表主键列) --表级约束 check --检查约束,表示这个列的取值要满足check后面的约束条件 列名 数据类型 check(约束条件) --行级约束 create table user_info( name varchar2(30) not null, age number(3) check(age>0 and age<150), sex number(1) default 0, pwd varchar2(20), constraint ck_pwd check(length(pwd)>8) ); constraint约束名 check(约束条件) --表级约束
3.修改表和约束
--给表添加一个列 alter table 表名 add 列名 数据类型 [约束] [default 默认值]; --删除表中的一个列 alter table 表名 drop column 列名; --修改一个列 alter table 表名 modify 要修改的列名 数据类型 [约束] [default 默认值]; /*修改列时,如果列有数据,不能直接修改列的数据类型,只能把它长度增加,但不能减少。如果要将有数据的列的长度减小,可以在表中增加一个新列和原来的列数据类型和长度完全相同,将要修改的列的数据放入新增加的列里。然后,把要修改的这个列里的数据清空,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里,把要修改的列删除,再增加一个同名列,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里*/ --增加一个约束 alter table 表名 add 表级约束语法; alter table 表名 add constraint 约束名 unique(列名) alter table 表名 add constraint 约束名 primary key(列名[,列名]) alter table 表名 add constraint 约束名 foreign key(外键列) references 主表名(主表主键列) alter table 表名 add constant 约束名 check(约束条件) --删除一个约束 alter table 表名 drop constraint 约束名;