Разное

Создание базы данных mysql: Создание базы данных в MySQL, настройка и удаление таблицы

16.04.2023

Типы данных в MySQL — Блог компании Селектел

Эта инструкция
является частью курса

Введение

При создании таблиц в MySQL для каждого столбца нужно указывать тип данных. Он определяет, какие данные там могут храниться, как будут обрабатываться и сколько места будут занимать. В MySQL все типы данных делятся на несколько классов: числовые типы, символьные, дата/время и так далее. В каждом классе есть несколько типов данных, которые внешне могут быть похожи, но их поведение или принципы хранения отличаются. Важно выбрать правильный тип сразу при создании таблицы, потому что потом готовую структуру и приложения будет сложней переделать.

В этой статье мы расскажем об основных типах данных в MySQL и дадим советы, где лучше использовать тот или иной тип.

Возможности MySQL в «Облачных базах данных»

Подробнее

Числовые типы

Используются для хранения чисел. Бывают целочисленными, с плавающей точкой и с фиксированной точкой.

Целые числа

Хранят только целые числа, без дробной части. Делятся на signed (со знаком) и unsigned (без знака). Типы singed позволяют хранить как положительные, так и отрицательные значения. Типы unsigned хранят только положительные числа, но зато диапазон значений больше. Это может быть полезно в случаях, когда хранимые значения заведомо не могут быть отрицательным. Например, количество товара или идентификатор записи в таблице.

ТипРазмер (байт)Диапазон signedДиапазон unsigned
TINYINT1-128 … 1270 … 255
SMALLINT2-3 2768 … 32 7670 … 65 535
MEDIUMINT3-8 388 608 … 83886070 … 16 777 215
INT42 147 483 648 … 2 147 483 6470 … 42 94 967 295
BIGINT8-263 … 263-10 … 264-1

Числа с плавающей точкой

Хранят приблизительные значения. Не резервируют определенное количество бит для целочисленной или дробной частей. Поэтому у всех значений в таблице количество до и после запятой будет разным.

ТипРазмер (байт)Диапазон 
FLOAT4-3.402823466E+38 … -1.175494351E-38 и 1.175494351E-38 … 3.402823466E+38
DOUBLE8-1.7976931348623157E+308 … -2.2250738585072014E-308 и2.2250738585072014E-308 … 1.7976931348623157E+308

До версии MySQL 8.0.17 эти типы данных поддерживали диапазон unsigned, но он работал не так, как с целыми числами. Беззнаковый диапазон просто запрещал сохранять отрицательные значения, при этом максимальное значение не увеличивалось. Начиная с версии 8.0.17, использование unsigned не рекомендуется и  считается устаревшим. В будущих версиях MySQL поддержку беззнакового диапазона для этого типа данных могут вовсе удалить.

Числа с фиксированной точкой

Эти типы данных используются для сохранения заданной точности. Такие числа резервируют определенное количество бит для целочисленной и дробной частей. Независимо от того, насколько большое или маленькое число, оно всегда будет использовать одно и то же количество бит для сохранения каждой части. Эти типы данных подходят для случаев, когда важна точность, например, деньги.

В MySQL для хранения чисел с фиксированной точкой используются типы DECIMAL(M,D) и NUMERIC(M,D), но по факту это синонимы. Можно использовать любой из этих типов, результат будет одинаковым. В таких столбцах максимально можно хранить до 65 чисел вместе с целочисленной и дробной частями.

Символьные (строковые)

Символьные типы используются для хранения текстов. Есть два основных типа: CHAR и VARCHAR. С точки зрения пользователя они выглядят похоже, но MySQL хранит и обрабатывает их по-разному.

  • CHAR хранит строку фиксированной длины до 255 символов. Если длина вставляемой записи меньше, то MySQL автоматически дополняет значение пробелами. Например, если мы указали тип CHAR(10) и сохранили строку «Привет», то по факту в БД будет храниться строка «Привет » (обратите внимание на четыре пробела в конце строки).

Кажется, что это лишняя трата места. Но если во всех ваших записях хранятся строки примерно одной длины, то тип CHAR будет очень производительным. Например, его можно использовать для хранения хешей, у которых длина всегда одинакова.

  • VARCHAR хранит строки переменной длины до 65 535 символов. Причем в памяти хранится именно та длина, которая была указана при создании. VARCHAR занимает меньше места, чем CHAR, но подвержен фрагментации и из-за этого может проигрывать в скорости обработки данных.

Текстовые и бинарные

Текстовые (TEXT) и бинарные (BLOB) типы данных используются для хранения больших объемов текста или двоичных данных. Эти типы похожи, но отличаются по способу хранения и обработки внутри MySQL.

  • BLOB обрабатывается как двоичные данные. В нем не хранится набор символов, а операции сортировки и сравнения основаны на числовых значениях байтов. 
  • TEXT обрабатывается как символьные строки. В нем хранится именно набор символов, а значения сортируются и сравниваются на основе сопоставления набора символов..

Текстовые типы отлично подходят для хранения больших текстов: статей, докладов и так далее. А бинарные типы могут хранить любые файлы или мультимедиа-контент.

ТипРазмер (байт)Макс. размер символов
TINYTEXT / TINYBLOB255255
TEXT / BLOB65 53565 535
MEDIUMTEXT / MEDIUMBLOB16 777 215224-1
LONGTEXT / LONGBLOB4 294 967 295232-1

Кажется, что типы TINYTEXT и TEXT похожи на CHAR и VARCHAR. Но разница в том, что MySQL не умеет индексировать текстовые и бинарные типы и не может использовать индексы для сортировки.

Дата/время

Типы данных, которые позволяют работать с датой и временем.

ТипРазмер (байт)Описание
DATE3Только дата в формате YYYY-MM-DD. Допустимые значения от 1000-01-01 до 9999-12-31
DATETIME8Дата и время в формате YYYY-MM-DD HH:MM:SS. Допустимые значения от 1000-01-01 00:00:00 до 9999-12-31 23:59:59
TIMESTAMP4Дата и время. Хранится в виде количества секунд, прошедших с 1 января 1970 года по гринвичу. Занимает в два раза меньше места, чем тип DATETIME. Но при этом диапазон ограничен значениями от 1970-01-01 00:00:01 до 2038-01-09 03:14:07
TIME3Только время в формате HH:MM:SS. Допустимые значения от 00:00:00 до 23:59:59
YEAR(N)1Только год в формате YYYY или YY. Допустимые значения от 1901 до 2155 или от 70 до 69 (1970 — 2069)

JSON

Это относительно новый тип данных, который появился в MySQL версии 5. 7.8. Он позволяет нативно хранить и обрабатывать данные в JSON-формате.

В отличие от хранения объектов в виде текста, в использовании специального типа данных есть несколько преимуществ: 

  1. Валидация JSON-объектов. Если попытаться сохранить неправильный JSON, MySQL сгенерирует ошибку.
  2. Возможность нативно работать с JSON, выбирать и обновлять только отдельные части объектов, а не весь объект целиком.
  3. MySQL сохраняет тип JSON в специальном внутреннем формате. Такой способ более производительный, чем работа с JSON в виде строки.

Составные типы

Строковые типы данных, которые могут хранить значения только из заранее определенного списка. Несмотря на то, что список значений состоит из строк, в самих таблицах хранятся только числа, которые ассоциированы со справочником возможных значений. Поэтому они занимают мало места.

  • ENUM может хранить только одно значение из списка, занимает 1-2 байта.
  • SET может хранить одновременно до 64 значений из списка, занимает от 1 до 8 байт.

Заключение

Мы рассмотрели основные типы данных и полей в MySQL, объяснили разницу между схожими типами. Теперь вы можете создавать свои структуры БД, используя полученные знания.

Зарегистрироваться в панели управления

Регистрируйте аккаунт в панели управления Selectel, пополняйте баланс удобным способом и подключайте наши продукты.

Перейти в панель

Узнать о продукте больше

Все о принципах работы, задачах и фичах «Облачных баз данных» читайте на нашем сайте.

Читать про продукт

Визуальное проектирование базы данных в MySQL Workbench / Хабр

Цель данного поста — помочь начинающему разработчику быстро освоится и спроектировать простенькую базу с помощью инструмента для визуального проектирования баз данных MySQL Workbench от компании Oracle и получить её ER-модель и SQL-дамп.

Ну что же, меньше слов да больше смысла! Внешний вид окна программы, раздел «Моделирование данных» выглядит так:

Для того, чтобы открыть существующую модель надо нажать на ссылку:

Open Existing EER Model, для создания новой модели – выбрать параметр: Create New EER Model, чтобы создать модель «сущность-связь» из существующей базы данных – нажать на параметр: Create EER Model From Existing Database, а для создания EER модели из SQL скрипта нужно выбрать: Create EER Model From SQL Script.
Для создания новой модели, воспользуемся ссылкой Create New EER Model, после нажатия на неё отобразится окно с параметрами:

Для начала необходимо создать таблицы, для этого нажмём на кнопку Add Table, появится следующая форма:

Сначала создадим таблицу

users, которая будет хранить данные о пользователях информационной системы, в поле table Name впишем имя таблицы, в разделе формы Columns создадим поля таблицы:
— Первое поле id будет содержать уникальный номер пользователя, зададим ему свойства: Auto Increment, Not Null, Primary key и Unique, в разделе Data type выберем целочисленный тип integer.
— Второе поле fio, где будет хранится Ф.И.О. пользователя, установим полю свойства: Not Null, Primary key,, в разделе Data type выберем строковый тип VARCHAR и зададим количество символов в 255.
— Третье поле login, будет содержать логин пользователя, оно должно быть уникальным, как и поле
id
, поэтому установим ему свойство Unique и зададим количество символов в 255.
— Следующие поля: password содержащее пароль, e_mail содержащее адрес электронной почты и поле type содержащее тип пользователя будут без особых свойств, со строковым типом VARCHAR длинной в 255 символов, за исключением последнего поля type которому хватит с 45 символов.
После проделанных манипуляций форма с именем таблицы users будет выглядеть так:

На диаграмме появится таблица users c полями и индексами:

Аналогичным способом создадим таблицу settings с настройками доступа к базе данных ИС, содержащую поля id, host для указания имени хоста (адреса сервера), db – имени базы данных, user и password с именем пользователя и паролем, для установки ИС на удалённый сервер.

Далее по уже известному методу создадим таблицу shops которая будет хранить данные о магазинах в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, поле address – его физический адрес, поле

tel – телефон магазина, site – интернет сайт магазина и поле email с электронным адресом магазина.

Затем создадим таблицу products хранящую данные о продукции магазина в полях: id типа integer – ключевое, ненулевое, уникальное с автоинкрементом, поле name хранящее название магазина, ключевое, ненулевое поле целочисленного типа shop_id хранящее номер магазина, поле type_id с информацией о номере товара из таблицы видов продукции. Поле brand – брэнд изготовителя длинной в 255 символов, поле model – с моделью товара, поле data – с данными и характеристиками товара типа

Tinytext, поле img с полным адресом до изображения товара длинной в 255 символов, и поля price с ценой товара и warranty с информацией о сроках гарантии на товар длинной в 45 символов.

Созданные нами таблицы settings, shops и products выглядят следующим образом:

Далее нам понадобится таблица хранящая тип продуктов product_type, она состоит из уникального, ненулевого, ключевого поля id с автоинкрементом целочисленного типа, и уникального поля name длинной в 255 символов, которое содержит название вида продуктов.

Вид таблицы таков:

Последние две таблицы это orders и deliveries, первая содержит информацию о заказах клиентов, а последняя данные о доставке продукции.

Поля таблицы orders: id ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле shop_id содержащее номер магазина – ключевое, ненулевое целочисленного типа, поле product_id хранящее номер продукта – ключевое, ненулевое целочисленного типа, поле fio с номером пользователя совершившего заказ — ключевое, ненулевое целочисленного типа, поле date c датой заказа – типа DATE, поле quantity с количеством заказанных товаров – целочисленного типа, поле tel

с номером телефона заказчика – строкового типа длинной в 255 символов и поле confirm содержащее информацию о подтверждении заказа – логического типа.

Поля таблицы deliveries: order_id с номером заказа — ключевое, ненулевое, уникальное поле целочисленного типа с автоинкрементом, поле поле fio с номером пользователя совершившего заказ — ключевое, ненулевое целочисленного типа, поле address хранящее адрес доставки товара указанный клиентом – строкового типа длинной в 255 символов, поле time хранящее желаемое время доставки товара – строкового типа длинной в 255 символов, поле date с датой совершения заказа клиентом – типа DATE

и поле логического типа confirm хранящее информацию о доставке товара.

Таблицы orders и deliveries выглядят так:

Связи таблиц

Мы создали базу данных, состоящую из семи таблиц, теперь необходимо связать таблицы, мы уже создали ключевые поля целочисленного типа, они и станут основой для связывания.
Для того чтобы связать две таблицы к примеру products и product_type, необходимо дважды щёлкнуть левой кнопкой мыши на диаграмму с таблицей products и выбрать вкладку Foreign keys (внешние ключи

), далее в поле Foreign key name ввести уникальное имя внешнего ключа, дважды щёлкнуть по вкладке Referenced table и выбрать таблицу product_type, затем в форме расположенной правее выбрать ссылающееся поле type_id и выбрать в всплывающем списке поле id.

Таким образом, оба поля таблицы оказываются связанны, затем нужно задать тип отношений связи между таблицами, откроем окно, кликнув на появившуюся связь между таблицами, и выберем вкладку Foreign Key и в разделе Cardinality выберем тип связи один ко многим, и закроем окно. На диаграмме отобразится связь таблиц:

Аналогичным образом связываем все ключевые поля в таблицах, чтобы они были логически взаимосвязаны, далее нам необходимо убедится, что спроектированная база данных соответствует третьей нормальной форме.

Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.

В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в первой нормальной форме. Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый не ключевой атрибут неприводимо (функционально полно) зависит от её потенциального ключа.

База данных будет находиться в третьей нормальной форме, если она приведена ко второй нормальной форме и каждый не ключевой столбец независим друг от друга.

Таким образом наша база находится в третьей нормальной форме, т.к. каждый не ключевой столбец независим друг от друга. Это наглядно видно на диаграмме нашей базы данных:

Большинство таблиц находятся в отношении один-ко-многим, за исключением таблиц deliveries и orders находящихся в отношении одни-к-одному, т.к. доставлен, может быть только одни заказ, т.е. у одного заказа только одна доставка. Остальные связи наглядно указаны выше.

Теперь загрузим нашу базу данных на сервер. Для этого создадим новое подключение к базе данных, щёлкнув по ссылке New connection в стартовом окне программы:

Затем заполним поля в открывшимся окне:

Укажем имя соединения в поле Connection Name, выберем метод соединения в списке Connection Method, зададим имя хоста и порт во вкладке Parameters, укажем имя пользователя и пароль если он есть и нажмём на кнопку ОК. Затем откроем вкладку EER Diagram, в панели выберем пункт Database и нажмём на параметр Forward Engineer:

После того как появится окно, нажимаем на кнопку “Next”, выбираем параметр Export MySQL Table Objects и нажимаем на кнопку “Next”:

После нажатия кнопки появится вкладка с SQL кодом, можно сохранить его нажав кнопку “Save to file” если это необходимо, а затем нажать на кнопку “Next”. Появится окно с параметрами соединения:

Проверяем, верны ли параметры подключения и нажимаем на кнопку “Execute”, если в SQL коде не содержится ошибок, то после исполнения кода мы увидим окно со списком таблиц, иначе выведется сообщение об ошибке. Теперь наша база загружена на сервер.

Благодарю за внимание, скачать саму программу можно здесь.

UPD:

Некоторых хабравчан интересовала возможность отображения линий связей таблиц в режиме поле-к-полю

по совету одного из пользователей я приведу небольшое пояснение о том как изменить вид связей и таблиц, для этого необходимо выбрать следующий параметр в разделе меню Relationship Notation:

После этого связи таблиц примут вид:

Также есть возможность изменить вид таблиц, для этого нужно поставить галочку в вышеуказанном разделе меню и в нижеследующем Object Notation:

Вот так выглядит таблица на диаграмме приведенная к стандарту IDEF1X:

Благодарю за дельные комментарии!

Как создать базу данных в MySQL?

SQL означает язык структурированных запросов, который используется для связи с базой данных. SQL используется только для баз данных реляционного типа. Реляционная база данных — это база данных с табличным методом сортировки данных, которая состоит из строк и столбцов. В этой статье речь пойдет о том, как создать базу данных в MySQL.

Что такое база данных?

База данных — это организованный набор информации, доступ к которому и управление которым можно легко получить. Данные организованы в строки, столбцы и таблицы и индексированы, чтобы упростить поиск нужной информации. Доступно множество баз данных, таких как MySQL, Sybase, Oracle, MongoDB, Informix, PostgreSQL, SQL Server и т. д.

Что такое MySQL?

MySQL — это система управления реляционными базами данных. Он основан на SQL (язык структурированных запросов). Он в основном используется для веб-базы данных. Это стабильное, надежное и надежное решение с очень продвинутыми функциями и преимуществами, которые заключаются в следующем:

  • Защита данных
  • Масштабируемость по запросу
  • Высокая производительность
  • Круглосуточная работа
  • Комплексная транзакционная поддержка
  • Полный контроль рабочего процесса

Что такое верстак?

MySQL Workbench — это инструмент визуального проектирования и моделирования баз данных, который объединяет разработку, администрирование, проектирование, создание и обслуживание баз данных SQL в единую интегрированную среду разработки для системы баз данных MySQL.

Как создать базу данных в MySQL?

Существует два метода создания новой базы данных в MySQL:

Метод 1

Для создания новой базы данных выполните следующие действия:

Шаг 1. Перейдите на вкладку навигации и щелкните меню Схема.

Шаг 2. Появится новое окно схемы. Введите имя новой базы данных (например, new_database) без пробелов. Используйте кодировку и сопоставление по умолчанию. Нажмите кнопку «Применить».

Шаг 3: Появится новое всплывающее окно. Нажмите кнопку «Применить».

Шаг 4: Появится новый всплывающий экран. Нажмите кнопку «Готово», чтобы завершить создание базы данных.

Теперь вы можете увидеть новую базу данных в меню схемы. Если вы не видите новую базу данных, щелкните значок обновления в меню схемы.

Метод 2

Второй способ заключается в написании запроса на создание новой базы данных.

Синтаксис: CREATE DATABASE имя_базы_данных;

Пример:

Заключение

В этой статье мы узнали, как создать простую базу данных в MySQL. Мы также обсудили базы данных и рабочее место. Если вы хотите узнать больше о MySQL, ознакомьтесь с нашим сертификационным курсом по SQL.

Этот сертификационный курс SQL дает вам всю информацию, необходимую для успешного начала работы с базами данных SQL и использования базы данных в ваших приложениях. Узнайте, как правильно структурировать базу данных, создавать эффективные операторы и предложения SQL, а также управлять базой данных SQL для масштабируемого роста.

Если у вас есть какие-либо вопросы, задавайте их в разделе комментариев, и наши специалисты оперативно на них ответят.

Создать базу данных MySQL и пользователя

Создать базу данных MySQL и пользователя

Предыдущий Следующий Для корректного отображения этого контента должен быть включен JavaScript

  1. Руководство по установке консоли Cloud Native Core
  2. Установка IAM консоли ЧПУ Инструкции
  3. Создать базу данных MySQL и пользователя

В этом разделе объясняется, как создать пользователя CNCC и базу данных CNCC.

  1. Войдите на сервер или машину, которая имеет разрешение на доступ к SQL-узлы кластера NDB.
  2. Поочередно подключаться к узлам SQL кластера NDB.
  3. Выполните следующую команду, чтобы войти в командную строку MySQL, используя разрешение root или пользователь, у которого есть разрешение на создание пользователей с разрешениями:

    mysql-h-uroot-p

  4. Проверьте, существует ли уже пользователь CNCC. Если пользователь не существует, создайте пользователя CNCC, выполнив следующие команды:
    1. Выполнить $ SELECT User FROM mysql.user; от до перечислите пользователей.
    2. Если пользователь не существует, создайте нового пользователя, выполнив $ СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ '<имя пользователя CNCC>'@'%' ОПРЕДЕЛЕН '<Пароль CNCC>';
  5. Проверьте, существует ли уже база данных CNCC. Если база данных не существует, создайте базу данных CNCC и предоставьте разрешения пользователю CNCC, созданному в предыдущий шаг:
    1. Выполнить $ показать базы данных; , чтобы проверить, если база данных существует.
    2. Если MySql имеет базу данных CNCC, созданную в соответствии с выпуском 1.0.0, удалите его перед созданием cnccdb, выполнив следующую команду: УДАЛЕНИЕ БАЗЫ ДАННЫХ cnccdb
    3. Выполнить $ СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ НАБОР СИМВОЛОВ utf8; для базы данных создание.
    4. Предоставьте разрешение пользователю, выполнив следующее команда: $ ГРАНТ ВЫБРАТЬ, ВСТАВИТЬ, СОЗДАТЬ, ИЗМЕНИТЬ, УДАЛИТЬ, БЛОКИРОВАТЬ ТАБЛИЦЫ, СОЗДАТЬ ВРЕМЕННЫЕ ТАБЛИЦЫ, УДАЛИТЬ, ОБНОВИТЬ, ВЫПОЛНИТЬ НА <базе данных CNCC>. * ДЛЯ '<Пользователь CNCC Имя>'@'%';

Пример для демонстрации создания пользователя cncc, создания и присвоения cnccdb разрешения пользователю cncc:

 # Вход в MySql: -
$ mysql -u корень -p
Проверить, что пользователь уже существует или нет
$ ВЫБРАТЬ пользователя ИЗ mysql.user;
# Если пользователь уже существует, перейдите к следующему шагу. Команда для создания нового пользователя, как указано ниже: -
$ СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'cnccusr'@'%', ОПРЕДЕЛЕННОГО 'cnccpasswd'
# Команда для проверки существования базы данных: -
$ показать базы данных;
# Проверить, есть ли в списке требуемая база данных. Если MySql уже создал cnccdb в соответствии с созданием выпуска 1.0.0, удалите его.
$ УДАЛИТЬ БАЗУ ДАННЫХ cnccdb;
# Создание базы данных для CNCC
$ СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ cnccdb CHARACTERSET utf8;
# Предоставление разрешения пользователю: -
$ GRANT SELECT, INSERT, CREATE, ALTER, DROP, LOCK TABLES, CREATE TEMPORARY TABLES, DELETE, UPDATE, EXECUTE ON cnccdb .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *