关于Oracle创建表空间和表简单说明和栗子

本文详细介绍了在Oracle数据库中创建表空间、表以及相关约束的步骤和语法,包括主键、外键、唯一性和检查约束的设置。通过实例展示了如何创建学生信息表INFOS和成绩表SCORES,以及如何添加各种约束。还涵盖了表的删除、修改、转移表空间等操作,强调了在创建表时应注意的细节和最佳实践。
摘要由CSDN通过智能技术生成
创建表空间和表
ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的
oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
数据表空间 (Tablespace)         
存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
数据表         
在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
数据文件         
以上几个概念都是逻辑上的, 而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现
1、创建表空间:
格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小
                create tablespace data_test datafile 'e:\oracle\oradata\test\data_1.dbf' size 2000M;
                create tablespace idx_test datafile 'e:\oracle\oradata\test\idx_1.dbf' size 2000M;
                (*数据文件名 包含全路径, 表空间大小 2000M 表是 2000兆) 
2、建好tablespace, 就可以建用户了
          格式: create user 用户名 identified by 密码 default tablespace 表空间表;
                create user study identified by study default tablespace data_test;
                (*我们创建一个用户名为 study,密码为 study, 缺少表空间为 data_test -这是在第二步建好的.)
                (*缺省表空间表示 用户study今后的数据如果没有专门指出,其数据就保存在 data_test中, 也就是保存在对应的物理文件 e:\oracle\oradata\test\data_1.dbf中)

创建用户并指定表空间
CREATE USER cici IDENTIFIED BY cici PROFILE DEFAULT DEFAULT TABLESPACE CICI ACCOUNT UNLOCK;
create user jykl identified by jykl default tablespace jykl_data temporary tablespace jykl_temp;
授权给新用户
GRANT connect, resource TO cici;
grant create session to cici;
4. 授权给新用户
          grant connect,resource to study; 
          --表示把 connect,resource权限授予study用户
          grant dba to study;
          --表示把 dba权限授予给 study
5. 创建数据表           
      在上面,我们已建好了用户 study 我们现在进入该用户           
      sqlplusw study/study@test   然后就可以在用户study中创建数据表了           
      格式: create table 数据表名 


oracle命令建立主键外键
 
1、创建一张学生表
create table t_stu(  
  stuid      number(10)   primary key,  
  stuname    varchar2(20) not null,  
  stusex     varchar2(2)  default '男' check(stusex in('男','女'))
);  
   
 2、创建一张课程表
create table t_couse(  
  couseid     number(10)   primary key,  
  cousename   varchar2(20) not null,  
  cousetype   varchar2(4)
);  
 
3、创建一张学生课程成绩表(包括主外键)
create table t_score(  
  scoreid    number(10) primary key,  
  stuid      number(10) references t_stu(stuid),  
  couseid    number(10),  
  constraint fk_couseid foreign key(couseid)  
  references t_couse(couseid)  
  on delete cascade
); 


CREATE TABLE log(
log_id int(10)   unsigned NOT NULL auto_increment,
log_time         datetime NOT NULL,
log_user         varchar(30) NOT NULL,
log_title        varchar(30) default NULL,
log_content      text default NULL,
PRIMARY KEY(log_id));

orale表管理: 

Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则使用如下命令:

语法格式:alter table命令

alter table 表名 add constraint 约束名 约束内容。

不论创建表还是约束,与SQL Server基本相同,注:在Oracle中default是一个值,而SQL Server中default是一个约束,因此Oracle的default设置可以在建表的时候创建。

案例1:创建一个学生信息(INFOS)表和约束

 Oracle创建表和约束

 create table INFOS(

 STUID            varchar2(7) not null,               --学号 学号=‘S’+班号+2位序号

 STUNAME          varchar2(10) not null,              --姓名

 GENDER           varchar2(2) not null,               --性别 

 AGE              number(2) not null,                 --年龄

 SEAT             number(2) not null,                 --座号

 ENROLLDATE       date,                               --入学时间

 STUADDRESS       varchar2(50) default '地址不详',     --住址

 CLASSNO          varchar2(4) not null,               --班号 班号=学期序号+班级序号 

);

/  ①

alter table INFOS add constraint pk_INFOS primary key(STUID)  ②

/

alter table INFOS add constraint ck_INFOS_gender check(GENDER = '男' or GENDER = '女')  ③

/

alter table INFOS add constraint ck_INFOS_SEAT check(SEAT >=0 and SEAT <=50)  ④

/

alter table INFOS add constraint ck_INFOS_AGE check(AGE >=0 and AGE<=100)  ⑤

/

alter table INFOS add constraint ck_INFOS_CLASSNO check((CLASSNO >='1001' and CLASSNO<='1999') or

(CLASSNO >='2001' and CLASSNO<='2999'))  ⑥

/

alter table INFOS add constraint un_STUNAME unique(STUNAME)  ⑦

/

代码解析:

①  在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”。

②  创建一个主键约束。

③  与 ④ ⑤ ⑥ ⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一的,列中的值不能重复。

 Oracle中创建外键约束与SQL Server相同。比如:现有成绩表定义如下:

 案例2:创建一个成绩表(SCORES)表和约束

 Oracle创建表和约束

create table scores(

 ID                 number,                   --ID  ①

 TERM               varchar2(2),              --学期 S1或S2

 STUID              varchar2(7) not null,     --学号 

 EXAMNO             varchar2(7) not null,     --考号 E+班号+序号

 WRITTENSCORE       number(4,1) not null,     --笔试成绩

 LABSCORE           number(4,1) not null,     --机试成绩

);

ALTER TABLE SCORES ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2')

/

ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID)  ②

/

代码解析:

①  SQL Server中可以使用identify创建自动增长列,但是Oracle中的自动增长需要借助序列(Sequence)完成,在后面章节中讲解。

②  Oracle中的外键约束定义。

注意:表名,字段名要大写! 

 

oracle建表、建主键、外键基本语法

-创建表格语法:     

create table 表名(       

字段名1  字段类型(长度)   是否为空,        

字段名2  字段类型           是否为空 );

-增加主键     

alter table 表名 add constraint 主键名 primary key (字段名1);

-增加外键:     

alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2);

在建立表格时就指定主键和外键

create table T_STU(

 STU_ID                char(5) not null,    

 STU_NAME              VARCHAR2(8) not null, 

 constraint PK_T_STU primary key (STU_ID));

主键和外键一起建立:     

create table T_SCORE(

 EXAM_SCORE             number(5,2), 

 EXAM_DATE              date,

 AUTOID                 number(10) not null,

 STU_ID                 char(5),

 SUB_ID                 char(3),

 constraint PK_T_SCORE primary key (AUTOID),

 constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID));

 

orale数据类型:

类型

含义

CHAR(length)

存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

VARCHAR2(length)

存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

NUMBER(p,s)

既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。可存负数

DATE

存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值