Prepared by Fei Xu
This tutorial will give basic
information about how to use Oracle through SQLPlus in
UMBC. Absolutely, you need a GL account, in CMSC461 class to get access
priority of Oracle. If you are connecting the GL server from your own pc, you
also need a ssh client. I
assume the readers know how to connect to the GL machine, know basic ideas of
Database and SQL statements.
Now we begin to our tutorial. I will
use these naïve tables as my example.
Student (Studentid,
Studentname)
Course (Courseid,Coursename Teachername)
Report (Studentid,
Courseid,Grade)
The database has three tables.
Student table contains the student information. Course table contains the
course information. Report table contains what courses the student chooses and
their grades. In the following step, I will show you how to build tables, add, delete
and update records, execute queries through SQLPlus.
Now try to
draw the E-R diagram for this naïve example.
Use your GL account to connect to
the GL server. (An ssh
client can be downloaded from myUMBC) I assume you
are already connecting to the GL server in the following steps.
At the prompt, type:
source /usr/local/oracle/oracle.cshrc
(if you are using tcsh or csh)
source /usr/local/oracle/oracle.profile
(if you are using bash)
Then type:
sqlplus $USER
You can use your gl
account’s name to replace $USER or just keep it. If you see the symble below:
SQL>
You’ve successfully connect to the
Oracle server.
If you want to exit SQLPlus, simply type in
Exit
You can then leave SQLPlus and exit to the shell you login.
SQLPlus is an interactive
program, which means if you forget something, you can ask SQLPlus
to tell you. The “help” command is very useful.
HELP displays information on the
commands and conventions of SQL*Plus, SQL, and PL/SQL. Type "help", a
space, all or part of any topic, and then press Enter. Since it is an easy
command, here I do not show any display information for it.
Assume you forget how to create a table, try “help create table”. See
what the SQLPlus displays.
If you even forget the name of
command that you want to use, type “help topics”. SQLplus
will show you all topics that it can provide help.
Oracle maintains some system tables,
when user creates an object, it automatically update these system tables. For
detailed information, please check the Oracle’s manual. These tables give us a
way to check what we have built in the system. It is always important to know
what exists in the Database before creating new objects.
System.tab is the table that
contains all objects’ name under the current user built before. So type in:
Select
* from system.tab;
will list all objects
(tables, views…) name.
SQL> select *
from system.tab;
no rows selected
Remember: The semicolon at the end of the command is
required. The difference between a sqlplus command
and a sql statement is that a sql
statement should finish with a semicolon.
Since I have not created anything,
the returns result gives me nothing.
After getting the table’s name,
“describe” command can show the definition of the table. The format is “describe objectname”.
Try
“describe system.tab”
There are two ways to input SQL
statements in SQLPlus. One is interactively input
directly. The other is using a plain text file. Now I introduce the first way.
The second way will be discussed later.
In SQLplus, input:
Create table student
(studentid char(4), studentname
char(30), primary key (studentid));
The SQLPlus
will show like this:
SQL> Create table student
(studentid char(4), studentname
char(30), primary key (studentid));
2
Table
created.
Now, try
to build the course table and the report table. Using the sql
statements below:
Create table course
(courseid char(4), coursename
char(30), teachername char(30), primary key (courseid));
Create table report
(studentid char(4), courseid
char(4), grade char(1), primary key
(studentid,courseid) );
It is a good chance to practice Step 3 now.
Check what you have built in Oracle
and show the course table’s definition.
To drop a table, simply type “ drop tablename ;”. I do not get examples here. Readers shall try
themselves.
The big deal is to deal with data.
Now we have three tables, we want to add some data into these tables. Remember
three statements”insert, delete and update”.In this
step, I will show examples for each sql statements.
And readers need to finish exercises I provide.
I’d like to add four students and four courses
Student
:
0001 Micro
0002 Soft
0003 IMD
0004 Antel
Course
0001 Database Microsoft
0002 OS Redhat
0003 Architecture Sun
0004 AI
IBM
grade
0001 0001 A
0001 0002 F
0002 0003 D
0002 0004 B
0003 0002 A
0003 0003 C
0004 0002 A
0004 0003 B
Now, type
Insert into
student values ( ‘0001’, ‘Micro’);
SQLPlus will show
SQL> Insert into
student values ( '0001', 'Micro');
1 row created.
Add other rows to the
tables
Another way to insert records is to insert records with a query sub
statement, please see the textbook for more information.
The format of delete is “ delete from tablename (where
sub-statement)”. The “where sub-statement” is not necessary but powerful.
To delete all records in the student
table, just input “delete from student”.
However we seldom use this statement except if users want to alter table and
thus delete all records first.
Example: to delete the student with
student number 0001
Input:
Delete from student where studentid = ‘0001’;
SQLPlus will show
SQL> Delete from student where studentid
= '0001';
1 row deleted.
Now
do the following exercise:
1.
delete all records in table grade
2.
delete all courses that taught by Redhat
3.
delete all records which contains course id
“0003”
4.
Restore the database after doing the exercise.
The format of update is “ update tablename set columnname = expression (where sub-statement)”. The “where
sub-statement” is not necessary. If no “where sub-statement” exists, the update
command will update all records and set new value to all column. Suppose
teacher “Microsoft” want to teach all courses and get rid of all other
teachers, type
Update course set teachername = ‘Microsoft’;
SQLPlus will show
SQL>
Update course set teachername = 'Microsoft';
4 rows updated.
Try “select * from
course;”
SQL>
select * from course;
COUR COURSENAME
TEACHERNAME
---- ------------------------------
------------------------------
0001 database
Microsoft
0002 OS
Microsoft
0003 Architecture
Microsoft
0004 AI
Microsoft
Microsoft now is so happy that he
teaches all courses.
Suppose you are teacher
Sun. Now you want to get back what you teach.
Try “update
course set teachername=’Sun’ where courseid=’0003’; “
Now, it is
your turn to correct other teachers’ courses. Do the exercises to help IBM and Redhat correct their courses.
Queries are done by the “select”
statement. This is an important and complicated statement. I cannot totally
show the statement here. Please refer to the textbook for more information. The
aim of this step is to show how to input queries interactively.
Example1: Get
all records from course table
Type:
select
* from course;
SQLPlus will show
SQL> select * from course;
COUR COURSENAME
TEACHERNAME
----
------------------------------ ------------------------------
0001 database
Microsoft
0002 OS
Redhat
0003 Architecture
Sun
0004 AI
IBM
Try “select student.studentname,
report.grade from student,
report where student.studentid=report.studentid;”.
Explain what this query searches.
Now finish
these queries:
1.
find the student’s grade whose name is Micro
2.
find the teacher’s name whose course is AI
3.
Find the students’ names who choose the course
OS.
4.
Find the teacher’s name that at least one of
the students get an A in his course.
You
could prepare all your SQL statements such as creation of relations and
queries, into a text file and execute the SQL commands in this file when you
are in SQLPLUS. Use your favorite editor to edit sql
statements. If you are using a word processor such as Microsoft Word, you need
to save the file as plain text. Now
transfer the file to your GL home directory. The “start,@
and @@” commands can load a sql file and execute.
Generally, we can use command “start” only.
Before
starting using the text file ,type in “help start”.
The
SQLPlus shows:
SQL> help start
START
-----
START
executes the contents of a command file. The @ ("at" sign)
and @@ (double "at" sign) commands work similarly
to the START
command, but do not enable the passing of values to
parameters.
STA[RT] file_name[.ext] [arg ...]
For detailed
information on this command, see the SQL*Plus User's
Guide and Reference.
Edit
the following file and save it as “example.sql”
Drop table course;
Drop table student;
Drop table report;
Create table student
(studentid char(4), studentname
char(30), primary key (studentid));
Create table course
(courseid char(4), coursename
char(30), teachername char(30), primary key (courseid));
Create table report
(studentid char(4), courseid
char(4), grade char(1), primary key
(studentid,courseid) );
Insert into student
values ( ‘0001’, ‘Micro’);
Insert into student
values ( ‘0002’, ‘Soft’);
Insert into student
values ( ‘0003’, ‘IMD’);
Insert into student
values ( ‘0004’, ‘ANTEL’);
select
* from student;
Suppose
now the file is in the user’s directory. In SQLPlus:
type in “start example.sql”
The
SQLPlus will execute each command in that file.
SQL> start example.sql
Table dropped.
Table dropped.
Table dropped.
Table created.
Table created.
Table created.
1 row created.
1 row created.
1 row created.
1 row created.
STUD STUDENTNAME
---- ------------------------------
0001 Micro
0002 Soft
0003 IMD
0004 ANTEL
Now type your own file and try.
The
command “spool” can save all that displays in the screen, including what you
input and the system returns back.
Type
“spool filename” to start output
Type “spool off” to
stop output.
Now do the exercise to save the output
to a file called my.log
However
sometimes we only want to save the sql statement we
input. We do not want to save the return information.
The
command “save filename” will save the
last sql statement you input into the new file. If the file already exists, the old one
will be deleted.
The
command “save filename app” will save the
last sql statement to the end of the existing
file.
Now redo the exercise of step 6. First try to save four queries
into four files. Then try to save four queries into one file
You should execute the commit command
before you change your database. When you are satisfied with your work, you
could save it in the database permanently by executing the commit command, or
you could discard all changes you made since the last commit command by typing
rollback command.
Save all changes in the database:
SQL>commit
Discard all changes made since the last commit:
SQL>rollback
Appendix A: Connect to Oracle 9 using SQLPlus
(From ken clingenpeel’s email, thanks Ken)
Simply
copy the oracle.profile from /usr/local/oracle
to the home directory and replace 8.1.5 with 9.2.0. Then sourced this edited
file, and you can use oracle 9.2.0.1.0 when loggin in
remotely.
Appendix
B: Code to Connect to UMBC’s Oracle and Execute SQL
Statements using JDBC
import java.sql.*;
public class JdbcSample {
public static void main(String[] args)
{
String userLogin = null, userPasswd
= null;
if (args.length < 2) {
System.err.println("usage :: java Test <username> <passwd>");
System.exit(1);
}
else {
userLogin = args[0];
userPasswd = args[1];
}
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
ex.printStackTrace(System.err);
System.exit(1);
}
String url =
"jdbc:oracle:thin:@oracle.gl.umbc.edu:1521:GL";
Connection con = null;
try {
con = DriverManager.getConnection(url, userLogin, userPasswd);
System.out.println("Connected to Oracle.");
}
catch (SQLException se ){
System.out.println("Unable to connect to Oracle.");
se.printStackTrace();
System.exit(1);
}
System.out.println("Tables for user " + userLogin);
try {
Statement stmt =
con.createStatement();
ResultSet rs = stmt.executeQuery("select
table_name from user_tables");
while ( rs.next() ) {
String name = rs.getString(1);
System.out.println(name);
}
stmt.close();
}
catch (SQLException ex ){
System.out.println("Error while executing query.");
ex.printStackTrace(System.err);
System.exit(1);
}
}
}