Я новичок в SQL с большим набором данных, которыми мне нужно манипулировать. Я использовал Excel для анализа небольшого фрагмента этих данных, но теперь мне нужно рассмотреть все это. Я импортировал его в SQL Server Management Studio 2016 и могу просматривать все таблицы с помощью функции "Первые 1000 строк", но это действительно все, что я знаю, как это сделать.

Есть только две таблицы, которые меня волнуют. У каждого есть 100 миллионов строк. Они разделяют один перекрывающийся столбец, назовем его EventID. Каждая таблица показывает, что произошло во время события.Таким образом, в таблице 1 есть запись для EventID # 100001, # 100002 и т.д., А в таблице 2 есть запись для EventID # 100001, # 100002 и т.д.

Так что было бы намного проще иметь один большой стол, но лучше всего ...

Я пытаюсь понять две вещи:

1) Куда мне обратиться в SQL Server Management Studio 2016, чтобы ввести запрос, чтобы задать вопросы о базе данных? (В конечном счете, я хочу выполнить последовательный анализ значений, но, возможно, мне придется прибегнуть к информации перед тем, как это сделать)

2) Как мне решить проблему наличия двух разных таблиц? (Должен ли я / могу ли я создать другую таблицу, которая объединит две таблицы, которые у меня есть в настоящее время? Или я должен решить эту проблему в запросе, который я пишу?)

Спасибо заранее за любую помощь.

2 ответа2

0

Я предоставлю вам обзор указателей, чтобы вы могли начать, и отсылаю вас к другим онлайн-учебникам. Затем вы должны задать более конкретные вопросы, как вы столкнетесь с проблемами.

1. Импортируйте свои данные и установите первичный ключ

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

Убедитесь, что ваша таблица настроена так, что EventID установлен в качестве первичного ключа в каждой таблице, в каждой таблице. Инструкции здесь. Если будет много строк с одинаковым EventID, все будет сложнее, поэтому я предполагаю, что они уникальны.

2. Определить отношения

Определите отношения между двумя таблицами, связав их по их первичным ключам (EventID). Выберите одну таблицу в качестве основной, и первичный ключ второй таблицы станет внешним ключом для первой. Если есть совпадение 1:1 между EventID, то это самый простой случай для работы.

Смотрите здесь учебник, в котором показаны методы GUI и SQL.

3. Используйте конструктор запросов

Это инструмент, который поможет вам создать SQL-запрос, который объединит (соединит или свяжет) обе таблицы и покажет результат. Последующее руководство здесь. Поскольку вы уже определили отношения, разработчик запросов будет знать, как их соединить.

В запросе вы можете выбрать столбцы из каждой объединенной таблицы, которую хотите увидеть, и запрос покажет их объединенными в одну. Здесь вы также можете добавить фильтры (критерии "где") и сортировку ("упорядочить по").

4. Создайте представление из запроса, который вы сделали.

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

Последующее руководство здесь.

5. эксперимент

Как только вы ознакомитесь с этим, вы можете изучить SQL более подробно. В сети масса ресурсов. И на самом деле, в SQL шаги 2-4 можно заменить просто так:

create view MyBigTableView as
select * from table1 
inner join table2 
on table1.EventID = table2.EventID

добавление

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

В SQL (определен ли первичный ключ или нет) внутреннее объединение двух таблиц, имеющих EventID и SubEventID, будет выглядеть следующим образом:

select * from table1 
inner join table2
on table1.EventID = table2.EventID 
and table1.SubEventID = table2.SubEventID
0

Оператор пересечения будет легче использовать в этом случае.

select * from table1
intersect
select * from table2

Это даст только те записи, которые являются общими для обеих таблиц. Вот удобное объяснение для операторов пересечения, объединения и исключения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .