Oracle学习VII —— Oracle建表

本文详细介绍了Oracle数据库中如何使用createtable命令创建表,并以学生信息表为例,解析了各字段数据类型及约束,如varchar2、number、date等。同时,展示了如何添加notnull和default约束,以及使用commentontable和commentoncolumn为表和字段添加注释。此外,还讲解了如何通过altertable命令添加主键、唯一性和检查约束,确保数据准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle建表(create table)

Oracle表是Oracle数据库的核心,是存储数据的逻辑基础。Oracle表是一个二维的数据结构,有列字段和对应列的数据构成一个数据存储的结构。可以简单看成行和列的二维表,列代表着Oracle字段(column),行代表着一行数据(即一条数据记录)。

Oracle字段数据类型

数据类型类型解释
varchar2(n)字符串类型:存储可变的长度的字符串,n:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。
char(n)字符串类型:存储固定长度的字符串,n:字符串的固定长度大小,默认是1,最大长度不超过2000。
number(a,b)数值类型:存储数值类型,可以存整数,也可以存浮点型。a代表数值的最大位数:包含整数位和小数位,b代表小数的位数。例子: number(6,2)输入123.12345,实际存入:123.123number(4,2)输入12312.345,提示不能存入,超过存储的指定的精度
date时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。例子: 内置函数sysdate获取的就是date类型
timestamp时间类型:存储的不仅是日期和时间,还包含了时区。例子:内置函数systimestamp获取的就是timestamp类型
clob大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。
blob二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象

create table语句

Oracle数据库建表是通过create table命令来执行的,通过Oracle学习IV这一章节创建了一个Student用户,现在可以在student用户下创建一个stuinfo(学生信息表)来学习create table 命令的使用。

案例1:创建stuinfo(学生信息表)

-- Create table
create table STUDENT.stuinfo
(
  stuid      varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(1)
  stuname    varchar2(50) not null,--学生姓名
  sex        char(1) not null,--性别
  age        number(2) not null,--年龄
  classno    varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)
  stuaddress varchar2(100) default '地址未录入',--地址 (2)
  grade      char(4) not null,--年级
  enroldate  date,--入学时间
  idnumber   varchar2(18) default '身份证未采集' not null--身份证
)
tablespace USERS --(3)
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table STUDENT.stuinfo --(4)
  is '学生信息表';
-- Add comments to the columns 
comment on column STUDENT.stuinfo.stuid -- (5)
  is '学号';
comment on column STUDENT.stuinfo.stuname
  is '学生姓名';
comment on column STUDENT.stuinfo.sex
  is '学生性别';
comment on column STUDENT.stuinfo.age
  is '学生年龄';
comment on column STUDENT.stuinfo.classno
  is '学生班级号';
comment on column STUDENT.stuinfo.stuaddress
  is '学生住址';
comment on column STUDENT.stuinfo.grade
  is '年级';
comment on column STUDENT.stuinfo.enroldate
  is '入学时间';
comment on column STUDENT.stuinfo.idnumber
  is '身份证号';

代码解析:

  • (1)处: not null 表示学号字段(stuid)不能为空。
  • (2)处: default 表示字段stuaddress不填时候会默认填入‘地址未录入’值。
  • ( 3)处: 表示表stuinfo存储的表空间是users,storage表示存储参数:区段(extent)一次扩展64k,最小区段数为1,最大的区段数不限制。
  • (4)处: comment on table 是给表名进行注释。
  • (5)处: comment on column 是给表字段进行注释。
    ———————————————————————————————
    通过上面crate table命令创建了stuinfo学生信息表后,还可以给表添加相应的约束来保证表数据的准确性。比如:学生的年龄不能存在大龄的岁数,可能是错误数据、性别不能填入不是1(男)、2(女)之外的数据等。

案例2:stuinfo(学生信息表)添加约束

-- Create/Recreate primary, unique and foreign key constraints 
alter table STUDENT.STUINFO
  add constraint pk_stuinfo primary key (STUID);
  --把stuid当做主键,主键字段的数据必须是唯一性的(学号是唯一的)
  
-- Create/Recreate check constraints 
alter table STUDENT.STUINFO
  add constraint ch_stuinfo
  check (age>0 and age<=50);--给字段年龄age添加约束,学生的年龄只能0-50岁之内的
  
alter table STUDENT.STUINFO
  add constraint ch_stuinfo
  check (sex='1' or sex='2');
  
alter table STUDENT.STUINFO
  add constraint ch_stuinfo
  check (grade>='1900' and grade<='2999');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值