Выполните следующие действия
docker-compose down
- дважды docker-compose up -d
[117 ] Альтернативно,
docker-compose down
- дважды {также удаляет сеть} docker system prune --volumes
docker-compose up -d
[1110 ] 1) [ОСТАВЛЕННЫЙ | ПРАВО] ПОЛУ СОЕДИНЕНИЕ и [ОСТАВЛЕННЫЙ | ПРАВО] АНТИ-СОЕДИНЕНИЕ Они позволили бы мне писать что-то как
-- return customers who have placed at least one order
SELECT c.*
FROM Customers c
LEFT SEMI JOIN o ON o.CustomerId = c.Id
-- return customers who have NOT placed any order
SELECT c.*
FROM Customers c
LEFT ANTI JOIN o ON o.CustomerId = c.Id
, Это будет иметь точно тот же результат как
SELECT c.*
FROM Customers c
WHERE c.Id IN(SELECT CustomerId FROM Orders)
и
SELECT c.*
FROM Customers c
WHERE c.Id NOT IN(SELECT CustomerId FROM Orders)
, соответственно. Однако В (или в значительной степени эквивалентный СУЩЕСТВУЕТ) синтаксис намного более грязен, чем мой предложенный синтаксис, особенно в более сложных случаях.
, Конечно, на полу/антиприсоединенную таблицу нельзя сослаться так, это было бы НЕДОПУСТИМО:
-- Error, can't reference semi joined table.
SELECT c.*, o.OrderNumber
FROM Customers c
LEFT SEMI JOIN o ON o.CustomerId = c.Id
2) Это woud быть хорошим иметь хорошее решение
WHERE Column IN('a', 'b', 'c')
проблема, когда Вы не знаете, что количество значений ищет. Возможно, могло быть возможно позволить
WHERE Column IN(ARRAY @array)
, и код вызова свяжет @array с массивом.
Редактирование: Я просто думал о еще одном
3) Некоторая расширяемость к ограничительной системе, которая позволяет кодировать ограничений между таблицами, которые работают отлично в параллельных средах и которые позволяют мне вручную сделать любую блокировку и проверку, чтобы гарантировать, что ограничение всегда удовлетворяется. Триггеры могут в настоящее время использоваться, но они очень тверды получить правильный параллелизм рассмотрения.
Очевидный способ для осуществления оптимального плана выполнения.
существуют подсказки в MSSQL и Oracle, но Вам нужно к , убеждают DBMS использовать их, они могут быть тихо проигнорированы, и это цитируется в качестве функции, не ошибки в документации.
Эффективное внедрение стандартов SQL, таких как ДОМЕНЫ, для тех платформ, которые не поддерживают их.
Ключи Foreing, которые управляют датами интервала на других таблицах
, Например, для таблиц:
TABLE_A(begin DATE, end DATE)
TABLE_B(day DATE)
Некоторый способ определить На TABLE_B
:
FOREIGN KEY (day)
REFERENCES INTERVAL ON TABLE_A (begin, endd)
Частичное ключевое ограничение Foreing.
, Если имеют те таблицы:
create table prova_a (a number, b number);
alter table prova_a add primary key (a,b);
create table prova_b (a number, b number);
alter table prova_b add foreign key (a,b) references prova_a(a,b) ;
insert into prova_a values (1,2);
можно вставить это без ошибки:
insert into prova_b values (123,null);
insert into prova_b values (null,null);
insert into prova_b values (null,123);
я хочу, чтобы что-то избежало этого, не используя проверочные ограничения.
выберите на рекурсивных таблицах:
select * from rdfClass where rdfClass.uri is instance of "foaf:Person";
Никакие более рекордные пределы длины размера/команды.
Kevin победил меня к нему на несколько секунд..., но в более общем плане,
select @columnName from @tableName
order by @otherColumnName
и т.д.
Это представило бы, обматывает противной конкатенации строк, сопровождаемой
exec (@sql)
немедленно ненужный.
Определенный для SQL Server:
Некоторые достойные функции даты, как TRUNC. Улучшения полнотекстового поиска (лучше управляют по соответствию логике)
я любил бы его, если SQL-сервер мог бы сохранить различные базы данных в той же базе данных и файлах журнала (совместно использованные ГРУППЫ ФАЙЛОВ), таким образом, я могу резервировать ЦЕЛЫЙ сервер сразу.
Полный синтаксис и проверка ошибок хранимой процедуры, когда я компилирую его (не только когда я выполняю его)
Да, это начинает казаться, что "Я хочу все функции Oracle в SQL Server без всей сложности (и стоят!)"
Я хотел бы видеть способность поставить оператор Where во время создания индекса:
CREATE INDEX BAR ON FOO (FooName, FooId) WHERE FooEnabled = 1;
Затем оптимизатор мог использовать это при обработке SQL как это:
SELECT FooId, FooName
FROM Foo
WHERE FooEnabled = 1
ORDER BY FooName;
Это походит на разрешимую проблему и от создания индекса и от перспектив оптимизатора. Действительно, можно моделировать то же самое с помощью основанных на функции индексов и/или осуществленных представлений. Это грязно и может включить изменение SQL, выпущенного приложением.
было бы хорошо иметь синтаксический сахар выше.
Оптимизация QBE (Запрос Примером). Наконец давая нам способ выдать ответственность перед базой данных для всех тех запросов, которые хотят соответствовать на произвольном подмножестве столбцов.
<час>РЕДАКТИРОВАНИЕ: QBE является методологией не-SQL для запросов реляционных данных. Для добавления это к SQL, возможно, посмотрело бы что-то как
столбцы SELECT
таблица
FROM, ГДЕ ПРИМЕР (firstname, lastname, дата рождения) = ('% Fred', 'Jones', '20090209')
Функционально для поддержки чего-то как то, что Доступ имеет для графического querydef разработчика. Вы даете ему список полей и собираете ряд соответствия вводам данных пользователем, и оптимизатор выбросил бы столбцы, не указанные, и оптимизировал бы на остальных.
Вложенные агрегатные функции.
PostgreSQL не позволяет что-то как ВЫБОР МАКС (КОЛИЧЕСТВО (*))...
Команда CreateOrAlter.
я устаю изменяться назад и вперед между, "Создают Proc", и "Изменяют Proc". Я не забочусь, ли это, создают или изменяются, я просто хочу конечный результат быть тем, что я вставил тело процедуры.
Подобная LINQ интеграция технических возможностей с SQL :-)
Вычисляемые столбцы.
Возможность добавлять столбцы в таблицу на основе выражения для другой таблицы без необходимости создания представления.
MACRO SQL ВЫРАЖЕНИЯ
Например:
SELECT *
FROM X
WHERE MACRO_1(A, B, C)
Где MACRO_1 может иметь вид:
A*2/B+C
или что-то вроде:
A=2 OR B<C
MACRO_1 - это не функция, это просто макрос, который нужно предварительно обработать и заменить перед окончательным синтаксическим анализом.
Они похожи на функции, но поскольку они заменяются, оптимизатор может использовать индексы, а не функции, о которых оптимизатор не знает, что происходит.