Написание SQL- кода
Код SQL, как и любой другой, можно сохранять в файлы. Расширение этих файлов на самом деле не имеет значения, но принято сохранять sql-скрипты с расширением .sql.
Некоторые IDE могут сохранять SQL-код и с другими расширениями файлов(например PL/SQL Developer - для т.н. тестовых скриптов он использует расширение *.tst.
Комментарии
В SQL можно и нужно добавлять комментарии. Это участки текста, предназначенные для чтения другими людьми, и которые не обрабатываются базой данных.
Комментарий может быть однострочным:
-- Получить базовую информацию о записях в блоге
select a.title,
a.name,
a.create_date
from posts a
-- Получить базовую информацию о записях в блоге
select a.title,
a.name,
a.create_date
from posts a
Многострочные комментарии также поддерживаются:
/* Отобразить записи в блоге
для пользователя 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
Многострочные комментарии начинаются с символов "/\*" и заканчиваются символами "*/". Вообще говоря, такой комментарий может быть и однострочным:
/* Однострочный комментарий */
select a.title
from posts a
/* Однострочный комментарий */
select a.title
from posts a
Разделение команд SQL
В одном скрипте может находиться несколько команд SQL. Между собой эти команды должны разделяться символом ";" (точка с запятой).
Например, скрипт ниже создает таблицу tst
, после чего добавляет в нее данные.
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 и т.д.) являются регистронезависимыми. С названиями таблиц и колонками дела обстоят иначе. По умолчанию, наименования таблиц и колонок регистронезависимы. Но если мы будем заключать их в кавычки, в них будет учитываться регистр. Сейчас мы не будем разбирать детали, приведём лишь пример двух абсолютно разных запросов:
select *
from "Users";
select *
from "Users";
select *
from users;
select *
from users;
Каждый из этих запросов получает данные из абсолютно разных таблиц — Users
и users
(или USERS
). Ещё один пример с использованием регистрозависимых колонок:
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
:
select *
from orders;
select *
from orders;
ORDER_NUM | Order_num |
---|---|
123 | 456 |
В учебнике мы не будем использовать эту возможность, и все объекты у нас будут использовать регистронезависимыми.