Создание базы данных в mysql (create database)
Содержание:
- MySQL и phpMyAdmin
- Azure Data Studio
- Автоматическое приращение AUTO_INCREMENT
- Создание таблиц с помощью SQL
- Типы данных в MySQL
- Зачем нужна база данных?
- А что такое SQL?
- База данных MySQL: что это такое и в чем ее преимущества
- Типы связей
- Проектирование базы данных
- Сброс пароля для root
- Принцип работы MySQL-серверов
MySQL и phpMyAdmin
Последнее обновление: 22.12.2017
Как правило, в качестве хранилища данных используются базы данных. PHP позволяет использовать различные систему управления базами данных,
но наиболее популярной на сегодняшний день в связке с PHP является MySQL. MySQL представляет бесплатное программное обеспечение, позволяющее взаимодействовать
с базами данных с помощью команд языка SQL. Ранее уже рассматривался процесс установки и настройки MySQL.
Для установки phpMyAdmin загрузим архив и распакуем в папку C:\localhost, где находятся документы для php. Распакованную папку переименуем для краткости
в phpMyAdmin.
В распакованном каталоге phpMyAdmin создадим файл config.inc.php со следующим содержанием:
<?php $i = 0; $i++; // для первого сервера MySQL $cfg = 'localhost'; $cfg = 'mysqli'; $cfg = 'tcp'; $cfg = false; $cfg = 'config'; $cfg = 'root'; $cfg = 'пароль от mysql'; // Пароль пользователя root ?>
И чтобы убедиться, что все настроено правильно, в браузере перейдем к phpMyAdmin, например, http://localhost:8080/phpmyadmin:
В левой колонке можно увидеть все имеющиеся базы данных на сервере MySQL. Даже если вы еще не создавали никакие базы данных, на сервере уже имеется
некоторый набор баз данных по умолчанию.
В правой части интерфейса phpMyAdmin содержатся основные инструменты управления базами данных, а также различная конфигурационная информация.
Создание базы данных MySQL в phpMyAdmin
Чтобы обмениваться данными с сервером MySQL (сохранять, изменять, удалять, получать данные), нам естественно нужна база данных. Создать базу данных мы можем
из консоли MySQL, а также из визуального интерфейса phpMyAdmin.
Откроем интерфейс phpMyAdmin. Перейдем на вкладку Базы данных. Под меткой Создать базу данных введем какое-нибудь имя для новой бд, например, compstore и нажмем на кнопку «Создать».
И после этого мы получим сообщение об успешном создании новой бд, и она будет добавлена в списки баз данных.
Новая база данных пока пуста и не содержит ничего. Добавим в нее таблицу, которая будет хранить данные. Для этого нажмем на название базы данных и мы попадем на вкладку
«Структура», где нам будут предложены опции новой таблицы. В поле «Имя» введем название новой таблицы. Пусть, таблицы будет хранить данные о моделях смартфонов,
поэтому введем название «phones», а в качестве количества столбцов введем цифру 3:
Для создания таблицы нажмем на кнопку «Вперед». После этого у нас появится набор ячеек для установки параметров столбцов. Укажем последовательно для имен столбцов следующие: id, name, company.
В качестве типа укажем для столбцов id тип INT, а для столбцов name и company — тип VARCHAR.
Для столбцов name и company в поле «Длина/Значения» укажем число 200 — оно будет указывать максимальную длину строки в символах.
Также для столбца id укажем в поле «Индекс» PRIMARY а в поле «A_I» (AutoIncrement) поставим галочку:
Таким образом, таблица будет иметь столбцы для уникального идентификатора, названия телефона и названия производителя. И затем нажмем внизу на кнопку «Сохранить».
После создания таблицы мы сможем увидеть в колонке баз данных таблицу и ее столбцы:
Это не единственный способ создания таблиц в phpMyAdmin, так как здесь мы можем управлять базой данных с помощью запросов SQL. Так, выделим в списке баз данных
нашу базу и перейдем на вкладку «SQL». Она отображает поле для ввода команды на языке запросов SQL. Введем в него следующую команду:
CREATE Table phones1 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200) NOT NULL, company VARCHAR(200) NOT NULL )
Это стандартная команда создания таблицы на языке SQL. После ключевых слов идет название создаваемой таблицы, а затем в
скобках идут через запятую определения столбцов.
Каждое определение столбцов содержит имя столбца, его тип и ряд дополнительных значений. Например, в определении столбца id (
) указывается имя столбца, тип — INT, а также то, что столбец обязательно должен иметь значение —
NOT NULL, что его значение будет автоматически увеличиваться на единицу с добавлением нового объекта — AUTO_INCREMENT, и что он играет роль первичного
ключа — PRIMARY KEY.
В целом создаваемая таким образом таблица будет равносильна той, что была создана ранее. Нажмем кнопку «Вперед», и будет создана вторая таблица phones1.
НазадВперед
Azure Data Studio
Azure Data Studio – это бесплатный, кроссплатформенный инструмент с открытым исходным кодом для работы с базами данных Microsoft SQL Server.
Azure Data Studio основана на Visual Studio Code и ориентирована на SQL разработчиков, так как основное назначение Azure Data Studio – это написание, редактирование и выполнение SQL запросов, иными словами, это редактор SQL кода.
Azure Data Studio позволяет работать с базами данных Microsoft SQL Server, SQL Azure, а также с другими СУБД, например, с PostgreSQL
Основные особенности
Инструмент бесплатный
Кроссплатформенность (поддержка Windows, Linux, macOS)
Ориентация на SQL разработчиков
Продвинутый SQL редактор (технология IntelliSense, фрагменты SQL кода)
Расширяемость (встроенная поддержка расширений)
Работа с другими СУБД
Встроенная возможность выгрузки данных в формат Excel, XML, JSON, CSV
Группировка подключений к серверам
Визуализация данных с помощью диаграмм и графиков
Поддержка нескольких цветовых тем
Встроенный терминал (Bash, PowerShell, sqlcmd)
Записные книжки
Недостатки
Отсутствует конструктор таблиц
Нет функционала для работы со свойствами объектов
Отсутствует возможность управления безопасностью
Отсутствует возможность импорта и экспорта DACPAC
Отсутствует функционал для большинства задач администрирования
Мне нравится2Не нравится
Автоматическое приращение AUTO_INCREMENT
AUTO_INCREMENT — одно из самых простых, но наиболее полезных определений столбцов в языке SQL. По сути, когда столбец определяется с помощью AUTO_INCREMENT, значение столбца автоматически увеличивается каждый раз, когда в таблицу добавляется новая строка. Это особенно полезно при использовании столбца в качестве первичного ключа. Используя AUTO_INCREMENT, нет необходимости писать операторы SQL для вычисления нового уникального идентификатора для каждой строки. Все это обрабатывается сервером MySQL при добавлении строки.
При использовании AUTO_INCREMENT необходимо соблюдать два правила. Во-первых, статус AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. Во-вторых, столбец AUTO_INCREMENT должен быть проиндексирован (например, объявлен как первичный ключ).
Можно переопределить значение AUTO_INCREMENT столбца, просто указав значение при выполнении оператора INSERT. Пока указанное значение является уникальным, предоставленное значение будет использоваться в новой строке, а последующие приращения начнутся с вновь вставленного значения.
MySQL может быть запрошен для получения самого последнего значения приращения, используя функцию last_insert_id() следующим образом:
SELECT last_insert_value();
Создание таблиц с помощью SQL
В предыдущем уроке мы узнали, как создать базу данных на сервере MySQL. Шаги по созданию таблицы аналогичны созданию баз данных. Разница в том, что вместо создания новой базы данных мы подключимся к существующей базе данных и создадим таблицу в этой базе данных. Для подключения к существующей базе данных мы можем передать дополнительную переменную «имя базы данных» при подключении к MySQL.
Теперь пришло время создать таблицу внутри базы данных, которые фактически будут хранить данные. Информация в таблице организована в строки и столбцы.
Новые таблицы добавляются в существующую базу данных с помощью оператора SQL .
За оператором следует имя создаваемой таблицы, за которым следует список имен и определений каждого столбца таблицы, разделенный запятыми.
Пояснения к таблице:
Обратите внимание, что за каждым именем поля следует объявление типа данных — это объявление указывает, какой тип данных может содержать столбец, будь то целое число, строка, дата и т.д. В таблице выше используются следующие типы данных:
В таблице выше используются следующие типы данных:
- VARCHAR: содержит строку переменной длины, которая может содержать буквы, числа и специальные символы. Максимальный размер указан в скобках.
- INT: тип данных INTEGER принимает числовые значения с подразумеваемой шкалой нуля. Он хранит любое целое число от -2147483648 до 2147483647.
После типа данных вы можете указать другие необязательные атрибуты для каждого столбца:
- NOT NULL — каждая строка должна содержать значение для этого столбца, нулевые значения не допускаются.
- DEFAULT — установите значение по умолчанию, которое добавляется, когда не передается никакое другое значение.
- UNSIGNED — используется для числовых типов, ограничивает хранимые данные положительными числами и нулем.
- AUTO INCREMENT — MySQL автоматически увеличивает значение поля на 1 каждый раз, когда добавляется новая запись.
- PRIMARY KEY — используется для однозначной идентификации строк в таблице. Столбец с настройкой PRIMARY KEY часто является идентификационным номером и часто используется с AUTO_INCREMENT.
Каждая таблица должна иметь столбец первичного ключа (в данном случае столбец «id»). Его значение должно быть уникальным для каждой записи в таблице.
Типы данных в MySQL
В следующей таблице приведены наиболее часто используемые типы данных, поддерживаемые MySQL.
INT | Хранит числовые значения в диапазоне от -2147483648 до 2147483647. |
DECIMAL | Хранит десятичные значения. |
CHAR | Хранит строки фиксированной длины с максимальным размером 255 символов. |
VARCHAR | Хранит строки переменной длины с максимальным размером 65 535 символов. |
TEXT | Хранит строки с максимальным размером 65 535 символов. |
DATE | Сохраняет значения даты в формате ГГГГ-ММ-ДД. |
DATETIME | Сохраняет объединенные значения даты/времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС. |
TIMESTAMP | Хранит значения меток времени. Значения TIMESTAMP хранятся в виде количества секунд с начала эпохи Unix (1970-01-01 00:00:01 UTC). |
Существует несколько дополнительных ограничений (также называемых модификаторами), которые установлены для столбцов таблицы в предыдущем выражении. Ограничения определяют правила, касающиеся значений, разрешенных в столбцах.
- Ограничение NOT NULL гарантирует, что поле не может принять значение NULL.
- Ограничение PRIMARY KEY помечает соответствующее поле как первичный ключ таблицы.
- Атрибут AUTO_INCREMENT является расширением MySQL для стандартного SQL, который сообщает MySQL, что нужно автоматически присваивать значение этому полю, если оно не указано, путем увеличения предыдущего значения на 1. Доступно только для числовых полей.
- Ограничение UNIQUE гарантирует, что каждая строка для столбца должна иметь уникальное значение.
Вы узнаете больше об ограничениях MySQL в следующих статьях.
блок 3
Зачем нужна база данных?
Представьте, что вы ведете свой сайт. Если у вас небольшой статический проект, в котором содержится всего несколько html страниц, то применение базы данных(БД) вам вовсе и не нужно. Но это редкие случаи, когда создаваемые web-мастерами проекты остаются практически незаполненными. Как правило, сайты продолжают наполняться контентом, они становятся более загруженными. Такие проекты уже являются динамичными, и без базы данных вести их очень сложно.
Храня гигабайты информации, распределенной по сотням файлов, вам придется тратить уйму времени при выдаче необходимых строк в процессе функционирования сервера. Чтобы избежать этого, нужны БД, занимающиеся группировкой и упорядочиванием информации. Код для базы данных значительно проще, чем код, предназначенный с целью применения файлов. При этом запрос обрабатывается куда быстрее.
В БД все данные представлены таблицей с комментариями, информацией об объектах и т.п. Стоит отметить, что БД постоянно меняется, дополняется новыми данными, исправляется та информация, которая уже есть в ней. И чтобы не возникало трудностей в процессе администрирования, добавления и изменения информации, были придуманы специальные системы управления БД. Об одной из них мы и говорим в данной статье, так как MySQL в своей сфере пользуется наибольшим спросом.
А что такое SQL?
Эта аббревиатура расшифровывается как Structured Query Language, что в переводе означает «язык структурированных запросов».
SQL – это стандартизированный язык, использующийся для взаимодействия с базой данных. С помощью него, собственно, и получают доступ к информации, хранящейся в таблицах MySQL. Язык делится на три части:
- Синтаксис, помогающий решать семантические вопросы языка. То есть идентифицировать отдельные компоненты базы данных.
- Синтаксис для управления данными в базе, который помогает обновлять и искать информацию.
- Синтаксис, позволяющий выдавать пользователям права на отдельные единицы данных в базе.
Основные задачи, выполняемые SQL
Structured Query Language появился в 1970 году и быстро заменил собой аналогичные, но устаревшие VISAM и ISAM. Они были нужны для управления данными.
В их «обязанности» входило:
- Извлечение запрашиваемой информации из ячеек базы данных по запросу клиента.
- Разного рода манипуляции с данными, включая добавление новых элементов в таблицу, удаление, изменение существующей в базе информации и ее сортировку. Сюда же относят и некоторые другие редко используемые операции.
- Идентификация данных из базы. Я уже упомянул это выше. Речь идет об определении отдельных компонентов. К примеру, идентификации чисел в тексте как целых чисел для соответствующей их обработки. Также процесс идентификации необходим реляционной сущности MySQL для определения взаимоотношений между разными слоями таблиц в базе данных.
- Управление данными.
- Защита и шифрования информации в таблицах.
SQL закрывает все 5 аспектов.
База данных MySQL: что это такое и в чем ее преимущества
MySQL – это реляционная система управления базами данных с открытым исходным кодом, написанная на языках программирования C и C++. Благодаря ей можно оптимизировать работу сайта или мобильного/десктопного приложения.
База данных – это место для структурированного хранения данных. Например, чтобы найти в смартфоне сохраненную картинку, мы используем для этого галерею. В данном случае картинки – это данные, а галерея – база данных.
Такой же подход используется и на многих сайтах, где подключены формы регистрации, системы оформления заказа и прочее. Когда вы регистрируетесь на сервисе, вся полученная от вас информация сохраняется в базе данных – благодаря этому вы можете повторно войти в свой аккаунт и получить доступ к внесенным ранее изменениям.
Если вести крупный ресурс без БД, то на это будет уходить очень много времени и средств. Базы данных группируют и упорядочивают информацию, упрощают получение доступа к ней. Чтобы администрировать такой большой поток данных, используются СУБД: MySQL, Microsoft SQL Server, PostgreSQL и другие.
MySQL хранит всю информацию в табличном виде. Извлечь данные из одной или нескольких таблиц можно с помощью запроса. Запросы в MySQL – это то, на чем все строится, с их помощью можно выполнять всевозможные операции с данным.
Столбцы таблицы всегда строго упорядочены, а расположение строк при необходимости может меняться в зависимости от информации в ячейках. Посмотрите на простую адресную книжку в виде таблицы:
Принцип работы с таблицами следующий: к серверу, на котором хранятся и обрабатываются структурированные данные, подключаются клиенты для получения необходимой информации, а для взаимодействия между пользователем и сервером используется специальное ПО. Заполнение подобных и более крупных таблиц происходит с помощью языка программирования SQL.
Исходя из пользовательского опыта, можно выделить следующие особенности MySQL:
- быстрая скорость доступа и обработки данных;
- надежная защита информации;
- простота использования;
- совместимость с Windows и Linux;
- бесплатность;
- возможность контролировать доступ к данным и учетным записям;
- шифрование паролей.
На этом с теоретической частью закончим.
Типы связей
Взаимоотношения или связи, в базах данных подразделяются на следующие категории:
-
связи «один-к-одному»;
-
связи «один-ко-многим»;
-
связи «многие-ко-многим».
Мы рассмотрим каждую из этих связей на примере созданной нами базы данных.
Связи «один-к-одному»
Например, чтобы вывести адрес пользователя «Александр Иванов» можно воспользоваться следующей SQL-конструкцией:
Код SQL
Связь «один-ко-многим»
В случае связи «один-ко-многим» каждый ключ из одной таблицы может встречаться несколько раз в другой таблице. Это наиболее распространенный тип связи. Например, у одного покупателя может быть несколько заказов, в то же время каждый заказ имеет свой уникальный идентификатор, но два покупателя могут заказать одну и ту же книгу:
Например, чтобы вывести все заказы пользователя «Александр Иванов» можно воспользоваться следующей SQL-конструкцией:
Код SQL
Связь «многие-ко-многим»
Чтобы данные со связью «многие-ко-многим» могли быть представлены в базе данных, этот тип связи преобразуется в две связи «один-ко-многим» с помощью таблицы отображения (mapping table). В нашем случае такой таблицей является Orders.
Проектирование базы данных
Основой любой реляционной БД являются
таблицы. Разработка таблиц является одним из наиболее сложных этапов в
проектировании БД. Грамотно спроектированные таблицы являются основой для
создания работоспособной и эффективной БД.
Понятие таблицы в Access полностью соответствует аналогичному
понятию реляционной модели данных. Любая таблица реляционной БД состоит из строк
(называемых также записями) и столбцов (называемых
также полями).
Строки таблицы содержат сведения об
однотипных объектах — документах, людях, предметах. На пересечении столбца и
строки находится конкретное значение, характеризующее объект.
Можно сформулировать ряд основных
требований, которым должны удовлетворять таблицы.
1. Информация в таблице не должна
дублироваться, т.е. в таблице не должно существовать двух записей с полностью
совпадающим набором значений ее полей.
2. На пересечении любого столбца и
любой строки должно находиться одно
значение.
3. Не рекомендуется включать в
таблицу данные, которые являются результатом вычислений.
4. Значения данных в одном и том же
столбце должны принадлежать к одному и тому же типу, доступному для
использования в данной СУБД.
5. Каждое поле должно иметь уникальное
имя.
6. Каждая таблица должна иметь
первичный ключ.
7. Таблицы БД должны быть связаны
через внешние ключи.
Каждая таблица должна содержать поле
(или набор из нескольких полей), значения в котором однозначно идентифицируют
каждую запись в таблице. Такое поле (или набор полей) называется ключевым полем
таблицы или первичным ключом. Первичный ключ любой таблицы обязан
содержать уникальные непустые значения для каждой записи. Если
для таблицы обозначены ключевые поля, то Access предотвращает дублирование или ввод пустых значений в ключевое поле.
В Access можно выделить три типа ключевых полей: простой ключ, составной
ключ и поле счетчика.
Если поле содержит уникальные значения,
такие как коды или инвентарные номера, то это поле можно определить как простой
первичный ключ. Если в этом поле появятся повторяющиеся или пустые
значения, Access выведет сообщение об ошибке.
В случаях, когда невозможно
гарантировать уникальность значений ни одного из полей, можно создать ключ,
состоящий из нескольких полей — составной первичный ключ. Для
составного ключа существенным может оказаться порядок образующих ключ полей. Не
рекомендуется определять ключ по полям Имена и Фамилии, поскольку нельзя исключить
повторения этой пары значений для разных людей.
Составной ключ необходим для таблицы,
используемой для связывания двух таблиц в отношении «многие — ко — многим»
Обычно такой ключ состоит из ключевых полей связываемых таблиц.
Если для какой-либо таблицы не удалось
определить простой первичный ключ или найти подходящий набор полей для
составного ключа, можно добавить в таблицу поле счетчика и
сделать его ключевым. При создании каждой новой записи Access генерирует уникальный номер записи,
называемый счетчиком. Указание такого поля в качестве ключевого
является наиболее простым способом создания ключевых полей.
Если до сохранения созданной таблицы
ключевые поля не были определены, то при сохранении будет выдано предложение о
создании системой ключевого поля. При ответе Да будет создано ключевое
поле счетчика.
Сила реляционных баз данных, таких как
БД Microsoft Access, заключается в том, что они могут быстро найти и связать данные
из разных таблиц при помощи запросов, форм и отчетов. Таблицы реляционных БД
связываются через одинаковые значения одноименных полей, содержащихся в
связываемых таблицах. Такие поля называются внешним ключом для
этих таблиц. Все таблицы БД Access должны
быть связаны с помощью внешних ключей.
Сброс пароля для root
При необходимости, мы можем сбросить пароль для суперпользователя mysql. Для этого необходимо запустить сервер баз данных в безопасном режиме и ввести команду на смену пароля.
Для начала необходимо остановить сервис:
systemctl stop mysql
… или:
systemctl stop mariadb
Создаем каталог /var/run/mysqld и зададим для него нужные права:
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
* в некоторых системах данного каталога может не быть, однако, для безопасного режима mysql он необходим.
Запускаем в безопасном режиме СУБД:
mysqld_safe —skip-grant-tables &
Запускаем оболочку sql — система не потребует пароль:
mysql -uroot
Меняем пароль запросов sql в базе mysql:
> use mysql;
> UPDATE user SET authentication_string=PASSWORD(«new_password») WHERE User=’root’;
> FLUSH PRIVILEGES;
> quit
Уничтожаем процесс, который запустили ранее:
kill %1
После, запускаем mysql в нормальном режиме:
systemctl start mysql
… или:
systemctl start mariadb
Принцип работы MySQL-серверов
Он такой же, как в любых клиент-серверных моделях. Одно устройство делает запрос, а второе отвечает. Запрашивающих может быть больше одного, все зависит от сервера, сети и поставленных задач.
Технически немного иные, но по своей сути идентичные процессы происходят в среде MySQL:
- Система создает базу данных для хранения информации (ее сортировки, идентификации и т.п.).
- Клиенты (другие компьютеры в сети) подают запросы к базе с помощью специфичных для SQL команд.
- Серверное приложение обрабатывает запрос и выдает ответ клиенту (выдает запрашиваемые данные).
Для взаимодействия с MySQL-сервером используются соответствующие утилиты. Некоторые работают только в командной строке. Некоторые награждены графическим интерфейсом. Популярные решения – WorkBench, SequelPro, SQL Studio, TablePlus. Правда, большинство вебмастеров предпочитает phpMyAdmin, так как та входит в LAMP и работает в браузере.
Как создать базу данных на хостинге?
У хостинг-провайдеров встречаются панели управления со встроенной функцией создания баз данных. В Timeweb такая есть. Чтобы создать на хостинге базу данных, надо открыть раздел «Базы данных MySQL» и кликнуть по кнопке «Создание новой базы данных». Система попросит указать параметры, имя пользователя и пароль администратора для авторизации.
Что касается создания БД на VDS, то можно воспользоваться панелью управления сервером. Например, ISPmanager.
В ISPmanager базы создаются так:
- Открываем панель управления.
- Переходим в пункт меню «Инструменты».
- Кликаем по подпункту «Базы данных».
- Нажимаем на кнопку «Создать».
- Указываем параметры будущей базы (логин, пароль и т.п.).
- Сохраняем данные, кликнув по кнопке ОК.