Операторы SQL для работы с базой данных Oracle

Использование SQL операторов в базе данных OracleДля работы с данными в базе данных Oracle используются SQL-операторы, которые могут включать в себя DDL, DML и другие типы операторов. Для начала давайте вспомним, как выглядят базовые операторы SQL.

 

Оператор SELECT

Оператор SELECT является наиболее часто используемым оператором SQL (и также называется проекцией — projection). Он позволяет извлекать все или некоторые данные из таблицы на основе определенных критериев.

Проще всего оператор SELECT выглядит, когда применяется для извлечения всех данных таблицы: 

SQL> SELECT * FROM employees;

Для извлечения только определенных столбцов необходимо указывать имена этих столбцов после ключевого слова SELECT, например:

SQL> SELECT first_name, last_name, hiredate FROM employees; 

При желании извлечь только первых десять строк таблицы можно использовать оператор SELECT следующим образом:

SQL> SELECT * FROM employees WHERE rownum <11; 

Если требуется узнать только о том, какое количество строк содержится в таблице, оператор SELECT применяется так:

SQL> SELECT COUNT(*) FROM employees; 

Если в таблице присутствуют дубликаты, можно использовать в операторе SELECT конструкциюDISTINCT для исключения дублированных значений, как показано ниже:

SQL> SELECT DISTINCT username FROM V$SESSION;

С помощью необязательной конструкции WHERE в оператореSELECT можно задавать различные условия и тем самым обеспечивать возврат только определенных строк. В таблице А.1 перечислены некоторые наиболее типичные условия, которые можно указывать в конструкцииWHERE.

Символ Условие
= Равно
> Больше
< Меньше
<= Меньше или равно
>= Больше или равно
<> или ! Не равно

Ниже приведено несколько примеров применения конструкции WHERE:

SQL> SELECT employee_id WHERE salary = 50000;
SQL> SELECT employee_id WHERE salary < 50000;
SQL> SELECT employee_id WHERE salary > 50000;
SQL> SELECT employee_id WHERE salary <= 50000;
SQL> SELECT employee_id WHERE salary >= 50000;
SQL> SELECT employee_id WHERE salary ! 50000; 

 

Условие LIKE

Условие LIKE позволяет ограничивать количество возвращаемых оператором SELECT строк за счет применения операции сопоставления с образцом. Ниже приведен пример использования этого условия: 

SQL> SELECT employee_id, last_name FROM employees
2* WHERE last_name LIKE 'Fa%';
EMPLOYEE_ID  LAST_NAME
-----------  ----------
109          Faviet
202          Fay
SQL>

Образец, с которым должно выполняться сопоставление, должен быть заключен в одинарные кавычки (''). В приведенном выше примере знак процента (%) обозначает, что за буквами Fa может идти любая строка символов. То есть знак процента выступает в роли группового символа, способного замещать один или более символов, и, по сути, делает то же самое, что во многих операционных системах делает символ звездочки (*). Важно обратить внимание на то, что один символ подчеркивания (_) тоже может выступать групповым символом, но в отличие от знака процента способен замещать только один символ.

Использование команд SQL в базе данных Oracle 

Оператор INSERT

Оператор INSERT позволяет добавлять в таблицу новые данные, в том числе и дублированные в случае отсутствия требований уникальности со стороны первичного ключа или индекса. В общем, синтаксис оператораINSERT выглядит следующим образом:

INSERT INTO <таблица> [(<столбец i, ... , столбец j>)]
VALUES (<значение i, ... , значение j>);

Ниже приведен пример применения оператора INSERT:

SQL> INSERT INTO employees(
2 employee_id,last_name,email,hire_date,job_id)
3 VALUES
4* (56789,'alapati',Этот адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.', sysdate,98765);
1 row created.
SQL>

В этом примере имена столбцов были указаны потому, что заполнить данным требовалось только некоторые из столбцов вставлявшейся строки. Остальные столбцы были оставлены пустыми, что вполне приемлемо при условии, что ни один из них не был определен как не допускающий нулевых значений (NOT NULL).

При желании вставить значения во все столбцы таблицы можно использовать более простой оператор INSERT, подобный тому, что показан ниже:

SQL> INSERT INTO department
VALUES
(34567, 'payroll', 'headquarters', 'dallas');
1 row created.
SQL>

Если требуется вставить все столбцы из одной таблицы в другую, можно использовать такой оператор INSERT:

SQL> INSERT INTO b SELECT * FROM a
WHERE city='DALLAS'; 

В случае если окажется, что таблицы b не существует, можно использовать операторCREATE TABLE имя_таблицы AS SELECT * FROM (CTAS), как показано ниже: 

SQL> CREATE table b as SELECT * FROM a;

 

Оператор DELETE

Оператор DELETE служит для удаления строк из таблицы. Его синтаксис, в общем случае, выглядит так:

DELETE FROM <таблица> [WHERE <условие>]; 

Например, для удаления пользователя Fay из таблицыemployees потребуется использовать такой операторDELETE:

SQL> DELETE FROM employees
2* WHERE last_name='Fay';
1 row deleted. 

Если ограничивающее условие WHERE не указано, операторDELETE удалит все строки из таблицы:

SQL> DELETE FROM X; 

Удалять все строки из таблицы можно также и с помощью команды TRUNCATE, но отменять последствия этой команды нельзя, а отменять действие оператораDELETE можно, воспользовавшись операторомROLLBACK:

SQL> ROLLBACK;

 

Оператор UPDATE

Оператор UPDATE применяется для изменения значения (или значений) одного или нескольких столбцов в строке (или строках) внутри таблицы. Выражение, используемое для установки или изменения значения столбца, может представлять собой константную, арифметическую или строковую операцию или же результат выполнения оператораSELECT.

В общем, синтаксис оператора UPDATE выглядит следующим образом (элементы в квадратных скобках являются необязательными): 

UPDATE <таблица>
SET <столбец i> = <выражение i>, ... , <столбец j> = <выражение j>
[WHERE <условие>];

При желании изменить или модифицировать значения столбца во всех строках таблицы можно использовать оператор UPDATE без конструкцииWHERE:

SQL> UPDATE persons SET salary=salary*0.10; 

Для модификации только определенных строк нужно обязательно задавать в операторе UPDATE конструкциюWHERE:

SQL> UPDATE persons SET salary = salary * 0.10
WHERE review_grade > 5; 

 

Фильтрация данных

За счет использования в операторе SELECT, INSERT, DELETE или UPDATE конструкцииWHERE можно еще также и фильтровать данные, т.е. ограничивать количество строк, в отношении которых должен выполняться данный оператор. Ниже приведен простой пример:

SQL> INSERT INTO a
SELECT * FROM b
WHERE city='DALLAS';

 

Сортировка результатов запроса

Довольно часто бывает необходимо сортировать результаты запроса в каком-нибудь порядке. Конструкция ORDER BY позволяет сортировать данные на основе значения одного или нескольких столбцов. Вместе с ней можно указывать желаемый порядок сортировки (по возрастанию или убыванию), использовать для сортировки псевдонимы столбцов, а также выполнять сортировку по нескольким столбцам. Ниже приведен простой пример: 

SQL> SELECT employee_id, salary FROM employees
ORDER BY salary;

 

Изменение порядка сортировки

По умолчанию конструкция ORDER BY предусматривает выполнение сортировки в порядке возрастания. При желании, чтобы сортировка выполнялась по убыванию, нужно указать ключевое слово DESC:

SQL> SELECT employee_id, salary FROM employees
ORDER BY salary desc;

 

Выполнение сортировки по нескольким столбцам

При желании результаты можно сортировать на основе значений более чем одного столбца. Например, ниже приведен запрос, предусматривающий выполнение сортировки на основании значений двух столбцов — salary иdept

SQL> SELECT employee_id, salary FROM employees
ORDER BY salary, dept;

 

Вас заинтересует / Intresting for you:

Назначение языка SQL и необход...
Назначение языка SQL и необход... 366 просмотров Ирина Светлова Mon, 28 Oct 2019, 05:40:06
Операции SQL в базе данных Ora...
Операции SQL в базе данных Ora... 2452 просмотров Antoni Wed, 11 Apr 2018, 12:22:28
Поддерживаемые Oracle типы сое...
Поддерживаемые Oracle типы сое... 8256 просмотров Дэн Mon, 16 Apr 2018, 14:21:48
Вызов кода PL/SQL из других яз...
Вызов кода PL/SQL из других яз... 2355 просмотров Максим Николенко Fri, 19 Jan 2018, 05:23:34

Войдите чтобы комментировать