常用数据类型,约束
字符
数据类型名称 | 是否固定 | 范围 | 是否自动补空格 |
---|---|---|---|
char | 固定长度字符串 | 最大长度2000 bytes | 自动补空格 |
varchar2 | 可变长度的字符串 | 最大长度4000 bytes | 不会补空格 |
nchar | 根据字符集而定的固定长度字符串 | 最大长度2000 bytes | 自动补空格 |
nvarchar2 | 根据字符集而定的可变长度字符串 | 最大长度4000 bytes | 不会补空格 |
数字
数据类型名称 | 举栗子 |
---|---|
number | number(1)长度为1 如3。number(3,2)表示整数长度为1,小数长度为2 如1.22 |
日期类型
数据类型名称 | 举栗子 |
---|---|
date | 按7个字节来保存日期数据,在定义中还包括小时、分、秒。格式为DD-MON-YY,如26-44月-19 表示2019年4月26日。 |
LOB数据类型
数据类型名称 | 特点 |
---|---|
blob | 二进制数据,最大长度4G |
clob | 字符数据,最大长度4G |
nclob | 根据字符集而定的字符数据,最大长度4G |
三种大型对象(LOB) | 用来保存较大的图形文件或带格式的文本文件 |
约束
约束的添加,可以在建表时添加,也可以在建表后添加
主键约束(PRIMARY KEY)
- 唯一,非空 相当于 unique + not null
- 一个表只有一个主键
- 主键所在列必须具有索引(主键的唯一约束通过索引来实现),如果不存在,将会在索引添加的时候自动创建
alter table classInfo add constraint pk_classInfo_id primary key(id);
唯一性约束(UNIQUE)
1.可作用在单列或多列上,保证每一行的唯一性
2. 索引是必须的。如果不存在,就自动创建一个
3. 允许null值,且允许多个
alter table classInfo add constraint uq_classInfo_name unique(name);
非空约束(NOT NULL)
列中必须有值,建表时候若使用default关键字指定了默认值,则可不输入。
alter table classInfo modify cname not null;
外键约束(FOREIGN KEY)
1.外键约束使得子表中的列对应父表的主键列
2. 列数据类型必须相同,列名可以不同
3. 父表列必须存在主键约束或唯一约束
4. 允许NULL值,对应的行就成了孤行了
alter table stuInfo add constraint fk_id_stuInfo foreign key(id) references classInfo (id) on delete cascade;
--或
alter table emp add constraint emp_deptno_fk foreign key(deptno) references dept(deptno) on delete set null;
检查约束(CHECK)
就是检查,比如检查性别是否正常
alter table stuInfo add constraint eck_stuInfo_sex check(sex in('男','女'));
--或
alter table stuInfo add constraint eck_stuInfo_sex check(sex='男' or sex='女');
创建表 语法 create table <表名>(
字段名1 数据类型
字段名2 数据类型
)
create table classInfo(
cid number(4),
cname varchar2(20),
cyear number(4),
clen number(1)
)
添加数据
insert into 表名 values(数子,‘字符’,数字,数字,数字)
insert into classInfo values(1002,‘计算机’,2018,4)
查询某个数据
select 字段名 from 表名
select cid from classInfo
查询所有数据
select * from classInfo
删除指定记录
delete from classInfo where cid=1003
删除记录(把表中记录都删了,但是表还在)
delete from classInfo
添加主键约束 alter table 表名 add constraint 约束名 primary key(约束的字段)
alter table classInfo add constraint pk_classInfo_cid primary key(cid)
非空约束
alter table classInfo modify cname not null
唯一约束
alter table classInfo add constraint uq_classInfo_cname unique(cname)
删除表
drop table classInfo
创建行级约束
create table classInfo(
cid number(4) primary key, --行级主键约束
cname varchar2(20) unique not null,
cyear number(4),
clen number(1)
);
insert into classInfo values(1001,‘计算机’,2015,4)
–创建序列 create sequence 序列名 start with 开始 increment by 自增值
create sequence c_test start with 1001 increment by 1
insert into classInfo values(c_test.Nextval,‘计算机1’,2015,4)
创建学生表
create table stuInfo(
stuNo number(10) primary key,
cid number(4) constraint FK_stuInfo_cid references classInfo(cid), 班级cid属于哪个班级
stuName varchar2(100),
stuCarId varchar2(100),
sex varchar2(3),
stuAge number(3),
stuTel varchar2(11),
stuAddr varchar2(100)
)
添加外键约束
alter table stuInfo add constraint FK_stuInfo_cid foreign key(cid) references classInfo(cid)
commit