Подтвердить что ты не робот

Какие улучшения SQL вы ожидаете?

Работа с SQL показывает нам некоторые ограничения и дает нам возможность представить, что может быть.

Какие улучшения SQL вы ожидаете? Что бы вы положили поверх списка пожеланий?

Я думаю, что может быть хорошо, если вы отправляете в свой ответ базу данных, отсутствующую в вашем запросе.

4b9b3361

Ответ 1

Спецификация T-SQL: достойный способ выбора из набора результатов, возвращаемого хранимой процедурой, которая не включает перенос его во временную таблицу или использование некоторой неясной функции.

SELECT * FROM EXEC [master].[dbo].[xp_readerrorlog]

Ответ 2

Я знаю, что это невероятно нереально, но я бы хотел, чтобы они соответствовали синтаксису INSERT и UPDATE. Разговор о безвозмездной неортогональности.

Ответ 3

Оператор для управления диапазоном дат (или цифр):

where interval(date0, date1) intersects interval(date3, date4) 

РЕДАКТИРОВАТЬ: Дата или цифры, конечно, одинаковы.

РЕДАКТИРОВАТЬ 2: Кажется, у Oracle есть что пойти, недокументированный предикат OVERLAPS. Подробнее здесь.

Ответ 4

Достойный способ ходить по дереву с иерархическими данными. Oracle имеет CONNECT BY, но простая и общая структура хранения объекта и самореферентного соединения обратно в таблицу для родителя трудно запросить естественным образом.

Ответ 5

Больше SQL Server, чем SQL, но лучше интегрируется с Source Control. Предпочтительно SVN, а не VSS.

Ответ 6

Неявные объединения или то, что должно быть вызвано (то есть предопределенные представления, связанные с определением таблицы)

SELECT CUSTOMERID, SUM (C.ORDERS.LINES.VALUE) FROM CUSTOMER C

Редизайн всего объекта GROUP BY, чтобы каждое выражение в предложении SELECT не нужно повторять в предложении GROUP BY

Некоторая поддержка выражения let или иным образом более законных мест для использования псевдонима, немного связанного с веществом GROUP BY, но я нахожу в других случаях то, что я просто ненавижу Oracle, заставляя меня использовать внешний выбор только для ссылки на большой выражение по псевдониму.

Ответ 7

Я хотел бы видеть возможность использования регулярных выражений в обработке строк.

Ответ 8

Способ динамического указания столбцов/таблиц без необходимости использовать полный динамический sql, который выполняется в другом контексте.

Ответ 9

Возможность определять столбцы на основе других столбцов ad infinitum (включая значения).

Это надуманный пример, а не реальный мир, но я думаю, вы увидите, куда я иду:

SELECT LTRIM(t1.a) AS [a.new]
    ,REPLICATE(' ', 20 - LEN([a.new])) + [a.new] AS [a.conformed]
    ,LEN([a.conformed]) as [a.length]
FROM t1
INNER JOIN TABLE t2
    ON [a.new] = t2.a
ORDER BY [a.new]

вместо:

SELECT LTRIM(t1.a) AS [a.new]
    ,REPLICATE(' ', 20 - LEN(LTRIM(t1.a))) + LTRIM(t1.a) AS [a.conformed]
    ,LEN(REPLICATE(' ', 20 - LEN(LTRIM(t1.a))) + LTRIM(t1.a)) as [a.length]
FROM t1
INNER JOIN TABLE t2
    ON LTRIM(t1.a) = t2.a
ORDER BY LTRIM(t1.a)

Прямо сейчас, в SQL Server 2005 и выше, я бы использовал CTE и наращивал в последовательных слоях.

Ответ 10

Я бы хотел, чтобы поставщики фактически стандартизовали свой SQL. Они все виновны в этом. Предложение LIMIT/OFFSET из MySQL и PostGresql является хорошим решением, которое, как никто другой, не делает. Oracle имеет собственный синтаксис для явного JOIN, в то время как все остальные используют ANSI-92. MySQL должен обесценить функцию CONCAT() и использовать ||, как и все остальные. И есть множество предложений и заявлений, которые находятся за пределами стандарта, который может быть более широким. MySQL REPLACE - хороший пример. Там больше, с вопросами о литье и сравнении типов, причудами типов столбцов, последовательностей и т.д. И т.д. И т.д.

Ответ 11

параметризованный порядок, как в:


select * from tableA order by @columName

Ответ 12

Поддержка в SQL, чтобы указать, хотите ли вы оптимизировать план запроса, чтобы быстро вернуть первые строки или все строки быстро.

Oracle имеет концепцию подсказки FIRST_ROWS, но стандартный подход на этом языке был бы полезен.

Ответ 13

Автоматическая денормализация.

Но я, возможно, мечтаю.

Ответ 14

Улучшенные сводные таблицы. Я хотел бы сказать, что он автоматически создает столбцы на основе ключей, найденных в данных.

Ответ 15

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

Что-то еще: функция, связанная с метаданными, которая вернет возможные значения данного столбца, если набор возможных значений будет низким. I.e., если столбец имеет внешний ключ к другому столбцу, он будет возвращать существующие значения в упомянутом столбце. Если в столбце есть CHECK-ограничение, например "CHECK foo IN (1,2,3)", оно вернет 1,2,3. Это упростило бы создание элементов GUI на основе схемы таблиц. Если функция вернула список из двух значений, программист мог решить, что будет виджет-переключатель, или если функция возвращается - например, - 10 значений, приложение показало выпадающий виджет. Etc.

Ответ 16

UPSERT или MERGE в PostgreSQL. Это единственная особенность, чье отсутствие просто пугает мой разум. У Postgres есть все остальное; почему они не могут объединиться и реализовать его, даже в ограниченной форме?

Ответ 17

Проверьте ограничения на подзапросы, я имею в виду что-то вроде:

CHECK ( 1 > (SELECT COUNT(*) FROM TABLE WHERE A = COLUMN))

Ответ 18

Это все MS Sql Server/T-SQL:

  • "Естественное" объединяется на основе существующих отношений внешнего ключа.
  • Легко использовать сохраненный результат процесса в виде набора результатов
  • Другая конструкция цикла, кроме
  • Уникальные ограничения для значений, отличных от NULL
  • ЗА ИСКЛЮЧЕНИЕМ, IN, ALL, а не LEFT | RIGHT JOIN WHERE x IS [NOT] NULL
  • Связанная с схемой хранимая процедура (для облегчения # 2)
  • Отношения, связанные с схемой представления и т.д. в нескольких базах данных

Ответ 19

WITH для других операторов, кроме SELECT, это означает для UPDATE и DELETE.

Например:

WITH table as (
  SELECT ...
)
DELETE from table2 where not exists (SELECT ...)

Ответ 20

Что-то, что я называю СПРАВОЧНИКОМ. Он объединяет две таблицы вместе, неявно используя ограничение FOREIGN KEY... LINFERENTS между ними.

Ответ 21

Оператор реляционной алгебры DIVIDE. Я ненавижу всегда передумывать, как делать все элементы таблицы a, которые находятся в все из таблицы B.

http://www.tc.umn.edu/~hause011/code/SQLexample.txt

Ответ 22

String Agregation on Group by (В Oracle возможно с помощью трюк):

SELECT deptno, string_agg(ename) AS employees
FROM   emp
GROUP BY deptno;

DEPTNO EMPLOYEES
---------- --------------------------------------------------
    10 CLARK,KING,MILLER
    20 SMITH,FORD,ADAMS,SCOTT,JONES
    30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD

Ответ 23

Дополнительные функции ООП:

  • хранимые процедуры и пользовательские функции

    CREATE PROCEDURE tablename.spname(params) AS...

вызываемый через

EXECUTE spname
FROM tablename
WHERE conditions
ORDER BY

который неявно передает курсор или текущую запись в SP. (аналогично вставленным и удаленным псевдо таблицам)

  • определения таблиц с наследованием

определение таблицы как производное от базовой таблицы, наследование общих столбцов и т.д.

Btw, это не обязательно реальный ООП, а только синтаксический сахар в существующих технологиях, но это упростило бы развитие.

Ответ 24

Абстрактные таблицы и подклассы

create abstract table person
  (
  id primary key,
   name varchar(50)
  );

create table concretePerson extends person
  (
  birth date,
  death date
  );

create table fictionalCharacter  extends person
  (
  creator int references concretePerson.id      
  );

Ответ 25

Увеличена поддержка временной базы данных на сервере Sql. Интервалы, перекрытия и т.д.

Увеличенная поддержка OVER на сервере Sql, включая LAG, LEAD и TOP.

Ответ 26

Массивы

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

Ответ 27

Некоторая таблица UPGRADE, которая позволяет вносить изменения в таблицу как данные данного:

CREATE OR UPGRADE TABLE 
( 
  a VARCHAR,
  ---
)

Ответ 28

Мой список пожеланий (для SQLServer)

  • Возможность одновременного хранения/использования нескольких планов выполнения для хранимой процедуры и система автоматически распознает наилучший сохраненный план для использования при каждом выполнении.

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

  1. Собственное хранилище UTF-8

  2. Зеркалирование базы данных с несколькими резервными серверами и возможность использования модели восстановления, приближающейся к "простой", конечно, все серверы вверх и транзакция совершает всюду.

  3. PCRE заменяет функции

  4. Некоторые умные способы повторного использования фрагментов больших запросов sql, сохраненных условий соответствия, выбора условий... и т.д. Совместимо с функциями, но фактически реализовано больше как макросы препроцессора.

Ответ 29

Комментарии для контрольных ограничений. С помощью этой функции приложение (или сама база данных при сбое ошибки) может запросить метаданные и получить этот комментарий, чтобы показать его пользователю.

Ответ 30

Автоматическое уведомление dba в случае, когда оптимизатор генерирует план, отличный от плана, с которым был протестирован запрос.

Другими словами, каждый запрос может быть зарегистрирован. В то время план сохраняется. Позже, когда запрос выполняется, если есть изменение плана, dba получает уведомление, что произошло что-то неожиданное.