3 ответа 3
Разумеется, Вашу структуру надо нормализовать. Всего лишь надо поля 3. Клиент 4. Контакт заменить на поле «ИД_Контакта», которое бы ссылалось на запись в таблице «Контакт» с полями «ИД, Клиент, Контакт». Да, Вы экономите всего одно поле, но структура становится ближе к нормальной форме (да и просто логичнее) — заодно изучите соотношение «один-ко-многим» и операцию JOIN
Если же записей будет немного, смысла делать поддержку полноценной СУБД нет. Можно сделать на встраиваемой СУБД, например, sqlite3 (насколько помню, поддержка ее в jdbc есть), а можно, действительно, на XML-файлах, хоть такое решение мне лично не по душе.
Думать о количестве полей просто как о количестве полей — бессмысленно. В моей практике встречалась таблица, в которой было около сотни полей — и улучшить это было малореально.
Вообще, рекомендую почитать какую-нибудь теорию по СУБД, минимально привязанную к конкретной реализации (никаких «Освой Oracle за 15 минут») — например:
- Дейт К. Дж. Введение в системы баз данных.
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс.
Источник
Таблицы MyISAM
Использовались по-умолчанию в MySQL вплоть до выхода в свет версии 5.5.
Каждая MyISAM таблица хранится на диске в трёх файлах (в поддиректории каталога mysql/data), имена этих файлов совпадают с названием таблицы, а расширение может принимать одно из следующих значений: .frm — структура таблицы, этот файл содержит информацию об именах и типах столбцов и индексов; .MYD — в этом файле содержатся данные таблицы; .MYI — в этом файле содержатся индексы таблицы.
- Таблицы MyISAM обладают рядом особенностей:
- Данные хранятся в кроссплатформенном формате, что позволяет переносить базы с сервера непосредственным копированием файлов, минуя промежуточные формы.
- Максимальное количество индексов — 64 (с версии 4.1.2). Каждый индекс может быть максимум из 16 столбцов.
- С версии MySQL 4.1, для каждого текстового столбца может быть задана своя кодировка.
- Допускается индексирование текстовых столбцов, в том числе и переменной длины.
- Поддерживается полнотекстовый поиск.
- Таблицы имеют специальный флаг, указывающий на правильность закрытия таблицы. Если сервер был остановлен аварийно, то при загрузке незакрытые флаги будут сигнализировать о возможных поврежденных таблицах и сервер попытается автоматически их проверить и восстановить.
- Таблицы MyISAM можно проверять/восстанавливать при помощи утилиты myisamchk.
- Таблицы MyISAM можно сжимать при помощи команды myisampack.
В MyISAM поддерживается три различных типа таблиц. Два из них выбираются автоматически, в зависимости от типа используемых столбцов. Третий — сжатые таблицы — может быть создан только при помощи инструмента myisampack.
1.Cтатические таблицы (с фиксированной длиной)
Это формат, принятый по умолчанию. Он используется, когда таблица не содержит столбцов VARCHAR, BLOB или TEXT.
Данный формат — самый простой и безопасный, а также наиболее быстрый при работе с дисками. Скорость достигается за счет простоты поиска информации на диске: в таблицах статического формата с индексом для этого достаточно всего лишь умножить номер строки на ее длину.
Кроме того, при сканировании таблицы очень просто считывать постоянное количество записей при каждом чтении с диска.
Если произойдет сбой во время записи в файл MyISAM фиксированного размера, myisamchk в любом случае сможет легко определить, где начинается и заканчивается любая строка. Поэтому обычно удается восстановить все записи, кроме тех, которые были частично перезаписаны.
2.Динамические таблицы
Формат используется для таблиц, которые содержат столбцы VARCHAR, BLOB или TEXT, а также если таблица была создана с параметром ROW_FORMAT=dynamic.
Это несколько более сложный формат, так как у каждой строки есть заголовок, в котором указана ее длина. Одна запись может заканчиваться более чем в одном месте, если она была увеличена во время обновления.
Чтобы произвести дефрагментацию таблицы, можно воспользоваться командами OPTIMIZE table или myisamchk. Если у вас есть статические данные, которые часто считываются/изменяются в некоторых столбцах VARCHAR или BLOB одной и той же таблицы, во избежание фрагментации эти динамические столбцы лучше переместить в другие таблицы.
3.Сжатые таблицы
Таблицы этого тип предназначены только для чтения. Они генерируются при помощи дополнительного инструмента myisampack.
Несмотря на то, что формат таблиц MyISAM очень надежен (все изменения в таблице записываются до возвращения значения оператора SQL), таблица, тем не менее, может быть повреждена. Такое происходит в следующих случаях:
- Процесс mysqld уничтожен во время осуществления записи;
- Неожиданное отключение компьютера (например, если выключилось электропитание);
- Ошибка аппаратного обеспечения;
- Использование внешней программы (например myisamchk) на открытой таблице.
- Ошибка программного обеспечения в коде MySQL или MyISAM.
Выбор индексов в MySQL
В самом простом случае, индекс необходимо создавать для тех колонок, которые присутствуют в условии WHERE.
Рассмотрим запрос из примера:
SELECT * FROM users WHERE age = 29
Нам необходимо создать индекс на колонку age:
CREATE INDEX age ON users(age);
После этой операции MySQL начнет использовать индекс age для выполнения подобных запросов. Индекс будет использоваться и для выборок по диапазонам значений этой колонки:
SELECT * FROM users WHERE age < 29
Сортировка
Для запросов такого вида:
SELECT * FROM users ORDER BY register_date
действует такое же правило – создаем индекс на колонку, по которой происходит сортировка:
CREATE INDEX register_date ON users(register_date);
Внутренности хранения индексов
Представим, что наша таблица выглядит так:
id | name | age 1 | Den | 29 2 | Alyona | 15 3 | Putin | 89 4 | Petro | 12
После создания индекса на колонку age, MySQL сохранит все ее значения в отсортированном виде:
age index 12 15 29 89
Кроме этого, будет сохранена связь между значением в индексе и записью, которой соответствует это значение. Обычно для этого используется первичный ключ:
age index и связь с записями 12: 4 15: 2 29: 1 89: 3
Уникальные индексы
MySQL поддерживает уникальные индексы. Это удобно для колонок, значения в которых должны быть уникальными по всей таблице. Такие индексы улучшают эффективность выборки для уникальных значений. Например:
SELECT * FROM users WHERE email = '';
CREATE UNIQUE INDEX email ON users(email)
Тогда при поиске данных, MySQL остановится после обнаружения первого соответствия. В случае обычного индекса будет обязательно проведена еще одна проверка (следующего значения в индексе).
Запрос на создание таблицы в MySQL
Для создания таблицы потребуется придумать:
- Имя таблицы
- Имена полей таблицы
- Значения, которыми могут быть заполнены поля
Синтаксис запроса на создание таблицы.
CREATE TABLE table_name (column_name column_type attributes);
1 | CREATETABLEtable_name(column_namecolumn_typeattributes); |
Для примера создадим таблицу books со списком книг условной базы данных Bookstore.
Оповестим сервер MySQL с какой базой данных мы собираемся работать.
USE Bookstore;
1 | USEBookstore; |
При именовании колонок таблицы старайтесь использовать знак подчеркивания в местах где предполагается пробел, не начинать имена с заглавной буквы (кроме имен собственных), а также использовать слова в единственном числе, не совпадающие с именем таблицы.
Составим запрос на создании таблицы со следующими полями:
- id — Идентификатор записи.
- title — название книги.
- author — имя автора книги.
- genre — жанр произведения в книге.
- price — цена книги.
- edition — номер издания.
- isbn — номер ISBN.
- page_num — число страниц в книге.
- publish_year — год выхода книги в печать.
- creation_date — дата создания записи (когда занесли книгу в БД).
CREATE TABLE books(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50) NOT NULL,
author VARCHAR(50) NOT NULL,
genre SET(‘Драма’,’Роман’,’Повесть’,’Рассказ’,’Поэма’),
price DECIMAL(15,2),
edition TINYINT UNSIGNED DEFAULT ‘1’ NOT NULL,
isbn VARCHAR(50),
page_num SMALLINT UNSIGNED,
publish_year SMALLINT(4),
creation_date TIMESTAMP
);
1 |
CREATETABLEbooks( idINTUNSIGNEDAUTO_INCREMENTPRIMARY KEY, titleVARCHAR(50)NOT NULL, authorVARCHAR(50)NOT NULL, genreSET(‘Драма’,’Роман’,’Повесть’,’Рассказ’,’Поэма’), priceDECIMAL(15,2), editionTINYINTUNSIGNEDDEFAULT’1’NOT NULL, isbnVARCHAR(50), page_numSMALLINTUNSIGNED, publish_yearSMALLINT(4), creation_dateTIMESTAMP ); |
После того как вы указали тип данных для поля, вы можете также указать дополнительные атрибуты:
- UNSIGNED — позволяет увеличить диапазон числовых значений за счет отключения использования отрицательных чисел. Используется только с числовыми типами данных.
- AUTO_INCREMENT — значение поля с этим атрибутом будет увеличиваться на 1 при каждом создании новой записи в таблице. Часто используется для автоматического заполнения полей с идентификатором записи.
- PRIMARY_KEY — первичный ключ используется для идентификации записей в таблице. Первичным ключом может быть только уникальное значение поэтому чаще всего это значение поля id с атрибутом .
- NOT NULL — обязательное поле для заполнения (не может быть пустым).
- DEFAULT — значение поля по умолчанию.
Каждая таблица должна иметь поле которое помечено как первичный ключ.
Создание таблицы в терминале:
Агрегатные функции
Часто при работе с данными необязательно просматривать сами данные. Скорее, вам нужна информация о данных. Синтаксис SQL включает в себя ряд функций, которые позволяют интерпретировать или выполнять вычисления для ваших данных, просто выполнив запрос «SELECT». Они известны как aggregate functions.
Функция считает и возвращает количество строк, соответствующих определенным критериям. Например, если вы хотите узнать, сколько ваших друзей предпочитают тофу для своего дня рождения, вы можете выполнить этот запрос:
Функция возвращает среднее (среднее) значение столбца. Используя наш пример таблицы, вы можете найти средний лучший результат среди ваших друзей с помощью этого запроса:
используется для поиска общей суммы данного столбца. Например, если вы хотите посмотреть, сколько игр вы и ваши друзья играли в боулинг за эти годы, вы можете выполнить этот запрос:
Обратите внимание, что функции и будут работать правильно только при использовании с числовыми данными. Если вы попытаетесь использовать их для нечисловых данных, это приведет к ошибке или просто к «0», в зависимости от того, какую СУБД вы используете:. MIN используется для поиска наименьшего значения в указанном столбце
Вы можете использовать этот запрос, чтобы увидеть, какой худший общий рекорд в боулинге (с точки зрения количества побед):
MIN используется для поиска наименьшего значения в указанном столбце. Вы можете использовать этот запрос, чтобы увидеть, какой худший общий рекорд в боулинге (с точки зрения количества побед):
Аналогично, используется для поиска наибольшего числового значения в данном столбце. Следующий запрос покажет лучший общий результат в боулинге:
В отличие от и, функции и могут использоваться как для числовых, так и для буквенных типов данных. При запуске в столбце, содержащем строковые значения, функция MIN будет отображать первое значение в алфавитном порядке:
Аналогично, при запуске в столбце, содержащем строковые значения, функция покажет последнее значение в алфавитном порядке:
Агрегатные функции умеют больше того, что было описано в этом разделе. Они особенно полезны при использовании с предложением , которое рассматривается в следующем разделе, а также с несколькими другими предложениями запроса, которые влияют на сортировку наборов результатов.
MySQL список таблиц и их структура
Команды для работы со списком таблиц и их структурой.
список баз данных
список таблиц в базе
список столбцов в таблице
показать структуру таблицы в формате «CREATE TABLE»
привилегии для пользователя.
значения системных переменных
статистика по mysqld процессам
статистика по всем таблицам в базе
статистика по всем таблицам wp_ в базе
Проверка настроек кодировки
Проверка настроек кодировки
Проверка кодировки текущей базы данных
Для настройки кодировки utf8 по умолчанию Необходимо внести следующие изменения в файл my.cnf (my.ini):
default-character-set = utf8
Информация об установленной версии pkg_info | grep mysql (FreeBSD)
добавить столбец в таблице в базе mysql
переименование столбцов в таблице
внести изменения в столбцы таблицы
В будущем, если включите innodb_file_per_table, сможете уменьшать объем tablespace путем пересоздания таблиц сразу в InnoDB (т.к. в режиме файл-на-таблицу файл при удалении таблицы стирается) командой
Таблицы MEMORY
Следующий тип таблиц MEMORY (HEAP) хранится в оперативной памяти, из-за чего все запросы к таким таблицам выполняются очень быстро. Недостаток у таких таблиц один — полная потеря данных в случае сбоя работы сервера. В связи с этим в таких таблицах хранят в основном временные данные, которые можно легко восстановить заново.
При создании таблицы типа MEMORY, создаётся один файл с расширением frm, в котором определяется структура таблицы. При остановке или перезагрузке сервера, данные о структуре таблицы остаются, но вся информация содержащаяся в этой таблице теряется, поскольку хранится только в оперативной памяти. При каждой перезагрузке сервера, пересоздавать таблицу не нужно, её структура остаётся.
Таблицы типа MEMORY имеют ряд ограничений:
- Индексы используются только в операциях сравнения с операторами «=» и «⇔», с другими операторами, такими как «>» или «<», индексирование столбцов не имеет смысла.
- Как и с MERGE таблицами возможно использование только неуникальных индексов.
- Не допустимы столбцы типов TEXT и BLOB.
- До версии MySQL 4.1 в таблицах данного типа не поддерживаляс AUTO_INCREMENT.
Создание образца базы данных
Прежде чем мы сможем начать делать запросы в SQL, мы сначала создадим базу данных и пару таблиц, а затем заполним эти таблицы некоторыми примерами данных. Это позволит вам получить практический опыт, когда вы начнете делать запросы позже.
Для примера базы данных, которую мы будем использовать в этом руководстве, представьте следующий сценарий:
Вы и несколько ваших друзей празднуете свои дни рождения друг с другом. В каждом случае члены группы направляются в местный боулинг, участвуют в дружеском турнире, а затем все направляются к вам, где вы готовите любимое блюдо для именинника.
Теперь, что эта традиция продолжается некоторое время, вы решили начать отслеживать записи с этих турниров. Кроме того, чтобы упростить планирование обедов, вы решаете создать запись о днях рождения ваших друзей и их любимых блюдах, сторонах и десертах. Вместо того чтобы хранить эту информацию в физической книге, вы решаете использовать свои навыки работы с базами данных, записав ее в базу данных MySQL.
Если вы создали сервер в NetAngels на основе образа Ubuntu 18.04 Bionic LAMP, то откройте приглашение MySQL выполнив от пользователя root команду:
mysql
Примечание: Если зайти в MySQL таким образом не удается, то для аутентификации с использованием пароля используйте команду:
mysql -u root -p
Затем создайте базу данных, запустив:
Затем выберите эту базу данных, набрав:
Затем создайте две таблицы в этой базе данных. Мы будем использовать первую таблицу, чтобы отслеживать записи ваших друзей в боулинге. Следующая команда создаст таблицу под названием «tourneys» со столбцами для «name» каждого из ваших друзей, количества турниров, которые они выиграли («wins»), их лучший результат за все время и каков размер обувь для боулинга, которую они носят ():
Как только вы запустите команду и заполните ее заголовками столбцов, вы получите следующий вывод:
Заполните таблицу ‘tourneys’ некоторыми примерами данных:
Вы получите такой вывод:
После этого создайте еще одну таблицу в той же базе данных, которую мы будем использовать для хранения информации о любимых блюдах ваших друзей на день рождения. Следующая команда создает таблицу с именем dinners и столбцами для«имя» каждого из ваших друзей, их «дата рождения», их любимое «блюдо», их любимое «гарнир» и их любимый «десерт»:
Аналогично для этой таблицы вы получите отзыв, подтверждающий успешное выполнение команды:
Заполните эту таблицу также некоторыми примерами данных:
Как только эта команда завершится успешно, вы закончили настройку базы данных. Далее мы рассмотрим основную структуру команд запросов SELECT.
Числовые типы данных в MySQL
Тип данных | Размер | Определение |
---|---|---|
INT(Size) | 4 байта |
Целое число от -2,147,483,648 до 2,147,483,647 |
INT UNSIGNED(Size) | 4 байта | Целое число от 0 до 4,294,967,295 |
INTEGER(Size) | 4 байта | Синоним для INT |
TINYINT(Size) | 1 байт | Целое число от -128 до 127 |
TINYINT UNSIGNED(Size) | 1 байт | Целое число от 0 до 256 |
SMALLINT(Size) | 2 байта | Целое число от -32,768 до 32,767 |
SMALLINT UNSIGNED(Size) | 2 байта | Целое число от 0 до 465,535 |
MEDIUMINT(Size) | 3 байта | Целое число от -8,388,608 до 8,388,607 |
MEDIUMINT UNSIGNED(Size) | 3 байта | Целое число от 0 до 16777215 |
BIGINT(Size) | 8 байт | Целое число от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
BIGINT UNSIGNED(Size) | 8 байт | Целое число от 0 до 18,446,744,073,709,551,615 |
FLOAT(M,D) | 4 байта |
Десятичное число от -3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до 3.402823466E+38, где M — количество выводимых цифр в числе (<=25), D — количество цифр после точки. М и D — не обязательны. По умолчанию M=10, D=2. Пример: для FLOAT(5,2) промежуток допустимых значений будет от-999.99 до 999,99. |
FLOAT(M,D) UNSIGNED | 4 байта | Тоже что и FLOAT только без отрицательных значений |
DOUBLE(M,D) | 8 байт |
Десятичное число от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0, и от 2.2250738585072014E-308 до 1.7976931348623157E+308, где M — количество выводимых цифр в числе (25 <= M <= 53), D — количество цифр после точки. М и D — не обязательны. По умолчанию M=16, D=4. Пример: для DOUBLE(5,2) промежуток допустимых значений будет от-999.99 до 999,99. |
DOUBLE(M,D) UNSIGNED | 8 байт | Тоже что и DOUBLE, только не допускает отрицательные значения |
REAL(M,D) |
8 байт | Синоним для DOUBLE |
DECIMAL(M,D) | зависит от количества цифр | Тоже что и DOUBLE, только число хранится в виде строки. По умолчанию M=10, D=0. |
DECIMAL(M,D) UNSIGNED | 8 байт | Тоже что и DECIMAL, только не допускает отрицательные значения |
DEC(M,D) NUMERIC(M,D) |
8 байт | Синонимы для DECIMAL |
Составные индексы
Рассмотрим такой запрос:
SELECT * FROM users WHERE age = 29 AND gender = 'male'
Нам следует создать составной индекс на обе колонки:
CREATE INDEX age_gender ON users(age, gender);
Устройство составного индекса
Чтобы правильно использовать составные индексы, необходимо понять структуру их хранения. Все работает точно так же, как и для обычного индекса. Но для значений используются значения всех входящих колонок сразу. Для таблицы с такими данными:
id | name | age | gender 1 | Den | 29 | male 2 | Alyona | 15 | female 3 | Putin | 89 | tsar 4 | Petro | 12 | male
значения составного индекса будут такими:
age_gender 12male 15female 29male 89tsar
Это означает, что очередность колонок в индексе будет играть большую роль. Обычно колонки, которые используются в условиях WHERE, следует ставить в начало индекса. Колонки из ORDER BY — в конец.
Поиск по диапазону
Представим, что наш запрос будет использовать не сравнение, а поиск по диапазону:
SELECT * FROM users WHERE age <= 29 AND gender = 'male'
Тогда MySQL не сможет использовать полный индекс, т.к. значения gender будут отличаться для разных значений колонки age. В этом случае база данных попытается использовать часть индекса (только age), чтобы выполнить этот запрос:
age_gender 12male 15female 29male 89tsar
Сначала будут отфильтрованы все данные, которые подходят под условие age <= 29. Затем, поиск по значению “male” будет произведен без использования индекса.
Сортировка
Составные индексы также можно использовать, если выполняется сортировка:
SELECT * FROM users WHERE gender = 'male' ORDER BY age
В этом случае нам нужно будет создать индекс в другом порядке, т.к. сортировка (ORDER) происходит после фильтрации (WHERE):
CREATE INDEX gender_age ON users(gender, age);
Такой порядок колонок в индексе позволит выполнить фильтрацию по первой части индекса, а затем отсортировать результат по второй.
Колонок в индексе может быть больше, если требуется:
SELECT * FROM users WHERE gender = 'male' AND country = 'UA' ORDER BY age, register_time
В этом случае следует создать такой индекс:
CREATE INDEX gender_country_age_register ON users(gender, country, age, register_time);
Создание новой базы данных MySQL
Новая база данных создается с помощью оператора SQL CREATE DATABASE, за которым следует имя создаваемой базы данных. Для этой цели также используется оператор CREATE SCHEMA. Например, для создания новой базы данных под названием MySampleDB в командной строке mysql нужно ввести следующий запрос:
CREATE DATABASE MySampleDB;
Если все прошло нормально, команда сгенерирует следующий вывод:
Query OK, 1 row affected (0.00 sec)
Если указанное имя базы данных конфликтует с существующей базой данных MySQL, будет выведено сообщение об ошибке:
ERROR 1007 (HY000): Can't create database 'MySampleDB'; database exists
В этой ситуации следует выбрать другое имя базы данных или использовать опцию IF NOT EXISTS. Она создает базу данных только в том случае, если она еще не существует:
CREATE DATABASE IF NOT EXISTS MySampleDB;
Создание таблиц БД в трех различных версиях
Теперь, когда мы понимаем SQL-запрос, давайте воспользуемся PHP для его выполнения.
Ниже описано создание таблиц в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.
Пример
Скопировать
Примечание: В операторе SQL может быть любое количество разрывов строки при условии, что любой разрыв строки не прерывает ключевые слова, значения, выражения и т.д.
Если мы видим сообщение «Таблица успешно создана» на странице, мы можем перейти в область phpMyAdmin, чтобы увидеть, была ли создана таблица.
Чтобы получить доступ к phpMyAdmin WAMP сборки OpenServer и MySQL, перейдите по адресу http://127.0.0.1/openserver/ phpmyadmin/index.php в своем браузере.
На панели меню слева нажмите на demo, чтобы открыть базу данных. В правой части панели БД будет таблица под названием persons. Если мы щелкнем по нему, он откроется и покажет три созданных нами столбца.
Назад
Вперёд
MySQL список таблиц и их структура
Команды для работы со списком таблиц и их структурой.
список баз данных
список таблиц в базе
список столбцов в таблице
показать структуру таблицы в формате «CREATE TABLE»
привилегии для пользователя.
значения системных переменных
статистика по mysqld процессам
статистика по всем таблицам в базе
статистика по всем таблицам wp_ в базе
Проверка настроек кодировки
Проверка настроек кодировки
Проверка кодировки текущей базы данных
Для настройки кодировки utf8 по умолчанию Необходимо внести следующие изменения в файл my.cnf (my.ini):
default-character-set = utf8
Информация об установленной версии pkg_info | grep mysql (FreeBSD)
добавить столбец в таблице в базе mysql
переименование столбцов в таблице
внести изменения в столбцы таблицы
В будущем, если включите innodb_file_per_table, сможете уменьшать объем tablespace путем пересоздания таблиц сразу в InnoDB (т.к. в режиме файл-на-таблицу файл при удалении таблицы стирается) командой
Размер базы данных MySQL
Я предполагаю, что ваша база данных установлена в Linux, но большинство методов будут работать и для других операционных систем. Самый простой способ прикинуть сколько места занимают все базы данных — это посмотреть размер папки с файлами базы данных в системе — /var/lib/mysql:
du -h /var/lib/mysql
Утилита позволяет узнать размер базы Mysql в мегабайтах. Но будет гораздо более правильно смотреть информацию о базе данных с помощью ее встроенных инструментов. Для в MySQL есть специальная таблица — Information_schema. Из нее мы и будем брать данные. Но сначала подключитесь к базе данных:
SELECT table_schema AS «Имя базы данных», ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS «Размер в Мб» FROM information_schema.TABLES GROUP BY table_schema;
Запрос выведет точный размер базы MySQL для каждой из существующих баз, теперь вы можете ориентироваться что и сколько занимает. Если у вас очень большой проект и большая база данных, то вы можете выводить информацию в гигабайтах:
SELECT table_schema AS «Имя базы данных», ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS «Размер в Гб» FROM information_schema.TABLES GROUP BY table_schema;
Но это еще не все. Возможно, в базе данных есть ненужная информация, которая только замедляет работу системы. Мы можем посмотреть размер таблиц для каждой из баз данных. Запрос для этого будет выглядеть следующим образом:
SELECT table_name AS «Имя таблицы», ROUND(((data_length + index_length) / 1024 / 1024), 2) AS «Size in (MB)» FROM information_schema.TABLES WHERE table_schema = «wpfc_options» ORDER BY (data_length + index_length) DESC;
Данная информация помогает понять какая таблица сколько занимает и это уже может навести на интересные мысли.
Создание таблиц с помощью SQL
В предыдущем уроке мы узнали, как создать базу данных на сервере MySQL. Шаги по созданию таблицы аналогичны созданию баз данных. Разница в том, что вместо создания новой базы данных мы подключимся к существующей базе данных и создадим таблицу в этой базе данных. Для подключения к существующей базе данных мы можем передать дополнительную переменную «имя базы данных» при подключении к MySQL.
Теперь пришло время создать таблицу внутри базы данных, которые фактически будут хранить данные. Информация в таблице организована в строки и столбцы.
Новые таблицы добавляются в существующую базу данных с помощью оператора SQL .
За оператором следует имя создаваемой таблицы, за которым следует список имен и определений каждого столбца таблицы, разделенный запятыми.
Пояснения к таблице:
Обратите внимание, что за каждым именем поля следует объявление типа данных — это объявление указывает, какой тип данных может содержать столбец, будь то целое число, строка, дата и т.д. В таблице выше используются следующие типы данных:
В таблице выше используются следующие типы данных:
- VARCHAR: содержит строку переменной длины, которая может содержать буквы, числа и специальные символы. Максимальный размер указан в скобках.
- INT: тип данных INTEGER принимает числовые значения с подразумеваемой шкалой нуля. Он хранит любое целое число от -2147483648 до 2147483647.
После типа данных вы можете указать другие необязательные атрибуты для каждого столбца:
- NOT NULL — каждая строка должна содержать значение для этого столбца, нулевые значения не допускаются.
- DEFAULT — установите значение по умолчанию, которое добавляется, когда не передается никакое другое значение.
- UNSIGNED — используется для числовых типов, ограничивает хранимые данные положительными числами и нулем.
- AUTO INCREMENT — MySQL автоматически увеличивает значение поля на 1 каждый раз, когда добавляется новая запись.
- PRIMARY KEY — используется для однозначной идентификации строк в таблице. Столбец с настройкой PRIMARY KEY часто является идентификационным номером и часто используется с AUTO_INCREMENT.
Каждая таблица должна иметь столбец первичного ключа (в данном случае столбец «id»). Его значение должно быть уникальным для каждой записи в таблице.
Синтаксис
Основной синтаксис для создания таблицы может быть дан с помощью:
CREATE TABLE table_name ( column1_name data_type constraints, column2_name data_type constraints, .... );
Чтобы понять этот синтаксис, давайте создадим таблицу в нашей демонстрационной базе данных demo. Введите следующую инструкцию в инструменте командной строки MySQL и нажмите enter:
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
блок 1
Приведенный выше пример создает таблицу с четырьмя столбцами id, name, birth_date и phone
Обратите внимание, что за каждым именем столбца следует объявление типа данных; в этом объявлении указывается, какой тип данных будет хранить столбец: целое число, строка, дата и т.д
Некоторые типы данных могут быть объявлены с параметром длины, который указывает, сколько символов можно сохранить в столбце. Например, VARCHAR(50) может содержать до 50 символов.
Показывать таблицы MySQL из командной строки
Чтобы получить информацию о таблицах из оболочки Linux, вы можете использовать либо команду mysql -e, либо команду mysqlshow, которая отображает информацию о базах данных и таблицах.
Это особенно полезно, когда вы хотите работать с базами данных MySQL, используя сценарии оболочки.
Запустите следующую команду на своем терминале, чтобы показать список всех баз данных:
mysql -u user -p -e 'SHOW TABLES FROM database_name;'
Вывод отобразит список всех таблиц:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+
Вот пример использования команды mysqlshow:
mysqlshow database_name
Вы можете отфильтровать вывод с помощью команды grep.
* Как вывести запись из таблицы MySQL? Вывод нескольких записей из таблицы базы данных, постраничный (СБОРНИК СТАТЕЙ НА ЭТУ ТЕМУ)
Как вывести запись из таблицы MySQL? Вывод нескольких записей из таблицы базы данных | Раздел «PHP»
|
ВТОРАЯ СТАТЬЯ
Постраничный вывод на PHP
Когда-нибудь (конечно, если у вас есть сайт на PHP и MySQL) вам понадобится вывести все записи из базы данных. Ведь, например, выводить по 100 постов на одной странице крайне неразумно, поэтому следует сделать на сайте постраничный вывод записей из базы данных.
Наш постраничный вывод будет основан на свойствах оператора . Оператор позволяет не только ограничить вывод данных, но и задать параметр, с которого следует начинать вывод записей.
Например, чтобы вывести 10 записей из таблицы , начиная с 10-й записи, следует писать так:
SQL
SELECT * FROM data LIMIT 10, 10;
Страница нашего сценария будет называться viewpost.php. Переменная будет содержать значение нужной страницы.
Данные будем выводить из таблицы . Структурируем вывод данных следующим образом: будем выводить краткое описание () и заголовок ().
Конечно, для того чтобы все это выводилось приемлемо нужно будет сгруппировать элементы с помощью HTML и CSS. Хотя для моего примера все просто.