oracle数据库基础的经典三个表,S表,C表,SC表脚本。
### Oracle数据库经典三表设计与实现 #### 一、引言 在Oracle数据库学习与实践中,经常需要构建一些基础的数据模型来模拟实际应用场景中的数据结构。本文将详细介绍一个经典的三表设计案例:学生表(S)、课程表(C)以及成绩表(SC)。通过这个例子,我们将了解到如何创建表、插入数据、定义主键、外键约束以及一些基本的数据查询操作。 #### 二、表结构设计 ##### 1. 学生表(S) - **表名**:S - **字段说明**: - `sno`:学号,字符型,长度为4,不允许为空,并作为主键。 - `sname`:姓名,可变字符串类型,最大长度为10。 - `sex`:性别,固定长度字符串,长度为3。 - `dept`:所在系别,可变字符串类型,最大长度为4。 - `age`:年龄,整型。 ##### 2. 课程表(C) - **表名**:C - **字段说明**: - `cno`:课程号,字符型,长度为3,作为主键。 - `cname`:课程名称,可变字符串类型,最大长度为20。 - `credit`:学分,整型。 ##### 3. 成绩表(SC) - **表名**:SC - **字段说明**: - `sno`:学号,字符型,长度为4。 - `cno`:课程号,字符型,长度为3。 - `grade`:成绩,数值型,长度为3,允许空值。 - 主键由`sno`和`cno`联合组成。 - `sno`字段作为外键,引用学生表的`sno`字段。 - `cno`字段作为外键,引用课程表的`cno`字段。 - 成绩约束:`grade`字段必须在0到100之间或者为空。 #### 三、SQL语句实现 ##### 1. 连接数据库 ```sql -- 使用system用户登录数据库 connect system/system; ``` ##### 2. 创建表 - **学生表(S)** ```sql CREATE TABLE S ( sno CHAR(4) NOT NULL PRIMARY KEY, sname VARCHAR2(10), sex CHAR(3), dept VARCHAR2(4), age INT ); ``` - **课程表(C)** ```sql CREATE TABLE C ( cno CHAR(3) PRIMARY KEY, cname VARCHAR2(20), credit INT ); ``` - **成绩表(SC)** ```sql CREATE TABLE SC ( sno CHAR(4), cno CHAR(3), grade NUMERIC(3), CONSTRAINT SC_PK PRIMARY KEY (sno, cno), CONSTRAINT SC_FK1 FOREIGN KEY (sno) REFERENCES S(sno), CONSTRAINT SC_FK2 FOREIGN KEY (cno) REFERENCES C(cno), CONSTRAINT SC_GRADE CHECK (grade BETWEEN 0 AND 100 OR grade IS NULL) ); ``` ##### 3. 插入数据 - **学生表(S)** ```sql INSERT INTO S VALUES ('801', '', 'Ů', 'CS', 19); INSERT INTO S VALUES ('802', '', '', 'MA', 20); INSERT INTO S VALUES ('803', 'Ż', 'Ů', 'CS', 22); INSERT INTO S VALUES ('804', '', 'Ů', 'MA', 20); INSERT INTO S VALUES ('805', 'Ǯ', '', NULL, 19); ``` - **课程表(C)** ```sql INSERT INTO C VALUES ('01', 'ݿ', 3); INSERT INTO C VALUES ('02', 'OS', 4); INSERT INTO C VALUES ('03', 'C++', 2); INSERT INTO C VALUES ('04', 'Java', 3); ``` - **成绩表(SC)** ```sql INSERT INTO SC VALUES ('801', '01', 81); INSERT INTO SC VALUES ('801', '02', NULL); INSERT INTO SC VALUES ('801', '03', 92); INSERT INTO SC VALUES ('802', '03', 68); INSERT INTO SC VALUES ('803', '01', 59); INSERT INTO SC VALUES ('803', '04', 61); ``` ##### 4. 提交事务 ```sql COMMIT; ``` ##### 5. 查询数据 - **学生表(S)** ```sql SELECT * FROM S; ``` - **课程表(C)** ```sql SELECT * FROM C; ``` - **成绩表(SC)** ```sql SELECT * FROM SC; ``` #### 四、总结 通过以上步骤,我们成功地实现了Oracle数据库中的经典三表设计:学生表(S)、课程表(C)以及成绩表(SC)。这些表的设计不仅体现了基本的数据结构关系,还包含了主键、外键、检查约束等关键概念。此外,我们也了解了如何通过SQL语句创建表、插入数据以及进行简单的数据查询操作。这对于理解和掌握Oracle数据库的基础知识具有重要意义。
/** 1--- 在system用户建立表*/
connect system/system;
show user;
drop table sc;
drop table s;
drop table c;
create table s(
sno char(4) not null primary key,
sname varchar2(10),
sex char(3),
dept varchar2(4),
age int
);
insert into s values('801','张三','女','CS',19);
insert into s values('802','王五','男','MA',20);
insert into s values('803','张惠妹','女','CS',22);
insert into s values('804','赵六','女','MA',20);
insert into s values('805','钱七','男',null,19);
create table c(
cno char(3) primary key,
cname varchar2(20),
credit int
);
insert into c values('01','数据库',3);
insert into c values('02','OS',4);
- xxx77889902016-03-29感觉数据类型有点没设置好
- baidu_281362652015-05-26这个例子很不错,适合学习用
- 粉丝: 16
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助