SQL запросы быстро. Часть 1 / Хабр
Введение
Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.
Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.
Практика
Введение в синтаксис будет рассмотрено на примере открытой базы данных, предназначенной специально для практики SQL. Чтобы твое обучение прошло максимально эффективно, открой ссылку ниже в новой вкладке и сразу запускай приведенные примеры, это позволит тебе лучше закрепить материал и самостоятельно поработать с синтаксисом.
Кликнуть здесь
После перехода по ссылке можно будет увидеть сам редактор запросов и вывод данных в центральной части экрана, список таблиц базы данных находится в правой части.
Структура sql-запросов
Общая структура запроса выглядит следующим образом:
SELECT ('столбцы или * для выбора всех столбцов; обязательно')
FROM ('таблица; обязательно')
WHERE ('условие/фильтрация, например, city = 'Moscow'; необязательно')
GROUP BY ('столбец, по которому хотим сгруппировать данные; необязательно')
HAVING ('условие/фильтрация на уровне сгруппированных данных; необязательно')
ORDER BY ('столбец, по которому хотим отсортировать вывод; необязательно')
Разберем структуру. Для удобства текущий изучаемый элемент в запроса выделяется CAPS’ом.
SELECT, FROM
SELECT, FROM — обязательные элементы запроса, которые определяют выбранные столбцы, их порядок и источник данных.
Выбрать все (обозначается как *) из таблицы Customers:
SELECT * FROM Customers
Выбрать столбцы CustomerID, CustomerName из таблицы Customers:
SELECT CustomerID, CustomerName FROM Customers
WHERE
WHERE — необязательный элемент запроса, который используется, когда нужно отфильтровать данные по нужному условию. Очень часто внутри элемента where используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.
Фильтрация по одному условию и одному значению:
select * from Customers
WHERE City = 'London'
Фильтрация по одному условию и нескольким значениям с применением IN (включение) или NOT IN (исключение):
select * from Customers
where City IN ('London', 'Berlin')
select * from Customers
where City NOT IN ('Madrid', 'Berlin','Bern')
Фильтрация по нескольким условиям с применением AND (выполняются все условия) или OR (выполняется хотя бы одно условие) и нескольким значениям:
select * from Customers
where Country = 'Germany' AND City not in ('Berlin', 'Aachen') AND CustomerID > 15
select * from Customers
where City in ('London', 'Berlin') OR CustomerID > 4
GROUP BY
GROUP BY — необязательный элемент запроса, с помощью которого можно задать агрегацию по нужному столбцу (например, если нужно узнать какое количество клиентов живет в каждом из городов).
При использовании GROUP BY обязательно:
- перечень столбцов, по которым делается разрез, был одинаковым внутри SELECT и внутри GROUP BY,
- агрегатные функции (SUM, AVG, COUNT, MAX, MIN) должны быть также указаны внутри SELECT с указанием столбца, к которому такая функция применяется.
Группировка количества клиентов по городу:
select City, count(CustomerID) from Customers
GROUP BY City
Группировка количества клиентов по стране и городу:
select Country, City, count(CustomerID) from Customers
GROUP BY Country, City
Группировка продаж по ID товара с разными агрегатными функциями: количество заказов с данным товаром и количество проданных штук товара:
select ProductID, COUNT(OrderID), SUM(Quantity) from OrderDetails
GROUP BY ProductID
Группировка продаж с фильтрацией исходной таблицы. В данном случае на выходе будет таблица с количеством клиентов по городам Германии:
select City, count(CustomerID) from Customers WHERE Country = 'Germany' GROUP BY City
Переименование столбца с агрегацией с помощью оператора AS. По умолчанию название столбца с агрегацией равно примененной агрегатной функции, что далее может быть не очень удобно для восприятия.
select City, count(CustomerID) AS Number_of_clients from Customers
group by City
HAVING
HAVING — необязательный элемент запроса, который отвечает за фильтрацию на уровне сгруппированных данных (по сути, WHERE, но только на уровень выше).
Фильтрация агрегированной таблицы с количеством клиентов по городам, в данном случае оставляем в выгрузке только те города, в которых не менее 5 клиентов:
select City, count(CustomerID) from Customers
group by City
HAVING count(CustomerID) >= 5
В случае с переименованным столбцом внутри HAVING можно указать как и саму агрегирующую конструкцию count(CustomerID), так и новое название столбца number_of_clients:
select City, count(CustomerID) as number_of_clients from Customers
group by City
HAVING number_of_clients >= 5
Пример запроса, содержащего WHERE и HAVING. В данном запросе сначала фильтруется исходная таблица по пользователям, рассчитывается количество клиентов по городам и остаются только те города, где количество клиентов не менее 5:
select City, count(CustomerID) as number_of_clients from Customers
WHERE CustomerName not in ('Around the Horn','Drachenblut Delikatessend')
group by City
HAVING number_of_clients >= 5
ORDER BY
ORDER BY — необязательный элемент запроса, который отвечает за сортировку таблицы.
Простой пример сортировки по одному столбцу. В данном запросе осуществляется сортировка по городу, который указал клиент:
select * from Customers
ORDER BY City
Осуществлять сортировку можно и по нескольким столбцам, в этом случае сортировка происходит по порядку указанных столбцов:
select * from Customers ORDER BY Country, City
По умолчанию сортировка происходит по возрастанию для чисел и в алфавитном порядке для текстовых значений. Если нужна обратная сортировка, то в конструкции ORDER BY после названия столбца надо добавить DESC:
select * from Customers
order by CustomerID DESC
Обратная сортировка по одному столбцу и сортировка по умолчанию по второму:
select * from Customers
order by Country DESC, City
JOIN
JOIN — необязательный элемент, используется для объединения таблиц по ключу, который присутствует в обеих таблицах. Перед ключом ставится оператор ON.
Запрос, в котором соединяем таблицы Order и Customer по ключу CustomerID, при этом перед названиям столбца ключа добавляется название таблицы через точку:
select * from Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID
Нередко может возникать ситуация, когда надо промэппить одну таблицу значениями из другой. В зависимости от задачи, могут использоваться разные типы присоединений. INNER JOIN — пересечение, RIGHT/LEFT JOIN для мэппинга одной таблицы знаениями из другой,
select * from Orders
join Customers on Orders.CustomerID = Customers.CustomerID
where Customers.CustomerID >10
Внутри всего запроса JOIN встраивается после элемента from до элемента where, пример запроса:
Другие типы JOIN’ов можно увидеть на замечательной картинке ниже:
В следующей части подробнее поговорим о типах JOIN’ов и вложенных запросах.
При возникновении вопросов/пожеланий, всегда прошу обращаться!
MySQL
Вопреки, ошибочному мнению MySQL — это не язык программирования. MySQL — это программное обеспечение, с которым могут работать множество популярных языков программирования (PHP, Java, Perl, C, C++ и другие).
Данное ПО позволяет подключаться к базе данных, отправлять
Выбор данной СУБД вполне очевиден: она поддерживается во многих языках программирования, а также выполняет все функции, которые вообще могут возлагаться на СУБД.
В данном разделе рассмотрено использование MySQL в PHP. Хотя, разумеется, MySQL можно использовать и в других языках программирования, но мы создаём Web-приложения на PHP, поэтому и рассматривать работу с базами данных будем в PHP.
Теперь о том, зачем нужен MySQL:
1) Для создания базы данных.
2) Для управления базой данных.
3) Для выборки записей из базы данных.
А уж зачем нужна база данных, думаю, очевидно: для хранения информации о пользователях, хранения информации о контенте сайта, хранения информации счётчика посещений и много-много для чего ещё. В общем, для создания личного сайта.
А познакомиться с MySQL в PHP, Вы можете в категории основы MySQL. Там весьма подробно расписаны основные аспекты использования СУБД MySQL в языке PHP.
Также необходимо понимать, что сам MySQL ничего с базой данных не делает, это не язык. Программное обеспечение MySQL использует SQL — язык запросов к базе данных. Собственно, не зная данного языка, невозможно использование MySQL. И чтобы познакомиться с этим очень простым языком, на сайте создана категория, которая так и называется — SQL. И в ней содержатся множество различных команд для создания базы данных, создания таблицы, добавлении запись в таблицы, добавления нового пользователя к базе данных, выборки записей из таблицы и так далее.
Изучив данный раздел, при условии, что Вы ознакомились с разделом HTML, CSS, JavaScript и PHP, я смело могу заявить, что Вы уже стали профессиональным Web-мастером, которому теперь осталось лишь получать опыт на практике, так как у Вас уже имеются все необходимые знания для создания 99.9%, которые Вы ежедневно видите в Интернете.
Поэтому не надо оттягивать этот последний шаг, сделайте последний рывок и, наконец, создайте свою империю в Интернете.
Полный курс по PHP и MySQL: http://srs.myrusakov.ru/php
Свежие материалы по MySQL
MySQL | Введение
Что такое MySQL. Установка сервера
Последнее обновление: 04.05.2018
MySQL представляет систему управления реляционными базами данных (СУБД). На сегодняшний день это одна из самых популярных систем управления базами данных.
Изначальным разработчиком данной СУБД была шведская компания MySQL AB. В 1995 году она выпустила первый релиз MySQL. В 2008 году компания MySQL AB была куплена компание Sun Microsystems, а в 2010 году уже компания Oracle поглотила Sun и тем самым приобрела права на торговую марку MySQL. Поэтому MySQL на сеголняшней день развивается под эгидой Oracle.
Текущей актуальной версией СУДБ является версия 8.0, которая вышла в январе 2018 года.
MySQL обладает кроссплатформенностью, имеются дистрибутивы под самые различные ОС, в том числе наиболее популярные версии Linux, Windows, MacOS.
Официальный сайт проекта: https://www.mysql.com/.
Установка MySQL
Для установки MySQL загрузим дистрибутив по адресу http://dev.mysql.com/downloads/mysql/ и выберем нужную версию.
После выбора версии нажмем на кнопку «Go to Download Page», и нас перенаправит на страницу загрузки дистрибутива. Здесь можно выбрать либо онлайн-загрузчик, либо полный пакет инсталятора. Можно выбрать любой:
После загрузки запустим инсталлятор. Вначале нам отобразится окно с лицензионным соглашением, которое нужно принять:
После принятия лицензионного соглашения будет предложено выбрать тип установки. Выберем тип Full и нажмем на кнопку Next:
Далее на следующем этапе может отобразится следующее окно, если какие-то дополнительные компоненты отсутствуют в системе:
В данном случае программа установки показывает, что у меня не установлен Python 2.7. Поскольку эти компоненты не важны, нажимаем Next.
Затем на этапе установки инсталлятор отобразит весь список устанавливаемых компонентов. У меня он выглядит так:
Чтобы выполнить установку всех компонентов, нажмем кнопку Execute.
После того, как все компоненты будут установлены, нажмем кнопку Next.
Далее надо будет указать тип сервера. Выберем настройку по умолчанию Standalone MySQL Server / Classic MySQL Replication
Далее будет предложено установить ряд конфигурационных настроек сервера MySQL. Оставим настройки соединения и порта по умолчанию:
На следующем шаге будет предложено установить метод аутентификации. Оставим настройки по умолчанию:
Затем на следующем окне прогаммы установки укажем какой-нибудь пароль, и запомним его, так как он потом потребуется при подключении к серверу MySQL:
Следующий набор конфигураций, который также оставим по умолчанию, указывает, что сервер будет запускаться в качестве службы Windows при запуске операционной системы:
Следующее окно позволяет настроить дополнительные плагины и расширения. Начиная с версии 5.7 в MySQL доступен X Protocol, который представляет новый способ взаимодействия с хранилищем данных. Эту опцию необязательно отмечать. В данном случае я ее отмечу:
И на следующем экране необходимо применить все ранее установленные конфигурационные настройки, нажав на кнопку Execute:
После применения конфигурационных настроек сервер MySQL будет полностью установлен и сконфигурирован, и мы сможем с ним работать.
MySQL | Типы данных
Типы данных MySQL
Последнее обновление: 25.05.2018
При определении столбцов таблицы для них необходимо указать тип данных. Каждый столбец должен иметь тип данных. Тип данных определяет, какие значения могут храниться в столбце, сколько они будут занимать места в памяти.
MySQL предоставляет следующие типы данных, которые можно разбить на ряд групп.
Символьные типы
CHAR: представляет стоку фиксированной длины.
Длина хранимой строки указыватся в скобках, например,
CHAR(10)
— строка из десяти символов. И если в таблицу в данный столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то строка дополняется 4 проблеми и в итоге все равно будет занимать 10 символовVARCHAR: представляет стоку переменной длины.
Длина хранимой строки также указыватся в скобках, например,
VARCHAR(10)
. Однако в отличие от CHAR хранимая строка будет занимать именно столько места, скольо необходимо. Например, если определеная длина в 10 символов, но в столбец сохраняется строка в 6 символов, то хранимая строка так и будет занимать 6 символов плюс дополнительный байт, который хранит длину строки.
Начиная с MySQL 5.6 типы CHAR и VARCHAR по умолчанию используют кодировку UTF-8, которая позволяет использовать до 3 байт для хранения символа в заивисимости от языка ( для многих европейских языков по 1 байту на символ, для ряда восточно-европейских и ближневосточных — 2 байта, а для китайского, яполнского, корейского — по 3 байта на символ).
Ряд дополнительных типов данных представляют текст неопределенной длины:
TINYTEXT: представляет текст длиной до 255 байт.
TEXT: представляет текст длиной до 65 КБ.
MEDIUMTEXT: представляет текст длиной до 16 МБ
LARGETEXT: представляет текст длиной до 4 ГБ
Числовые типы
TINYINT: представляет целые числа от -127 до 128, занимает 1 байт
BOOL: фактически не представляет отдельный тип, а является лишь псевдонимом для типа
TINYINT(1)
и может хранить два значения 0 и 1. Однако данный тип может также в качестве значения принимать встроенные константы TRUE (представляет число 1) и FALSE (предоставляет число 0).Также имеет псевдоним BOOLEAN.
TINYINT UNSIGNED: представляет целые числа от 0 до 255, занимает 1 байт
SMALLINT: представляет целые числа от -32768 до 32767, занимает 2 байтa
SMALLINT UNSIGNED: представляет целые числа от 0 до 65535, занимает 2 байтa
MEDIUMINT: представляет целые числа от -8388608 до 8388607, занимает 3 байта
MEDIUMINT UNSIGNED: представляет целые числа от 0 до 16777215, занимает 3 байта
INT: представляет целые числа от -2147483648 до 2147483647, занимает 4 байта
INT UNSIGNED: представляет целые числа от 0 до 4294967295, занимает 4 байта
BIGINT: представляет целые числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, занимает 8 байт
BIGINT UNSIGNED: представляет целые числа от 0 до 18 446 744 073 709 551 615, занимает 8 байт
DECIMAL: хранит числа с фиксированной точностью. Данный тип может принимать два параметра
precision
иscale
:DECIMAL(precision, scale)
.Параметр
precision
представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 65.Параметр
scale
представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.Например, в определении следующего столбца:
salary DECIMAL(5,2)
Число 5 —
precision
, а число 2 —scale
, поэтому данный столбец может хранить значения из диапазона от -999.99 до 999.99.Размер данных в байтах для DECIMAL зависит от хранимого значения.
Данный тип также имеет псевдонимы NUMERIC, DEC, FIXED.
FLOAT: хранит дробные числа с плавающей точкой одинарной точности от -3.4028 * 1038 до 3.4028 * 1038, занимает 4 байта
Может принимать форму
.FLOAT(M,D)
, гдеM
— общее количество цифр, аD
— количество цифр после запятойDOUBLE: хранит дробные числа с плавающей точкой двойной точности от -1.7976 * 10308 до 1.7976 * 10308, занимает 8 байт. Также может принимать форму
DOUBLE(M,D)
, гдеM
— общее количество цифр, аD
— количество цифр после запятой.Данный тип также имеет псевдонимы REAL и DOUBLE PRECISION, которые можно использовать вместо DOUBLE.
Типы для работы с датой и временем
DATE: хранит даты с 1 января 1000 года до 31 деабря 9999 года (c «1000-01-01» до «9999-12-31»). По умолчанию для хранения используется формат yyyy-mm-dd. Занимает 3 байта.
TIME: хранит время от -838:59:59 до 838:59:59. По умолчанию для хранения времени применяется формат «hh:mm:ss». Занимает 3 байта.
DATETIME: объединяет время и дату, диапазон дат и времени — с 1 января 1000 года по 31 декабря 9999 года (с «1000-01-01 00:00:00» до «9999-12-31 23:59:59»). Для хранения по умолчанию используется формат «yyyy-mm-dd hh:mm:ss». Занимает 8 байт
TIMESTAMP: также хранит дату и время, но в другом диапазоне: от «1970-01-01 00:00:01» UTC до «2038-01-19 03:14:07» UTC. Занимает 4 байта
YEAR: хранит год в виде 4 цифр. Диапазон доступных значений от 1901 до 2155. Занимает 1 байт.
Тип Date может принимать даты в различных форматах, однако непосредственно для хранения в самой бд даты приводятся к формату «yyyy-mm-dd». Некоторые из принимаемых форматов:
Для времени тип Time использует 24-часовой формат. Он может принимать время в различных форматах:
Примеры значений для типов DATETIME и TIMESTAMP:
2018-05-25 19:21:34
2018-05-25
(хранимое значение2018-05-25 00:00:00
)
Составные типы
ENUM: хранит одно значение из списка допустимых значений. Занимает 1-2 байта
SET: может хранить несколько значений (до 64 значений) из некоторого списка допустимых значений. Занимает 1-8 байт.
Бинарные типы
TINYBLOB: хранит бинарные данные в виде строки длиной до 255 байт.
BLOB: хранит бинарные данные в виде строки длиной до 65 КБ.
MEDIUMBLOB: хранит бинарные данные в виде строки длиной до 16 МБ
LARGEBLOB: хранит бинарные данные в виде строки длиной до 4 ГБ
Basic MySQL Tutorial
В этом базовом учебном курсе MySQL объясняются некоторые основные операторы SQL. Если вы впервые используете систему управления реляционными базами данных, в этом руководстве вы найдете все, что вам нужно знать для работы с MySQL, например, запросы данных, обновление данных, управление базами данных и создание таблиц.
Если вы уже знакомы с другими системами управления реляционными базами данных, такими как PostgreSQL, Oracle и Microsoft SQL Server, вы можете использовать это руководство, чтобы освежить свои знания и понять, чем диалект SQL MySQL отличается от других систем.
Раздел 1. Начало работы с MySQL
Этот раздел поможет вам начать работу с MySQL. Мы начнем установку MySQL, загрузку образца базы данных и загрузку данных на сервер MySQL для практики.
Раздел 2. Запрос данных
Этот раздел поможет вам узнать, как запрашивать данные с сервера базы данных MySQL. Мы начнем с простого оператора SELECT
, который позволяет запрашивать данные из одной таблицы.
- SELECT — покажет, как использовать простой оператор
SELECT
для запроса данных из одной таблицы.
Раздел 3. Сортировка данных
- ORDER BY — покажет вам, как отсортировать набор результатов с помощью предложения
ORDER BY
. Также будет рассмотрен пользовательский порядок сортировки с функциейFIELD
.
Раздел 4. Фильтрация данных
- WHERE — узнайте, как использовать предложение
WHERE
для фильтрации строк на основе заданных условий. - SELECT DISTINCT — покажет, как использовать оператор
DISTINCT
в оператореSELECT
для удаления повторяющихся строк в наборе результатов. - AND — познакомит вас с оператором
AND
для объединения логических выражений для формирования сложного условия для фильтрации данных. - OR– познакомит вас с оператором
OR
и покажет, как комбинировать операторOR
с операторомAND
для фильтрации данных. - IN — покажет вам, как использовать оператор
IN
в предложенииWHERE
, чтобы определить, соответствует ли значение какому-либо значению в списке или подзапросе. - BETWEEN — покажет вам, как запрашивать данные на основе диапазона с помощью оператора
BETWEEN
. - LIKE — предоставить вам методику запроса данных на основе определенного шаблона.
- LIMIT — используйте
LIMIT
, чтобы ограничить количество строк, возвращаемых операторомSELECT
- IS NULL — проверьте, является ли значение
NULL
или нет, с помощью оператораIS NULL
.
Раздел 5. Объединение таблиц
- Псевдонимы таблиц и столбцов — знакомство с псевдонимами таблиц и столбцов.
- Объединения — дают обзор объединений, поддерживаемых в MySQL, включая внутреннее соединение, левое соединение и правое соединение.
- INNER JOIN — запросить строки из таблицы, которая имеет совпадающие строки в другой таблице.
- LEFT JOIN — вернуть все строки из левой таблицы и соответствующие строки из правой таблицы или null, если в правой таблице не найдено совпадающих строк.
- RIGHT JOIN — вернуть все строки из правой таблицы и соответствующие строки из левой таблицы или null, если в левой таблице не найдено совпадающих строк.
- CROSS JOIN — сделать декартово произведение строк из нескольких таблиц.
- Самосоединение — присоединить таблицу к самой себе, используя псевдоним таблицы, и соединить строки в одной таблице, используя внутреннее соединение и левое соединение.
Раздел 6. Группировка данных
- GROUP BY — покажет, как группировать строки в группы на основе столбцов или выражений.
- HAVING — фильтровать группы по определенному условию.
- ROLLUP — создание нескольких наборов группировок с учетом иерархии между столбцами, указанной в предложении
GROUP BY
.
Раздел 7. Подзапросы
- Подзапрос — покажет, как вложить запрос (внутренний запрос) в другой запрос (внешний запрос) и использовать результат внутреннего запроса для внешнего запроса.
- Производная таблица — познакомит вас с концепцией производной таблицы и покажет, как ее использовать для упрощения сложных запросов.
- EXISTS — проверка на наличие строк.
Раздел 8. Общие табличные выражения
- Общее табличное выражение или CTE — объяснят вам концепцию общего табличного выражения и покажут, как использовать CTE для запроса данных из таблиц.
- Рекурсивный CTE — используйте рекурсивный CTE для просмотра иерархических данных.
Раздел 9.Операторы набора
- UNION и UNION ALL — объединяют два или более наборов результатов нескольких запросов в один набор результатов.
- INTERSECT — покажет вам несколько способов имитации оператора
INTERSECT
. - MINUS — объясните вам оператор SQL MINUS и покажите, как его моделировать.
Раздел 10. Изменение данных в MySQL
В этом разделе вы узнаете, как вставлять, обновлять и удалять данные из таблиц с помощью различных операторов MySQL.
- INSERT — используйте различные формы оператора
INSERT
для вставки данных в таблицу. - INSERT Multiple Rows — вставить несколько строк в таблицу.
- INSERT INTO SELECT — вставить данные в таблицу из набора результатов запроса.
- INSERT IGNORE — объясните вам оператор
INSERT IGNORE
, который вставляет строки в таблицу и игнорирует строки, вызывающие ошибки. - UPDATE — узнайте, как использовать оператор
UPDATE
и его параметры для обновления данных в таблицах базы данных. - UPDATE JOIN — покажет вам, как выполнить обновление кросс-таблицы с помощью оператора
UPDATE JOIN
сINNER JOIN
иLEFT JOIN
. - DELETE — покажет, как использовать оператор
DELETE
для удаления строк из одной или нескольких таблиц. - ON DELETE CASCADE — узнайте, как использовать ссылочное действие
ON DELETE CASCADE
для внешнего ключа для автоматического удаления данных из дочерней таблицы при удалении данных из родительской таблицы. - DELETE JOIN — показать, как удалить данные из нескольких таблиц.
- REPLACE — узнать, как вставлять или обновлять данные, зависит от того, существуют ли данные в таблице или нет.
- Подготовленный оператор — покажет, как использовать подготовленный оператор для выполнения запроса.
Раздел 11. Транзакция MySQL
- Транзакция — узнайте о транзакциях MySQL и о том, как использовать
COMMIT
иROLLBACK
для управления транзакциями в MySQL. - Блокировка таблицы — узнайте, как использовать блокировку MySQL для совместного доступа к таблицам между сеансами.
Раздел 12. Управление базами данных и таблицами MySQL
В этом разделе показано, как управлять наиболее важными объектами базы данных в MySQL, включая базы данных и таблицы.
- Выбор базы данных MySQL — покажите, как использовать оператор
USE
для выбора базы данных MySQL с помощью программыmysql
и MySQL Workbench. - Управление базами данных — изучите различные инструкции для управления базами данных MySQL, включая создание новой базы данных, удаление существующей базы данных, выбор базы данных и перечисление всех баз данных.
- CREATE DATABASE — покажет, как создать новую базу данных на сервере MySQL.
- DROP DATABASE — узнайте, как удалить существующую базу данных.
- Механизмы хранения MySQL — важно понимать особенности каждого механизма хранения, чтобы вы могли эффективно использовать их для максимальной производительности ваших баз данных.
- CREATE TABLE — показать, как создавать новые таблицы в базе данных с помощью оператора
CREATE TABLE
. - Последовательность MySQL — покажите, как использовать последовательность для автоматического создания уникальных чисел для столбца первичного ключа таблицы.
- ALTER TABLE — узнайте, как использовать оператор
ALTER TABLE
для изменения структуры таблицы. - Переименование таблицы — покажите, как переименовать таблицу с помощью оператора
RENAME TABLE
. - Удаление столбца из таблицы — покажет, как использовать оператор
ALTER TABLE DROP COLUMN
для удаления одного или нескольких столбцов из таблицы. - Добавление нового столбца в таблицу — покажет, как добавить один или несколько столбцов в существующую таблицу с помощью оператора
ALTER TABLE ADD COLUMN
. - DROP TABLE — показать, как удалить существующие таблицы с помощью оператора
DROP TABLE
. - Временные таблицы — обсудите временную таблицу MySQL и покажите, как управлять временными таблицами.
- TRUNCATE TABLE — покажет вам, как использовать оператор
TRUNCATE TABLE
для быстрого удаления всех данных в таблице. - Сгенерированные столбцы — узнайте, как использовать сгенерированные MySQL столбцы для хранения данных, вычисленных из выражения или других столбцов.
Раздел 13.Типы данных MySQL
- Типы данных MySQL — покажут вам различные типы данных в MySQL, чтобы вы могли эффективно применять их при разработке таблиц базы данных.
- INT — покажет, как использовать целочисленный тип данных.
- DECIMAL — покажет вам, как использовать тип данных
DECIMAL
для хранения точных значений в десятичном формате. - BIT — познакомим вас с типом данных
BIT
и тем, как хранить битовые значения в MySQL. - BOOLEAN — объясните вам, как MySQL обрабатывает логические значения с помощью внутреннего использования
TINYINT (1)
. - CHAR — справочник по типу данных
CHAR
для хранения строки фиксированной длины. - VARCHAR — даст вам необходимое руководство по типу данных
VARCHAR
. - ТЕКСТ — покажет вам, как хранить текстовые данные с использованием типа данных
ТЕКСТ
. - DATE — познакомит вас с типом данных
DATE
и покажет вам некоторые функции даты для эффективной обработки данных даты. - ВРЕМЯ — познакомит вас с функциями типа данных
TIME
и покажет, как использовать некоторые полезные временные функции для обработки данных времени. - DATETIME — познакомит вас с типом данных
DATETIME
и некоторыми полезными функциями для управления значениямиDATETIME
. - TIMESTAMP — познакомит вас с
TIMESTAMP
и его функциями, называемыми автоматической инициализацией и автоматическим обновлением, которые позволяют вам определять автоматически инициализированные и автоматически обновляемые столбцы для таблицы. - JSON — покажите, как использовать тип данных JSON для хранения документов JSON.
- ENUM — узнайте, как правильно использовать тип данных
ENUM
для хранения значений перечисления.
Раздел 14. Ограничения MySQL
- Ограничение NOT NULL — познакомит вас с ограничением
NOT NULL
и покажет, как объявить столбецNOT NULL
или добавить ограничениеNOT NULL
к существующему столбцу. - Ограничение первичного ключа — расскажет, как использовать ограничение первичного ключа для создания первичного ключа для таблицы.
- Ограничение внешнего ключа — познакомит вас с внешним ключом и покажет шаг за шагом, как создавать и удалять внешние ключи.
- Отключить проверку внешнего ключа — узнайте, как отключить проверку внешнего ключа.
- Ограничение UNIQUE — покажет вам, как использовать ограничение
UNIQUE
для обеспечения уникальности значений в столбце или группе столбцов в таблице. - Ограничение CHECK — узнайте, как создать ограничения
CHECK
для обеспечения целостности данных. Эмуляция ограничения - CHECK — если вы используете MySQL 8.0.15 или более раннюю версию, вы можете эмулировать ограничения
CHECK
с помощью представлений или триггеров.
Раздел 15. Глобализация MySQL
- Набор символов — обсудите набор символов и покажите шаг за шагом, как выполнять различные операции с наборами символов.
- Сопоставление — обсудите сопоставление и покажите, как установить наборы символов и сопоставления для сервера MySQL, базы данных, таблиц и столбцов.
Раздел 16. Импорт и экспорт MySQL
Раздел 17. Расширенные методы
- Естественная сортировка — познакомит вас с различными методами естественной сортировки в MySQL с помощью предложения
ORDER BY
.
MySQL CREATE DATABASE — Создание новой базы данных в MySQL
Резюме : в этом руководстве вы узнаете, как использовать оператор MySQL CREATE DATABASE
для создания новой базы данных на сервере.
MySQL реализует базу данных как каталог, содержащий все файлы, соответствующие таблицам в базе данных.
Чтобы создать новую базу данных в MySQL, используйте оператор CREATE DATABASE
со следующим синтаксисом:
Язык кода: SQL (язык структурированных запросов) (sql)
CREATE DATABASE [IF NOT EXISTS] имя_базы_данных [CHARACTER SET charset_name] [COLLATE collation_name]
Сначала укажите имя_базы_данных
после предложения CREATE DATABASE
.Имя базы данных должно быть уникальным в пределах экземпляра сервера MySQL. Если вы попытаетесь создать базу данных с уже существующим именем, MySQL выдает ошибку.
Во-вторых, чтобы избежать ошибки в случае случайного создания уже существующей базы данных, можно указать опцию IF NOT EXISTS
. В этом случае MySQL не выдает ошибку, а вместо этого завершает оператор CREATE DATABASE
.
В-третьих, укажите набор символов и сопоставление для новой базы данных во время создания.Если вы опустите предложения CHARACTER SET
и COLLATE
, MySQL использует набор символов по умолчанию и сопоставление для новой базы данных.
Создание новой базы данных с помощью программы mysql
Чтобы создать новую базу данных с помощью программы mysql
, вы выполните следующие шаги:
Сначала войдите на сервер MySQL, используя пользователя root
Язык кода: SQL (язык структурированных запросов) (sql)
> mysql -u корень -p Введите пароль: ********
Введите пароль для пользователя root и нажмите
Введите
.
Затем, чтобы отобразить существующую базу данных на сервере, чтобы убедиться, что вы не создаете новую базу данных, которая уже существует, используйте команду SHOW DATABASES
следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
mysql> SHOW DATABASES; + -------------------- + | База данных | + -------------------- + | классические модели | | information_schema | | mysql | | performance_schema | | sys | + -------------------- + 5 рядов в наборе (0,00 сек)
MySQL возвращает пять существующих баз данных на текущем сервере.
Затем введите команду CREATE DATABASE
с базой данных, например, testdb
, и нажмите Enter:
Язык кода: SQL (язык структурированных запросов) (sql)
mysql> CREATE DATABASE testdb; Запрос в порядке, затронута 1 строка (0,12 секунды)
После этого, если вы хотите просмотреть созданную базу данных, вы можете использовать команду SHOW CREATE DATABASE
:
Язык кода: SQL (язык структурированных запросов) (sql)
mysql> SHOW CREATE DATABASE testdb;
MySQL возвращает имя базы данных, набор символов и сопоставление базы данных.
Наконец, чтобы получить доступ к вновь созданной базе данных, вы используете команду USE database
следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
mysql> USE testdb; База данных изменена
Теперь вы можете начать создавать таблицы и другие объекты баз данных в базе данных testdb
.
Чтобы выйти из программы mysql , введите команду exit
:
Язык кода: SQL (язык структурированных запросов) (sql)
mysql> exit до свидания
Создание новой базы данных с помощью MySQL Workbench
Чтобы создать новую базу данных с помощью MySQL Workbench, выполните следующие действия:
Сначала запустите MySQL Workbench и нажмите кнопку setup new connection , как показано на следующем снимке экрана:
Во-вторых, введите имя подключения и нажмите кнопку Test Connection .
MySQL Workbench отображает диалоговое окно с запросом пароля пользователя root :
Вам необходимо (1) ввести пароль для пользователя root , (2) проверить пароль сохранения в хранилище и ( 3) нажмите кнопку ОК .
В-третьих, дважды щелкните имя соединения Local , чтобы подключиться к серверу MySQL.
MySQL Workbench открывает следующее окно, состоящее из четырех частей: навигатор, запрос, информация и вывод.
В-четвертых, нажмите кнопку создать новую схему на подключенном сервере. кнопку на панели инструментов:
В MySQL схема является синонимом базы данных. Создание новой схемы также означает создание новой базы данных.
В-пятых, открыто следующее окно. Вам необходимо (1) ввести имя схемы, (2) при необходимости изменить набор символов и сопоставление и нажать кнопку Применить :
В-шестых, MySQL Workbench открывает следующее окно, в котором отображается сценарий SQL, который будет выполнен. .Обратите внимание, что команда оператора CREATE SCHEMA
имеет тот же эффект, что и инструкция CREATE DATABASE
.
Если все в порядке, вы увидите новую базу данных, созданную и отображаемую на вкладке schemas в разделе Navigator .
В-седьмых, чтобы выбрать базу данных testdb2
, (1) щелкните правой кнопкой мыши имя базы данных и (2) выберите пункт меню Set as Default Schema :
Узел testdb2
открыт, как показано на следующем снимке экрана.
Теперь вы можете работать с testdb2
из MySQL Workbench.
В этом руководстве вы узнали, как создать новую базу данных из программы mysql с помощью оператора MySQL CREATE DATABASE
и из MySQL Workbench с помощью оператора CREATE SCHEMA
.
- Было ли это руководство полезным?
- Да Нет
MySQL: типы данных
Ниже приводится список типов данных, доступных в MySQL, который включает строковые, числовые, даты / времени и типы данных для больших объектов.
Строковые типы данных
Ниже приведены строковые типы данных в MySQL:
Синтаксис типа данных | Максимальный размер | Пояснение |
---|---|---|
СИМВОЛ ( размер ) | Максимальный размер 255 символов. | Где размер - количество символов для хранения. Струны фиксированной длины. Пробел заполнен справа до размера символов. |
VARCHAR ( размер ) | Максимальный размер 255 символов. | Где размер - количество символов для хранения. Строка переменной длины. |
TINYTEXT ( размер ) | Максимальный размер 255 символов. | Где размер - количество символов для хранения. |
ТЕКСТ ( размер ) | Максимальный размер 65 535 символов. | Где размер - количество символов для хранения. |
MEDIUMTEXT ( размер ) | Максимальный размер 16 777 215 символов. | Где размер - количество символов для хранения. |
LONGTEXT ( размер ) | Максимальный размер 4 ГБ или 4 294 967 295 символов. | Где размер - количество символов для хранения. |
ДВОИЧНЫЙ ( размер ) | Максимальный размер 255 символов. | Где размер - количество двоичных символов для хранения. Струны фиксированной длины. Пробел заполнен справа до размера символов. (введено в MySQL 4.1.2) |
VARBINARY ( размер ) | Максимальный размер 255 символов. | Где размер - количество символов для хранения.Строка переменной длины. (введено в MySQL 4.1.2) |
Числовые типы данных
Ниже приведены числовых типов данных в MySQL:
Синтаксис типа данных | Максимальный размер | Пояснение |
---|---|---|
БИТ | Очень маленькое целочисленное значение, эквивалентное TINYINT (1). Диапазон значений со знаком от -128 до 127. Диапазон значений без знака от 0 до 255. | |
TINYINT ( м ) | Очень маленькое целое число. Диапазон значений со знаком от -128 до 127. Диапазон значений без знака от 0 до 255. | |
SMALLINT ( м ) | Маленькое целое число. Диапазон значений со знаком от -32768 до 32767. Диапазон значений без знака от 0 до 65535. | |
MEDIUMINT ( м ) | Среднее целочисленное значение. Диапазон значений со знаком от -8388608 до 8388607. Диапазон значений без знака от 0 до 16777215. | |
ИНТ ( м ) | Стандартное целочисленное значение. Диапазон значений со знаком от -2147483648 до 2147483647. Диапазон значений без знака от 0 до 4294967295. | |
ЦЕЛОЕ ( м ) | Стандартное целочисленное значение. Значения со знаком находятся в диапазоне от -2147483648 до 2147483647. Диапазон значений без знака от 0 до 4294967295. | Это синоним типа данных INT. |
BIGINT ( м ) | Большое целое число. Диапазон значений со знаком от -9223372036854775808 до 9223372036854775807. Диапазон значений без знака от 0 до 18446744073709551615. | |
ДЕСЯТИЧНЫЙ ( м , d ) | Неупакованный номер с фиксированной точкой. м по умолчанию 10, если не указано иное. d по умолчанию 0, если не указано. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. |
DEC ( м , d ) | Неупакованный номер с фиксированной точкой. м по умолчанию 10, если не указано иное. d по умолчанию 0, если не указано. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. Это синоним типа данных DECIMAL. |
ЧИСЛОВЫЙ ( м , d ) | Неупакованный номер с фиксированной точкой. м по умолчанию 10, если не указано иное. d по умолчанию 0, если не указано. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. Это синоним типа данных DECIMAL. |
ФИКСИРОВАННЫЙ ( м , d ) | Неупакованный номер с фиксированной точкой. м по умолчанию 10, если не указано иное. d по умолчанию 0, если не указано. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. (введено в MySQL 4.1) Это синоним типа данных DECIMAL. |
ПОПЛАВОК ( м , d ) | Число одинарной точности с плавающей запятой. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. |
ДВОЙНОЙ ( м , d ) | Число двойной точности с плавающей запятой. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. |
DOUBLE PRECISION ( м , d ) | Число двойной точности с плавающей запятой. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. Это синоним типа данных DOUBLE. |
РЕАЛЬНОЕ ( м , d ) | Число двойной точности с плавающей запятой. | Где м - общее количество цифр, а d - количество цифр после десятичной дроби. Это синоним типа данных DOUBLE. |
ПОПЛАВОК (p) | Число с плавающей запятой. | Где p - точность. |
BOOL | Синоним TINYINT (1) | Рассматривается как логический тип данных, где значение 0 считается ЛОЖЬ, а любое другое значение считается ИСТИННЫМ. |
БУЛЕВЫЙ | Синоним TINYINT (1) | Рассматривается как логический тип данных, где значение 0 считается ЛОЖЬ, а любое другое значение считается ИСТИННЫМ. |
Дата / время Типы данных
Ниже приведены типов данных даты / времени в MySQL:
Синтаксис типа данных | Максимальный размер | Пояснение |
---|---|---|
ДАТА | Диапазон значений от «1000-01-01» до «9999-12-31». | Отображается как «ГГГГ-ММ-ДД». |
ДАТА ВРЕМЯ | Диапазон значений от «1000-01-01 00:00:00» до «9999-12-31 23:59:59». | Отображается как «ГГГГ-ММ-ДД ЧЧ: ММ: СС». |
TIMESTAMP ( м ) | Диапазон значений: от 1970-01-01 00:00:01 UTC до 2038-01-19 03:14:07 UTC. | Отображается как «ГГГГ-ММ-ДД ЧЧ: ММ: СС». |
ВРЕМЯ | Диапазон значений от -838: 59: 59 до 838: 59: 59. | Отображается как «ЧЧ: ММ: СС». |
ГОД [(2 | 4)] | Год в виде 2-х или 4-х значных цифр. | По умолчанию 4 цифры. |
Типы данных больших объектов (LOB)
Следующие типов данных LOB в MySQL:
Синтаксис типа данных | Максимальный размер | Пояснение |
---|---|---|
TINYBLOB | Максимальный размер 255 байт. | |
BLOB ( размер ) | Максимальный размер 65 535 байт. | Где размер - количество символов для хранения ( размер является необязательным и был введен в MySQL 4.1) |
MEDIUMBLOB | Максимальный размер 16 777 215 байт. | |
ПОЛНЫЙ ТЕКСТ | Максимальный размер 4 ГБ или 4 294 967 295 символов. |
Насколько легко создать базу данных MySQL?
Что такое база данных MySQL?
Сегодня современные веб-приложения, такие как Joomla, Moodle и 4images, динамичны. Они предназначены для хранения статей, сообщений, рассказов, изображений, фильмов и другого контента.Чтобы все данные были организованы и отображались быстрее, эти приложения используют базы данных MySQL. База данных MySQL состоит из таблиц, и каждая таблица MySQL хранит определенную информацию для приложения. Чтобы лучше понять, как база данных MySQL хранит данные вашего сайта, давайте взглянем на общую базу данных Joomla:
Как видите, Joomla хранит информацию базы данных разделенной во многих таблицах. Информация о пользователях (например, имена, учетные данные и пароли) хранится в таблице jos_users, а данные содержимого (статьи, новости, сообщения) - в jos_content.Часть «jos_» в имени таблицы базы данных называется префиксом и используется для определения приложения, которое использует эту таблицу. Например, 'jos_' является префиксом по умолчанию для всех таблиц, созданных Joomla, но если вы хотите разместить вторую установку Joomla и использовать ту же базу данных (не рекомендуется), вы можете изменить префикс (например) на 'jo2_' . Итак, ваш первый сайт Joomla будет использовать таблицы, которые начинаются с jos_, а вторая установка - те, которые начинаются с jo2_.
Как добавить новую базу данных с помощью PHPMyAdmin?
Поскольку использование баз данных SQL и баз данных MySQL, в частности, жизненно важно для веб-сайтов с богатым содержанием, очень важно, чтобы владельцы веб-сайтов имели возможность создавать такие базы данных и управлять своими настройками в любое время.Как мы уже упоминали, есть возможность разместить более одного приложения с помощью одной базы данных. На практике это не очень удобно, а также снижает безопасность ваших приложений. Поэтому рекомендуется иметь отдельные базы данных для каждого приложения.
Есть несколько способов создать новую базу данных на сервере MySQL5. Два основных - через интерфейс phpMyAdmin и через командную строку SQL, оба требуют от пользователей некоторых базовых навыков администрирования MySQL.Чтобы создать новую базу данных с помощью инструмента PHPMyAdmin, сначала вам необходимо войти в систему, используя учетную запись пользователя ROOT вашего сервера MySQL или другую учетную запись с соответствующими привилегиями. После входа в систему вы увидите форму «Создать новую базу данных» на домашней странице PHPMyAdmin:
Пример формы раздела «Создать новую базу данных» в PHPMyAdmin
Введите имя новой базы данных в первое поле (my_db в нашем примере), а затем выберите кодировку из раскрывающегося списка.Когда будете готовы, нажмите кнопку «Создать», чтобы создать свою базу данных.
Как создать базу данных с помощью командной строки SQL?
Как мы видели выше, довольно легко создать базу данных с использованием графической пользовательской среды PHPMyAdmin, но иногда PHPMyAdmin недоступен или отсутствует на веб-сервере. В таких случаях полезно знать, как создать базу данных с помощью командной строки SQL. Чтобы войти в командную строку, вам необходимо войти на сервер MySQL как пользователь ROOT или через учетную запись с достаточными привилегиями.Чтобы установить корневое соединение, запустите сеанс SSH с помощью приложения терминала / консоли, если вы используете Linux или MacOS, или используйте PuTTY (или другой клиент SSH) на ПК с Windows, затем введите следующую команду:
Пример запуска SSH-соединения с сервером MySQL
$ ssh databasehostЗатем вам необходимо войти в систему, используя свою учетную запись ROOT, используя следующую строку:
Как войти в систему как ROOT на сервере MySQL
$ mysql -u корень -pТеперь мы готовы создать новую базу данных.Для этого используйте строку, подобную этой:
Пример создания базы данных в MySQL
СОЗДАТЬ БАЗУ ДАННЫХ mydatabasenameМы, в NTC Hosting, максимально упростили для вас процесс создания базы данных MySQL. Теперь вы можете создавать новые базы данных MySQL и управлять ими прямо из Панели управления вашего веб-хостинга, поставляемой с нашими пакетами. Нет необходимости иметь дело с интерфейсом phpMyAdmin или возиться с окном запроса SQL или программой приглашения оболочки.Мы обеспечиваем быстрый и удобный процесс настройки базы данных MySQL.
Пример создания базы данных в MySQL
СОЗДАТЬ БАЗУ ДАННЫХ mydbТеперь ваша вновь созданная база данных доступна только вашему пользователю ROOT. Чтобы разрешить другому пользователю доступ к вашей базе данных, вам необходимо использовать запрос, подобный этому:
Пример того, как ПРЕДОСТАВЛЯТЬ привилегии пользователю для новой базы данных
РАЗРЕШИТЬ ИСПОЛЬЗОВАНИЕ НА mydb. * На db_user @ localhost ИДЕНТИФИЦИРОВАНО 'db_passwd';Теперь у пользователя есть некоторые базовые привилегии, но их недостаточно для установки PHP-скрипта.Если вам нужно использовать грант MySQL для добавления ВСЕХ привилегий для базы данных пользователю, используйте следующий запрос:
Пример того, как ПРЕДОСТАВИТЬ ВСЕ привилегии пользователю
ПРЕДОСТАВИТЬ ВСЕ НА mydb. * Db_user @ localhost;Теперь давайте попробуем установить соединение с нашей новой базой данных mydb, используя учетную запись db_user через командную строку SSH:
Как войти в определенную базу данных на сервере MySQL:
mysql -u db_user -p'db_passwd 'mydbКак создать базу данных с помощью панели управления хостинга NTC
Как видите, создать базу данных с помощью инструмента PHPMyAdmin проще, чем с помощью командной строки SSH и SQL.Чтобы сделать процесс еще проще, NTC Hosting предоставляет всем пользователям инструмент управления базой данных MySQL.