Лабораторная
 

Лабораторная работа №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>