数据类型
数值类型:
number(l,s):表示数值类型,可以表示整数和小数,l表示长度,最大长度是38,s表示精度默认是0,
number(5,2):表示整体长度是5,有2位小数
其他:int,integer 整数 float、double 浮点数(带小数)
字符串类型:
varchar2(l):变长字符串类型,l表示长度,最长4000字节
char(l):定长字符串类型,l表示长度,例 char(8) 存’abcd’ 它长度是8
其他:varchar、nlschar、nlsvarchar2、string
日期类型:
date:表示日期类型,可以存放世纪、纪元、年月日时分秒
timestamp:时间戳,可以存放世纪、纪元、年月日时分秒,秒后面的9位
CLOB/BLOB:
CLOB:存储大文本文件的数据类型,
BLOB:二进制文件存储类型,
LONG:存储长字符串,最大可以存2G的字符串(oracle不建议使用)
建表语法
create table 表名(
列名(字段名) 数据类型 约束 默认值,–约束、默认值都是可以省略的
列名 数据类型 约束 默认值,
列名 数据类型 约束 默认值,
…
表级约束 --可选
)tablespace 表空间名;
表名、列名、表空间名等都叫做标识符,它一般以字母开头,可以有_、数字、$等,长度不能超过30个英文字符;
tablespace 表空间名:是可省略的,默认表会保存到用户的默认表空间中,也可以加上,表示指定将表存入某个表空间;
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;
约束
约束的分类:行级约束和表级约束
行级约束:建表时跟在字段定义后面,约束当前行定义的列的约束叫做行级约束
表级约束:建表时写在所有字段定义之后的约束,它可以约束某个列或者多个列
1.not null 非空约束
列名 数据类型 not null --行级约束语法
not null:表示这个列的值不能为空
注意:not null是唯一个行级约束,不能写成表级约束
2.unique 唯一约束
列名 数据类型 unique --行级约束语法
unique:表示这个列的值在整个表的数据中,是唯一的不可重复
constraint 约束名 unique(列名) --表级约束,在所有列定义之后
3.primary key 主键约束
列名 数据类型 primary key --行级约束语法
primary key:是not null和unique的结合,表示这个列的值不能为空且不能重复
constraint 约束名 primary key(列名[,列名]) --表级约束
在表级约束中,如果有多个列时,表示这几个列为联合主键()
- foreign key 外键约束
列名 数据类型 references 主表名(主表主键列) --行级约束语法
foreign key:表示这个列的取值,`只能在主表的主键列的值中去取
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 主表名(主表主键列) --表级约束
5.check 检查约束
列名 数据类型 check(约束条件) --行级约束
check:表示这个列的取值要满足check后面的约束条件
drop table user_info;
create table user_info(
id number(11) primary key,
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)
);
constant 约束名 check(约束条件) --表级约束
修改表和约束
1.给表添加一个列
alter table 表名 add 列名 数据类型 [约束] [default 默认值];
2.删除表中的一个列
alter table 表名 drop column 列名;
3.修改一个列
alter table 表名 modify 要修改的列名 数据类型 [约束] [default 默认值];
修改列时,如果列有数据,不能直接修改列的数据类型,只能把它长度增加,但不能减少。
如果要将有数据的列的长度减小,可以在表中增加一个新列和原来的列数据类型和长度完全相同,将要修改的列的数据放入新增加的列里
然后,1把要修改的这个列里的数据清空,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里
2.把要修改的列删除,再增加一个同名列,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里
alter table 表名 modify 列名 数据类型 not null; --给一个列添加not null 约束
alter table 表名 modify 列名 数据类型 null --给一个列去掉非空约束
4.增加一个约束
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(约束条件)
5.删除一个约束
alter table 表名 drop constraint 约束名;
表级约束有名字,行级约束系统会给分配一个名字sys_
注释 comment
给表加注释
comment on table 表名 is ‘注释’;
comment on table user_info is ‘用户基础信息表’;
comment on column 表名.列名 is ‘注释’;
comment on column user_info.id is ‘主键’;
comment on column user_info.name is ‘用户姓名’;
comment on column user_info.age is ‘用户年龄’;
comment on column user_info.sex is ‘性别’;
comment on column user_info.pwd is ‘用户密码’;
select * from user_col_comments where table_name='USER_INFO';
本文详细介绍了Oracle数据库的数据类型,包括数值、字符串、日期和大对象类型,并展示了建表语法,强调了非空、唯一、主键、外键和检查约束的使用。此外,还涵盖了如何修改表和约束,以及为表和列添加注释的方法。
5882

被折叠的 条评论
为什么被折叠?



