ORACLE 实验一

实验一:数据定义

 

实验学时:4学时

实验类型:综合型

实验要求:必修

一、实验目的

1、熟悉Oracle的客户端配置;

2、掌握SQL Plus的使用;

3、掌握SQL模式定义语句,定义相关的表、索引与完整性约束。

二、实验内容

1 Oracle的使用

Oracle数据库管理系统采用客户机/服务器结构,客户端上需要配置数据库网络服务命名。在操作系统的“开始”菜单的“Oracle”程序组中,找到并运行“Net8”。查看其中的服务命名配置是否与服务器的数据库监听服务一致。例如:服务命名为“Oracle,参数主机名“Db_server(也可以输入主机的IP地址),监听端口“1521,数据库名“Orcl”。

在操作系统的“开始”菜单的“Oracle”程序组中,找到并运行“SQL Plus”。提供用户名(user1)、口令(123)Net8中配置服务命名(oracle)

2工程项目采购数据库

设有供应商S、零件P、工程项目J三个关系模式以及反映它们之间联系(某工程使用了某供应商提供的某零件多少个)的关系模式SPJ

S (SNO, SNAME, STATUS, CITY)

P (PNO, PNAME, COLOR, WEIGHT)

J (JNO, JNAME, CITY)

SPJ(SNO, PNO, JNO, QTY)

使用SQL模式定义语句定义以上关系模式,注意主键与外键的约束。在需要的属性上建立索引,在关系中插入如下示例数据。(数据插入或修改后输入COMMIT;更新提交命令。)

 

 

S                                           SPJ

SNO

PNO

JNO

QTY

S1

S1

S1

S1

S2

S2

S2

S2

S2

S2

S3

S3

S4

S4

S4

S5

S5

S5

S5

P1

P1

P1

P2

P3

P3

P3

P3

P5

P5

P1

P3

P5

P6

P6

P2

P3

P6

P6

J1

J3

J4

J2

J1

J2

J4

J5

J1

J2

J1

J1

J1

J3

J4

J4

J1

J2

J4

200

100

700

100

400

200

500

400

400

100

200

200

100

300

200

100

200

200

500

SNO

SNAME

STATUS

CITY

S1

S2

S3

S4

S5

精益

为民

光大

友好

三利

20

10

30

20

30

天津

北京

北京

天津

上海

P

PNO

PNAME

COLOR

WEIGHT

P1

P2

P3

P4

P5

P6

螺母

螺钉

螺丝刀

螺丝刀

凸轮

齿轮

绿

12

17

14

14

40

30

J                                  

JNO

JNAME

CITY

J1

J2

J3

J4

J5

J6

J7

汽车厂

弹簧厂

造船厂

机车厂

无线电厂

半导体厂

仪器厂

北京

长春

天津

天津

唐山

常州

南京

 

3产品价格数据库

设有以下四个关系模式

PRODUCT (MAKER, MODEL, TYPE)

PC (MODEL, SPEED, RAM, HD, CD, PRICE)

LAPTOP (MODEL, SPEED, RAM, HD, SCREEN, PRICE)

PEINTER(MODEL, COLOR, TYPE, PRICE)

示例数据:

 

PC                                             PRODUCT

MODEL

SPEED

RAM

HD

CD

PRICE

1001

1002

1003

1004

1005

1006

1007

1008

1009

1010

122

120

166

166

166

200

200

180

200

160

16

16

24

32

16

32

32

32

32

16

1.6

1.6

2.5

2.5

2.0

3.1

3.2

2.0

2.5

1.2

6X

6X

6X

8X

8X

8X

8X

8X

8X

8X

1595

1399

1899

1999

1999

2099

2349

3699

2599

1495

MAKER

MODEL

TYPE

A

A

A

B

B

B

B

C

C

D

D

D

D

D

D

D

D

E

E

F

G

G

H

I

1001

1002

1003

1004

1006

3002

3004

1005

1007

1008

1009

1010

2001

2002

2003

3001

3003

2004

2008

2005

2006

2007

3005

3006

PC

PC

PC

PC

PC

Printer

Printer

PC

PC

PC

PC

PC

Laptop

Laptop

Laptop

Printer

Printer

Laptop

Laptop

Laptop

Laptop

Laptop

Printer

Printer

LAPTOP

MODEL

SPEED

RAM

HD

SCREEN

PRICE

2001

2002

2003

2004

2005

2006

2007

2008

100

117

117

133

133

120

150

120

20

12

32

16

16

8

16

16

1.10

0.75

1.00

1.10

1.00

0.81

1.35

1.10

9.5

11.3

10.4

11.2

11.3

12.1

12.1

12.1

1999

2499

3599

3499

2599

1999

4799

2009

PRINTER

MODEL

COLOR

TYPE

PRICE

3001

3002

3003

3004

3005

3006

True

True

False

False

False

True

Ink-jet

Ink-jet

Laser

Laser

Ink-jet

Dry

275

269

829

879

180

470

以上23题可以选做1题,编写实验报告,上机调试,记录实验结果。

三、实验原理、方法和手段

使用SQL模式定义语句定义以上关系模式,注意主键与外键的约束。在需要的属性上建立索引,在关系中插入示例数据。(数据插入或修改后输入COMMIT;更新提交命令。)

四、实验组织运行要求

本实验为综合型实验,采用集中授课形式,学生集中上机操作。具体要求如下:

1、学生在进行实验前必须进行充分的预习,熟悉实验内容;

2、教师在学生实验过程中予以必要的辅导,学生独立完成实验。

五、实验条件

1、提供一台具有WINDOWS 98/2000/NT/XP操作系统的计算机;

2Oracle 8.0以上设计环境。

六、实验步骤

1、用SQL语言的模式定义设计上述实验内容,并采用Insert Into语句插入实验数据;

  2、采用文本编辑器如Windows的记事本,编辑上述SQL语句;

    3、运行“SQL Plus”,将文本编辑器中的语句逐条复制到“SQL Plus”中运行调试。

七、思考题

    在上述关系模式的定义中有没有定义外关键字?如果有请指出参照表、被参照表及参照属性,当删除或修改被参照关系主关键字的值时,为了不破坏参照完整性约束,应采取何种参照策略。

八、实验报告

1.实验预习

在实验前每位同学都需要对本次实验进行认真的预习,并写好预习报告,在预习报告中要写出实验目的、要求、简要的实验步骤,形成一个操作提纲。

2.实验记录

学生开始实验时,应该将记录本放在近旁,将实验中所做的每一步操作、所得结果及相关条件如实地记录下来。

3.实验报告

主要内容包括实验中的关系模式定义代码、运行结果以及对调试过程中出现错误的分析总结,回答思考题,给出实验结论。

九、其它说明

学生严格遵守实验室的各项规章制度,配合和服从实验室人员管理。

 

实验代码如下(在Oracle developer中运行无误 Index引用由主键自动生成了 所以这边我不要自己设计)

PS:由于用的是非管理员权限 所以使用的是默认表空间 即;后不加任何的TABLESPACE tablesapce_name

 

CREATE TABLE S
(
   SNO VARCHAR2(8) PRIMARY KEY,
   SNAME VARCHAR2(8),
   STATUS VARCHAR2(8),
   CITY VARCHAR2(8)
);

CREATE TABLE P
(
   PNO VARCHAR2(8) PRIMARY KEY,
   PNAEM VARCHAR2(8),
   COLOR VARCHAR2(8),
   WEIGHT NUMBER(10)
);
CREATE TABLE J
(
   JNO VARCHAR2(8) PRIMARY KEY,
   JNAME VARCHAR2(8),
   CITY VARCHAR2(8)
);
CREATE TABLE SPJ
(
  SNO VARCHAR2(8),
  PNO VARCHAR2(8),
  JNO VARCHAR2(8),
  QTY NUMBER(10),
  CONSTRAINT SPJ_SNO FOREIGN KEY(SNO)
  REFERENCES S(SNO),
   CONSTRAINT SPJ_PNO FOREIGN KEY(PNO)
  REFERENCES P(PNO),
   CONSTRAINT SPJ_JNO FOREIGN KEY(JNO)
  REFERENCES J(JNO)
);
//索引自己建立 在上面建立外键约束的时候自己建立了
CREATE INDEX S_SNO_INDEX
ON S(SNO)
CREATE  INDEX P_PNO_INDEX
ON P(PNO)
CREATE INDEX J_JNO_INDEX
ON J(JNO)
CREATE INDEX SPJ_SNO_PNO_JNO_INDEX
ON SPJ(SNO,PNO,JNO)



INSERT INTO S VALUES('S1','精益',20,'天津');
INSERT INTO S VALUES('S2','为民',10,'北京');
INSERT INTO S VALUES('S3','光大',30,'北京');
INSERT INTO S VALUES('S4','友好',20,'天津');
INSERT INTO S VALUES('S5','三利',30,'上海');
COMMIT;

INSERT INTO P VALUES('P1','螺母','红',12);
INSERT INTO P VALUES('P2','螺钉','绿',17);
INSERT INTO P VALUES('P3','螺丝刀','兰',14);
INSERT INTO P VALUES('P4','螺丝刀','红',14);
INSERT INTO P VALUES('P5','凸轮','兰',40);
INSERT INTO P VALUES('P6','齿轮','红',30);
COMMIT;



INSERT INTO J VALUES('J1','汽车厂','北京');
INSERT INTO J VALUES('J2','弹簧厂','长春');
INSERT INTO J VALUES('J3','造船厂','天津');
INSERT INTO J VALUES('J4','机车厂','天津');
INSERT INTO J VALUES('J5','无线电厂','唐山');
INSERT INTO J VALUES('J6','半导体厂','常州');
INSERT INTO J VALUES('J7','仪器厂','南京');
COMMIT;


INSERT INTO SPJ VALUES('S1','P1','J1',200);
INSERT INTO SPJ VALUES('S1','P1','J3',100);
INSERT INTO SPJ VALUES('S1','P1','J4',700);
INSERT INTO SPJ VALUES('S1','P2','J2',100);
INSERT INTO SPJ VALUES('S2','P3','J1',400);
INSERT INTO SPJ VALUES('S2','P3','J2',200);
INSERT INTO SPJ VALUES('S2','P3','J4',500);
INSERT INTO SPJ VALUES('S2','P3','J5',400);
INSERT INTO SPJ VALUES('S2','P5','J1',400);
INSERT INTO SPJ VALUES('S2','P5','J2',100);
INSERT INTO SPJ VALUES('S3','P1','J1',200);
INSERT INTO SPJ VALUES('S3','P3','J1',200);
INSERT INTO SPJ VALUES('S4','P5','J1',100);
INSERT INTO SPJ VALUES('S4','P6','J3',300);
INSERT INTO SPJ VALUES('S4','P6','J4',200);
INSERT INTO SPJ VALUES('S5','P2','J4',100);
INSERT INTO SPJ VALUES('S5','P3','J1',200);
INSERT INTO SPJ VALUES('S5','P6','J2',200);
INSERT INTO SPJ VALUES('S5','P6','J4',500);
COMMIT;

第二个数据库

CREATE TABLE PRODUCT
(
  MAKER VARCHAR2(5) ,
  MODEL VARCHAR2(12) PRIMARY KEY,
  TYPE VARCHAR2(12)
);
CREATE TABLE PC
(
   MODEL VARCHAR2(12) PRIMARY KEY,
   SPEED NUMBER(10),
   RAM NUMBER(10),
   HD NUMBER(8,2),
   CD VARCHAR2(4),
   PRICE NUMBER(10),
   CONSTRAINT PC_PRODUCT_MODEL FOREIGN KEY(MODEL)
   REFERENCES PRODUCT(MODEL)
);

CREATE TABLE LAPTOP
(
   MODEL VARCHAR2(12) PRIMARY KEY,
   SPEED NUMBER(10),
   RAM NUMBER(10),
   HD NUMBER(8,2),
   SCREEN NUMBER(8,2),
   PRICE NUMBER(10),
   CONSTRAINT LAPTOP_PRODUCT_MODEL FOREIGN KEY(MODEL)
   REFERENCES PRODUCT(MODEL)
);
CREATE TABLE PEINTER
(
  MODEL VARCHAR2(12) PRIMARY KEY,
  COLOR VARCHAR2(10),
  TYPE VARCHAR2(10),
  PRICE NUMBER(10),
  CONSTRAINT PEINTER_PRODUCT_MODEL FOREIGN KEY(MODEL)
  REFERENCES PRODUCT(MODEL)
);

INSERT INTO PRODUCT VALUES('A','1001','PC');
INSERT INTO PRODUCT VALUES('A','1002','PC');
INSERT INTO PRODUCT VALUES('A','1003','PC');
INSERT INTO PRODUCT VALUES('B','1004','PC');
INSERT INTO PRODUCT VALUES('B','1006','PC');
INSERT INTO PRODUCT VALUES('B','3002','Printer');
INSERT INTO PRODUCT VALUES('B','3004','Printer');
INSERT INTO PRODUCT VALUES('C','1005','PC');
INSERT INTO PRODUCT VALUES('C','1007','PC');
INSERT INTO PRODUCT VALUES('D','1008','PC');
INSERT INTO PRODUCT VALUES('D','1009','PC');
INSERT INTO PRODUCT VALUES('D','1010','PC');
INSERT INTO PRODUCT VALUES('D','2001','Laptop');
INSERT INTO PRODUCT VALUES('D','2002','Laptop');
INSERT INTO PRODUCT VALUES('D','2003','Laptop');
INSERT INTO PRODUCT VALUES('D','3001','Printer');
INSERT INTO PRODUCT VALUES('D','3003','Printer');
INSERT INTO PRODUCT VALUES('E','2004','Laptop');
INSERT INTO PRODUCT VALUES('E','2008','Laptop');
INSERT INTO PRODUCT VALUES('F','2005','Laptop');
INSERT INTO PRODUCT VALUES('G','2006','Laptop');
INSERT INTO PRODUCT VALUES('G','2007','Laptop');
INSERT INTO PRODUCT VALUES('H','3005','Printer');
INSERT INTO PRODUCT VALUES('I','3006','Printer');

INSERT INTO PC VALUES('1001',	122,16,1.6,'6X',1595);
INSERT INTO PC VALUES('1002',	120,16,1.6,'6X',1399);
INSERT INTO PC VALUES('1003',	166,24,2.5,'6X',1899);
INSERT INTO PC VALUES('1004',	166,32,2.5,'8X',1999);
INSERT INTO PC VALUES('1005',	166,16,2	,'8X',1999);
INSERT INTO PC VALUES('1006',	200,32,3.1,'8X',2099);
INSERT INTO PC VALUES('1007',	200,32,3.2,'8X',2349);
INSERT INTO PC VALUES('1008',	180,32,2	,'8X',3699);
INSERT INTO PC VALUES('1009',	200,32,2.5,'8X',2599);
INSERT INTO PC VALUES('1010',	160,16,1.2,'8X',1495);


INSERT INTO LAPTOP VALUES('2001',	100,	20,	1.1 ,9.5	,1999);
INSERT INTO LAPTOP VALUES('2002',	117,	12,	0.75,11.3	,2499);
INSERT INTO LAPTOP VALUES('2003',	117,	32,	1	  ,10.4	,3599);
INSERT INTO LAPTOP VALUES('2004',	133,	16,	1.1	,11.2	,3499);
INSERT INTO LAPTOP VALUES('2005',	133,	16,	1	  ,11.3	,2599);
INSERT INTO LAPTOP VALUES('2006',	120,	8	, 0.81,12.1	,1999);
INSERT INTO LAPTOP VALUES('2007',	150,	16,	1.35,12.1	,4799);
INSERT INTO LAPTOP VALUES('2008',	120,	16,	1.1	,12.1	,2009);


INSERT INTO PEINTER VALUES('3001','TRUE'  ,'Ink-jet',275);
INSERT INTO PEINTER VALUES('3002','TRUE'  ,'Ink-jet',269);
INSERT INTO PEINTER VALUES('3003','FALSE' ,'Laser'	,829);
INSERT INTO PEINTER VALUES('3004','FALSE'	,'Laser'	,879);
INSERT INTO PEINTER VALUES('3005','FALSE'	,'Ink-jet',180);
INSERT INTO PEINTER VALUES('3006','TRUE'	,'Dry'	  ,470);

DROP TABLE PC;
DROP TABLE LAPTOP;
DROP TABLE PEINTER;
DROP TABLE PRODUCT;


 

第一次ORACLE实验 
相关推荐
实验SQL*PLUS练习 【实验目的】 (1) 了解Oracle的工作环境和基本使用方法。 (2) 练习标准SQL的数据操作,查询命令及其查询优化。 (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报表,存储到文件等。 【实验内容】 一、 准备使用SQL*PLUS 1. 进入SQL*PLUS 2. 退出SQL*PLUS 3. 显示表结构命令DESCRIBE SQL>DESCRIBE emp 使用DESCRIBE(缩写DESC)可以列出指定表的基本结构,包括各字段的字段名以及类型、长度、是否非空等信息。 4. 使用SQL*PLUS显示数据库中EMP表的内容 输入下面的查询语句: SQL>SELECT * FROM emp; 按下回车键执行查询 5. 执行命令文件 START或@命令将指定文件调入SQL缓冲区中,并执行文件内容。 SQL>@ 文件名(文件后缀缺省为.SQL)或 SQL>START 文件名 文件中每条SQL语句顺序装入缓冲区并执行。 二、 数据库命令——有关表、视图等的操作 1. 创建表employee 例1 定义一个人事信息管理系统中存放职工基本信息的一张表。可输入如下命令: SQL>CREATE TABLE employee (empno number(6) PRIMARY KEY, /* 职工编号 name varchar2(10) NOT NULL, /* 姓名 deptno number(2) DEFAULT 10, /* 部门号 salary number(7,2) CHECK(salary<100000), /*工资 birth_date date, /*出生年月 soc_sec_num char(9) U NIQUE, /*内部序列号 foreign key(deptno) references dept(deptno)); 例2 复制一个与emp表的表结构相同的新空表emp2. 可输入如下命令: SQL>create table emp2 as select * from emp where 1=2; 在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单表查询 2、多表查询 四、 SQL*PLUS常用命令 表1 常用报表格式化名命令 命令 定义 Btitle 为报表的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 Remark 将某些字标记为注释 Set linesize 设置报表的行宽字符数 Set newpage 设置报表各页之间的行数 Spool 使SQL*PLUS将输出写入文件中 Start 使SQL*PLUS执行一个sql文件 Ttitle 设置报表每页的头标题 Break 让SQL*PLUS进行分组操作 例3 建立一个批命令文件对查询到的数据以报表的形式输出并将其保存到指定的文件中。 处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”中建立SCGB.SQL文件。 SCGB.SQL文件中的命令组如下: SQL>EDIT E:\ SCGB.SQL SET echo off SET pagesize 30 SET linesize 75 TTITLE’2008年4月10号’CE’公司职员基本情况登记表’R’Page:’ FORMAT 99- >SQL.PNO SKIP 1 CE’===========================’ BTITLE COL 60 ’制标单位’ TAB 3 ‘人事部’ COLUMN empno heading ‘职工|编号’ COLUMN ename format a10 heading ‘姓 名’ COLUMN job heading ‘工 种’ COLUMN sal format $99,990 heading 工 资’ COLUMN comm Like sal heading ‘奖 金’ COLUMN deptno format 9999 heading ‘部门|编号’ COLUMN hiredate heading ‘参加工作时间’ SPOOL e:
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页