Реляционные базы и SQL
Реляционные базы данных
В базах данных хранится упорядоченная информация, но она имеет разное представление для разных задач. Одна из самых распространенных моделей обработки и хранения в виде таблиц со столбцами и строками. Такой тип баз данных называется реляционные.
Реляционных баз данных существует достаточно много. Самые распространенные PostgreSQL, Oracle, MySQL. Рынок таких решений существует уже достаточно давно, поэтому базы данных часто повторяют функции друг друга, и так же обладают уникальными свойствами.
Какая база лучшая?
Выбрать самую лучшую достаточно сложно, потому что не бывает инструмента, который бы подошел ко всем ситуациям. Но для разработки веб сайтов я рекомендую выбирать PostgreSQL. У нее высокая производительность, хорошая надежность и она активно развивается. Как у каждого хорошего инструмента у нее есть глубина, и чем больше вы будете ее изучать тем более универсальным будет ваш инструмент.
В обучении мы будем использовать базу данных SQLite. Это одна из моих любимых технологий, с которыми мне приходится часто работать. База данных SQLite относится к встроенным базам. Это значит, что для ее работы не нужно запускать отдельную программу.
Она уже доступна в стандартной библиотеке Python, то есть для работы с ней вам не нужно будет устанавливать дополнительные пакеты. У базы данных есть клиент командной строки и графические клиенты. И есть поддержка для очень многих языков программирования. А лицензия максимально открытая и не накладывает никаких ограничений на использование.
Слоган SQLite: Small. Fast. Reliable. Choose any three.
(Маленькая. Быстрая. Надежная. Выберите любые три.)
Движок базы очень миниатюрный, но обладает достаточно большим набором возможностей. Все это сделало SQLite самой распространенной базой в мире по количеству установок. Она используется очень многими проектами: встроена во все смартфоны, браузеры, есть во всех операционных системах (клиент командной строки возможно надо установить отдельно).
Язык запросов SQL
Вы уже обратили внимание, что название многих баз включает сокращение SQL. Давайте разберемся что это за буквы. Для начала определение:
Википедия: SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
SQL — это универсальный язык написания запросов, который позволяет обращаться к базе данных и производить различные действия с хранимыми данными.
Иногда SQL расшифровывают как Simple Query Language — простой язык запросов. Это хороший пример юмора программистов, потому что SQL это одна из самых сложных технологий, с которыми многим приходится работать каждый день.
Пример запроса:
SELECT
username,
email
FROM
Friend_List
WHERE
city='London';
Если прочитать этот запрос как текст, то уже можно приблизительно понять, о чем идет речь. Давайте просто переведу каждое слово:
ВЫБРАТЬ
имя пользователя
email
ИЗ
Список_друзей
ГДЕ
город равен Лондон
Мы не будем заниматься таким переводом других запросов, но этим примером хотелось показать, что SQL пишется людьми. Это язык взаимодействия прежде всего пользователя и системы. И программисту приходится писать и читать такие запросы.
Для чего нужен SQL. Изначально он создавался для совершения таких операций:
- создание в базе данных новой таблицы
- модификация таблицы
- удаление таблиц
- добавление записи в таблицу в базе данных
- изменение записи в таблице
- удаление записи из таблицы
- получение записей из таблицы или таблиц
Как видите в основном задачи SQL — это создать место для хранения (данные хранятся в табличной форме), потом положить в этом место данные, если надо модифицировать. И основное: читать или получать уже хранимые данные.
Со временем для SQL появился стандарт, чтобы унифицировать работу с разными реляционными СУБД. А потом стандарт 10 раз пересматривался и если что-то не получалось в него добавить, то производители баз создавали свои диалекты.
Поэтому конкретный SQL запрос не всегда будет работать с любой базой, но общие принципы остаются вне зависимости от того какую конкретную реализацию вы используете.