Skip to content

Написание SQL- кода

Код SQL, как и любой другой, можно сохранять в файлы. Расширение этих файлов на самом деле не имеет значения, но принято сохранять sql-скрипты с расширением .sql.

Некоторые IDE могут сохранять SQL-код и с другими расширениями файлов(например PL/SQL Developer - для т.н. тестовых скриптов он использует расширение *.tst.

Комментарии

В SQL можно и нужно добавлять комментарии. Это участки текста, предназначенные для чтения другими людьми, и которые не обрабатываются базой данных.

Комментарий может быть однострочным:

sql
-- Получить базовую информацию о записях в блоге
select a.title,
       a.name,
       a.create_date
from posts a
-- Получить базовую информацию о записях в блоге
select a.title,
       a.name,
       a.create_date
from posts a

Многострочные комментарии также поддерживаются:

sql
/* Отобразить записи в блоге
   для пользователя johndoe
   в порядке их публикации
*/
select a.title,
       a.post
from posts a
where a.username = 'JOHNDOE'
order by a.publish_date
/* Отобразить записи в блоге
   для пользователя johndoe
   в порядке их публикации
*/
select a.title,
       a.post
from posts a
where a.username = 'JOHNDOE'
order by a.publish_date

Многострочные комментарии начинаются с символов "/\*" и заканчиваются символами "*/". Вообще говоря, такой комментарий может быть и однострочным:

sql
/* Однострочный комментарий */
select a.title
from posts a
/* Однострочный комментарий */
select a.title
from posts a

Разделение команд SQL

В одном скрипте может находиться несколько команд SQL. Между собой эти команды должны разделяться символом ";" (точка с запятой).

Например, скрипт ниже создает таблицу tst, после чего добавляет в нее данные.

sql
create table tst(x number);

insert into tst values(1);
insert into tst values(2);
insert into tst values(3);
create table tst(x number);

insert into tst values(1);
insert into tst values(2);
insert into tst values(3);

Многие IDE позволяют выполнять только одну определенную команду из всех присутствующих в скрипте. В каждой это работает по-своему, но как правило это та команда, на которой сейчас стоит курсор.

Регистр

В Oracle ключевые слова(create, delete, select, join и т.д.) являются регистронезависимыми. С названиями таблиц и колонками дела обстоят иначе. По умолчанию, наименования таблиц и колонок регистронезависимы. Но если мы будем заключать их в кавычки, в них будет учитываться регистр. Сейчас мы не будем разбирать детали, приведём лишь пример двух абсолютно разных запросов:

sql
select *
from "Users";
select *
from "Users";
sql
select *
from users;
select *
from users;

Каждый из этих запросов получает данные из абсолютно разных таблиц — Users и users(или USERS). Ещё один пример с использованием регистрозависимых колонок:

sql
create table orders(
    order_num varchar2(20),
    "Order_num" varchar2(20)
);

insert into orders(order_num, "Order_num")
values('123', '456');
create table orders(
    order_num varchar2(20),
    "Order_num" varchar2(20)
);

insert into orders(order_num, "Order_num")
values('123', '456');

Здесь мы создали таблицу с двумя разными колонками, одна из которых("Order_num") является регистрозависимой, после чего вставили в таблицу одну строку. Посмотрим на данные в таблице orders:

sql
select *
from orders;
select *
from orders;
ORDER_NUMOrder_num
123456

В учебнике мы не будем использовать эту возможность, и все объекты у нас будут использовать регистронезависимыми.