2016-01-30 6 views
0

Я только начал узнавать о наборах SQL, но в самом начале не определено определение того, что такое набор, упоминается только одно: UNIONS и INTERSECTS.Что такое набор в отношении баз данных?

Пример SQL:

SELECT * FROM sales2005 
UNION 
SELECT * FROM sales2006; 
+3

«Набор» - это действительно математическая концепция. Хорошим местом для начала терминологии для реляционных баз данных является страница Википедии: https://en.wikipedia.org/wiki/Relational_database. –

ответ

3

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

Мы можем спросить, является ли определенная вещь/значение В конкретном наборе, т. Е. Является ее элементом, т. Е. Является его членом. Среди соответствующих операций - СОЮЗ двух наборов, который дает набор, члены которого находятся в одном или обоих этих множествах. INTERSECTION дает набор значений, которые находятся в обоих двух наборах. РАЗЛИЧИЕ двух наборов - это набор значений, которые являются членами одного, но не другого. «Пустое» множество - это набор без членов.

В контексте отношений мы иногда думаем о таблице как о наборе строк. Они должны иметь одинаковое количество столбцов, а иногда и тот же набор имен столбцов или список имен столбцов. (Тогда есть только одна пустая таблица.) В других случаях мы думаем о таблице как о таком наборе строк плюс необходимое общее количество столбцов, набор имен столбцов или список имен столбцов. (Тогда, поскольку число и/или имена столбцов имеют значение, две таблицы без строк могут быть разными таблицами.) Но даже такая таблица sloppily получает вызов набора.

В контексте SQL таблица представляет собой набор строк плюс (непустой) список имен столбцов. Но коллекции не наборы, они сумки. Сумка представляет собой набор значений, в которых одно и то же значение может отображаться как элемент более одного раза. Пока мы имеем дело только с мешками, где любая ценность появляется как член только один раз, мы можем думать о них как о наборах. (Таблицы SQL отличаются от реляционных таблиц другими способами.) Иногда они просто sloppily получают вызываемые множества в любом случае.

Суммарность SQL - это то, что у него есть как UNION (DISTINCT), так и UNION ALL. UNION ALL возвращает таблицу, чьи члены сумм являются членами сурков аргумента, каждый из которых показывает общее количество раз, которое он делает среди мешков с аргументами. Но UNION (DISTINCT) возвращает таблицу, чья сумка похожа на нее, но с одним видом для каждого участника. Его сумка похожа на набор рядов, которые появляются как члены сурков с аргументами.

PS Рассуждение о наборах столов прямолинейно. Каждая таблица содержит строки, которые делают оператор заполнения пробелов в имени (named-) в истинном выражении. (Заготовки называются столбцами, и они заполняются соответствующими значениями из строк.) Предположим, что таблица T с столбцами T1, T2, ... содержит строки, делающие «... T1 ... T2 ...» true. Затем для двух таблиц R & S R UNION S содержит кортежи, которые делают «... R1 ... R2 ... OR ... S1 ... S2 ...» true и R JOIN S содержат строки, которые делают «... R1 ... R2 ... AND ... S1 ... S2 ... "true. И так далее для других операторов таблицы и логики. Но таких простых правил не существует. Такое присутствие повторяющихся строк делает SQL-запросы труднее рассуждать, чем запросы с реляционными таблицами. UNION (DISTINCT) и SELECT DISTINCT используются для устранения дубликатов.

Смежные вопросы