Хочу изучить sql с чего начать

Как выучить SQL (пошаговое руководство) в 2021 году 🔥

В связи с постепенным сдвигом в цифровых технологиях в последние годы каждую секунду генерируются триллионы байтов данных. Некоторые эксперты справедливо сказали: «Данные — это новая нефть!». Данные, генерируемые пользователями, бывают разных форм — они генерируются при просмотре социальных сетей, просмотре фильмов, покупках через онлайн-порталы, транзакциях онлайн-банкинга и т. д.

Так что толку от таких больших объемов данных? Что ж, эти данные организованы в соответствии с потребностями компаний в размещении целевой рекламы, чтобы привлечь клиентов к просмотру и покупке их продуктов. Эти данные используются для анализа поведения клиентов, чтобы компании и предприятия могли улучшить взаимодействие с пользователем, увеличить свои продажи или повысить качество обслуживания.

Однако генерируемые данные крайне неорганизованы и должны быть очищены, прежде чем они могут быть проанализированы экспертами. Кроме того, еще одной сложной задачей является хранение таких огромных объемов данных. В настоящее время существует несколько решений для больших данных, которые помогают компаниям хранить, систематизировать и анализировать большие объемы данных. Но какие уже структурированные данные поступают с веб-сайтов. К ним относятся данные для входа / регистрации, данные кредитной карты, данные профиля пользователя, история покупок в Интернете и т. д. Эти данные могут быть повторно использованы компаниями при следующем посещении их веб-сайтов. Очевидно, что для повторного использования его нужно хранить где-то в надежном месте.

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

1. Иерархическая база данных

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

2. Объектно-ориентированная база данных

У этого типа базы данных есть ключевые компоненты, такие как классы и объекты. Объекты можно определить как экземпляры классов в реальном времени. В них хранятся записи или фактические данные, которые нужно сохранить. У классов есть функции, методы или переменные, которые определяют операции, выполняемые с этими объектами или данными.

3. Сетевая база данных

Этот тип базы данных имеет сетевую структуру. Он поддерживает отношения «многие ко многим» между узлами и был разработан для решения проблем с иерархической базой данных.

4. Реляционная база данных

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

Наиболее распространенным типом базы данных, который активно используется в организациях для хранения данных в организованном, защищенном и надежном виде, является реляционная база данных. Реляционные базы данных обладают высокой масштабируемостью и гибкостью, когда дело доходит до доступа к определенным наборам информации. SQL или язык структурированных запросов — это язык программирования, который используется для запросов к реляционным базам данных и поиска записей или фрагментов информации из таблиц.

Что такое SQL?

Как обсуждалось ранее, SQL — это язык программирования, который можно использовать для запроса данных в реляционных базах данных. Вы можете создавать, обновлять, изменять, удалять и выполнять другие операции с таблицами в реляционных базах данных. SQL — это декларативный язык или, другими словами, это процедурный язык. Это означает, что пользователь может указать, какой тип данных он хочет, вместо того, чтобы указывать его вместе с тем, как их получить.

Проблемы с традиционной файловой системой

До изобретения SQL или других баз данных данные хранились в файловых системах, которые имели множество применений, связанных с неправильным управлением данными. Хотя мы думаем, что файловые системы выглядят аккуратно организованными, с ними связано множество недостатков, когда дело доходит до хранения, доступа и изменения непрерывных объемов данных. Обсудим некоторые из них.

1. Избыточность данных

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

2. Зависимость от данных

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

3. Обмен данными

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

По всем вышеупомянутым причинам возникла острая необходимость в создании новой формы хранения данных, которая решила бы все эти проблемы.

Важность SQL

Давайте рассмотрим несколько важных моментов, которые сделали SQL таким популярным языком запросов.

1. Это повсеместно принято

Когда дело доходит до обработки и организации данных, эксперты и профессионалы обращаются к SQL, не задумываясь. Все популярные базы данных с открытым исходным кодом и бесплатные базы данных поддерживают SQL для запроса информации.

2. Легко научиться

Синтаксис SQL похож на простой естественный язык, и его довольно легко изучить по сравнению со сложным синтаксисом других языков программирования, таких как Java, C ++ и т. Д.

3. Он может обрабатывать большие наборы данных.

По сравнению с Excel и электронными таблицами, SQL может легко обрабатывать большие наборы данных с минимальными усилиями, необходимыми для управления ими.

4. Это дает лучшее представление о наборах данных.

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

5. Это стандарт

SQL — это язык запросов, стандартизированный как ISO, так и ANSI. Он довольно стабилен, без больших обновлений синтаксиса, и как только вы его изучите, вам не нужно особо сосредотачиваться на новых выпусках.

6. Это горячий навык

Неважно, хотите ли вы работать в области науки о данных, машинного обучения, управления базами данных, анализа данных и т. Д., SQL — это распространенный навык, который пользуется большим спросом на рынке труда.

Зачем изучать SQL в 2021 году?

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

Карьера в SQL

В организациях, ориентированных на данные, существует множество профессий и профессий, требующих использования SQL как навыка. Эти организации ищут специалистов по SQL, которые могут применить свое аналитическое мышление с помощью SQL, чтобы лучше понять огромные блоки данных, которые у них есть. Если вы кандидат, который умеет работать с данными и манипулировать ими, вам определенно следует искать карьеру в программировании SQL. Рынок вакансий, связанных с SQL, можно найти как в облачных организациях, так и в тех, кто использует базы данных локально.

Требуется образование

Должности

Оплата труда

Предпосылки для изучения SQL

Чтобы начать изучение языка запросов, такого как SQL, важно, чтобы у вас были знания в следующих областях.

Помимо этого, вы должны обладать хорошими аналитическими навыками и понимать всю цель хранения данных в организованных реляционных базах данных, чтобы вы могли получать полезную информацию из данных, используя сложные запросы через SQL.

Обратите внимание, что даже если у вас нет опыта работы в области компьютерных наук или ИТ и у вас нет предварительных знаний о системах управления базами данных, вам не о чем беспокоиться. Мы предоставим вам все ресурсы, курсы, учебные пособия и документацию, которые вам понадобятся для изучения концепций прямо от базового до продвинутого уровня позже в этой статье. Так что, пожалуйста, оставайтесь с нами до конца.

Как установить SQL?

Давайте посмотрим, как установить SQL Server на ваш компьютер с Windows, который поможет вам писать SQL-запросы, такие как создание баз данных, таблиц, вставка данных в таблицы, изменение и обновление данных и т. Д.

IDE для SQL

IDE или интегрированная среда разработки — это графический инструмент, который позволяет вам управлять всеми файлами, связанными с вашим приложением, и работать с такими инструментами, как полезные пакеты, функции автозаполнения, подсветка синтаксиса и т. Д., Чтобы улучшить ваш опыт разработки.

Хотя это правда, что вы можете создавать базы данных и таблицы и управлять ими прямо из самой командной строки, однако использование IDE всегда будет полезно для получения обзора всех баз данных, запросов, таблиц и других компонентов с высоты птичьего полета. Фактически, есть IDE, в которых есть раздел справки, в котором объясняются основные команды и их использование. Вы можете просто заполнить текстовые поля, выбрать различные предварительно отформатированные команды, нажать кнопку «ОК», и ваша работа будет выполнена. Это так просто. Более того, существуют IDE, которые также позволяют создавать резервные копии и восстанавливать базы данных и таблицы.

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

1. DBeaver

DBeaver— это среда разработки баз данных на основе Java с открытым исходным кодом. Его можно использовать бесплатно, и в нем есть мощные функции, которые обеспечат бесперебойную разработку.

Функции —

2. PHPMyAdmin

PHPMyAdmin — это многофункциональный инструмент с открытым исходным кодом на основе HTML, который вы можете использовать для управления своими базами данных.

Функции —

3. Adminer

Adminer можно использовать как альтернативу PHPMyAdmin. Он основан на веб-интерфейсе, поддерживает множество плагинов, позволяет работать с несколькими базами данных, такими как Oracle, SQLite и т. Д.

Особенности

Онлайн-компиляторы

Путь изучения SQL

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

Если вы будете следовать этой дорожной карте, вы сможете изучить концепции баз данных, а также команды SQL, которые определенно помогут вам получить хорошее представление обо всей концепции управления базами данных и помогут вам получить преимущество над другими кандидатами для обеспечения безопасности хорошая карьера в СУБД.

Курсы и учебные пособия по SQL

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

1. Усовершенствованный учебный курс по MySQL: переход от новичка к эксперту по SQL — Автор: Udemy

Функции —

Ресурсы — 20 часов видео, 141 статья, 4 ресурса, сертификат.
Цена — 8640 индийских рупий.
Рейтинг — 4,6 по 51 134 оценкам.

2. Excel в MySQL: аналитические методы для бизнес-специализации

Функции —

Ресурс — 5 курсов, около 7 месяцев содержания.
Цена — 3576 индийских рупий в месяц.
Рейтинг — 4,6 по 18 019 оценок.

3. Введение в базы данных — Автор EdX

Функции —

Ресурс — 4 месяца содержания по 6-8 часов в неделю. Статьи, видеоуроки, викторины.
Цена — 33144 INR.
Рейтинг — 4.5.

Лучшие бесплатные ресурсы для изучения SQL и СУБД

Помимо всех дорогостоящих онлайн-курсов и руководств, которые мы обсудили выше, вы также можете использовать некоторые из лучших бесплатных ресурсов, доступных в Интернете, для подробного изучения концепций SQL и СУБД. Некоторые из лучших бесплатных ресурсов —

Интернет-ресурсы СУБД

Интернет-ресурсы по SQL

Изучение SQL из документации

Лучшие проекты SQL для начинающих

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

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

Вот список лучших проектов SQL для начинающих.

1. Система управления библиотекой

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

2. Приложение для розничной торговли через Интернет

3. Система бронирования железнодорожных билетов.

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

4. Система управления больницей

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

5. Система управления человеческими ресурсами

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

Лучшие сертификаты SQL

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

Вопросы на собеседовании по SQL

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

Вот список самых популярных вопросов на собеседовании по SQL.

Подведение итогов!

Мы надеемся, что с помощью этого подробного руководства вы получите полную и точную дорожную карту для изучения SQL в 2021 году.

Источник

🇮🇹 SQL с нуля: как начать изучать базы данных?

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

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

Знание базы данных начинается с знакомства с SQL.

Это язык, который обрабатывает все данные, которыми пользователи делятся с сайтом.

Эти записи хранятся в базе данных и доступны на веб-сайте по запросу.

Если вы не разбираетесь в базовых знаниях SQL, эта статья проведет вас через первые шаги в изучении баз данных.

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Почему вы должны изучать SQL?

Существует множество разнообразных учебных курсов и материалов по SQL.

Почему изучение SQL так популярно в наши дни?

Ниже приведены основные причины, по которым многим начинающим инженерам баз данных стоит подумать об изучении языка.

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

1. Это универсальность и популярность

По статистике, SQL занимает лидирующие позиции по популярности.

В опросе StackOverflow, MySQL и SQL Server 55,6% и 38,6% – занимают лидирующие места, каждый второй инженер использует эти языки в качестве преобладающих над другими.

2. Гладкая кривая обучения

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

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

По структуре и синтаксису SQL очень похож на английский.

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

3. SQL пользуется большим спросом на рынке труда

На самом деле, в сфере управления и проектирования SQL более 150 000 вакансий.

Из этих 35 тысяч рабочих мест напрямую связаны с разработкой SQL, другие требуют знания языка как дополнительного навыка.

В результате, изучив SQL, вы хотите быстро найти способы применения.

Существует множество проектов, к которым можно присоединиться.

Основные принципы SQL

Как и любой язык, SQL обладает своими привлекательными качествами.

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

Таблицы

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Для SQL, как и для любого языка, это определяющее понятие.

Здесь хранятся все наборы данных.

Для управления таблицами обычно используют команды.

Самые популярные команды:

Отношения

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Отношения Баз данных достаточно мощны, поскольку пользователи могут подключать информацию из разных таблиц и выполнять различные действия.

Если a будет считаться «родителем», а другой будет помечен как «ребенок».

В этом случае столбец дочерней таблицы будет считаться первичным ключом родительской таблицы.

Оридинальность

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

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

Кардинальность

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Подобно принципу ординальности, кардинальность – это отношения, сформированные между двумя дочерними таблицами

Возможные варианты отношений включают в себя:

азы данных SQL, которые вы должны изучить в первую очередь

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

Хотя основополагающие принципы и синтаксис должны быть проверены для систем баз данных на основе SQL, вам необходимо ознакомиться с каждой из них в отдельности.

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

Заключение

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

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

SQL является надежной отправной точкой.

При достаточной настойчивости и решимости, понимание сути языка не займет много времени.

Источник

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

О чем данный учебник

Данный учебник создан по принципу Step by Step, т.е. необходимо читать его последовательно и желательно сразу же выполняя примеры. Но если по ходу у вас возникает потребность узнать о какой-то команде более детально, то используйте конкретный поиск в интернет, например, в библиотеке MSDN.

При написании данного учебника использовалась база данных MS SQL Server версии 2014, для выполнения скриптов я использовал MS SQL Server Management Studio (SSMS).

Кратко о MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) — утилита для Microsoft SQL Server для конфигурирования, управления и администрирования компонентов базы данных. Данная утилита содержит редактор скриптов (который в основном и будет нами использоваться) и графическую программу, которая работает с объектами и настройками сервера. Главным инструментом SQL Server Management Studio является Object Explorer, который позволяет пользователю просматривать, извлекать объекты сервера, а также управлять ими. Данный текст частично позаимствован с википедии.

Для создания нового редактора скрипта используйте кнопку «New Query/Новый запрос»:

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Для смены текущей базы данных можно использовать выпадающий список:

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Для выполнения определенной команды (или группы команд) выделите ее и нажмите кнопку «Execute/Выполнить» или же клавишу «F5». Если в редакторе в текущий момент находится только одна команда, или же вам необходимо выполнить все команды, то ничего выделять не нужно.

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

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

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Собственно, это все, что нам необходимо будет знать для выполнения приведенных здесь примеров. Остальное по утилите SSMS несложно изучить самостоятельно.

Немного теории

Реляционная база данных (РБД, или далее в контексте просто БД) представляет из себя совокупность таблиц, связанных между собой. Если говорить грубо, то БД – файл в котором данные хранятся в структурированном виде.

СУБД – Система Управления этими Базами Данных, т.е. это комплекс инструментов для работы с конкретным типом БД (MS SQL, Oracle, MySQL, Firebird, …).

Примечание
Т.к. в жизни, в разговорной речи, мы по большей части говорим: «БД Oracle», или даже просто «Oracle», на самом деле подразумевая «СУБД Oracle», то в контексте данного учебника иногда будет употребляться термин БД. Из контекста, я думаю, будет понятно, о чем именно идет речь.

Таблица представляет из себя совокупность столбцов. Столбцы, так же могут называть полями или колонками, все эти слова будут использоваться как синонимы, выражающие одно и тоже.

Таблица – это главный объект РБД, все данные РБД хранятся построчно в столбцах таблицы. Строки, записи – тоже синонимы.

Для каждой таблицы, как и ее столбцов задаются наименования, по которым впоследствии к ним идет обращение.
Наименование объекта (имя таблицы, имя столбца, имя индекса и т.п.) в MS SQL может иметь максимальную длину 128 символов.

Для справки – в БД ORACLE наименования объектов могут иметь максимальную длину 30 символов. Поэтому для конкретной БД нужно вырабатывать свои правила для наименования объектов, чтобы уложиться в лимит по количеству символов.

SQL — язык позволяющий осуществлять запросы в БД посредством СУБД. В конкретной СУБД, язык SQL может иметь специфичную реализацию (свой диалект).

В языке SQL можно использовать 2 вида комментариев (однострочный и многострочный):

Собственно, все для теории этого будет достаточно.

DDL – Data Definition Language (язык описания данных)

Для примера рассмотрим таблицу с данными о сотрудниках, в привычном для человека не являющимся программистом виде:

Табельный номерФИОДата рожденияE-mailДолжностьОтдел
1000Иванов И.И.19.02.1955i.ivanov@test.ttДиректорАдминистрация
1001Петров П.П.03.12.1983p.petrov@test.ttПрограммистИТ
1002Сидоров С.С.07.06.1976s.sidorov@test.ttБухгалтерБухгалтерия
1003Андреев А.А.17.04.1982a.andreev@test.ttСтарший программистИТ

В данном случае столбцы таблицы имеют следующие наименования: Табельный номер, ФИО, Дата рождения, E-mail, Должность, Отдел.

Для выполнения примеров создадим тестовую базу под названием Test.

Простую базу данных (без указания дополнительных параметров) можно создать, выполнив следующую команду:

Удалить базу данных можно командой (стоит быть очень осторожным с данной командой):

Для того, чтобы переключиться на нашу базу данных, можно выполнить команду:

Или же выберите базу данных Test в выпадающем списке в области меню SSMS. При работе мною чаще используется именно этот способ переключения между базами.

Теперь в нашей БД мы можем создать таблицу используя описания в том виде как они есть, используя пробелы и символы кириллицы:

В данном случае нам придется заключать имена в квадратные скобки […].

Но в базе данных для большего удобства все наименования объектов лучше задавать на латинице и не использовать в именах пробелы. В MS SQL обычно в данном случае каждое слово начинается с прописной буквы, например, для поля «Табельный номер», мы могли бы задать имя PersonnelNumber. Так же в имени можно использовать цифры, например, PhoneNumber1.

На заметку
В некоторых СУБД более предпочтительным может быть следующий формат наименований «PHONE_NUMBER», например, такой формат часто используется в БД ORACLE. Естественно при задании имя поля желательно чтобы оно не совпадало с ключевыми словами используемые в СУБД.

По этой причине можете забыть о синтаксисе с квадратными скобками и удалить таблицу [Сотрудники]:

Теперь создадим нашу таблицу:

Для того, чтобы задать обязательные для заполнения столбцы, можно использовать опцию NOT NULL.

Для уже существующей таблицы поля можно переопределить при помощи следующих команд:

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

Чтобы не быть голословным, приведу несколько примеров тех же команд для СУБД ORACLE:

Для ORACLE есть отличия в плане реализации типа varchar2, его кодировка зависит настроек БД и текст может сохраняться, например, в кодировке UTF-8. Помимо этого длину поля в ORACLE можно задать как в байтах, так и в символах, для этого используются дополнительные опции BYTE и CHAR, которые указываются после длины поля, например:

Какая опция будет использоваться по умолчанию BYTE или CHAR, в случае простого указания в ORACLE типа varchar2(30), зависит от настроек БД, так же она иногда может задаваться в настройках IDE. В общем порой можно легко запутаться, поэтому в случае ORACLE, если используется тип varchar2 (а это здесь порой оправдано, например, при использовании кодировки UTF-8) я предпочитаю явно прописывать CHAR (т.к. обычно длину строки удобнее считать именно в символах).

Но в данном случае если в таблице уже есть какие-нибудь данные, то для успешного выполнения команд необходимо, чтобы во всех строках таблицы поля ID и Name были обязательно заполнены. Продемонстрируем это на примере, вставим в таблицу данные в поля ID, Position и Department, это можно сделать следующим скриптом:

В данном случае, команда INSERT также выдаст ошибку, т.к. при вставке мы не указали значения обязательного поля Name.
В случае, если бы у нас в первоначальной таблице уже имелись эти данные, то команда «ALTER TABLE Employees ALTER COLUMN ID int NOT NULL» выполнилась бы успешно, а команда «ALTER TABLE Employees ALTER COLUMN Name int NOT NULL» выдала сообщение об ошибке, что в поле Name имеются NULL (не указанные) значения.

Добавим значения для полю Name и снова зальем данные:

Так же опцию NOT NULL можно использовать непосредственно при создании новой таблицы, т.е. в контексте команды CREATE TABLE.

Сначала удалим таблицу при помощи команды:

Теперь создадим таблицу с обязательными для заполнения столбцами ID и Name:

Можно также после имени столбца написать NULL, что будет означать, что в нем будут допустимы NULL-значения (не указанные), но этого делать не обязательно, так как данная характеристика подразумевается по умолчанию.

Если требуется наоборот сделать существующий столбец необязательным для заполнения, то используем следующий синтаксис команды:

Так же данной командой мы можем изменить тип поля на другой совместимый тип, или же изменить его длину. Для примера давайте расширим поле Name до 50 символов:

Первичный ключ

При создании таблицы желательно, чтобы она имела уникальный столбец или же совокупность столбцов, которая уникальна для каждой ее строки – по данному уникальному значению можно однозначно идентифицировать запись. Такое значение называется первичным ключом таблицы. Для нашей таблицы Employees таким уникальным значением может быть столбец ID (который содержит «Табельный номер сотрудника» — пускай в нашем случае данное значение уникально для каждого сотрудника и не может повторяться).

Создать первичный ключ к уже существующей таблице можно при помощи команды:

Где «PK_Employees» это имя ограничения, отвечающего за первичный ключ. Обычно для наименования первичного ключа используется префикс «PK_» после которого идет имя таблицы.

Если первичный ключ состоит из нескольких полей, то эти поля необходимо перечислить в скобках через запятую:

Стоит отметить, что в MS SQL все поля, которые входят в первичный ключ, должны иметь характеристику NOT NULL.

Так же первичный ключ можно определить непосредственно при создании таблицы, т.е. в контексте команды CREATE TABLE. Удалим таблицу:

А затем создадим ее, используя следующий синтаксис:

После создания зальем в таблицу данные:

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

На самом деле имя ограничения можно и не задавать, в этом случае ему будет присвоено системное имя (наподобие «PK__Employee__3214EC278DA42077»):

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

Но такой краткий синтаксис, без указания имен ограничений, удобно применять при создании временных таблиц БД (имя временной таблицы начинается с # или ##), которые после использования будут удалены.

Подытожим

Немного про временные таблицы

Вырезка из MSDN. В MS SQL Server существует два вида временных таблиц: локальные (#) и глобальные (##). Локальные временные таблицы видны только их создателям до завершения сеанса соединения с экземпляром SQL Server, как только они впервые созданы. Локальные временные таблицы автоматически удаляются после отключения пользователя от экземпляра SQL Server. Глобальные временные таблицы видны всем пользователям в течение любых сеансов соединения после создания этих таблиц и удаляются, когда все пользователи, ссылающиеся на эти таблицы, отключаются от экземпляра SQL Server.

Временные таблицы создаются в системной базе tempdb, т.е. создавая их мы не засоряем основную базу, в остальном же временные таблицы полностью идентичны обычным таблицам, их так же можно удалить при помощи команды DROP TABLE. Чаще используются локальные (#) временные таблицы.

Для создания временной таблицы можно использовать команду CREATE TABLE:

Так как временная таблица в MS SQL аналогична обычной таблице, ее соответственно так же можно удалить самому командой DROP TABLE:

Так же временную таблицу (как собственно и обычную таблицу) можно создать и сразу заполнить данными возвращаемые запросом используя синтаксис SELECT … INTO:

На заметку
В разных СУБД реализация временных таблиц может отличаться. Например, в СУБД ORACLE и Firebird структура временных таблиц должна быть определена заранее командой CREATE GLOBAL TEMPORARY TABLE с указанием специфики хранения в ней данных, дальше уже пользователь видит ее среди основных таблиц и работает с ней как с обычной таблицей.

Нормализация БД – дробление на подтаблицы (справочники) и определение связей

Наша текущая таблица Employees имеет недостаток в том, что в полях Position и Department пользователь может ввести любой текст, что в первую очередь чревато ошибками, так как он у одного сотрудника может указать в качестве отдела просто «ИТ», а у второго сотрудника, например, ввести «ИТ-отдел», у третьего «IT». В итоге будет непонятно, что имел ввиду пользователь, т.е. являются ли данные сотрудники работниками одного отдела, или же пользователь описался и это 3 разных отдела? А тем более, в этом случае, мы не сможем правильно сгруппировать данные для какого-то отчета, где, может требоваться показать количество сотрудников в разрезе каждого отдела.

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

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

Чтобы избежать данных недостатков и применяется, так называемая, нормализация базы данных – дробление ее на подтаблицы, таблицы справочники. Не обязательно лезть в дебри теории и изучать что из себя представляют нормальные формы, достаточно понимать суть нормализации.

Давайте создадим 2 таблицы справочники «Должности» и «Отделы», первую назовем Positions, а вторую соответственно Departments:

Заметим, что здесь мы использовали новую опцию IDENTITY, которая говорит о том, что данные в столбце ID будут нумероваться автоматически, начиная с 1, с шагом 1, т.е. при добавлении новых записей им последовательно будут присваиваться значения 1, 2, 3, и т.д. Такие поля обычно называют автоинкрементными. В таблице может быть определено только одно поле со свойством IDENTITY и обычно, но необязательно, такое поле является первичным ключом для данной таблицы.

На заметку
В разных СУБД реализация полей со счетчиком может делаться по своему. В MySQL, например, такое поле определяется при помощи опции AUTO_INCREMENT. В ORACLE и Firebird раньше данную функциональность можно было съэмулировать при помощи использования последовательностей (SEQUENCE). Но насколько я знаю в ORACLE сейчас добавили опцию GENERATED AS IDENTITY.

Давайте заполним эти таблицы автоматически, на основании текущих данных записанных в полях Position и Department таблицы Employees:

То же самое проделаем для таблицы Departments:

Если теперь мы откроем таблицы Positions и Departments, то увидим пронумерованный набор значений по полю ID:

IDName
1Бухгалтер
2Директор
3Программист
4Старший программист

IDName
1Администрация
2Бухгалтерия
3ИТ

Данные таблицы теперь и будут играть роль справочников для задания должностей и отделов. Теперь мы будем ссылаться на идентификаторы должностей и отделов. В первую очередь создадим новые поля в таблице Employees для хранения данных идентификаторов:

Тип ссылочных полей должен быть каким же, как и в справочниках, в данном случае это int.

Так же добавить в таблицу сразу несколько полей можно одной командой, перечислив поля через запятую:

Теперь пропишем ссылки (ссылочные ограничения — FOREIGN KEY) для этих полей, для того чтобы пользователь не имел возможности записать в данные поля, значения, отсутствующие среди значений ID находящихся в справочниках.

И то же самое сделаем для второго поля:

Теперь пользователь в данные поля сможет занести только значения ID из соответствующего справочника. Соответственно, чтобы использовать новый отдел или должность, он первым делом должен будет добавить новую запись в соответствующий справочник. Т.к. должности и отделы теперь хранятся в справочниках в одном единственном экземпляре, то чтобы изменить название, достаточно изменить его только в справочнике.

Имя ссылочного ограничения, обычно является составным, оно состоит из префикса «FK_», затем идет имя таблицы и после знака подчеркивания идет имя поля, которое ссылается на идентификатор таблицы-справочника.

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

Так же в некоторых случаях ссылку можно организовать по нескольким полям:

В данном случае в таблице «таблица_справочник» первичный ключ представлен комбинацией из нескольких полей (поле1, поле2,…).

Собственно, теперь обновим поля PositionID и DepartmentID значениями ID из справочников. Воспользуемся для этой цели DML командой UPDATE:

Посмотрим, что получилось, выполнив запрос:

IDNameBirthdayEmailPositionDepartmentPositionIDDepartmentID
1000Иванов И.И.NULLNULLДиректорАдминистрация21
1001Петров П.П.NULLNULLПрограммистИТ33
1002Сидоров С.С.NULLNULLБухгалтерБухгалтерия12
1003Андреев А.А.NULLNULLСтарший программистИТ43

Всё, поля PositionID и DepartmentID заполнены соответствующие должностям и отделам идентификаторами надобности в полях Position и Department в таблице Employees теперь нет, можно удалить эти поля:

Теперь таблица у нас приобрела следующий вид:

IDNameBirthdayEmailPositionIDDepartmentID
1000Иванов И.И.NULLNULL21
1001Петров П.П.NULLNULL33
1002Сидоров С.С.NULLNULL12
1003Андреев А.А.NULLNULL43

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

IDNamePositionNameDepartmentName
1000Иванов И.И.ДиректорАдминистрация
1001Петров П.П.ПрограммистИТ
1002Сидоров С.С.БухгалтерБухгалтерия
1003Андреев А.А.Старший программистИТ

В инспекторе объектов мы можем увидеть все объекты, созданные для в данной таблицы. Отсюда же можно производить разные манипуляции с данными объектами – например, переименовывать или удалять объекты.

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Так же стоит отметить, что таблица может ссылаться сама на себя, т.е. можно создать рекурсивную ссылку. Для примера добавим в нашу таблицу с сотрудниками еще одно поле ManagerID, которое будет указывать на сотрудника, которому подчиняется данный сотрудник. Создадим поле:

В данном поле допустимо значение NULL, поле будет пустым, если, например, над сотрудником нет вышестоящих.

Теперь создадим FOREIGN KEY на таблицу Employees:

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

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

В результате мы должны увидеть следующую картину (таблица Employees связана с таблицами Positions и Depertments, а так же ссылается сама на себя):

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

Напоследок стоит сказать, что ссылочные ключи могут включать дополнительные опции ON DELETE CASCADE и ON UPDATE CASCADE, которые говорят о том, как вести себя при удалении или обновлении записи, на которую есть ссылки в таблице-справочнике. Если эти опции не указаны, то мы не можем изменить ID в таблице справочнике у той записи, на которую есть ссылки из другой таблицы, так же мы не сможем удалить такую запись из справочника, пока не удалим все строки, ссылающиеся на эту запись или, же обновим в этих строках ссылки на другое значение.

Для примера пересоздадим таблицу с указанием опции ON DELETE CASCADE для FK_Employees_DepartmentID:

Удалим отдел с идентификатором 3 из таблицы Departments:

Посмотрим на данные таблицы Employees:

IDNameBirthdayEmailPositionIDDepartmentIDManagerID
1000Иванов И.И.1955-02-19NULL21NULL
1002Сидоров С.С.1976-06-07NULL121000

Как видим, данные по отделу 3 из таблицы Employees так же удалились.

Опция ON UPDATE CASCADE ведет себя аналогично, но действует она при обновлении значения ID в справочнике. Например, если мы поменяем ID должности в справочнике должностей, то в этом случае будет производиться обновление DepartmentID в таблице Employees на новое значение ID которое мы задали в справочнике. Но в данном случае это продемонстрировать просто не получится, т.к. у колонки ID в таблице Departments стоит опция IDENTITY, которая не позволит нам выполнить следующий запрос (сменить идентификатор отдела 3 на 30):

Главное понять суть этих 2-х опций ON DELETE CASCADE и ON UPDATE CASCADE. Я применяю эти опции очень в редких случаях и рекомендую хорошо подумать, прежде чем указывать их в ссылочном ограничении, т.к. при нечаянном удалении записи из таблицы справочника это может привести к большим проблемам и создать цепную реакцию.

Восстановим отдел 3:

Полностью очистим таблицу Employees при помощи команды TRUNCATE TABLE:

И снова перезальем в нее данные используя предыдущую команду INSERT:

Подытожим

Прочие ограничения – UNIQUE, DEFAULT, CHECK

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

А теперь можно наложить на это поле ограничение-уникальности:

Теперь пользователь не сможет внести один и тот же E-Mail у нескольких сотрудников.

Ограничение уникальности обычно именуется следующим образом – сначала идет префикс «UQ_», далее название таблицы и после знака подчеркивания идет имя поля, на которое накладывается данное ограничение.

Соответственно если уникальной в разрезе строк таблицы должна быть комбинация полей, то перечисляем их через запятую:

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

Давайте добавим в таблицу Employees новое поле «Дата приема» и назовем его HireDate и скажем что значение по умолчанию у данного поля будет текущая дата:

Или если столбец HireDate уже существует, то можно использовать следующий синтаксис:

Здесь я не указал имя ограничения, т.к. в случае DEFAULT у меня сложилось мнение, что это не столь критично. Но если делать по-хорошему, то, думаю, не нужно лениться и стоит задать нормальное имя. Делается это следующим образом:

Та как данного столбца раньше не было, то при его добавлении в каждую запись в поле HireDate будет вставлено текущее значение даты.

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

Посмотрим, что получилось:

IDNameBirthdayEmailPositionIDDepartmentIDManagerIDHireDate
1000Иванов И.И.1955-02-19i.ivanov@test.tt21NULL2015-04-08
1001Петров П.П.1983-12-03p.petrov@test.tt3410032015-04-08
1002Сидоров С.С.1976-06-07s.sidorov@test.tt1210002015-04-08
1003Андреев А.А.1982-04-17a.andreev@test.tt4310002015-04-08
1004Сергеев С.С.NULLs.sergeev@test.ttNULLNULLNULL2015-04-08

Проверочное ограничение CHECK используется в том случае, когда необходимо осуществить проверку вставляемых в поле значений. Например, наложим данное ограничение на поле табельный номер, которое у нас является идентификатором сотрудника (ID). При помощи данного ограничения скажем, что табельные номера должны иметь значение от 1000 до 1999:

Ограничение обычно именуется так же, сначала идет префикс «CK_», затем имя таблицы и имя поля, на которое наложено это ограничение.

Попробуем вставить недопустимую запись для проверки, что ограничение работает (мы должны получить соответствующую ошибку):

А теперь изменим вставляемое значение на 1500 и убедимся, что запись вставится:

Можно так же создать ограничения UNIQUE и CHECK без указания имени:

Но это не очень хорошая практика и лучше задавать имя ограничения в явном виде, т.к. чтобы разобраться потом, что будет сложнее, нужно будет открывать объект и смотреть, за что он отвечает.

Хочу изучить sql с чего начать. Смотреть фото Хочу изучить sql с чего начать. Смотреть картинку Хочу изучить sql с чего начать. Картинка про Хочу изучить sql с чего начать. Фото Хочу изучить sql с чего начать

При хорошем наименовании много информации об ограничении можно узнать непосредственно по его имени.

И, соответственно, все эти ограничения можно создать сразу же при создании таблицы, если ее еще нет. Удалим таблицу:

И пересоздадим ее со всеми созданными ограничениями одной командой CREATE TABLE:

Напоследок вставим в таблицу наших сотрудников:

Немного про индексы, создаваемые при создании ограничений PRIMARY KEY и UNIQUE

Как можно увидеть на скриншоте выше, при создании ограничений PRIMARY KEY и UNIQUE автоматически создались индексы с такими же названиями (PK_Employees и UQ_Employees_Email). По умолчанию индекс для первичного ключа создается как CLUSTERED, а для всех остальных индексов как NONCLUSTERED. Стоит сказать, что понятие кластерного индекса есть не во всех СУБД. Таблица может иметь только один кластерный (CLUSTERED) индекс. CLUSTERED – означает, что записи таблицы будут сортироваться по этому индексу, так же можно сказать, что этот индекс имеет непосредственный доступ ко всем данным таблицы. Это так сказать главный индекс таблицы. Если сказать еще грубее, то это индекс, прикрученный к таблице. Кластерный индекс – это очень мощное средство, которое может помочь при оптимизации запросов, пока просто запомним это. Если мы хотим сказать, чтобы кластерный индекс использовался не в первичном ключе, а для другого индекса, то при создании первичного ключа мы должны указать опцию NONCLUSTERED:

Для примера сделаем индекс ограничения PK_Employees некластерным, а индекс ограничения UQ_Employees_Email кластерным. Первым делом удалим данные ограничения:

А теперь создадим их с опциями CLUSTERED и NONCLUSTERED:

Теперь, выполнив выборку из таблицы Employees, мы увидим, что записи отсортировались по кластерному индексу UQ_Employees_Email:

IDNameBirthdayEmailPositionIDDepartmentIDHireDate
1003Андреев А.А.1982-04-17a.andreev@test.tt432015-04-08
1000Иванов И.И.1955-02-19i.ivanov@test.tt212015-04-08
1001Петров П.П.1983-12-03p.petrov@test.tt332015-04-08
1002Сидоров С.С.1976-06-07s.sidorov@test.tt122015-04-08

До этого, когда кластерным индексом был индекс PK_Employees, записи по умолчанию сортировались по полю ID.

Но в данном случае это всего лишь пример, который показывает суть кластерного индекса, т.к. скорее всего к таблице Employees будут делаться запросы по полю ID и в каких-то случаях, возможно, она сама будет выступать в роли справочника.

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

Кластерный индекс выгодно применять к полям, по которым выборка идет наиболее часто.

Иногда в таблицах создают ключ по суррогатному полю, вот в этом случае бывает полезно сохранить опцию CLUSTERED индекс для более подходящего индекса и указать опцию NONCLUSTERED при создании суррогатного первичного ключа.

Подытожим

Создание самостоятельных индексов

Под самостоятельностью здесь имеются в виду индексы, которые создаются не для ограничения PRIMARY KEY или UNIQUE.

Индексы по полю или полям можно создавать следующей командой:

Так же здесь можно указать опции CLUSTERED, NONCLUSTERED, UNIQUE, а так же можно указать направление сортировки каждого отдельного поля ASC (по умолчанию) или DESC:

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

Удалить индекс можно следующей командой:

Простые индексы так же, как и ограничения, можно создать в контексте команды CREATE TABLE.

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

И пересоздадим ее со всеми созданными ограничениями и индексами одной командой CREATE TABLE:

Напоследок вставим в таблицу наших сотрудников:

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

Вырезка из MSDN. Общий синтаксис команды для создания индексов

Подытожим

Индексы могут повысить скорость выборки данных (SELECT), но индексы уменьшают скорость модификации данных таблицы, т.к. после каждой модификации системе будет необходимо перестроить все индексы для конкретной таблицы.

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

Заключение по DDL

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

Главное — понять суть, а остальное дело практики.

Удачи вам в освоении этого замечательного языка под названием SQL.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *