SQL "для чайников": что нужно знать начинающим? Видео курс и бесплатные уроки по SQL и реляционным базам данных для начинающих и не только
Представляю Вашему вниманию вольный перевод статьи SQL for Beginners
Все больше современных веб-приложений взаимодействуют с базами данных, обычно используя язык SQL . К счастью для нас, этот язык довольно прост в изучении. В этой статье мы начнем изучение основ SQL-запросов и их взаимодействие с базой данных MySQL .
Что вам нужно
SQL (структурированный язык запросов) - язык разработанный для взаимодействия с реляционными системами управления базами данных (СУБД), таких как MySQL, Oracle, Sqlite и другими. Для выполнения SQL-запросов из этой статьи, я полагаю, что у вас установлен MySQL . Так же рекомендую использовать phpMyAdmin как визуальное средство отображения для MySQL .
Следующие приложения позволят легко установить MySQL и phpMyAdmin на ваш компьютер:
- WAMP для Windows
- MAMP для Mac
Приступим к выполнению запросов в командной строке. WAMP уже содержит ее в консоли MySQL . Для MAMP , возможно потребуется прочитать вот это.
CREATE DATABASE: Создание базы данных
Наш самый первый запрос. Мы создадим базу данных, с которой будем работать.
Первым делом откройте консоль MySQL и залогинтесь. Для WAMP , по-умолчанию, используется пустой пароль. Для MAMP пароль должен быть "root".
После входа напечатайте вот этот запрос и нажмите Enter :
CREATE DATABASE my_first_db;
Обратите внимание, точка с запятой (;) добавляется в конце запроса, так же как в конце строки в коде.
Так же, ключевые слова CREATE DATABASE нечувствительны к регистру, как и все ключевые слова в SQL . Но мы будем писать их в верхнем регистре для улучшения читаемости.
На заметку: набор символов и порядок сопоставления
Если вы хотите установить набор символов и порядок сопоставления по-умолчанию, используйте подобный запрос:
CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Вы найдете список поддерживаемых наборов символов и сопоставлений в MySQL .
SHOW DATABASES: Список всех баз данных
Этот запрос используется для отображения всех баз данных.
DROP DATABASE: Удалить базу данных
С помощью этого запроса вы можете удалить существующую базу данных.
Будьте осторожны с этим запросом, потому что он не выводит никаких предупреждений. Если у вас есть таблицы и данные в базе данных, запрос удалит их все в одно мгновение.
С технической точки зрения это не запрос. Это "оператор" и не требует точки с запятой в конце.
Он сообщает MySQL , что нужно выбрать базу данных по-умолчанию и работать с ней до конца сессии. Теперь мы готовы создать таблицы и остальное в этой базе данных.
Что такое таблица базы данных?
Вы можете думать о таблице в базе данных как о обычной таблице или как о csv-файле, который имеет структурированные данные.
Как в этом примере, в таблице есть имена строк и столбцы с данными. Используя SQL-запросы мы можем создать эту таблицу. Еще мы можем добавлять, считывать, изменять и удалять данные.
CREATE TABLE: Создать таблицу
Этим запросом мы можем создать таблицу в базе данных. К сожалению документация по MySQL не очень дружелюбна к новым пользователям. Структура этого запроса может быть очень сложной, но мы начнем с простого.
Следующий запрос создает таблицу с двумя столбцами.
CREATE TABLE users (username VARCHAR(20), create_date DATE);
Обратите внимание, мы можем записать запрос на нескольких строках и использовать Tab для отступа.
С первой строкой все просто. Мы создаем таблицу с именем users . Далее, в скобках, перечисляются столбцы таблицы через запятую. После каждого имени столбца идет тип данных, например, VARCHAR или DATE .
VARCHAR(20) означает, что столбец строкового типа и может быть не более 20 символов в длину. DATE - тип данных предназначенный для хранения дат в формате: "YYYY-MM-DD".
Первичный ключ
Перед тем как выполним этот запрос, мы должны вставить столбец user_id , который будет первичным ключом (PRIMARY KEY). Не вдаваясь в подробности, вы можете думать о первичном ключе как о способе распознать каждую строку данных в таблице.
Запрос становится таким:
CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20), create_date DATE);
INT - 32х битный целочисленный тип (числовой). AUTO_INCREMENT автоматически создает новый номер id каждый раз при добавлении строки данных. Оно не обязательно, но с ним удобнее.
Этот столбец может быть не целочисленным, хотя это самый распространенный тип данных. Столбец с первичным ключом не обязателен, но рекомендуется его использовать для улучшения производительности и архитектуры базы данных.
Давайте выполним запрос:
SHOW TABLES: Список всех таблиц
Запрос позволяет получить список всех таблиц в текущей базе данных.
EXPLAIN: Показать структуру таблицы
Используйте этот запрос для того, чтобы посмотреть структуру существующей таблицы.
В результате показаны поля (столбцы) и их свойства.
DROP TABLE: Удалить таблицу
Как и DROP DATABASES , этот запрос удаляет таблицу и ее содержимое без каких либо предупреждений.
ALTER TABLE: Изменить таблицу
Такой запрос может иметь сложную структуру , потому что может совершать множественные изменения в таблице. Посмотрим на простые примеры.
Благодаря читабельности SQL , этот запрос не нуждается в объяснении.
Удалить так же просто. Используйте запрос с осторожностью, данные удаляются без предупроеждений.
Заново добавим поле email , позже оно еще понадобится:
ALTER TABLE users ADD email VARCHAR(100) AFTER username;
Иногда вам может понадобится изменить свойства столбца, для этого не обязательно его удалять и создавать опять.
Этот запрос переименовывает поле username в user_name и изменяет его тип с VARCHAR(20) на VARCHAR(30) . Такие изменения не влияют на данные в таблице.
INSERT: Добавляем данные в таблицу
Давайте добавим записи в таблицу, используя запросы.
Как вы можете видеть, VALUES() содержит список значений, разделенный запятыми. Строковые значения заключаются в одинарные кавычки. Значения должны следовать в порядке, заданном при создании таблицы.
Обратите внимание, первое значение равно NULL для первичного ключа, поле которого мы назвали user_id . Все потому что поле отмечено как AUTO_INCREMENT и id генерируется автоматически. Первая строка данных будет иметь id равный 1. Следующая добавленная строка - 2 и т.д.
Альтернативный синтаксис
Вот другой синтаксис вставки строк.
На этот раз мы использовали ключевое слово SET вместо VALUES . Отметим несколько вещей:
- Столбец может быть опущен. Например, мы не присвоили значение полю user_id , потому что оно отмечено как AUTO_INCREMENT . Если не присвоить значение полю с типом VARCHAR , то по-умолчанию оно примет значение пустой строки (если другое значение по-умолчанию не было задано при создании таблицы).
- К каждому столбцу можно обращаться по имени. Поэтому поля могут идти в любом порядке, в отличии от предыдущего синтаксиса.
Альтернативный синтаксис номер 2
Вот еще один пример.
Как и раньше к полям можно обращаться по имени, они могут идти в любом порядке.
Используйте этот запрос для того, чтобы получить id последней вставленной строки.
NOW()
Пришло время показать вам как использовать функции MySQL в запросах.
Функция NOW() возвращает текущую дату. Используйте ее для автоматического добавления текущей даты в поле с типом DATE .
Обратите внимание, что мы получили предупреждение от MySQL , но это не так важно. Причина в том, что функция NOW() фактически возвращает информацию о времени.
Мы создали поле create_date , которое может содержать только дату, но не время, поэтому данные были усечены. Вместо NOW() мы могли бы использовать CURDATE() , которая возвращает только текущую дату, но в конечном итоге результат был бы тем же.
SELECT: Получение данных из таблицы
Очевидно, что данные которые мы записали бесполезны пока мы не можем их прочитать. На помощь приходит запрос SELECT .
Простейший пример использования запроса SELECT для чтения данных из таблицы:
Звездочка (*) означает, что мы хотим получить все столбцы таблицы. Если вам надо получить только определенные столбцы, используйте что-то вроде этого:
Чаще всего мы хотим получить только определенные строки, а не все. Например, давайте получим E-mail адрес пользователя nettuts .
Он подобен условию IF. WHERE позволяет задать условие в запросе и получить нужный результат.
Для условия равенства используется одиночный знак (=), а не двойной (==), который, возможно, вы используете в программировании.
Так же вы можете использовать другие условия:
AND и OR используются для комбинирования условий:
Обратите внимание, числовые значения не нужно заключать в кавычки.
IN()
Применяется для сравнения с несколькими значениями.
LIKE
Позволяет задавать шаблон для поиска.
Знак процента (%) используется для задания шаблона.
Условие ORDER BY
Используйте это условие, если хотите чтобы результат возвращался отсортированным:
По-умолчанию задан порядок ASC (по возрастанию). Добавьте DESC для сортировки в обратном порядке.
LIMIT … OFFSET …
Можно ограничивать количество возвращаемых строк.
LIMIT 2 берет две первых строки. LIMIT 1 OFFSET 2 берет одну строку, после первых двух. LIMIT 2, 1 означает тоже самое, только первое число это смещение, а второе - ограничивает количество строк.
UPDATE: Обновление данных в таблице
Этот запрос используется для обновления данных в таблице.
В большенстве случаев используется вместе с WHERE , для того чтобы обновить определенные строки. Если условие WHERE не задано, то изменения будут применены ко всем строкам.
Для ограничения изменяемых строк, можно использовать LIMIT .
DELETE: Удаление данных из таблицы
Как и , этот запрос часто используется совместно с условием WHERE .
TRUNCATE TABLE
Для удаления содержимого из таблицы, используйте такой запрос:
DELETE FROM users;
Для повышения производительности используйте .
Также сбрасыват счетчик поля AUTO_INCREMENT , поэтому вновь добавленные строки будут иметь id равный 1. При использовании этого не произойдет и счетчик будет дальше рости.
Экранирование строковых значений и специальные слова
Строковые значения
Некоторые символы нужно экранировть, иначе могут быть проблемы.
Обратный слэщ (\) используется для экранирования.
Это очень важно по причинам безопасности. Любые пользовательские данные, перед записью в базу данных, должны быть экранированы. В PHP используйте функцию mysql_real_escape_string() или подготовленные запросы.
Специальные слова
Поскольку в MySQL много зарезервированных слов, таких как SELECT или , во избежании противоречий, заключайте имена столбцов и таблиц в кавычки. Причем нужно использовать не обычные кавычки, а обратные (`).
Допустим, по каким то причинам, вы хотите добавить столбец с именем :
Заключение
Спасибо за прочтение статьи. Надеюсь я сумел показать вам, что язык SQL очень функционален и легок в изучении.
Структурированный Язык запросов (Structured Query Language —SQL) — это стандартный язык доступа к БД, таким как SQL Server, Oracle, MySQL, Sybase и Access. Знание SQL необходимо всем, кто хотел бы хранить и извлекать данные из БД.
Что такое SQL?
- SQL — Структурированный Язык запросов (Structured Query Language —SQL)
- SQL позволяет вам получить доступ к БД
- SQL является компьютерным языком, основанным на стандарте ANSI
- SQL может посылать запросы в БД
- SQL может извлекать данные из БД
- SQL может вносить новые записи в БД
- SQL может удалять записи из БД
- SQL может обновлять существующие записи в БД
- SQL легок в изучении
SQL — стандарт, но...
SQL — компьютерный язык, основанный на стандрате ANSI, предназначенный для доступа и управления БД. Команды SQL используются для извлечения и обновления записей в БД. SQL работает с такими системами управления БД (СУБД), как MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase и др.
К несчастью, существует множество версий языка SQL, но для соответствия стандартам ANSI они должны поддерживать основные ключевые слова (такие как SELECT - выбрать, UPDATE - обновить, DELETE - уничтожить, INSERT - вставить, WHERE - где и другие).
Заметка : Многие СУБД имеют свои команды, в дополнение к существующим стандартам SQL.
Таблицы данных SQL
БД чаще всего содержат одну или несколько таблиц. Каждая ячейка идентифицируется по названию (например, "Friends" (Друзья) или "Orders" (Заказы)). Таблицы содержат записи с данными. Ниже представлена таблица, названная "Persons" (Персоны):
Эта таблица состоит из трех строк (люди) и четырех столбцов (фамилия, имя, адрес и город).
SQL-запрос
С помощью SQL мы можем обратиться к БД и получить результат. Например, такой запрос:
SELECT LastName FROM Persons
даст нам следующий результат:
Заметка : В некоторых СУБД необходимо ставить точку с запятой после команды. Мы не будем ставить точку с запятой в наших примерах.
SQL Data Manipulation Language (DML - язык управления данными)
SQL предназначен для выполнения запросов. Кроме того в SQL входит синтаксис для обновления, вставки и уничтожения данных. Этот синтаксис вместе с командами обновления формирует язык управления данными (DML):
- SELECT - извлекает данные из таблицы БД
- UPDATE - обновляет данные в таблице БД
- DELETE - уничтожает данные в таблице БД
- INSERT INTO - вставляет новые данные в таблицу БД
SQL Data Definition Language (DDL - язык определения данных)
DDL является частью SQL, которая управляет созданием и удалением таблиц в БД, Кроме того, с помощью DDL мы можем назначать индексы (ключевые слова), налаживать взаимосвязи между таблицами и накладывать ограничения на таблицы БД.
Важнейшими командами DDL являются следующие команды:
- CREATE TABLE - создание новой таблицы
- ALTER TABLE - изменение существующей таблицы
- DROP TABLE - удаление таблицы
- CREATE INDEX - создание индекса (ключевого слова для облегчения поиска)
- DROP INDEX - удаление индекса
Говоря простым языком, sql-запросы нужны для того, чтобы заносить и обрабатывать информацию в базе данных.
База состоит из множества таблиц. Каждая строка - одна запись. Вот, к примеру, простая таблица для пользователей:
Чтобы начать работать с sql-запросами, для начала надо .
Рассмотрим самые простые запросы для начинающих.
Создание базы данных - CREATE DATABASE
CREATE DATABASE `mybase`В кавычках мы указываем имя нашей базы (кавычки не обязательны, но с ними легче работать).
Установка кодировки - SET NAMES
SET NAMES "utf-8"Установка кодировки часто помогает в избежание «кракозябр».
Создание таблицы - CREATE TABLE
Создадим таблицу, которая была представлена выше.
CREATE TABLE `mybase`.`users`(`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `login` VARCHAR(20), `password` VARCHAR(20), `regdate` DATE)
Тут не всё так сложно. Здесь мы пишем, что создаём в базе «mybase» таблицу с названием «users».
`название колонки` тип данных(количество макс. значения) атрибуты
Атрибуты указывать необязательно.
Например, тут мы создали колонку с именем «regdate» с типом данных «DATE».
`regdate` DATE
Здесь, ещё в скобках указали максимально-допустимое значение. Тип данных - символьный
`login` VARCHAR(20),
При создании столбца «id» мы написали атрибуты, рассмотрим их:
- UNSIGNED - Только положительные числа;
- NOT NULL - Ячейка не может быть пустой(обязательное заполнение);
- AUTO_INCREMENT - Автоматическое заполнения поля, начиная от 0 и +1, при создании строки;
- PRIMARY KEY - Значения поля не сможет повторяться в данным столбце ячеек, делает столбец первичным ключом;
У «id» тип данных - целочисленный.
Добавление информации в базу данных - INSERT
INSERT INTO `users` (login`,`password`,`regdate`) VALUES ("Vasya", "12345", "2015-04-22 17:38:50")В первых скобках пишем название столбцов, во вторых их значение. Важно, чтобы последовательность значений соблюдалось с последовательностью названия столбцов.
Поле «id» заполнять не нужно, оно создаётся автоматически.
Обновление информации - UPDATE
Теперь рассмотрим, как обновить данные в какой-либо строке таблицы. К примеру, поменяем пароль у конкретного пользователя.
UPDATE `users` SET `password` = "54321" WHERE `id` = "1"
Меняем значение поля «password» на новое в строке с «id» равным 1.
Если убрать «WHERE» но изменятся все строки, а не конкретная строка.
Удаление информации - DELETE
Теперь удалим эту строку, со всеми её полями.
DELETE FROM `users` WHERE `id` = "1"
Работает также как и добавление.
Выборка информации из базы данных SELECT
Для работы с информацией в базе, нужно её выбрать.
SELECT * FROM `users` WHERE `id` = "1"
Здесь мы выбрали все строки в таблице «users» (* - все поля).
А можно выбирать только конкретные поля.
SELECT `login`,`password` FROM `users` WHERE `id` = "1"
Привет, уважаемый читатель! Этой записью я открою новую рубрику на свое блоге, в которой буду публиковать записи и даже не просто записи, а видео записи. Рубрика будет называться SQL и реляционные базы данных и публиковаться в ней будут видео уроки по технологии SQL и теория реляционных баз данных, естественно, в формате видео. Сам я не люблю слово курс, поскольку считаю, что курсы преподаются в университетах, но реалии Рунета таковы, что это слово используют очень часто, буду использовать иногда его и я.
Мой видео курс представляет собой набор видео скринкастов по теме SQL и базы данных, в качестве СУБД использовалась библиотека SQLite. Скринкасты разбиты на темы, темы в свою очередь разбиты на части, каждая часть — это отдельный видео урок продолжительностью 5-15 минут, в котором мы будем разбираться с теорией баз данных или SQL командами и запросами. Но не буду тянуть кота за хвост и сразу дам вам ссылку плейлист в Ютуб: SQL и реляционные базы данных . Видео в плейлисте расположены в том порядке, в котором я бы рекомендовал их смотреть. И не забудьте подписаться на мой канал, будет еще интереснее и больше!
Для кого будут полезны видео уроки из курса SQL и реляционные базы данных для начинающих?
Данные видео уроки будут полезны начинающим веб-разработчикам и SQL разработчикам. Для их изучения в принципе не потребуется каких-либо специфических знаний, достаточно быть уверенным пользователем компьютера, уметь печатать на клавиатуре и будет совсем круто, если вы хотя бы раз в жизни написали любую программу на любом языке программирования, даже если это Хеллое Ворлд на Бейсике.
Отмечу, что эти видео уроки будут полезны не только новичкам SQL, но и более продвинутым пользователям, которые имеют определенный набор знаний по SQL и базам данных, но этот набор знаний не систематизирован и не позволяет перейти к самостоятельной работе. Хоть начинаем мы и с простых вещей, которые я стараюсь рассказать доступно и внятно, но заканчиваем мы сложным SQL запросами, хотя кого я пугаю? :)) Сложных SQL запросов не бывает, бывают объемные запросы и запросы, потребляющие много ресурсов.
Как построены эти видео уроки?
За основы этих видео уроков были взяты публикации с моего блога из рубрики , данные видео уроки имеют схожую структуру, но все-таки есть небольшие отличия. Ниже вы найдете темы, на который разбит данный курс и краткое описание того, о чем я пытаюсь рассказать.
Основы SQLite и особенности данной СУБД?
В первой теме мы поговорим про особенности СУБД SQLite, посмотрим, где используют данную библиотеку и в каких целях, а также попробуем установить и настроить SQLite на компьютер под управлением операционной системы Windows 10. За основу были взяты публикации из первой темы: .
- Выбираем СУБД и говорим про программы для работы и администрирования баз данных.
- SQLite — программа для создания базы данных при помощи языка SQL.
- Установка приложения SQLite для работы с базами данных. Настраиваем доступ к базе данных.
- Система управления базами данных SQLite или где используется эта база данных.
- Беспалтные графические программы для работы с базами данных (менеджеры баз данных).
- Управление и администрирование баз данных при помощи DBeaver.
Пробуем составлять SQL запросы и работать с базой данных SQLite
В этой теме мы попробуем написать несколько SQL запросов, познакомимся с синтаксисом языка SQL, реализованным в SQLite (в принципе синтаксис SQL в разных СУБД очень и очень похож) и знакомимся с полезными системными командами, которые есть в SQLite, которые помогут нам работать с базами данных..html
Теория реляционных баз данных
Одна из базовых тем всего видео курса. На эту тему я буду ссылаться и опираться постоянно во всех последкющих. Здесь мы познакомимся с основами баз данных и научимся проектировать архитектуру своих баз данных, мы познакомимся с такими сложными на первый взгляд терминами как нормализация, избыточность данных, аномалии и другими и дадим им человеческое объяснение..html
Язык запросов SQL
Еще одна фундаментальная тема моих видео уроков по SQL и реляционным базам данных. Здесь мы знакомимся с языком SQL, его основными понятиями, структурой и концепцией. Также мы разбираемся с терминологией, которую используют SQL разработчики и проводим параллель между языком SQL и теорией реляционных баз данных, находим отличия и сходства, так сказать..html
Типы данных в SQLite
Весь видео курс я использую СУБД SQLite, которая является особенной СУБД, со своими особенностями типизации, также хочу заметить, что СУБД, собственно, управляет данными, поэтому тема типизации данных в принципе важна и может оказаться сложной для начинающего SQL разработчика, по крайней мере, для меня, когда я знакомился с базами данных, самым сложным моментом была типизация, поскольку много нужно было запоминать..html
SQL команды опрделения данных (DML команды)
Здесь мы начнем уже плотно работать с языком SQL и познакомимся с SQL команды опрделения данных, которые позволяют работать с объектами базы данных: создавать их, удалять и модифицировать. К объектам базы данных можно отнести: саму базу данных, таблицу в базе данных, VIEW, индексы, триггеры и др. Видео уроки данной темы посвящены синтаксису SQL команд CREATE, DROP, ALTER и их использованию..html
SQL команды манипуляции данными (DML команды)
Эта тема видео уроков познакомит вас с синтаксисом (правилами написания) SQL команд манипуляции данными (DML команд), к этим командам относятся: INSERT, DELETE, UPDATE, SELECT. Соответственно, команды позволяют: вставлять и добавлять строки в таблицы, удалять строки из таблиц, модифицировать данные в таблицах и делать выборку данных..html
SQL команды управления транзакциями
Данный раздел видео курса SQL и реляционные базы данных посвящен правилам написания команд, которые позволяют управлять транзакциями, спойлер открывать не буду, лишь скажу, что эти команды по-умному называются TCL, а также стоит добавить, что более детально мы будем разбираться с транзакциями в одной из последних тем..html
Работаем с таблицами базы данных
Эта тема видео уроков дает более глубокие знания и понимание того, как язык SQL позволяет работать с таблицами базы данных, какие особенности стоит учитывать и что мы можем вообще сделать с таблицей базы данных при помощи языка SQL..html
Обеспечение целостности данных
Эта тема моих видео уроков SQL хорошо демонстрирует применение теории реляционных баз данных на практике в языке SQL. Здесь мы научимся задавать различные ограничения, для того чтобы обезопасить свои данные! Также мы рассмотрим использование ключей или ключевых атрибутов на практике и научимся делать различные виды связей между таблицами..html
SQL триггеры на примере базы данных SQLite
Индексы SQL таблиц на примере баз данных SQLite
2 комментария к записи Видео курс и бесплатные уроки по SQL и реляционным базам данных для начинающих и не только
Здравствуйте! А где видео??? Где видео уроки то??? Весь сайт перерыл, все ссылки, всю карту сайта...
Please enable JavaScript to view the