实验一熟悉Oracle - - SQL1309

发布时间:2016-12-27 17:44:44   来源:文档文库   
字号:

实验一 熟悉Oracle SQL*PLUS环境

一.上机目的

1. 熟悉Oracle的命令操作环境SQL*PLUS

2. 熟悉并掌握一些SQL*PLUS命令。熟悉Oracle的基本知识。

二.预备知识

SQL*Plus

SQL 是一种能够访问关系数据库(包括Oracle数据库)的语言。它能够用在每一个Oracle工具中。

SQL*Plus 是一个Oracle的产品,有自己的命令语言。

SQL*Plus有许多命令,表1-1只是列举了一部分常用命令。

1-1 常用SQL*Plus命令

三.上机练习

1. SQL*Plus的启动

当登录到操作系统后,有三种方法启动SQL*Plus

1) SQLPLUS

(或 SQLPLUSW,下同)

将看到如下的信息:

SQL*Plus: Release ……

(c) Copyright ……. All rights reserved.

请输入用户名: system 

输入你的用户名字并按回车。

SQL*Plus将提示:请输入口令: oracle 

输入你的密码并按回车。

那么,将看到SQL*Plus的提示符:

SQL>

2) SQLPLUS Username

再提示你输入密码。

例如:

SQLPLUS scott

Enter Password: tiger

……

SQL>

3) SQLPLUS username/password

例如:

SQLPLUS scott/tiger

……

SQL>

4) 断开与数据库的连接

SQL>DISCONNECT

5) 退出SQL*Plus

SQL>EXIT

或:

SQL>Quit

2建表练习

ORACLE SQL*PLUS创建学生选课数据库、创建必要的完整性约束、插入数据、体会完整性约束的意义,进行简单的数据查询。

1、在桌面直接双击SQL Plus图标,进入ORACLE SQL Plus

2、输入用户名/密码,为system/oracle或者scott/tiger。主机字符串不用写。

3、创建学生表S,如下所示:

CREATE TABLE S

(S# CHAR(4) NOT NULL,

SNAME CHAR(8) NOT NULL,

AGE SMALLINT,

SEX CHAR(1),

PRIMARY KEY(S#));

结果如图所示:

4、然后依次创建课程表C和选课关系表,如下所示:

CREATE TABLE C

(C# CHAR(4),

CNAME CHAR(10) NOT NULL,

TEACHER CHAR(8),

PRIMARY KEY(C#));

CREATE TABLE SC

(S# CHAR(4),

C# CHAR(4),

GRADE SMALLINT,

PRIMARY KEY(S#,C#),

FOREIGN KEY(S#) REFERENCES S(S#),

FOREIGN KEY(C#) REFERENCES C(C#),

CHECK(GRADE BETWEEN 0 AND 100));

提示:如果输入错误,可以把原先输入的内容选中,然后按Ctrl+C复制到记事本中,修改后直接Ctrl+V粘贴到SQL Plus中。

5、插入记录:

(1) 试着往S表中插入几条记录:

INSERT INTO S(S#,SNAME,AGE,SEX)

VALUES(‘S1’,’LI’,19,’M’);

INSERT INTO S(S#,SNAME,AGE,SEX)

VALUES(‘S2’,’YANG’,19,’F’);

INSERT INTO S(S#,SNAME,AGE,SEX)

VALUES(‘S3’,’ZHANG’,18,’F’);

如果插入的记录的主键已存在,则违反了唯一性约束:

SQL>INSERT INTO S(S#,SNAME,AGE,SEX)

VALUES('S2','ZHOU',19,'F');

INSERT INTO S(S#,SNAME,AGE,SEX)

*

ERROR 位于第 1 :

ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C003007)

注意:

SQL Plus不支持连续插入记录,如输入:

INSERT INTO S(S#,SNAME,AGE,SEX)

VALUES('S5','SUN',19,'F')

VALUES('S6','QIAN',20,'M');

则会报错,大家可以试试。

仿照上面的格式,自己再插入三行。

(2) C表中插入记录:

和上面一样,插入几条记录:

INSERT INTO C(C#,CNAME,TEACHER)

VALUES(‘C1’,’MATHS’,’WANG’);

INSERT INTO C(C#,CNAME,TEACHER)

VALUES(‘C2’,’ENGLISH’,’ZHAO’);

INSERT INTO C(C#,CNAME,TEACHER)

VALUES(‘C3’,’COMPUTER’,’DING’);

(3) SC表中插入记录:

先插入一条记录:

INSERT INTO SC(S#,C#,GRADE)

VALUES(‘S2’,’C3’,90);

再插入:

INSERT INTO SC(S#,C#,GRADE)

VALUES(‘S99’,’C33’,90);

则会报错,由于在S表中不存在S#S99的记录,或者说C表中不存在C#C33的记录,因此违反了完整性约束,如上图所示。

6、查询记录

查找C表中所有的记录:

SELECT * FROM C;

查找S表中所有的女生的学号和姓名:

SELECT S#,SNAME FROM S

WHERE SEX=’F’;

练习:查找S表中所有年龄小于20岁的男生的学号。

7、修改记录

把学号为“S2”的学生的年龄改为18

UPDATE S

SET AGE=18

WHERE S#=’S2’;

练习:把C2课程的任课教师改名为“ZHU”

8、删除记录

把课程名为“MATHS”的记录从C表中删除。

DELETE FROM C

WHERE CNAME=’MATHS’;

现在试着做如下的删除:

DELETE FROM C

WHERE C#=’C3’;

会出现什么结果?想一想原因。

9、撤消基本表

SQL> drop table C

drop table C

*

ERROR 位于第 1 :

ORA-02449: 表中的唯一/主键被外部关键字引用

由于C表的主键被外部关键字(SC表的关键字)引用,所以不允许删除C表。可采用如下方式在未删除SC表的情况下删除C表:

drop table C cascade constraints

也可以先删除SC表,再删除C表。

参考

保存SQL语句

1、使用save方法

打开SQL Plus,以scott/tiger登录。

随便输入一条语句,注意要是正确的语句,如select * from S;

再输入:

save d:\1.sql;

可保存到指定路径。用文本编辑工具打开该文件,可以看到SQL语句

再插入一条记录,此时可以有两种选择:

save d:\1.sql append;

save d:\1.sql replace;

第一种是在原来的文件后面追加记录,第二种是覆盖原文件。

也可以直接在界面中操作,如图所示:

推荐大家每写一条SQL语句,追加保存一次,下次要执行该脚本时,直接输入:

start d:\1.sql ; 或者

@ d:\1.sql;

即可。

2、使用spool语句

刚进入SQL Plus时输入:

spool d:\a.txt;

随便写几个语句,然后输入:

spool off;

然后打开d:\a.txt,你会发现刚才写的语句和运行结果都保存在文件d:\a.txt中。

同学们可以在system用户下输入下面命令,解锁scott用户,再以scott用户登录:

SQL>alter user scott account unlock;// 解锁scott用户

SQL>conn scott/oracle;// scott用户登录

四.上机作业

1. SQL Plus连接数据库。

2. Show命令显示当前用户(scott/oracle)

3. 练习SQL命令:对Oracle数据库基本表EMPDEPT操作:

1)检索EMP中所有的记录。

2)列出工资在10002000之间的所有员工的ENAMEDEPTNOSAL

3)显示DEPT表中的部门号和部门名称,并按部门名称排序。

4)显示所有不同的工作类型。

5)列出部门号在1020之间的所有员工,并按名字的字母排序。

6)列出部门号是20,工作是职员的员工。

7)显示名字中包含THLL的员工名字。

8)显示所有员工的名字(Ename)和报酬(Remuneration)。

9)显示在1983年中雇佣的员工。

10)查询每个部门的平均工资。

11)查询出每个部门中工资最高的职工。

12)查询出每个部门比平均工资高的职工人数。

4.生成一个数据表PROJECTS,其字段定义如下,其中PROJID是主键并且要求P_END_DATE不能比P_START_DATE早。

5.生成一个数据表ASSIGNMENTS,其字段定义如下,其中PROJID是外键引自PROJECTS数据表,EMPNO是数据表EMP的外键,并且要求PROJIDEMPNO不能为NULL

6.DESCRIBE命令查看45题定义的字段。

7.4题中的PROJECTS数据表增加一个COMMENTS字段,其类型为LONG。给5题中的ASSIGNMENTS数据表增加一个HOURS字段,其类型为NUMBER

8.PROJECTS数据库表中增加下列记录:

9.ASSIGNMENTS数据库表中增加下列记录:

10.ASSIGMENTS表中ASSIGNMENT TYPEWR改为WT,其他的值不变。

11.PROJECTS ASSIGNMENTS插入更多的记录。

12.删除自己随意插入的记录。

本文来源:https://www.2haoxitong.net/k/doc/30e7d7ca4128915f804d2b160b4e767f5acf80b7.html

《实验一熟悉Oracle - - SQL1309.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式