Полезные и вредные советы по sql
Стиль жизни SQL
Microsoft SQL Server, T-SQL, DBA, Developer
Опубликовано 15.11.2016 автором Зайцев Дмитрий
В докладе рассмотрены типичные ошибки при написании запросов на T-SQL и то как они влияют на производительность.
Докладчик: Сыроватченко Сергей. SQL Server DBA
Вконтакте
Google+
*** *** *** *** *** *** *** *** *** *** *** ***Похожие статьи:
- Вредные советы по SQL (часть 1)
- Вредные советы по SQL (часть 2)
- Вредные советы по SQL. Часть 3 (06.11.2014, вебинар)
- Вредные советы по SQL (Часть 3)
*** *** *** *** *** *** *** *** *** *** *** ***Ссылка на наш канал YouTube
Запись опубликована в рубрике Обучение (видео) с метками education, movie. Добавьте в закладки постоянную ссылку.
Авторизация
- Регистрация
- Войти
- RSS записей
- RSS комментариев
- WordPress.org
Найти:
Контакты
- Об авторе
- Обратная связь
Важное
- Викторина по SQL Server
- Нашли баг в SQL Server?
- Поделиться кодом
- Поделиться планом
- Полный список обновлений Microsoft SQ Server
Интересное
- Библиотека SQL Server Latches
- Библиотека SQL Server Wait Types
- Основы администрирования SQL Server
- Особенности написания запросов на T-SQL
Разное
- Встречи SqlCom
- Мероприятия
События
Нет предстоящих мероприятия в указанный период времени.
Метки
advice
always encrypted
alwayson
analytics
availability
azure
backup
book
columnstore
dwh
education
error
event
excel
extended events
in-memory
indexes
json
meetup
memory
monitoring
movie
news
optimization
partition
performance
poll
query
query plan
questions
reporting services
restore
scripts
security
sql server 2012
sql server 2014
sql server 2016
sql server 2017
statistics
t-sql
tempdb
tools
trace flag
tsql
waitsРубрики
- 24 Hours of PASS 2014 .Russian Edition(видео)
- AlwaysOn
- AlwaysOn
- Azure
- Cluster
- Cтатистика и виды ожиданий (Wait Stats and Wait Types)
- ETL
- Glenn Berry (видео)
- Hints
- Kimberly Tripp (видео)
- Log Shipping
- Microsoft MVP & Community Day
- Mirroring
- Paul Randal (видео)
- Replication
- Reporting Services
- SQL Saturday
- SQL Server 2014
- SQL Server 2016
- Автоматизация
- Архив событий и мероприятий
- Блокировки, Дедлоки и Латчи
- В помощь администратору
- Видео
- Вопрос-Решение
- Восстановление
- Встречи SqlCom
- Данные. Технологии. SQL Server 2016
- Индексы
- Книги
- Мониторинг
- Новости
- Обучение
- Обучение (видео)
- Оптимизация
- Оптимизация (видео)
- Полезно и интересно
- Проблема-Решение
- Проверь себя
- Производительность
- Разное (видео)
- Разработка БД
- Самородов Фёдор (видео)
- Секционирование
- Скрипты
- События и мероприятия
- Хранилища и Аналитика
Архивы
- Июль 2019
- Май 2019
- Ноябрь 2018
- Октябрь 2018
- Июль 2018
- Июнь 2018
- Май 2018
- Апрель 2018
- Март 2018
- Февраль 2018
- Январь 2018
- Декабрь 2017
- Ноябрь 2017
- Октябрь 2017
- Сентябрь 2017
- Август 2017
- Июль 2017
- Июнь 2017
- Май 2017
- Апрель 2017
- Март 2017
- Февраль 2017
- Январь 2017
- Декабрь 2016
- Ноябрь 2016
- Октябрь 2016
- Сентябрь 2016
- Август 2016
- Июль 2016
- Июнь 2016
- Май 2016
- Апрель 2016
- Март 2016
- Февраль 2016
- Январь 2016
- Декабрь 2015
- Ноябрь 2015
- Октябрь 2015
- Июль 2015
- Июнь 2015
- Февраль 2015
- Январь 2015
- Декабрь 2014
- Ноябрь 2014
- Октябрь 2014
- Сентябрь 2014
- Август 2014
- Июль 2014
- Июнь 2014
- Май 2014
- Апрель 2014
Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик»
Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.
Наша статья с вопросами по SQL — универсальный ресурс, с помощью которого вы можете ускорить подготовку к собеседованию. Она состоит из набора из 65 самых распространенных вопросов, которые интервьюер может задать во время собеседования. Оно обычно начинается с базовых вопросов по SQL, а затем переходит к более сложным на основе обсуждения и ваших ответов. Эти вопросы по SQL с собеседований помогут вам извлечь максимальную выгоду на различных уровнях понимания.
Давайте начнем!
Вопрос 1. В чем разница между операторами DELETE и TRUNCATE?
№ Вопрос 2. Из каких подмножеств состоит SQL?
- DDL (Data Definition Language, язык описания данных) — позволяет выполнять различные операции с базой данных, такие как CREATE (создание), ALTER (изменение) и DROP (удаление объектов).
- DML (Data Manipulation Language, язык управления данными) — позволяет получать доступ к данным и манипулировать ими, например, вставлять, обновлять, удалять и извлекать данные из базы данных.
- DCL (Data Control Language, язык контролирования данных) — позволяет контролировать доступ к базе данных. Пример — GRANT (предоставить права), REVOKE (отозвать права).
Вопрос 3. Что подразумевается под СУБД? Какие существуют типы СУБД?
База данных — структурированная коллекция данных. Система управления базами данных (СУБД) — программное обеспечение, которое взаимодействует с пользователем, приложениями и самой базой данных для сбора и анализа данных. СУБД позволяет пользователю взаимодействовать с базой данных. Данные, хранящиеся в базе данных, могут быть изменены, извлечены и удалены. Они могут быть любых типов, таких как строки, числа, изображения и т. д.
Существует два типа СУБД:
- Реляционная система управления базами данных: данные хранятся в отношениях (таблицах). Пример — MySQL.
- Нереляционная система управления базами данных: не существует понятия отношений, кортежей и атрибутов. Пример — Mongo.
Вопрос 4. Что подразумевается под таблицей и полем в SQL?
Таблица — организованный набор данных в виде строк и столбцов. Поле — это столбцы в таблице. Например:
Таблица: Student_Information
Поле: Stu_Id, Stu_Name, Stu_Marks
Вопрос 5. Что такое соединения в SQL?
Для соединения строк из двух или более таблиц на основе связанного между ними столбца используется оператор JOIN. Он используется для объединения двух таблиц или получения данных оттуда. В SQL есть 4 типа соединения, а именно:
- Inner Join (Внутреннее соединение)
- Right Join (Правое соединение)
- Left Join (Левое соединение)
- Full Join (Полное соединение)
Вопрос 6. В чем разница между типом данных CHAR и VARCHAR в SQL?
И Char, и Varchar служат символьными типами данных, но varchar используется для строк символов переменной длины, тогда как Char используется для строк фиксированной длины. Например, char(10) может хранить только 10 символов и не сможет хранить строку любой другой длины, тогда как varchar(10) может хранить строку любой длины до 10, т.е. например 6, 8 или 2.
Вопрос 7. Что такое первичный ключ (Primary key)?
- Первичный ключ — столбец или набор столбцов, которые однозначно идентифицируют каждую строку в таблице.
- Однозначно идентифицирует одну строку в таблице
- Нулевые (Null) значения не допускаются
_Пример: в таблице Student StuID является первичным ключом.
Вопрос 8. Что такое ограничения (Constraints)?
Ограничения (constraints) используются для указания ограничения на тип данных таблицы. Они могут быть указаны при создании или изменении таблицы. Пример ограничений:
- NOT NULL
- CHECK
- DEFAULT
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
Вопрос 9. В чем разница между SQL и MySQL?
SQL — стандартный язык структурированных запросов (Structured Query Language) на основе английского языка, тогда как MySQL — система управления базами данных. SQL — язык реляционной базы данных, который используется для доступа и управления данными, MySQL — реляционная СУБД (система управления базами данных), также как и SQL Server, Informix и т. д.
Вопрос 10. Что такое уникальный ключ (Unique key)?
- Однозначно идентифицирует одну строку в таблице.
- Допустимо множество уникальных ключей в одной таблице.
- Допустимы NULL-значения (прим. перевод.: зависит от СУБД, в SQL Server значение NULL может быть добавлено только один раз в поле с UNIQUE KEY).
Вопрос 11. Что такое внешний ключ (Foreign key)?
- Внешний ключ поддерживает ссылочную целостность, обеспечивая связь между данными в двух таблицах.
- Внешний ключ в дочерней таблице ссылается на первичный ключ в родительской таблице.
- Ограничение внешнего ключа предотвращает действия, которые разрушают связи между дочерней и родительской таблицами.
Вопрос 12. Что подразумевается под целостностью данных?
Целостность данных определяет точность, а также согласованность данных, хранящихся в базе данных. Она также определяет ограничения целостности для обеспечения соблюдения бизнес-правил для данных, когда они вводятся в приложение или базу данных.
Вопрос 13. В чем разница между кластеризованным и некластеризованным индексами в SQL?
- Различия между кластеризованным и некластеризованным индексами в SQL:
Кластерный индекс используется для простого и быстрого извлечения данных из базы данных, тогда как чтение из некластеризованного индекса происходит относительно медленнее. - Кластеризованный индекс изменяет способ хранения записей в базе данных — он сортирует строки по столбцу, который установлен как кластеризованный индекс, тогда как в некластеризованном индексе он не меняет способ хранения, но создает отдельный объект внутри таблицы, который указывает на исходные строки таблицы при поиске.
- Одна таблица может иметь только один кластеризованный индекс, тогда как некластеризованных у нее может быть много.
Вопрос 14. Напишите SQL-запрос для отображения текущей даты.
В SQL есть встроенная функция GetDate (), которая помогает возвращать текущий timestamp/дату.
Вопрос 15. Перечислите типы соединений
Существуют различные типы соединений, которые используются для извлечения данных между таблицами. Принципиально они делятся на четыре типа, а именно:
Inner join (Внутреннее соединение): в MySQL является наиболее распространенным типом. Оно используется для возврата всех строк из нескольких таблиц, для которых выполняется условие соединения.
Left Join (Левое соединение): в MySQL используется для возврата всех строк из левой (первой) таблицы и только совпадающих строк из правой (второй) таблицы, для которых выполняется условие соединения.
Right Join (Правое соединение): в MySQL используется для возврата всех строк из правой (второй) таблицы и только совпадающих строк из левой (первой) таблицы, для которых выполняется условие соединения.
Full Join (Полное соединение): возвращает все записи, для которых есть совпадение в любой из таблиц. Следовательно, он возвращает все строки из левой таблицы и все строки из правой таблицы.
Вопрос 16. Что вы подразумеваете под денормализацией?
Денормализация — техника, которая используется для преобразования из высших к низшим нормальным формам. Она помогает разработчикам баз данных повысить производительность всей инфраструктуры, поскольку вносит избыточность в таблицу. Она добавляет избыточные данные в таблицу, учитывая частые запросы к базе данных, которые объединяют данные из разных таблиц в одну таблицу.
Вопрос 17. Что такое сущности и отношения?
Сущности: человек, место или объект в реальном мире, данные о которых могут храниться в базе данных. В таблицах хранятся данные, которые представляют один тип сущности. Например — база данных банка имеет таблицу клиентов для хранения информации о клиентах. Таблица клиентов хранит эту информацию в виде набора атрибутов (столбцы в таблице) для каждого клиента.
Отношения: отношения или связи между сущностями, которые имеют какое-то отношение друг к другу. Например — имя клиента связано с номером учетной записи клиента и контактной информацией, которая может быть в той же таблице. Также могут быть отношения между отдельными таблицами (например, клиент к счетам).
Вопрос 18. Что такое индекс?
Индексы относятся к методу настройки производительности, позволяющему быстрее извлекать записи из таблицы. Индекс создает отдельную структуру для индексируемого поля и, следовательно, позволяет быстрее получать данные.
Вопрос 19. Опишите различные типы индексов.
Есть три типа индексов, а именно:
- Уникальный индекс (Unique Index): этот индекс не позволяет полю иметь повторяющиеся значения, если столбец индексируется уникально. Если первичный ключ определен, уникальный индекс может быть применен автоматически.
- Кластеризованный индекс (Clustered Index): этот индекс меняет физический порядок таблицы и выполняет поиск на основе значений ключа. Каждая таблица может иметь только один кластеризованный индекс.
- Некластеризованный индекс (Non-Clustered Index): не изменяет физический порядок таблицы и поддерживает логический порядок данных. Каждая таблица может иметь много некластеризованных индексов.
Вопрос 20. Что такое нормализация и каковы ее преимущества?
Нормализация — процесс организации данных, цель которого избежать дублирования и избыточности. Некоторые из преимуществ:
- Лучшая организация базы данных
- Больше таблиц с небольшими строками
- Эффективный доступ к данным
- Большая гибкость для запросов
- Быстрый поиск информации
- Проще реализовать безопасность данных
- Позволяет легко модифицировать
- Сокращение избыточных и дублирующихся данных
- Более компактная база данных
- Обеспечивает согласованность данных после внесения изменений
Вопрос 21. В чем разница между командами DROP и TRUNCATE?
Команда DROP удаляет саму таблицу, и нельзя сделать Rollback команды, тогда как команда TRUNCATE удаляет все строки из таблицы (прим. перевод.: в SQL Server Rollback нормально отработает и откатит DROP).
Вопрос 22. Объясните различные типы нормализации.
Существует много последовательных уровней нормализации. Это так называемые нормальные формы. Каждая последующая нормальная форма включает предыдущую. Первых трех нормальных форм обычно достаточно.
- Первая нормальная форма (1NF) — нет повторяющихся групп в строках
- Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
- Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
Вопрос 23. Что такое свойство ACID в базе данных?
ACID означает атомарность (Atomicity), согласованность (Consistency), изолированность (Isolation), долговечность (Durability). Он используется для обеспечения надежной обработки транзакций данных в системе базы данных.
Атомарность. Гарантирует, что транзакция будет полностью выполнена или потерпит неудачу, где транзакция представляет одну логическую операцию данных. Это означает, что при сбое одной части любой транзакции происходит сбой всей транзакции и состояние базы данных остается неизменным.
Согласованность. Гарантирует, что данные должны соответствовать всем правилам валидации. Проще говоря, вы можете сказать, что ваша транзакция никогда не оставит вашу базу данных в недопустимом состоянии.
Изолированность. Основной целью изолированности является контроль механизма параллельного изменения данных.
Долговечность. Долговечность подразумевает, что если транзакция была подтверждена (COMMIT), произошедшие в рамках транзакции изменения сохранятся независимо от того, что может встать у них на пути (например, потеря питания, сбой или ошибки любого рода).
Вопрос 24. Что вы подразумеваете под «триггером» в SQL?
Триггер в SQL — особый тип хранимых процедур, которые предназначены для автоматического выполнения в момент или после изменения данных. Это позволяет вам выполнить пакет кода, когда вставка, обновление или любой другой запрос выполняется к определенной таблице.
Вопрос 25. Какие операторы доступны в SQL?
В SQL доступно три типа оператора, а именно:
- Арифметические Операторы
- Логические Операторы
- Операторы сравнения
Вопрос 26. Совпадают ли значения NULL со значениями нуля или пробела?
Значение NULL вовсе не равно нулю или пробелу. Значение NULL представляет значение, которое недоступно, неизвестно, присвоено или неприменимо, тогда как ноль — это число, а пробел — символ.
Вопрос 27. В чем разница между перекрестным (cross join) и естественным (natural join) соединением?
Перекрестное соединение создает перекрестное или декартово произведение двух таблиц, тогда как естественное соединение основано на всех столбцах, имеющих одинаковое имя и типы данных в обеих таблицах.
Вопрос 28. Что такое подзапрос в SQL?
Подзапрос — это запрос внутри другого запроса, в котором определен запрос для извлечения данных или информации из базы данных. В подзапросе внешний запрос называется основным запросом, тогда как внутренний запрос называется подзапросом. Подзапросы всегда выполняются первыми, а результат подзапроса передается в основной запрос. Он может быть вложен в SELECT, UPDATE или любой другой запрос. Подзапрос также может использовать любые операторы сравнения, такие как >, < или =.
Вопрос 29. Какие бывают типы подзапросов?
Существует два типа подзапросов, а именно: коррелированные и некоррелированные.
- Коррелированный подзапрос: это запрос, который выбирает данные из таблицы со ссылкой на внешний запрос. Он не считается независимым запросом, поскольку ссылается на другую таблицу или столбец в таблице.
- Некоррелированный подзапрос: этот запрос является независимым запросом, в котором выходные данные подзапроса подставляются в основной запрос.
Вопрос 30. Перечислите способы получить количество записей в таблице?
Для подсчета количества записей в таблице вы можете использовать следующие команды:
SELECT * FROM table1
SELECT COUNT(*) FROM table1
SELECT rows FROM sysindexes WHERE id = OBJECT_ID(table1) AND indid < 2
Ещё 35 вопросов с ответами опубликуем в следующей части… Следите за новостями!
В третьей серии вредных советов речь пойдёт о производительности. Простые, удобные и, как кажется на первый взгляд, эффективные решения могут обернуться чудовищным падением производительности базы данных. Если при планировании архитектуры приложения вы определили производительность как один из приоритетов – остерегайтесь этих советов!
Занятие проводит преподаватель специального назначения, обладатель престижного статуса Microsoft Certified Master, Фёдор Самородов.
Дата
09.11.2020
20.11.2020
Режим обучения
ежедневно вечер
18:30 — 21:30
Открытое обучение
Очно и онлайн
Преподаватель
АверинВладимир
Анатольевич
Место обучения
“Радио”
м.Бауманская
м.Авиамоторная
В группе осталось 5 мест.
Успейте записаться на свободные места!
Дата
09.11.2020
13.11.2020
Режим обучения
ежедневно утро-день
10:00 — 17:10
Открытое обучение
Только онлайн!
Преподаватель
БойцовПетр
Николаевич
Место обучения
“Радио”
м.Бауманская
м.Авиамоторная
Очная группа укомплектована, но Вы можете пройти этот курс онлайн
Дата
09.11.2020
13.11.2020
Режим обучения
ежедневно утро-день
10:00 — 17:10
Открытое обучение
Только онлайн!
Преподаватель
БойцовПетр
Николаевич
Место обучения
“Радио”
м.Бауманская
м.Авиамоторная
Очная группа укомплектована, но Вы можете пройти этот курс онлайн
Дата
14.11.2020
12.12.2020
Режим обучения
суббота утро-день
10:00 — 17:10
Открытое обучение
Очно и онлайн
Преподаватель
ЧерновДмитрий
Михайлович
Место обучения
“Радио”
м.Бауманская
м.Авиамоторная
В группе осталось 4 места.
Успейте записаться на свободные места!
Дата
30.11.2020
02.12.2020
Режим обучения
ежедневно утро-день
10:00 — 17:10
Открытое обучение
Очно и онлайн
Преподаватель
СамородовФедор
Анатольевич
Место обучения
“Стилобат”
м.Бауманская
Дата
30.11.2020
04.12.2020
Режим обучения
ежедневно утро-день
10:00 — 17:10
Открытое обучение
Очно и онлайн
Преподаватель
СамородовФедор
Анатольевич
Место обучения
“Стилобат”
м.Бауманская
Дата
14.12.2020
18.12.2020
Режим обучения
ежедневно утро-день
10:00 — 17:10
Открытое обучение
Очно и онлайн
Преподаватель
КораблинАлександр
Игоревич
Место обучения
“Радио”
м.Бауманская
м.Авиамоторная
* Данная скидка действительна при заказе и оплате онлайн обучения только сегодня. Запишитесь прямо сейчас со скидкой!