创建表空间和表
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