1. 熟悉Oracle的命令操作环境SQL*PLUS。
2. 熟悉并掌握一些SQL*PLUS命令。熟悉Oracle的基本知识。
● 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
用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数据库基本表EMP和DEPT操作:
1)检索EMP中所有的记录。
2)列出工资在1000到2000之间的所有员工的ENAME,DEPTNO,SAL。
3)显示DEPT表中的部门号和部门名称,并按部门名称排序。
4)显示所有不同的工作类型。
5)列出部门号在10到20之间的所有员工,并按名字的字母排序。
6)列出部门号是20,工作是职员的员工。
7)显示名字中包含TH和LL的员工名字。
8)显示所有员工的名字(Ename)和报酬(Remuneration)。
9)显示在1983年中雇佣的员工。
10)查询每个部门的平均工资。
11)查询出每个部门中工资最高的职工。
12)查询出每个部门比平均工资高的职工人数。
4.生成一个数据表PROJECTS,其字段定义如下,其中PROJID是主键并且要求P_END_DATE不能比P_START_DATE早。
5.生成一个数据表ASSIGNMENTS,其字段定义如下,其中PROJID是外键引自PROJECTS数据表,EMPNO是数据表EMP的外键,并且要求PROJID和EMPNO不能为NULL。
6.用DESCRIBE命令查看4和5题定义的字段。
7.给4题中的PROJECTS数据表增加一个COMMENTS字段,其类型为LONG。给5题中的ASSIGNMENTS数据表增加一个HOURS字段,其类型为NUMBER。
8.在PROJECTS数据库表中增加下列记录:
9.在ASSIGNMENTS数据库表中增加下列记录:
10.把ASSIGMENTS表中ASSIGNMENT TYPE的WR改为WT,其他的值不变。
11.在PROJECTS 和ASSIGNMENTS插入更多的记录。
12.删除自己随意插入的记录。
本文来源:https://www.2haoxitong.net/k/doc/30e7d7ca4128915f804d2b160b4e767f5acf80b7.html
文档为doc格式