Skip to content

Предложение VALUES или создание таблиц из ничего

Автор: Joe Celko, The VALUES clause or building tables out of nothing


Предложение VALUES, вероятно, одна из самых неправильно используемых возможностей в SQL. Если вы посмотрите на онлайн-форумы по SQL, вы увидите, что люди используют его как второе предложение в операторе вставки, но используют его для построения только одной строки за раз, например так:



BEGIN
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Aries', '2025-03-21', '2025-04-19');
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Taurus', '2025-04-20', '2025-05-20');

INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Pisces', '2023-05-19', '2026-03-20');
END;


Каждый оператор вставки заканчивается точкой с запятой, поэтому они будут выполняться отдельно и в представленном порядке. Оптимизатор не осмеливается их объединять, потому что может быть прямая ссылка на предыдущие вставки.



Я думаю, люди пишут такой код, потому что именно так вы бы читали перфокарты. Каждая карта поступает в устройство чтения карт, буферизуется и записывается в порядке поступления на магнитную ленту или дисковый файл. Добро пожаловать в 1960-е! Перестаньте подражать старым языкам программирования, таким как FORTRAN или BASIC, в которых были операторы WRITE, помещающие по одной записи за раз в файл. Начните думать о работе с целыми множествами.

Continue reading "Предложение VALUES или создание таблиц из ничего"

Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL

Автор: Akhil Reddy Banappagari, Null and Empty String in Oracle vs SQL Server vs PostgreSQL



При планировании миграции баз данных в PostgreSQL именно мелочи часто становятся причиной самых серьёзных сбоев в рабочей среде. Одна из самых распространённых ловушек для разработчиков — это различная обработка значений NULL и пустых строк ('') в разных СУБД.



Хотя они могут казаться схожими концепциями, обозначающими отсутствие значения, то, как механизм базы данных их интерпретирует, может изменить результаты ваших запросов, нарушить уникальные ограничения или привести к сбоям загрузки данных. В этом руководстве мы сравним поведение Oracle, SQL Server и PostgreSQL, чтобы помочь вам избежать распространённых ошибок миграции.



Continue reading "Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL"