Как начинающим освоить MySQL / Sandbox / Habr
Каждый, кто поставил перед собой цель освоить веб-технологии рано или поздно нужно будет освоить язык SQL — язык структурированных запросов, применяемый для создания и управления данными в реляционных базах данных. Если говорить о современном веб-приложении, то сегодня практически каждое приложение взаимодействует с СУБД — система управления базой данных.Самое популярное СУБД для работы с веб-приложениями — MySQL. Сегодня практически все веб-сайты, которые работают в сети взаимодействуют с СУБД MySQL. Конечно MySQL не единственное СУБД, есть ряд других, но сложилось так, что самое популярное. Поэтому разработчикам веб-приложений необходимо освоить СУБД MySQL и язык SQL.
Не нужно покупать или качать десятки книг, все равно вы их сразу не прочтете, а если уж осилите, то огромного результата не даст. Необходим результат, его мы можем получить только когда будем, что-то делать, а не читать постоянно книги. Читать книги — хорошо, но еще лучше практиковаться, только так мы получаем опыт и навыки.
Выберите, одну толковую книгу по изучении MySQL. Сосредоточьтесь на этой книге, прочтите ее, закрепите каждую главу на практике. Если, что-то слабо усвоилось, практикуйтесь, не бойтесь вернуться и еще несколько раз прочитать и сделать. Рекомендую прочесть книгу Алана Бьюли «Изучаем SQL», лично мне эта книга очень помогла. Книга написана простым языком, для простых людей в книге доступным языком описывается как установить сервер MySQL, как работают операторы, фильтры и т.д. Подробнее об этой книге читайте здесь.
Если нету еще навыков работы с MySQL, нету понимания типов данных и операторов SQL, не рекомендую начинать осваивать в phpMyAdmin. Это не значить, что phpMyAdmin — плохо. Главная задача освоить SQL и MySQL — лучше делать через консольное приложение.
Скачайте с официального сайта бесплатно сервер MySQL, установите его себе на компьютер и работайте. Например: если взять книгу Алана Бьюли «Изучаем SQL» в ней подробный курс SQL и работа с MySQL, все примеры работы через консольное приложение.
Читайте, только одну книгу, не пытайтесь хватать все и сразу, так дело не пойдет, потратите время так ничему и не научитесь. Важно один раз освоить основы и дальше только нужна будет практика, практика и документация MySQL, которая находиться на официальном сайте.
Ваши инструменты: выбранная книга, сервер MySQL, практика, практика и еще раз практика.
Имея опыт работы через консольное приложение, разработчику не составить сложности работать в том же самом phpMyAdmin, ему не составит сложности писать все команды SQL. Это нужно и важно, потому, что управлять и создавать базу данных можно в phpMyAdmin толком и не зная SQL. Но помните SQL — запросы писать нужно будет при разработке веб-приложений, от этого не уйти.
Именно по этой причине я рекомендую начинать обучение SQL и MySQL на консольном приложении.
Руководство по проектированию реляционных баз данных (1-3 часть из 15) [перевод] / Habr
Перевод цикла из 15 статей о проектировании баз данных.Информация предназначена для новичков.
Помогло мне. Возможно, что поможет еще кому-то восполнить пробелы.
Руководство по проектированию баз данных.
1. Вступление.
Если вы собираетесь создавать собственные базы данных, то неплохо было бы придерживаться правил проектирования баз данных, так как это обеспечит долговременную целостность и простоту обслуживания ваших данных. Данное руководство расскажет вам что представляют из себя базы данных и как спроектировать базу данных, которая подчиняется правилам проектирования реляционных баз данных.
Базы данных – это программы, которые позволяют сохранять и получать большие объемы связанной информации. Базы данных состоят из таблиц, которые содержат информацию. Когда вы создаете базу данных необходимо подумать о том, какие таблицы вам нужно создать и какие связи существуют между информацией в таблицах. Иначе говоря, вам нужно подумать о проекте вашей базы данных.
Структурированный язык запросов (SQL).
База данных создается для хранения в ней информации и получения этой информации при необходимости. Это значит, что мы должны иметь возможность помещать, вставлять (INSERT) информацию в базу данных и мы хотим иметь возможность делать выборку информации из базы данных (SELECT).
Язык запросов к базам данных был придуман для этих целей и был назван Структурированный язык запросов или SQL. Операции вставки данных (INSERT) и их выборки (SELECT) – части этого самого языка. Ниже приведен пример запроса на выборку данных и его результат.
SQL – большая тема для повествования и его рассмотрение выходит за рамки данного руководства. Данная статья строго сфокусирована на изложении процесса проектирования баз данных. Позднее, в отдельном руководстве, я расскажу об основах SQL.
Реляционная модель.
В этом руководстве я покажу вам как создавать реляционную модель данных. Реляционная модель – это модель, которая описывает как организовать данные в таблицах и как определить связи между этими таблицами.
Правила реляционной модели диктуют, как информация должна быть организована в таблицах и как таблицы связаны друг с другом. В конечном счете результат можно предоставить в виде диаграммы базы данных или, если точнее, диаграммы «сущность-связь», как на рисунке (Пример взят из MySQL Workbench).
Примеры.
В качестве примеров в руководстве я использовал ряд приложений.
РСУБД.
РСУБД, которую я использовал для создания таблиц примеров – MySQL. MySQL – наиболее популярная РСУБД и она бесплатна.
Утилита для администрирования БД.
После установки MySQL вы получаете только интерфейс командной строки для взаимодействия с MySQL. Лично я предпочитаю графический интерфейс для управления моими базами данных. Я часто использую SQLyog. Это бесплатная утилита с графическим интерфейсом. Изображения таблиц в данном руководстве взяты оттуда.
Визуальное моделирование.
Существует отличное бесплатное приложение MySQL Workbench. Оно позволяет спроектировать вашу базу данных графически. Изображения диаграмм в руководстве сделаны в этой программе.
Проектирование независимо от РСУБД.
Важно знать, что хотя в данном руководстве и приведены примеры для MySQL, проектирование баз данных независимо от РСУБД. Это значит, что информация применима к реляционным базам данных в общем, не только к MySQL. Вы можете применить знания из этого руководства к любым реляционным базам данных, подобным Mysql, Postgresql, Microsoft Access, Microsoft Sql or Oracle.
В следующей части я коротко расскажу об эволюции баз данных. Вы узнаете откуда взялись базы данных и реляционная модель данных.
2. История.
В 70-х – 80-х годах, когда компьютерные ученые все еще носили коричневые смокинги и очки с большими, квадратными оправами, данные хранились бесструктурно в файлах, которые представляли собой текстовый документ с данными, разделенными (обычно) запятыми или табуляциями.
Так выглядели профессионалы в сфере информационных технологий в 70-е. (Слева внизу находится Билл Гейтс).
Текстовые файлы и сегодня все еще используются для хранения малых объемов простой информации. Comma-Separated Values (CSV) — значения, разделённые запятыми, очень популярны и широко поддерживаются сегодня различным программным обеспечением и операционными системами. Microsoft Excel – один из примеров программ, которые могут работать с CSV–файлами. Данные, сохраненные в таком файле могут быть считаны компьютерной программой.
Выше приведен пример того, как такой файл мог бы выглядеть. Программа, производящая чтение данного файла, должна быть уведомлена о том, что данные разделены запятыми. Если программа хочет выбрать и вывести категорию, в которой находится урок ‘Database Design Tutorial’, то она должна строчка за строчкой производить чтение до тех пор, пока не будут найдены слова
Таблицы баз данных.
Чтение файла строчка за строчкой не является очень эффективным. В реляционной базе данных данные хранятся в таблицах. Таблица ниже содержит те же самые данные, что и файл. Каждая строка или “запись” содержит один урок. Каждый столбец содержит какое-то свойство урока. В данном случае это заголовок (title) и его категория (category).
Компьютерная программа могла бы осуществить поиск в столбце tutorial_id данной таблицы по специфическому идентификатору tutorial_id для того, чтобы быстро найти соответствующие ему заголовок и категорию. Это намного быстрее, чем поиск по файлу строка за строкой, подобно тому, как это делает программа в текстовом файле.
Современные реляционные базы данных созданы так, чтобы позволять делать выборку данных из специфических строк, столбцов и множественных таблиц, за раз, очень быстро.
История реляционной модели.
Реляционная модель баз данных была изобретена в 70-х Эдгаром Коддом (Ted Codd), британским ученым. Он хотел преодолеть недостатки сетевой модели баз данных и иерархической модели. И он очень в этом преуспел. Реляционная модель баз данных сегодня всеобще принята и считается мощной моделью для эффективной организации данных.
Сегодня доступен широкий выбор систем управления базами данных: от небольших десктопных приложений до многофункциональных серверных систем с высокооптимизированными методами поиска. Вот некоторые из наиболее известных систем управления реляционными базами данных (РСУБД):
— Oracle – используется преимущественно для профессиональных, больших приложений.
— Microsoft SQL server – РСУБД компании Microsoft. Доступна только для операционной системы Windows.
— Mysql – очень популярная РСУБД с открытым исходным кодом. Широко используется как профессионалами, так и новичками. Что еще нужно?! Она бесплатна.
— Microsoft Access – РСУБД, которая используется в офисе и дома. На самом деле – это больше, чем просто база данных. MS Access позволяет создавать базы данных с пользовательским интерфейсом.
В следующей части я расскажу кое-что о характеристиках реляционных баз данных.
3. Характеристики реляционных баз данных.
Реляционные базы данных разработаны для быстрого сохранения и получения больших объемов информации. Ниже приведены некоторые характеристики реляционных баз данных и реляционной модели данных.
Использование ключей.
Каждая строка данных в таблице идентифицируется уникальным “ключом”, который называется первичным ключом. Зачастую, первичный ключ это автоматически увеличиваемое (автоинкрементное) число (1,2,3,4 и т.д). Данные в различных таблицах могут быть связаны вместе при использовании ключей. Значения первичного ключа одной таблицы могут быть добавлены в строки (записи) другой таблицы, тем самым, связывая эти записи вместе. Используя структурированный язык запросов (SQL), данные из разных таблиц, которые связаны ключом, могут быть выбраны за один раз. Для примера вы можете создать запрос, который выберет все заказы из таблицы заказов (orders), которые принадлежат пользователю с идентификатором (id) 3 (Mike) из таблицы пользователей (users). О ключах мы поговорим далее, в следующих частях.
Столбец id в данной таблице является первичным ключом. Каждая запись имеет уникальный первичный ключ, часто число. Столбец usergroup (группы пользователей) является внешним ключом. Судя по ее названию, она видимо ссылается на таблицу, которая содержит группы пользователей.
Отсутствие избыточности данных.
В проекте базы данных, которая создана с учетом правил реляционной модели данных, каждый кусочек информации, например, имя пользователя, хранится только в одном месте. Это позволяет устранить необходимость работы с данными в нескольких местах. Дублирование данных называется избыточностью данных и этого следует избегать в хорошем проекте базы данных.
Ограничение ввода.
Когда вы создаете таблицу базы данных вы предоставляете тип данных для каждого столбца. К примеру, varchar – это тип данных для небольших фрагментов текста с максимальным количеством знаков, равным 255, а int – это числа.
Помимо типов данных РСУБД позволяет вам еще больше ограничить возможные для ввода данные. Например, ограничить длину или принудительно указать на уникальность значения записей в данном столбце. Последнее ограничение часто используется для полей, которые содержат регистрационные имена пользователей (логины), или адреса электронной почты.
Эти ограничения дают вам контроль над целостностью ваших данных и предотвращают ситуации, подобные следующим:
— ввод адреса (текста) в поле, в котором вы ожидаете увидеть число
— ввод индекса региона с длинной этого самого индекса в сотню символов
— создание пользователей с одним и тем же именем
— создание пользователей с одним и тем же адресом электронной почты
— ввод веса (числа) в поле дня рождения (дата)
Поддержание целостности данных.
Настраивая свойства полей, связывая таблицы между собой и настраивая ограничения, вы можете увеличить надежность ваших данных.
Назначение прав.
Большинство РСУБД предлагают настройку прав доступа, которая позволяет назначать определенные права определенным пользователям. Некоторые действия, которые могут быть позволены или запрещены пользователю: SELECT (выборка), INSERT (вставка), DELETE (удаление), ALTER (изменение), CREATE (создание) и т.д. Это операции, которые могут быть выполнены с помощью структурированного языка запросов (SQL).
Структурированный язык запросов (SQL).
Для того, чтобы выполнять определенные операции над базой данных, такие, как сохранение данных, их выборка, изменение, используется структурированный язык запросов (SQL). SQL относительно легок для понимания и позволяет в т.ч. и уложненные выборки, например, выборка связанных данных из нескольких таблиц с помощью оператора SQL JOIN. Как и упоминалось ранее, SQL в данном руководстве обсуждаться не будет. Я сосредоточусь на проектировании баз данных.
Переносимость.
Реляционная модель данных стандартна. Следуя правилам реляционной модели данных вы можете быть уверены, что ваши данные могут быть перенесены в другую РСУБД относительно просто.
Как говорилось ранее, проектирование базы данных – это вопрос идентификации данных, их связи и помещение результатов решения данного вопроса на бумагу (или в компьютерную программу). Проектирование базы данных независимо от РСУБД, которую вы собираетесь использовать для ее создания.
В следующей части подробнее рассмотрим первичные ключи.
Видеокурс по работе с MySQL
В этом цикле вы познакомитесь с запросами в MySQL. С каждым видео вы будете больше узнавать какие команды существуют в этой СУБД, когда и как их использовать.
В первом ролике курса рассматривается создание и удаление баз данных в MySQL. Если вы давно хотели начать работать с MySQL, то именно это видео поможет вам начать.
Теперь, когда вы научились некоторым манипуляциям с MySQL, вам, очевидно, захочется научиться создавать и редактировать таблицы в чем вам поможет SQL.
Первые шаги сделаны, вы создали свою базу данных, а также таблицы в ней. Пришло время научиться их изменять. Оператор ALTER TABLE – тема этого видео.
Создание индексов, уникальных значений, внешних и первичных ключей – все то, чему вы научитесь из следующего урока цикла.
Вы научились созданию БД, таблиц и различных значений, пора с ними поработать. Поэтому этот урок посвящен добавлению, удалению, а также изменению записей в таблицах MySQL
Не знаете, как получить определенные данные из БД, оператор SELECT – ваш новый друг. И именно ему посвящено очередное видео.
Вы получили нужные данные, но теперь их необходимо упорядочить? В этом вам помогут параметры оператора SELECT — GROUP BY и HAVING.
Если вы хотите что-то найти в своей БД, то сделать это помогут знания, которые вы получите после просмотра этого видео. Темы серии: полнотекстовый поиск.
Агрегатные функции позволяют выполнять вычисление на наборе значений и возвращают одиночное значение. Теперь вы узнаете, как они устроены в MySQL.
Благодаря этому серии курса вы научитесь использовать оператор JOIN и расширите набор своих инструментов в MySQL.
Теперь вы будете знать, что такое «виртуальная таблица» и для чего она нужна. View – новая тема, которую вы изучите.
Хранимые процедуры и функции – тема для очередного видео о запросах в MySQL.
Если вы хотели понять, как работает транзакция, то это здесь вам помогут с этим разобраться.
Здесь будут рассмотрены примеры создания пользователей, способы управления их привилегиями.
NoSQL базы данных: работаем с данными правильно
Руководство по SQLite: настраиваем и учимся работать
Подборка материалов для изучения баз данных и SQL
Подборка книг, видеокурсов и онлайн-ресурсов для изучения баз данных, основ реляционной теории и языка SQL.
Эта книга — прекрасный выбор для тех, кто стоит в начале тернистого пути изучения SQL. Она не только позволит приобрести необходимую базу начальных знаний, но и расскажет о наиболее популярных тонкостях и мощных средствах языка, которыми пользуются опытные программисты.
Многие пособия, посвященные базам данных, реляционной теории и языку SQL, переполнены скучным изложением теоретических основ. Эта книга является приятным исключением благодаря своему легкому, живому стилю. Автор мастерски преподносит читателю информацию об SQL-выражениях и блоках, типах условий, join-ах, подзапросах и многом другом.
Для закрепления полученных знаний на практике, автор создает учебную базу MySQL и приводит множество практических примеров запросов, охватывающих весь изложенный теоретический материал.
В книге идет речь о версии языка ANSI SQL-92 (SQL2). Подробно рассказывается о способах применения языка запросов для решения соответствующих классов задач по выборке и модификации данных и по работе с объектами структуры базы данных. Все примеры подробно объясняются.
Особое внимание в этом издании уделено различиям диалектов SQL в реализации наиболее распространенных СУБД: MySQL, Oracle, MS SQL Server и PostgreSQL.
Книга предназначена всем, кто желает самостоятельно изучить язык SQL или усовершенствовать свои знания по этой теме.
Данное издание предназначено для тех, кто уже имеет некоторые знания SQL и хочет усовершенствовать свои навыки в этой области. Также оно будет весьма полезно и экспертам в сфере баз данных, так как автор предлагает примеры решения задач в разных СУБД: DB2, Oracle, PostgreSQL, MySQL и SQL Server.
Книга поможет научиться использовать SQL для решения более широкого круга задач: от операций внутри БД до извлечения данных и передачи их по сети в приложения.
Вы узнаете, как применять оконные функции и специальные операторы, а также расширенные методы работы с хранилищами данных: создание гистограмм, резюмирование данных в блоки, выполнение агрегации скользящего диапазона значений, формирование текущих сумм и подсумм. Вы сможете разворачивать строки в столбцы и наоборот, упрощать вычисления внутри строки и выполнять двойное разворачивание результирующего множества, выполнять обход строки, что позволяет использовать SQL для синтаксического разбора строки на символы, слова или элементы строки с разделителями. Приемы, предлагаемые автором, позволят оптимизировать код ваших приложений и откроют перед вами новые возможности языка SQL.
Книга уникальна тем, что в каждой главе приводится сравнение реализаций тех или иных запросов на диалектах трех ведущих СУБД. Благодаря этому она представляет собой исчерпывающий и практичный справочник по языку SQL для разработчиков от новичков до гуру, своего рода настольное пособие.
В издании охватываются темы от самых основ до транзакций и блокировок, функций и средств защиты баз данных.
В конце представлено несколько дополнительных тем: интеграция SQL в XML, бизнес-аналитика OLAP и многое другое.
В книге описаны большинство из современных баз данных с открытым исходным кодом: Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL и Riak. Для каждой базы приведены примеры работы с реальными данными, демонстрирующие основные идеи и сильные стороны.
Эта книга прольет свет на сильные и слабые стороны каждой из семи баз данных и научит вас выбирать ту, которая лучше отвечает требованиям.
Справочное пособие по настройке и масштабированию PostgreSQL. В книге исследуются вопросы по настройке производительности PostgreSQL, репликации и кластеризации. Изобилие реальных примеров позволит как начинающим, так и опытным разработчикам быстро разобраться с особенностями масштабирования PostgreSQL для своих приложений.
Для начинающих:
Для продвинутых:
Для мастеров:
Англоязычный ресурс для интерактивного изучения основ SQL. Курс разделен на 19 тематических уроков, содержащих теоретическую часть и набор упражнений, которые можно выполнять прямо на странице урока в специально предназначенной для этого интерактивной форме.
Еще один полезный ресурс для программистов с достаточным уровнем английского. Представляет собой охватывающий большое количество тем справочник с множеством примеров и упражнений.
Русскоязычный сайт с огромным количеством интерактивных упражнений для оттачивания навыков в написании операторов манипуляции данными языка SQL.
Упражнения начального уровня доступны без регистрации, для выполнения остальных нужно будет зарегистрироваться (регистрация абсолютно бесплатна).
По результатам тестирования на сайте можно заказать сертификат «SQL Data Manipulation Language Specialist», подтверждающий вашу квалификацию. Качество сертификата поддерживается периодической заменой задач и повышением сертификационных требований.
Курс введения в базы данных знакомит слушателей с историей создания систем обработки структурированных данных, подходами к обработке информации, развитием моделей данных и систем управления данными.
Важную часть курса составляет рассмотрение основных этапов проектирования реляционных баз данных, а также аномалий структурированных данных.
5 сайтов для оттачивания навыков написания SQL-запросов
Видеокурс по работе с MySQL
Как изучить язык баз данных SQL? — Хабр Q&A
К сожалению, чтобы Вам что-то посоветовать — необходимо узнать Ваш личный «фундамент». Хоть указанная Вами книга и будет полезной (даже с учетом того, что она писалась для MySQL версии 4.х, фундаментально как в СУБД, так и в SQL и в конкретном синтаксисе MySQL последнее, наверно, десятилетие, ничего не менялось), я бы посоветовал следующий алгоритм обучения:1) Знакомство с основами реляционной алгебры, нормальными формами и реляционной моделью. Без фанатизма, прочтение и осознание статей даже на Википедии хватит за глаза.
2) Знакомство с спецификацией SQL2008. Опять же, без фанатизма. В любом случае, работать Вы будете впоследствии с определенным диалектом языка.
3) Выбор диалекта языка. Подбор литературы (практически любой, за исключением книг из серии «{0} для чайников» и «100 и одно решение для {0}»). На этом этапе важно определиться также с инструментарием, который Вы будете использовать в дальнейшем. Для начала подойдет любой онлайн интерпретатор SQL кода, к примеру sqlfiddle. Но по мере изучения Вам понадобятся более сложные инструменты.
4) Знакомство с UML. Точнее, если по минимуму, с той частью, которая затрагивает прототипирование БД. SQL и СУБД — это инструменты, которые позволяют автоматизировать процессы бизнес логики. UML позволяет эти процессы описать и на основе этих процессов создать прототип схемы БД, от которого уже можно идти к конкретной реализации.
Итак. Четыре базовых шага выполнены. Дальше все просто, перевариваете информацию и занимаетесь практикой от простого к сложному (в комментариях уже указывали вполне годные наборы задачек). Попутно узнаете особенности программной реализации выбранной Вами СУБД. И внимательно читаете документацию от разработчика. На примере SQLite, у них подробно разобрана семантика запросов: SQLite CREATE. Под MySQL найдете сами.
Теперь поясню, почему все четыре шага важны.
1) Без базовых фундаментальных знаний вы просто не поймете, почему, к примеру, в ячейке столбца номера нельзя указывать два номера телефона, или как работают ограничения на целостность данных.
2) Хоть диалекты SQL и отличаются от стандарта SQL:2008, следует понимать, что знание стандарта позволит Вам в случае необходимости переключиться с одной СУБД на другую. Также, хорошая реляционная SQL СУБД должна быть совместима с этим стандартом априори.
3) Тут на Ваш вкус. Посмотрите изложение автора перед покупкой, посмотрите списки того или иного программного обеспечения. Но факт остается фактом, что прочтение только стандартов, мануалов и официальной документации — путь явно не для всех. Кому-то просто необходимо «художественное» изложение, да и просто из книг можно почерпнуть реальные примеры из опыта автора.
4) Надо понимать, что реляционные СУБД всего лишь инструмент для хранения и обработки данных, обеспечивающий определенные бизнес-процессы определенной предметной области. И под бизнес-процессами следует понимать не как какую-то эфемерную для простого человека вещь, а то, что закладывается под этим словом в оригинальном языке, т.е. совокупность процессов\действий, направленных на создание продукта\предоставление услуги. А средства UML позволяют все это описать в стандартизированной графической форме. Чтобы знать SQL не надо знать UML, не надо знать, что такое и, к примеру, ЖЦ программного продукта. Но со временем, если Вы захотите расти дальше, Вам нужен будет инструмент прототипирования. Также, как если вы дорастете до архитектора БД, вам нужно будет представление о том, как эти БД проектировать, начиная с описания предметной области и заканчивая организационной точкой зрения. Стандарты ГОСТ 34.601-90 и ISO/IEC 12207:2008.
Я, как и многие, начинал с какого-то полу прочитанного учебника и примеров из сети. Сейчас я понимаю, что просто потратил время практически впустую. Как ни странно, хоть и принято ругать наше образование, но список курсов для специальностей «ПИ» подобран не просто так. Помимо самого языка следует знать математический «бэкенд» и как его использовать для реализации задач предметной области. Я отношусь к SQL потребительски, это не мой основной язык, но сейчас я понимаю, что если бы уделил ему больше внимания не как языку, а, в первую очередь, как к одному из инструментов СУБД, работающих на основе реляционной алгебры для обеспечения бизнес-процессов, я бы избежал кучу потерянного времени, костылей и ошибок. Надеюсь, мой ответ будет Вам полезен.