Базовые SQL-запросы в Firebird

Обновлено Обновлено: Опубликовано Опубликовано:

В большей степени, Firebird соответствует стандарту SQL и если имеется опыт работы с другими СУБД, сложностей не возникнет. Данная инструкция является шпаргалкой с базовыми командами SQL по выборке, редактированию, вставке и удалению данных.

Выборка (SELECT)

Обычная выборка всех данных в таблице:

SELECT * FROM <table>

* где <table> - название таблицы.

Выборка с условием (WHERE):

SELECT * FROM <table> WHERE <field>='15'

* в данном примере будут выбраны только те строки, где значение поля <field> равно 15.

SELECT * FROM <table> WHERE <field> LIKE '%foo%'

* а в этом примере будут выбраны только те строки, где в поле <field> встретиться foo.

Используя условия с русскими символами (кириллица) необходимо передавать запросы в той же кодировке, что используется СУБД. Например, если скрипты программы в кодировке UTF-8, в значения в базе хранятся в windows-1251 (cp1251), необходимо конвертировать кодировку.

Регистронезависимая выборка с условием (WHERE):

Вся выборка в Firebird зависит от регистра символов — то есть, если в поле будет слово 'Магазин', запрос LIKE 'магазин' не вернет никакого результата.

Чтобы найти нужную строку, выполняем следующий запрос:

SELECT * FROM <table> WHERE UPPER(<field>) LIKE '%МАГАЗИН%'

* UPPER конвертирует значение поля в верхний регистр, таким образом делая все символы большими.

Выборка с лимитом (LIMIT, а точнее FIRST):

SELECT FIRST 5 SKIP 0 * FROM <table>

* выбрать первые 5 строк.

SELECT FIRST 5 SKIP 5 * FROM <table>

* выбрать 5 строк, начиная с 6-й.

Группировка данных (GROUP BY):

SELECT field1, MAX(field2) FROM <table> GROUP BY field1

* в данном примере выполнена группировка по полю field1. Извлекаются строки со значениями самого field1 и максимальные значения для field2.

Выборка уникальных значений (DISTINCT):

SELECT DISTINCT(field) FROM <table>

* выборка уникальных значений поля field.

Получение списка полей для таблицы (аналог SHOW FIELDS):

SELECT Fields.RDB$FIELD_NAME as FIELD FROM RDB$RELATION_FIELDS Fields WHERE Fields.RDB$RELATION_NAME = 'USERS' and Fields.RDB$SYSTEM_FLAG = 0 ORDER BY Fields.RDB$FIELD_POSITION

* где USERS — имя таблицы, для которой хотим получить список полей;

Список таблиц (аналог SHOW TABLES):

SELECT RDB$RELATION_NAME FROM RDB$RELATIONS

Вставка (INSERT)

Простая вставка:

INSERT INTO <table> (field1, field2) VALUES ('data1', 'data2');

* в таблицу <table> добавляем строку и заполняем поля field1 и field2 соответствующими значениями data1 и data2.

Вставка с копирование:

INSERT INTO <table> SELECT * FROM <table2> WHERE ID > '111';

* в данном примере в таблицу <table> будет вставлено все, что выбрано из таблицы <table2>

Обновление (UPDATE):

Простое обновление данных:

UPDATE <table> SET field1 = 'data3' WHERE id = '111';

* для записи с ID 111 в таблице <table> меняем значение поля field1 на data3.

Удаление данных (DELETE)

DELETE FROM <table> WHERE id = 111;

* удаляем строку с ID 111 таблицы <table>

# Базы данных # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет