【Oracle】学习笔记(二)

本文详细介绍了Oracle数据库中的数据类型,包括字符、数字、日期和LOB类型,并重点讲解了各种约束,如主键、唯一性、非空、外键和检查约束的用法,以及如何在建表后添加约束。示例展示了创建表、插入数据、查询和删除数据的操作,以及如何创建序列和外键约束。
摘要由CSDN通过智能技术生成

常用数据类型,约束

字符

数据类型名称是否固定范围是否自动补空格
char固定长度字符串最大长度2000 bytes自动补空格
varchar2可变长度的字符串最大长度4000 bytes不会补空格
nchar根据字符集而定的固定长度字符串最大长度2000 bytes自动补空格
nvarchar2根据字符集而定的可变长度字符串最大长度4000 bytes不会补空格

数字

数据类型名称举栗子
numbernumber(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)

  1. 唯一,非空 相当于 unique + not null
  2. 一个表只有一个主键
  3. 主键所在列必须具有索引(主键的唯一约束通过索引来实现),如果不存在,将会在索引添加的时候自动创建
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值