Лабораторная работа (СУБД Oracle) №1 / lab1/lab1.doc
Лабораторная работа №1
по курсу СУБД ORACLE
Введение
Данная лабораторная работа ориентированна на отработку базовых навыков использования языка PL/SQL и оболочки SQL*Plus (Windows и консольной версии).
В ходе работы необходимо освоить следующие команды PL/SQL:
CREATE TABLE — создание таблиц в БД
INSERT INTO — вставка данных (строк) в таблицу
SELECT — выборка данных (строк) из таблицы
DELETE — удаление данных (строк) из таблицы
DESCRIBE — описание таблицы
DROP TABLE — удаление таблицы из БД
В лабораторной работе команды изучаются в самом общем виде, полный синтаксис команд PL/SQL приведен в справочной документации по СУБД ORACLE. При выполнении этой, и последующих лабораторных работ необходимо научиться пользоваться документацией для разрешения возникающих вопросов.
Справочные материалы
Для самостоятельного изучения и подготовки к лабораторной работе рекомендуются следующие справочные материалы (на англ. языке):
§ bB12171.pdf “SQL*Plus® Quick Reference Release 10.1 December 2003 Part No. B12171-01” — краткое руководство по оболочке SQL*Plus (на англ.языке)
§ b10758.pdf “Oracle® Database SQL Quick Reference 10g Release 1 (10.1) Part No. B10758-01 December 2003” — краткое руководство по языку SQL (на англ. языке)
§ b10759.pdf “Oracle® Database SQL Reference 10g Release 1 (10.1) Part No. B10759-01 December 2003”
§ b10807.pdf “PL/SQL User's Guide and Reference 10g Release 1 (10.1) Part No. B10807-01 December 2003” — руководство пользователя по языку PL/SQL (на англ.языке)
§ http://otn.oracle.com/pls/db10g/portal.portal_demo3?selected=5 “Oracle Documentation Library”
Задание
Создать таблицу, содержащую минимум пять (5) столбцов, используя различные типы данных CHAR, VARCHAR, NUMBER, INT, DATE, FLOAT и т.д. Два (2) столбца таблицы должны допускать NULL-значения
1. Распечатать описание таблицы
2. Вставить в таблицу как минимум три (3) строки с различными значениями (в т.ч. и NULL-значения)
3. Сделать выборку: a) всех столбцов b) двух (2) столбцов
4. Вставить в таблицу строку с указание столбцов в обратном порядке
5. Сделать выборку всех числовых столбцов, умножив их значения на сегодняшнее число (цифру) месяца
6. Удалить все строки из таблицы
7. Удалить таблицу
Работа с оболочкой SQL*Plus
SQL*Plus это простая оболочка (программа) предназначенная для выполнения команд языка SQL на сервере БД. Оболочка позволяет создавать и редактировать наборы SQL команд, отправлять их для выполнения на сервер БД и отображать результаты выполнения этих команд. Оболочка построена по принципу текстового диалогового интерфейса — пользователь набирает текст команду(ы) на клавиатуре, завершая группу команд символом ; (точка с запятой) и нажимает клавишу Enter, после этого SQL*Plus отправляет команду(ы) на сервер БД, а получив ответ, также отображает его в текстовом виде.
Имеется два варианта оболочки SQL*Plus — консольное приложение Windows (SQLPLUS.EXE) и оконное приложение Windows (SQLPLUSW.EXE). Как правило, при установке ORACLE данные файлы размещаются в каталоге BIN (например С:\Oracle\Ora81\BIN\ - для версии ORACLE 8.1).
При запуске SQL*Plus запрашивает имя пользователя, пароль и имя базы данных (сервера БД), к которой пользователь желает подключится. При использовании консольной версии SQL*Plus имя пользователя, пароль и имя базы данных можно указать в командной строке:
SQLPLUS.EXE {username[/password][@connect_identifier]}
Например чтобы подключиться с помощью SQL*Plus к БД db1.miee используя имя пользователя student и пароль password нужно ввести следующую команду:
SQLPLUS.EXE student/password@db1.miee
или
SQLPLUS.EXE student@db1.miee
В последнем случае SQL*Plus самостоятельно запросит пароль.
Примеры
SQL> --
SQL> -- СОЗДАНИЕ ПРОСТОЙ ТАБЛИЦЫ, ВСТАВКА ДАННЫХ,
SQL> -- ВЫБОРКА ДАННЫХ, УДАЛЕНИЕ ТАБЛИЦЫ
SQL> --
SQL>
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ
SQL> CREATE TABLE test_1 (
2 first_name CHAR(15),
3 last_name CHAR(20) );
Table created.
SQL>
SQL> -- ОПИСАНИЕ ТАБЛИЦЫ
SQL> DESCRIBE test_1;
Name Null? Type
----------------------------------------- -------- ----------------------------
FIRST_NAME CHAR(15)
LAST_NAME CHAR(20)
SQL>
SQL> -- ВСТАВКА ДАННЫХ
SQL> INSERT INTO test_1 VALUES ('Jane', 'Smith');
1 row created.
SQL> INSERT INTO test_1 VALUES ('Christopher', 'Allen');
1 row created.
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_1;
FIRST_NAME LAST_NAME
--------------- --------------------
Jane Smith
Christopher Allen
SQL>
SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ
SQL> DROP TABLE test_1;
Table dropped.
SQL>
SQL> -- ПРОВЕРКА ЧТО ТАБЛИЦА УДАЛЕНА
SQL> SELECT * FROM test_1;
SELECT * FROM test_1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> --
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ С ДАННЫМИ РАЗЛИЧНЫХ ТИПОВ
SQL> --
SQL>
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ
SQL> CREATE TABLE test_2 (
2 string_value VARCHAR2(20),
3 number_value NUMBER(6,2),
4 symbol_value CHAR(1),
5 date_value DATE );
Table created.
SQL>
SQL> -- ВСТАВКА ДАННЫХ
SQL> INSERT INTO test_2 VALUES ('AbcdeF', 1234.56, 'Z', '2001-01-04');
1 row created.
SQL> INSERT INTO test_2 VALUES ('Slovo1 Slovo2', 6543.21, 'A', '2004-12-23');
1 row created.
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_2;
STRING_VALUE NUMBER_VALUE S DATE_VALUE
-------------------- ------------ - ----------
AbcdeF 1234.56 Z 2001-01-04
Slovo1 Slovo2 6543.21 A 2004-12-23
SQL> -- УДАЛЕНИЕ ВСЕХ СТРОК
SQL> DELETE FROM test_2;
2 rows deleted.
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_2;
no rows selected
SQL>
SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ
SQL> DROP TABLE test_2;
Table dropped.
SQL>
SQL> --
SQL> -- РАБОТА С NULL-ЗНАЧЕНИЯМИ
SQL> --
SQL>
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ
SQL> CREATE TABLE test_3 (
2 string_value VARCHAR2(20) NOT NULL,
3 number_value NUMBER(6,2) );
Table created.
SQL>
SQL> -- ОПИСАНИЕ ТАБЛИЦЫ
SQL> DESCRIBE test_3;
Name Null? Type
----------------------------------------- -------- ----------------------------
STRING_VALUE NOT NULL VARCHAR2(20)
NUMBER_VALUE NUMBER(6,2)
SQL>
SQL> -- ВСТАВКА ДАННЫХ
SQL> INSERT INTO test_3 VALUES ('Text1', 100);
1 row created.
SQL> INSERT INTO test_3 VALUES ('Text2', NULL);
1 row created.
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_3;
STRING_VALUE NUMBER_VALUE
-------------------- ------------
Text1 100
Text2
SQL>
SQL> -- ВСТАВКА НЕВЕРНЫХ ДАННЫХ
SQL> INSERT INTO test_3 VALUES (NULL, 200);
INSERT INTO test_3 VALUES (NULL, 200)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYSTEM"."TEST_3"."STRING_VALUE")
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_3;
STRING_VALUE NUMBER_VALUE
-------------------- ------------
Text1 100
Text2
SQL>
SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ
SQL> DROP TABLE test_3;
Table dropped.
SQL>
SQL>
SQL> --
SQL> -- ВЫБОРКА И ВСТАВКА ДАННЫХ С ЯВНЫМ УКАЗАНИЕМ СТОЛБЦА
SQL> --
SQL>
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ
SQL> CREATE TABLE test_4 (
2 string_value VARCHAR2(20),
3 number_value NUMBER(6,2) );
Table created.
SQL>
SQL> -- ВСТАВКА ДАННЫХ
SQL> INSERT INTO test_4 VALUES ('Word1', 1000);
1 row created.
SQL> INSERT INTO test_4 VALUES ('Word2', 2000);
1 row created.
SQL>
SQL> -- ВСТАВКА ДАННЫХ С УКАЗАНИЕМ СТОЛБЦОВ
SQL> INSERT INTO test_4 (string_value, number_value) VALUES ('Word3', 3000);
1 row created.
SQL> INSERT INTO test_4 (number_value, string_value) VALUES (4000, 'Word4');
1 row created.
SQL> INSERT INTO test_4 (number_value) VALUES (5000);
1 row created.
SQL> INSERT INTO test_4 (string_value) VALUES ('Word6');
1 row created.
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT * FROM test_4;
STRING_VALUE NUMBER_VALUE
-------------------- ------------
Word1 1000
Word2 2000
Word3 3000
Word4 4000
5000
Word6
6 rows selected.
SQL>
SQL> -- ВЫБОРКА ЧАСТИ СТОЛБЦОВ ДАННЫХ
SQL> SELECT string_value, number_value FROM test_4;
STRING_VALUE NUMBER_VALUE
-------------------- ------------
Word1 1000
Word2 2000
Word3 3000
Word4 4000
5000
Word6
6 rows selected.
SQL> SELECT number_value, string_value FROM test_4;
NUMBER_VALUE STRING_VALUE
------------ --------------------
1000 Word1
2000 Word2
3000 Word3
4000 Word4
5000
Word6
6 rows selected.
SQL> SELECT number_value FROM test_4;
NUMBER_VALUE
------------
1000
2000
3000
4000
5000
6 rows selected.
SQL> SELECT string_value FROM test_4;
STRING_VALUE
--------------------
Word1
Word2
Word3
Word4
Word6
6 rows selected.
SQL>
SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ
SQL> DROP TABLE test_4;
Table dropped.
SQL>
SQL> --
SQL> -- ПРОСТЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ ПРИ ВЫБОРКЕ ДАННЫХ
SQL> --
SQL>
SQL> -- СОЗДАНИЕ ТАБЛИЦЫ
SQL> CREATE TABLE test_5 (
2 number_1 INTEGER,
3 number_2 FLOAT );
Table created.
SQL>
SQL> -- ВСТАВКА ДАННЫХ
SQL> INSERT INTO test_5 VALUES (100, 0.100);
1 row created.
SQL> INSERT INTO test_5 VALUES (200, 0.200);
1 row created.
SQL> INSERT INTO test_5 VALUES (300, 0.300);
1 row created.
SQL>
SQL> -- ВЫБОРКА ДАННЫХ
SQL> SELECT number_1*2 FROM test_5;
NUMBER_1*2
----------
200
400
600
SQL> SELECT number_2*2 FROM test_5;
NUMBER_2*2
----------
.2
.4
.6
SQL> SELECT number_1+number_2 FROM test_5;
NUMBER_1+NUMBER_2
-----------------
100.1
200.2
300.3
SQL> SELECT SIN(number_2) FROM test_5;
SIN(NUMBER_2)
-------------
.099833417
.198669331
.295520207
SQL> SELECT EXP(number_2)*number_1 FROM test_5;
EXP(NUMBER_2)*NUMBER_1
----------------------
110.517092
244.280552
404.957642
SQL>
SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ
SQL> DROP TABLE test_5;
Table dropped.
SQL>
