Before using Oracle, execute the following line in your shell to set up the correct environment variables:
source /afs/ir/class/cs145/all.env
You may wish to put this line in your shell initialization file instead (for example, .cshrc).
Now, you can log in to Oracle by typing:
sqlplus <yourName>Here, sqlplus is Oracle's generic SQL interface. <yourName> refers to your leland login.
You will be prompted for your password. This password is initially changemesoon and must be changed as soon as possible. For security reasons, we suggest that you not use your regular leland password, because as we shall see there are opportunities for this password to become visible under certain circumstances. After you enter the correct password, you should receive the prompt
SQL>
ALTER USER <yourName> IDENTIFIED BY <newPassword>;where <yourName> is again your leland login, and <newPassword> is the password you would like to use in the future. This command, like all other SQL commands, should be terminated with a semicolon.
Note that SQL is completely case-insensitive. Once you are in sqlplus, you can use capitals or not in keywords like ALTER; Even your password is case insensitive. We tend to capitalize keywords and not other things.
CREATE TABLE <tableName> ( <list of attributes and their types> );You may enter text on one line or on several lines. If your command runs over several lines, you will be prompted with line numbers until you type the semicolon that ends any command. (Warning: An empty line terminates the command but does not execute it; see Editing Commands in the Buffer.) An example table-creation command is:
CREATE TABLE test ( i int, s char(10) );This command creates a table named test with two attributes. The first, named i, is an integer, and the second, named s, is a character string of length (up to) 10.
CREATE TABLE <tableName> (..., a <type> PRIMARY KEY, b, ...);To create a table that declares the set of attributes (a,b,c) to be a primary key:
CREATE TABLE <tableName> (<attrs and their types>, PRIMARY KEY (a,b,c));
INSERT INTO <tableName> VALUES( <list of values for attributes, in order> );For instance, we can insert the tuple (10, 'foobar') into relation test by
INSERT INTO test VALUES(10, 'foobar');
SELECT * FROM <tableName>;For instance, after the above create and insert statements, the command
SELECT * FROM test;produces the result
I S ---------- ---------- 10 foobar
DROP TABLE <tableName>;We suggest you execute
DROP TABLE test;after trying out this sequence of commands to avoid leaving a lot of garbage around that will be still there the next time you use the Oracle system.
SELECT TABLE_NAME FROM USER_TABLES;More information about your tables is available from USER_TABLES. To see all the attributes of USER_TABLES, try:
SELECT * FROM USER_TABLES;It is also possible to recall the attributes of a table once you know its name. Issue the command:
DESCRIBE <tableName>;to learn about the attributes of relation <tableName>.
quit;in response to the SQL> prompt.
To run the file foo.sql, type:
@foo
sqlplus assumes by default the file extension ".sql" if there is no extension. So you could have entered @foo.sql at the SQL> prompt, but if you wanted to execute the file bar.txt, you would have to enter @bar.txt.
You can also run a file at connection by using a special form on the Unix command line. The form of the command is:
sqlplus <yourName>/<yourPassword> @<fileName>For instance, if user sally, whose password is etaoinshrdlu, wishes to execute the file foo.sql, then she would say:
sqlplus sally/etaoinshrdlu @fooNotice that this mode presents a risk that sally's password will be discovered, so it should be used carefully.
NOTE: If you are getting an error of the form "Input truncated to 2 characters" when you try to run your file, try putting an empty line at the bottom of your .sql file. This seems to make the error go away.
You may also edit the command in the buffer before you execute it. Here are some useful editing commands. They are shown in upper case but may be either upper or lower.
LIST | lists the command buffer, and makes the last line in the buffer the "current" line |
LIST n | prints line n of the command buffer, and makes line n the current line |
LIST m n | prints lines m through n, and makes line n the current line |
INPUT | enters a mode that allows you to input text following the current line; you must terminate the sequence of new lines with a pair of "returns" |
CHANGE /old/new | replaces the text "old" by "new" in the current line |
APPEND text | appends "text" to the end of the current line |
DEL | deletes the current line |
All of these commands may be executed by entering the first letter or any other prefix of the command except for the DEL command.
An alternative is to edit the file where your SQL is kept directly from sqlplus. If you say
edit foo.sqlthe file foo.sql will be passed to an editor of your choice. The default is vi. However, you may say
DEFINE _EDITOR = "emacs"if you prefer to use the emacs editor; other editor choices may be called for in the analogous way. In fact, if you would like to make emacs your default editor, there is a login file that you may create in the directory from which you call sqlplus. Put in the file called login.sql the above editor-defining command, or any other commands you would like executed every time you call sqlplus.
script [ -a ] [ filename ]The record is written to filename. If no file name is given, the record is saved in the file typescript. The -a option allows you to append the session record to filename, rather than overwrite it. To end the recording, type
exitFor more information on how to run the script command, check out its man page.
sqlplus provides the command spool to save query results to a file. At the SQL> prompt, you say:
spool foo;and a file called foo.lst will appear in your current directory and will record all user input and system output, until you exit sqlplus or type:
spool off;Note that if the file foo.lst existed previously, it will be overwritten, not appended.
Finally, if you use Emacs, you can simply run sqlplus in a shell buffer and save the buffer to a file. To prevent your Oracle password from being echoed in the Emacs buffer, add the following lines to your .emacs file:
(setq-default comint-output-filter-functions '(comint-watch-for-password-prompt)) (setq comint-password-prompt-regexp "\\(\\([Oo]ld \\|[Nn]ew \\|^\\)[Pp]assword\\|Enter password\\):\\s *\\'")
The output from help, and in general, the results of many SQL commands, can be too long to display on a screen. You can use
set pause on;to activate the paging feature. When this feature is activated, output will pause at the end of each screen until you hit the "return" key. To turn this feature off, use
set pause off;