Учебники

MariaDB — Краткое руководство

MariaDB — Введение

Приложение базы данных существует отдельно от основного приложения и хранит коллекции данных. Каждая база данных использует один или несколько API для создания, доступа, управления, поиска и репликации данных, которые она содержит.

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

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

RDBMS предлагает следующие функции —

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

  • Они обеспечивают целостность ссылок в строках нескольких таблиц.

  • Они автоматически обновляют индексы.

  • Они интерпретируют запросы и операции SQL при обработке или получении данных из таблиц.

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

Они обеспечивают целостность ссылок в строках нескольких таблиц.

Они автоматически обновляют индексы.

Они интерпретируют запросы и операции SQL при обработке или получении данных из таблиц.

СУРБД Терминология

Прежде чем мы начнем наше обсуждение MariaDB, давайте рассмотрим несколько терминов, связанных с базами данных.

  • База данных — база данных — это источник данных, состоящий из таблиц, содержащих связанные данные.

  • Таблица — Таблица, означающая электронную таблицу, представляет собой матрицу, содержащую данные.

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

  • СтрокаСтрока — это структура, объединяющая связанные данные; например, данные для клиента. Он также известен как кортеж, запись или запись.

  • Избыточность — этот термин относится к хранению данных дважды для ускорения работы системы.

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

  • Внешний ключ — внешний ключ служит связующим звеном между двумя таблицами.

  • Составной ключ — составной ключ или составной ключ — это ключ, который ссылается на несколько столбцов. Это относится к нескольким столбцам из-за отсутствия уникального качества столбца.

  • Индекс — Индекс практически идентичен индексу книги.

  • Ссылочная целостность — этот термин означает, что все значения внешнего ключа указывают на существующие строки.

База данных — база данных — это источник данных, состоящий из таблиц, содержащих связанные данные.

Таблица — Таблица, означающая электронную таблицу, представляет собой матрицу, содержащую данные.

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

СтрокаСтрока — это структура, объединяющая связанные данные; например, данные для клиента. Он также известен как кортеж, запись или запись.

Избыточность — этот термин относится к хранению данных дважды для ускорения работы системы.

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

Внешний ключ — внешний ключ служит связующим звеном между двумя таблицами.

Составной ключ — составной ключ или составной ключ — это ключ, который ссылается на несколько столбцов. Это относится к нескольким столбцам из-за отсутствия уникального качества столбца.

Индекс — Индекс практически идентичен индексу книги.

Ссылочная целостность — этот термин означает, что все значения внешнего ключа указывают на существующие строки.

База данных MariaDB

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

Ключевые особенности MariaDB

Важными особенностями MariaDB являются —

  • Все MariaDB находится под GPL, LGPL или BSD.

  • MariaDB включает в себя широкий выбор механизмов хранения, включая высокопроизводительные механизмы хранения, для работы с другими источниками данных СУБД.

  • MariaDB использует стандартный и популярный язык запросов.

  • MariaDB работает на нескольких операционных системах и поддерживает широкий спектр языков программирования.

  • MariaDB предлагает поддержку PHP, одного из самых популярных языков веб-разработки.

  • MariaDB предлагает кластерные технологии Galera.

  • MariaDB также предлагает множество операций и команд, недоступных в MySQL, и устраняет / заменяет функции, отрицательно влияющие на производительность.

Все MariaDB находится под GPL, LGPL или BSD.

MariaDB включает в себя широкий выбор механизмов хранения, включая высокопроизводительные механизмы хранения, для работы с другими источниками данных СУБД.

MariaDB использует стандартный и популярный язык запросов.

MariaDB работает на нескольких операционных системах и поддерживает широкий спектр языков программирования.

MariaDB предлагает поддержку PHP, одного из самых популярных языков веб-разработки.

MariaDB предлагает кластерные технологии Galera.

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

Начиная

Прежде чем начать этот урок, убедитесь, что у вас есть базовые знания PHP и HTML, в частности, материал, обсуждаемый в наших уроках PHP и HTML.

Данное руководство посвящено использованию MariaDB в среде PHP, поэтому наши примеры будут наиболее полезны для разработчиков PHP.

Мы настоятельно рекомендуем ознакомиться с нашим Учебником по PHP, если вам не хватает знакомства или вам необходимо ознакомиться с ним.

MariaDB — Установка

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

Установка на LINUX / UNIX

Если у вас есть глубокие знания о системах Linux / Unix, просто загрузите исходный код для сборки вашей установки. Рекомендуемый способ установки — использовать дистрибутивные пакеты. MariaDB предлагает пакеты для следующих дистрибутивов Linux / Unix —

  • RedHat / CentOS / Fedora
  • Debian / Ubuntu

Следующие дистрибутивы включают пакет MariaDB в свои репозитории —

  • OpenSUSE
  • Arch Linux
  • Mageia
  • мятный
  • Slackware

Выполните следующие шаги для установки в среде Ubuntu —

Шаг 1 — Войдите в систему как пользователь root.

Шаг 2 — Перейдите в каталог, содержащий пакет MariaDB.

Шаг 3 — Импортируйте ключ подписи GnuPG со следующим кодом —

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Шаг 4 — Добавьте MariaDB в файл sources.list . Откройте файл и добавьте следующий код —

sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise main'

Шаг 5 — Обновите систему следующим образом —

sudo apt-get update

Шаг 6 — Установите MariaDB со следующим —

sudo apt-get install mariadb-server

Установка на Windows

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

Проверьте установку, запустив ее из командной строки. Перейдите к месту установки, обычно в каталоге, и введите в командной строке следующее:

mysqld.exe --console

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

Тестирование установки

Выполните несколько простых задач, чтобы подтвердить функционирование и установку MariaDB.

Используйте утилиту администратора для получения статуса сервера

Просмотр версии сервера с помощью двоичного файла mysqladmin.

[root@host]# mysqladmin --version

Он должен отображать версию, дистрибутив, операционную систему и архитектуру. Если вы не видите вывод этого типа, проверьте вашу установку на наличие проблем.

Выполнение простых команд с клиентом

Откройте командную строку для MariaDB. Это должно соединить вас с MariaDB и разрешить выполнение команд. Введите простую команду следующим образом —

mysql> SHOW DATABASES;

После установки

После успешной установки MariaDB установите пароль root. У новой установки будет пустой пароль. Введите следующее, чтобы установить новый пароль —

mysqladmin -u root password "[enter your password here]";

Введите следующее, чтобы подключиться к серверу с вашими новыми учетными данными —

mysql -u root -p
Enter password:*******

Обновление на Windows

Если у вас уже установлен MySQL в вашей системе Windows, и вы хотите обновить его до MariaDB; не удаляйте MySQL и устанавливайте MariaDB. Это приведет к конфликту с существующей базой данных. Вместо этого вы должны установить MariaDB, а затем использовать мастер обновления в установочном файле Windows.

Параметры вашего MySQL файла my.cnf должны работать с MariaDB. Тем не менее, MariaDB имеет много функций, которых нет в MySQL.

Рассмотрим следующие конфликты в вашем файле my.cnf —

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

  • Если ваши приложения часто подключаются / отключаются, измените размер кэша потока.

  • Если вы используете более 100 соединений, используйте пул потоков.

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

Если ваши приложения часто подключаются / отключаются, измените размер кэша потока.

Если вы используете более 100 соединений, используйте пул потоков.

Совместимость

MySQL и MariaDB практически идентичны. Тем не менее, существует достаточно различий, чтобы создать проблемы при обновлении. Просмотрите больше этих ключевых различий в Базе знаний MariaDB.

MariaDB — Администрация

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

  • Запустите mysqld (двоичный файл MariaDB).
  • Запустите скрипт запуска mysqld_safe.
  • Запустите скрипт запуска mysql.server.

Если вы установили MariaDB в нестандартном месте, возможно, вам придется редактировать информацию о местоположении в файлах сценариев. Остановите MariaDB, просто добавив в сценарий параметр «stop».

Если вы хотите запустить его автоматически под Linux, добавьте сценарии запуска в систему инициализации . Каждый дистрибутив имеет свою процедуру. Обратитесь к документации вашей системы.

Создание учетной записи пользователя

Создайте новую учетную запись пользователя с помощью следующего кода —

'newusername'@'localhost' IDENTIFIED BY 'userpassword';

Этот код добавляет строку в пользовательскую таблицу без каких-либо привилегий. У вас также есть возможность использовать хэш-значение для пароля. Предоставьте пользователю привилегии с помощью следующего кода —

GRANT SELECT, INSERT, UPDATE, DELETE ON database1 TO 'newusername'@'localhost';

Другие привилегии включают почти каждую команду или операцию, возможную в MariaDB. После создания пользователя выполните команду «FLUSH PRIVILEGES», чтобы обновить таблицы грантов. Это позволяет использовать учетную запись пользователя.

Файл конфигурации

После сборки на Unix / Linux файл конфигурации «/etc/mysql/my.cnf» следует отредактировать так, чтобы он выглядел следующим образом:

# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.

#

# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all mysql clients
[client]
#password = my_password
#port = 3306
#socket = /tmp/mysql.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# The MySQL server
[mysqld]
#port = 3306
#socket = /tmp/mysql.sock
temp-pool

# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other
   versions) to abort...
# skip-locking
# set-variable = key_buffer = 16M
# set-variable = thread_cache = 4

loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb

######### Fix the two following paths

# Where you want to have your database
data = /path/to/data/dir

# Where you have your mysql/MariaDB source + sql/share/english
language = /path/to/src/dir/sql/share/english

[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash

[myisamchk]
set-variable = key_buffer = 128M

Отредактируйте строки «data =» и «language =», чтобы они соответствовали вашей среде.

После изменения файла перейдите в исходный каталог и выполните следующее:

./scripts/mysql_install_db --srcdir = $PWD --datadir = /path/to/data/dir --
   user = $LOGNAME

Опустите переменную «$ PWD», если вы добавили datadir в файл конфигурации. Убедитесь, что «$ LOGNAME» используется при запуске версии 10.0.1 MariaDB.

Команды администрирования

Просмотрите следующий список важных команд, которые вы будете регулярно использовать при работе с MariaDB —

  • USE [имя базы данных] — устанавливает текущую базу данных по умолчанию.

  • SHOW DATABASES — перечисляет базы данных, которые в настоящее время находятся на сервере.

  • SHOW TABLES — перечисляет все невременные таблицы.

  • SHOW COLUMNS FROM [имя таблицы] — предоставляет информацию о столбцах, относящихся к указанной таблице.

  • SHOW INDEX FROM TABLENAME [имя таблицы] — предоставляет информацию об индексе таблицы, относящуюся к указанной таблице.

  • SHOW TABLE STATUS LIKE [имя таблицы] \ G — — Предоставляет таблицы с информацией о невременных таблицах, а шаблон, который появляется после предложения LIKE, используется для выборки имен таблиц.

USE [имя базы данных] — устанавливает текущую базу данных по умолчанию.

SHOW DATABASES — перечисляет базы данных, которые в настоящее время находятся на сервере.

SHOW TABLES — перечисляет все невременные таблицы.

SHOW COLUMNS FROM [имя таблицы] — предоставляет информацию о столбцах, относящихся к указанной таблице.

SHOW INDEX FROM TABLENAME [имя таблицы] — предоставляет информацию об индексе таблицы, относящуюся к указанной таблице.

SHOW TABLE STATUS LIKE [имя таблицы] \ G — — Предоставляет таблицы с информацией о невременных таблицах, а шаблон, который появляется после предложения LIKE, используется для выборки имен таблиц.

MariaDB — Синтаксис PHP

MariaDB хорошо сотрудничает с широким спектром языков программирования и сред, таких как PHP, C #, JavaScript, Ruby on Rails, Django и другими. PHP остается самым популярным из всех доступных языков благодаря своей простоте и историческому следу. Это руководство будет посвящено PHP в партнерстве с MariaDB.

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

Функции PHP, которые вы будете использовать для MariaDB, соответствуют следующему формату:

mysql_function(value,value,...);

Вторая часть функции определяет ее действие. Две функции, используемые в этом руководстве, следующие:

mysqli_connect($connect);
mysqli_query($connect,"SQL statement");

В следующем примере демонстрируется общий синтаксис вызова PHP функции MariaDB —

<html>
   <head>
      <title>PHP and MariaDB</title>
   </head>

   <body>
      <?php
         $retval = mysql_function(value, [value,...]);
      
         if( !$retval ) {
            die ( "Error: Error message here" );
         }
         // MariaDB or PHP Statements
      ?>
   </body>
</html>

В следующем разделе мы рассмотрим основные задачи MariaDB, используя функции PHP.

MariaDB — Связь

Один из способов установить соединение с MariaDB состоит в использовании двоичного файла mysql в командной строке.

MYSQL Binary

Просмотрите пример, приведенный ниже.

[root@host]# mysql -u root -p

Enter password:******

Приведенный выше код подключается к MariaDB и предоставляет командную строку для выполнения команд SQL. После ввода кода должно появиться приветственное сообщение об успешном соединении с отображением номера версии.

Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 122323232 
Server version: 5.5.40-MariaDB-log
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
mysql> 

В примере используется root-доступ, но любой пользователь с привилегиями может, конечно, получить доступ к приглашению MariaDB и выполнить операции.

Отключитесь от MariaDB с помощью команды выхода следующим образом:

mysql> exit

PHP скрипт подключения

Другой способ подключения и отключения от MariaDB состоит в использовании сценария PHP. PHP предоставляет функцию mysql_connect () для открытия соединения с базой данных. Он использует пять необязательных параметров и возвращает идентификатор ссылки MariaDB после успешного соединения или false при неудачном соединении. Он также предоставляет функцию mysql_close () для закрытия соединений с базой данных, которая использует один параметр.

Синтаксис

Просмотрите следующий синтаксис сценария подключения PHP —

connection mysql_connect(server,user,passwd,new_link,client_flag);

Описание параметров приведено ниже —

Sr.No Параметр и описание
1

сервер

Этот необязательный параметр указывает имя хоста, на котором работает сервер базы данных. Значением по умолчанию является «localhost: .3036».

2

пользователь

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

3

ПАРОЛЬ

Этот необязательный параметр указывает пароль пользователя. Его значение по умолчанию пустое.

4

new_link

Этот необязательный параметр указывает, что при втором вызове mysql_connect () с идентичными аргументами, а не с новым соединением, будет возвращен идентификатор текущего соединения.

5

флаги клиента

Этот необязательный параметр использует комбинацию следующих постоянных значений —

  • MYSQL_CLIENT_SSL — использует ssl-шифрование.

  • MYSQL_CLIENT_COMPRESS — используется протокол сжатия.

  • MYSQL_CLIENT_IGNORE_SPACE — разрешает пробел после имен функций.

  • MYSQL_CLIENT_INTERACTIVE — разрешает интерактивное время ожидания бездействия в секундах до закрытия соединения.

сервер

Этот необязательный параметр указывает имя хоста, на котором работает сервер базы данных. Значением по умолчанию является «localhost: .3036».

пользователь

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

ПАРОЛЬ

Этот необязательный параметр указывает пароль пользователя. Его значение по умолчанию пустое.

new_link

Этот необязательный параметр указывает, что при втором вызове mysql_connect () с идентичными аргументами, а не с новым соединением, будет возвращен идентификатор текущего соединения.

флаги клиента

Этот необязательный параметр использует комбинацию следующих постоянных значений —

MYSQL_CLIENT_SSL — использует ssl-шифрование.

MYSQL_CLIENT_COMPRESS — используется протокол сжатия.

MYSQL_CLIENT_IGNORE_SPACE — разрешает пробел после имен функций.

MYSQL_CLIENT_INTERACTIVE — разрешает интерактивное время ожидания бездействия в секундах до закрытия соединения.

Просмотрите синтаксис сценария отключения PHP, приведенный ниже —

bool mysql_close ( resource $link_identifier );

Если вы пропустите ресурс, последний открытый ресурс закроется. Возвращает значение true при успешном закрытии или false.

Попробуйте следующий пример кода для подключения к серверу MariaDB —

<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1';
         $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         
         echo 'Connected successfully';
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном подключении вы увидите следующий вывод —

mysql> Connected successfully

MariaDB — Создать базу данных

Создание или удаление баз данных в MariaDB требует привилегий, обычно предоставляемых только корневым пользователям или администраторам. Под этими учетными записями у вас есть два варианта создания базы данных — бинарный файл mysqladmin и скрипт PHP.

бинарный mysqladmin

В следующем примере демонстрируется использование двоичного файла mysqladmin при создании базы данных с именем Products

[root@host]# mysqladmin -u root -p create PRODUCTS
Enter password:******

PHP Создать скрипт базы данных

PHP использует функцию mysql_query при создании базы данных MariaDB. Функция использует два параметра, один необязательный, и возвращает либо значение «истина» в случае успеха, либо «ложь», если нет.

Синтаксис

Просмотрите следующий синтаксис сценария создания базы данных

bool mysql_query( sql, connection );

Описание параметров приведено ниже —

S.No Параметр и описание
1

SQL

Этот обязательный параметр состоит из SQL-запроса, необходимого для выполнения операции.

2

соединение

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

SQL

Этот обязательный параметр состоит из SQL-запроса, необходимого для выполнения операции.

соединение

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

Попробуйте следующий пример кода для создания базы данных —

<html>
   <head>
      <title>Create a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }

         echo 'Connected successfully<br />';
         $sql = 'CREATE DATABASE PRODUCTS';
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not create database: ' . mysql_error());
         }

         echo "Database PRODUCTS created successfully\n";
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном удалении вы увидите следующий вывод:

mysql> Database PRODUCTS created successfully 
mysql> SHOW DATABASES; 
+-----------------------+ 
| Database              | 
+-----------------------+ 
| PRODUCTS              | 
+-----------------------+  

MariaDB — Drop Database

Создание или удаление баз данных в MariaDB требует привилегий, как правило, только для корневых пользователей или администраторов. Под этими учетными записями у вас есть два варианта удаления базы данных: бинарный файл mysqladmin и скрипт PHP.

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

бинарный mysqladmin

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

[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database doesn't exist

PHP Drop Database Script

PHP использует функцию mysql_query при удалении баз данных MariaDB. Функция использует два параметра, один необязательный, и возвращает либо значение «истина» в случае успеха, либо «ложь», если нет.

Синтаксис

Просмотрите следующий синтаксис сценария удаления базы данных —

bool mysql_query( sql, connection );

Описание параметров приведено ниже —

Sr.No Параметр и описание
1

SQL

Этот обязательный параметр состоит из SQL-запроса, необходимого для выполнения операции.

2

соединение

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

SQL

Этот обязательный параметр состоит из SQL-запроса, необходимого для выполнения операции.

соединение

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

Попробуйте следующий пример кода для удаления базы данных —

<html>
   <head>
      <title>Delete a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = 'DROP DATABASE PRODUCTS';
         $retval = mysql_query( $sql, $conn );
         
         if(! $retval ){
            die('Could not delete database: ' . mysql_error());
         }

         echo "Database PRODUCTS deleted successfully\n";
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном удалении вы увидите следующий вывод:

mysql> Database PRODUCTS deleted successfully 

MariaDB — Выбор базы данных

После подключения к MariaDB вы должны выбрать базу данных для работы, потому что может существовать много баз данных. Есть два способа выполнить эту задачу: из командной строки или через скрипт PHP.

Командная строка

При выборе базы данных в командной строке просто используйте команду SQL «use»

[root@host]# mysql -u root -p

Enter password:******

mysql> use PRODUCTS;

Database changed

mysql> SELECT database();  
+-------------------------+ 
| Database                | 
+-------------------------+ 
| PRODUCTS                | 
+-------------------------+ 

После выбора базы данных все последующие команды будут работать с выбранной базой данных.

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

PHP выберите сценарий базы данных

PHP предоставляет функцию mysql_select_db для выбора базы данных. Функция использует два параметра, один необязательный, и возвращает значение «true» при успешном выборе или false при ошибке.

Синтаксис

Просмотрите следующий синтаксис сценария выбора базы данных.

bool mysql_select_db( db_name, connection );

Описание параметров приведено ниже —

S.No Параметр и описание
1

db_name

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

2

соединение

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

db_name

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

соединение

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

Попробуйте следующий пример кода для выбора базы данных —

<html>
   <head>
      <title>Select a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1';
         $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully';
         
         mysql_select_db( 'PRODUCTS' );
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном выборе вы увидите следующий вывод —

mysql> Connected successfully 

MariaDB — Типы данных

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

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

Числовые типы данных

Числовые типы данных, поддерживаемые MariaDB, следующие:

  • TINYINT — этот тип данных представляет маленькие целые числа, попадающие в диапазон со знаком от -128 до 127 и диапазон без знака от 0 до 255.

  • BOOLEAN — этот тип данных связывает значение 0 с «ложью» и значение 1 с «истиной».

  • SMALLINT — этот тип данных представляет целые числа в диапазоне со знаком от -32768 до 32768 и в диапазоне без знака от 0 до 65535.

  • MEDIUMINT — этот тип данных представляет целые числа в диапазоне со знаком от -8388608 до 8388607 и в диапазоне без знака от 0 до 16777215.

  • INT (также INTEGER) — этот тип данных представляет целое число нормального размера. Если он помечен как неподписанный, диапазон составляет от 0 до 4294967295. При подписании (настройка по умолчанию) диапазон охватывает от -2147483648 до 2147483647. Когда для столбца установлено значение ZEROFILL (состояние без знака), все его значения добавляются с нулями для размещения M цифр в значении INT.

  • BIGINT — этот тип данных представляет целые числа в диапазоне со знаком от 9223372036854775808 до 9223372036854775807 и в диапазоне без знака от 0 до 18446744073709551615.

  • DECIMAL (также DEC, NUMERIC, FIXED) — этот тип данных представляет точные числа с фиксированной запятой, где M задает цифры и D указывает цифры после запятой. Значение M не добавляет «-» или десятичную точку. Если для D установлено значение 0, десятичная дробь или дробная часть не отображаются, и значение будет округлено до ближайшего десятичного числа при вставке. Максимально допустимые цифры — 65, а максимальные для десятичных чисел — 30. Значение по умолчанию для M при пропуске составляет 10, и 0 для D при пропуске.

  • FLOAT — этот тип данных представляет собой небольшое число с плавающей запятой значения 0 или число в следующих диапазонах —

    • -3.402823466E + 38 до -1.175494351E-38

    • 1.175494351E-38 до 3.402823466E + 38

  • DOUBLE (также REAL и DOUBLE PRECISION) — этот тип данных представляет числа с плавающей точкой нормального размера со значением 0 или в следующих диапазонах —

    • -1,7976931348623157E + 308 до -2,2250738585072014E-308

    • 2.2250738585072014E-308 до 1.7976931348623157E + 308

  • BIT — этот тип данных представляет битовые поля, где M указывает количество бит на значение. В случае пропуска M по умолчанию используется значение 1. Битовые значения можно применять с помощью «b» [значение] », в котором значение представляет битовое значение в 0 с и 1 с. Заполнение нулями происходит автоматически слева для полной длины; например, «10» становится «0010».

TINYINT — этот тип данных представляет маленькие целые числа, попадающие в диапазон со знаком от -128 до 127 и диапазон без знака от 0 до 255.

BOOLEAN — этот тип данных связывает значение 0 с «ложью» и значение 1 с «истиной».

SMALLINT — этот тип данных представляет целые числа в диапазоне со знаком от -32768 до 32768 и в диапазоне без знака от 0 до 65535.

MEDIUMINT — этот тип данных представляет целые числа в диапазоне со знаком от -8388608 до 8388607 и в диапазоне без знака от 0 до 16777215.

INT (также INTEGER) — этот тип данных представляет целое число нормального размера. Если он помечен как неподписанный, диапазон составляет от 0 до 4294967295. При подписании (настройка по умолчанию) диапазон охватывает от -2147483648 до 2147483647. Когда для столбца установлено значение ZEROFILL (состояние без знака), все его значения добавляются с нулями для размещения M цифр в значении INT.

BIGINT — этот тип данных представляет целые числа в диапазоне со знаком от 9223372036854775808 до 9223372036854775807 и в диапазоне без знака от 0 до 18446744073709551615.

DECIMAL (также DEC, NUMERIC, FIXED) — этот тип данных представляет точные числа с фиксированной запятой, где M задает цифры и D указывает цифры после запятой. Значение M не добавляет «-» или десятичную точку. Если для D установлено значение 0, десятичная дробь или дробная часть не отображаются, и значение будет округлено до ближайшего десятичного числа при вставке. Максимально допустимые цифры — 65, а максимальные для десятичных чисел — 30. Значение по умолчанию для M при пропуске составляет 10, и 0 для D при пропуске.

FLOAT — этот тип данных представляет собой небольшое число с плавающей запятой значения 0 или число в следующих диапазонах —

-3.402823466E + 38 до -1.175494351E-38

1.175494351E-38 до 3.402823466E + 38

DOUBLE (также REAL и DOUBLE PRECISION) — этот тип данных представляет числа с плавающей точкой нормального размера со значением 0 или в следующих диапазонах —

-1,7976931348623157E + 308 до -2,2250738585072014E-308

2.2250738585072014E-308 до 1.7976931348623157E + 308

BIT — этот тип данных представляет битовые поля, где M указывает количество бит на значение. В случае пропуска M по умолчанию используется значение 1. Битовые значения можно применять с помощью «b» [значение] », в котором значение представляет битовое значение в 0 с и 1 с. Заполнение нулями происходит автоматически слева для полной длины; например, «10» становится «0010».

Типы данных даты и времени

Типы данных даты и времени, поддерживаемые MariaDB, следующие:

  • ДАТА. Этот тип данных представляет диапазон дат от 1000-01-01 до 9999-12-31 и использует формат даты «ГГГГ-ММ-ДД».

  • ВРЕМЯ. Этот тип данных представляет диапазон времени от «-838: 59: 59,999999» до «838: 59: 59,999999».

  • DATETIME — этот тип данных представляет диапазон «1000-01-01 00: 00: 00.000000» до «9999-12-31 23: 59: 59.999999». Используется формат «ГГГГ-ММ-ДД ЧЧ: ММ: СС». ,

  • TIMESTAMP — этот тип данных представляет временную метку в формате «ГГГГ-ММ-ДД ЧЧ: ММ: ДД». Он главным образом находит применение при детализации времени модификаций базы данных, например, вставки или обновления.

  • ГОД — этот тип данных представляет год в 4-значном формате. Четырехзначный формат допускает значения в диапазоне от 1901 до 2155 и 0000.

ДАТА. Этот тип данных представляет диапазон дат от 1000-01-01 до 9999-12-31 и использует формат даты «ГГГГ-ММ-ДД».

ВРЕМЯ. Этот тип данных представляет диапазон времени от «-838: 59: 59,999999» до «838: 59: 59,999999».

DATETIME — этот тип данных представляет диапазон «1000-01-01 00: 00: 00.000000» до «9999-12-31 23: 59: 59.999999». Используется формат «ГГГГ-ММ-ДД ЧЧ: ММ: СС». ,

TIMESTAMP — этот тип данных представляет временную метку в формате «ГГГГ-ММ-ДД ЧЧ: ММ: ДД». Он главным образом находит применение при детализации времени модификаций базы данных, например, вставки или обновления.

ГОД — этот тип данных представляет год в 4-значном формате. Четырехзначный формат допускает значения в диапазоне от 1901 до 2155 и 0000.

String DataTypes

Значения строкового типа, поддерживаемые MariaDB, следующие:

  • Строковые литералы — этот тип данных представляет последовательности символов, заключенные в кавычки.

  • CHAR — этот тип данных представляет собой строку фиксированной длины с правым отступом, содержащую пробелы указанной длины. M представляет длину столбца символов в диапазоне от 0 до 255, его значение по умолчанию равно 1.

  • VARCHAR — этот тип данных представляет строку переменной длины с диапазоном M (максимальная длина столбца) от 0 до 65535.

  • BINARY — этот тип данных представляет двоичные байтовые строки с длиной столбца M в байтах.

  • VARBINARY — этот тип данных представляет двоичные строки байтов переменной длины, с длиной столбца M.

  • TINYBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 255 (28 — 1) байтов. В хранилище каждый использует однобайтовый префикс длины, указывающий количество байтов в значении.

  • BLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 65 535 (216 — 1) байтов. В хранилище каждый использует двухбайтовый префикс длины, указывающий количество байтов в значении.

  • MEDIUMBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 16 777 215 (22 4 — 1) байтов. В хранилище каждый использует трехбайтовый префикс длины, указывающий количество байтов в значении.

  • LONGBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 4 294 967 295 (2 32 — 1) байтов. В хранилище каждый использует четырехбайтовый префикс длины, указывающий количество байтов в значении.

  • TINYTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 255 (2 8 — 1) символов. В хранилище каждый использует однобайтовый префикс длины, указывающий количество байтов в значении.

  • TEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 65 535 (2 16 — 1) символов. В хранилище каждый использует двухбайтовый префикс длины, указывающий количество байтов в значении.

  • MEDIUMTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 16 777 215 (2 24 — 1) символов. В хранилище каждый использует трехбайтовый префикс длины, указывающий количество байтов в значении.

  • LONGTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 4 294 967 295 или 4 ГБ (2 32 — 1) символов. В хранилище каждый использует четырехбайтовый префикс длины, указывающий количество байтов в значении.

  • ENUM — этот тип данных представляет строковый объект, имеющий только одно значение из списка.

  • SET — этот тип данных представляет строковый объект, имеющий ноль или более значений из списка, с максимум 64 членами. Значения SET представлены внутри как целочисленные значения.

Строковые литералы — этот тип данных представляет последовательности символов, заключенные в кавычки.

CHAR — этот тип данных представляет собой строку фиксированной длины с правым отступом, содержащую пробелы указанной длины. M представляет длину столбца символов в диапазоне от 0 до 255, его значение по умолчанию равно 1.

VARCHAR — этот тип данных представляет строку переменной длины с диапазоном M (максимальная длина столбца) от 0 до 65535.

BINARY — этот тип данных представляет двоичные байтовые строки с длиной столбца M в байтах.

VARBINARY — этот тип данных представляет двоичные строки байтов переменной длины, с длиной столбца M.

TINYBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 255 (28 — 1) байтов. В хранилище каждый использует однобайтовый префикс длины, указывающий количество байтов в значении.

BLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 65 535 (216 — 1) байтов. В хранилище каждый использует двухбайтовый префикс длины, указывающий количество байтов в значении.

MEDIUMBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 16 777 215 (22 4 — 1) байтов. В хранилище каждый использует трехбайтовый префикс длины, указывающий количество байтов в значении.

LONGBLOB — этот тип данных представляет столбец BLOB-объектов с максимальной длиной 4 294 967 295 (2 32 — 1) байтов. В хранилище каждый использует четырехбайтовый префикс длины, указывающий количество байтов в значении.

TINYTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 255 (2 8 — 1) символов. В хранилище каждый использует однобайтовый префикс длины, указывающий количество байтов в значении.

TEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 65 535 (2 16 — 1) символов. В хранилище каждый использует двухбайтовый префикс длины, указывающий количество байтов в значении.

MEDIUMTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 16 777 215 (2 24 — 1) символов. В хранилище каждый использует трехбайтовый префикс длины, указывающий количество байтов в значении.

LONGTEXT — этот тип данных представляет собой текстовый столбец с максимальной длиной 4 294 967 295 или 4 ГБ (2 32 — 1) символов. В хранилище каждый использует четырехбайтовый префикс длины, указывающий количество байтов в значении.

ENUM — этот тип данных представляет строковый объект, имеющий только одно значение из списка.

SET — этот тип данных представляет строковый объект, имеющий ноль или более значений из списка, с максимум 64 членами. Значения SET представлены внутри как целочисленные значения.

MariaDB — Создание таблиц

В этой главе мы научимся создавать таблицы. Перед созданием таблицы сначала определите ее имя, имена полей и определения полей.

Ниже приведен общий синтаксис для создания таблицы:

CREATE TABLE table_name (column_name column_type);

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

databaseproducts_ tbl(
   product_id INT NOT NULL AUTO_INCREMENT,
   product_name VARCHAR(100) NOT NULL,
   product_manufacturer VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( product_id )
);

Приведенный выше пример использует NOT NULL в качестве атрибута поля, чтобы избежать ошибок, вызванных нулевым значением. Атрибут «AUTO_INCREMENT» указывает MariaDB добавить следующее доступное значение в поле идентификатора. Ключевое слово первичный ключ определяет столбец как первичный ключ . Несколько столбцов, разделенных запятыми, могут определять первичный ключ.

Два основных метода создания таблиц — использование командной строки и сценария PHP.

Командная строка

Используйте команду CREATE TABLE для выполнения задачи, как показано ниже:

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> CREATE TABLE products_tbl(
   -> product_id INT NOT NULL AUTO_INCREMENT,
   -> product_name VARCHAR(100) NOT NULL,
   -> product_manufacturer VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( product_id )
   -> );
mysql> SHOW TABLES;
+------------------------+
| PRODUCTS               |
+------------------------+
| products_tbl           |
+------------------------+

Убедитесь, что все команды заканчиваются точкой с запятой.

PHP Create Table Script

PHP предоставляет mysql_query () для создания таблицы. Второй аргумент содержит необходимую команду SQL —

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ){
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = "CREATE TABLE products_tbl( ".
            "product_id INT NOT NULL AUTO_INCREMENT, ".
            "product_name VARCHAR(100) NOT NULL, ".
            "product_manufacturer VARCHAR(40) NOT NULL, ".
            "submission_date DATE, ".
            "PRIMARY KEY ( product_id )); ";
      
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not create table: ' . mysql_error());
         }
         echo "Table created successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном создании таблицы вы увидите следующий вывод:

mysql> Table created successfully

MariaDB — Drop Tables

В этой главе мы научимся удалять таблицы.

Удаление таблиц очень легко, но помните, что все удаленные таблицы не подлежат восстановлению. Общий синтаксис удаления таблицы следующий:

DROP TABLE table_name ;

Существует два варианта выполнения удаления таблицы: используйте командную строку или скрипт PHP.

Командная строка

В командной строке просто используйте команду SQL DROP TABLE

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DROP TABLE products_tbl

mysql> SELECT * from products_tbl
ERROR 1146 (42S02): Table 'products_tbl' doesn't exist

PHP Drop Table Script

PHP предоставляет mysql_query () для удаления таблиц. Просто передайте свой второй аргумент соответствующей команде SQL —

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
         
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = "DROP TABLE products_tbl";
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not delete table: ' . mysql_error());
         }
         echo "Table deleted successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

При успешном удалении таблицы вы увидите следующий вывод:

mysql> Table deleted successfully

MariaDB — Вставить запрос

В этой главе мы научимся вставлять данные в таблицу.

Для вставки данных в таблицу требуется команда INSERT. Общий синтаксис команды — INSERT, за которым следуют имя таблицы, поля и значения.

Просмотрите его общий синтаксис, приведенный ниже —

INSERT INTO tablename (field,field2,...) VALUES (value, value2,...);

Оператор требует использования одинарных или двойных кавычек для строковых значений. Другие параметры для оператора включают операторы «INSERT … SET», операторы «INSERT … SELECT» и некоторые другие параметры.

Примечание. Функция VALUES (), которая появляется внутри оператора, применяется только к операторам INSERT и возвращает NULL, если используется в другом месте.

Существует два варианта выполнения операции: используйте командную строку или используйте скрипт PHP.

Командная строка

В подсказке есть много способов выполнить операцию выбора. Стандартное утверждение приведено ниже —

belowmysql>
INSERT INTO products_tbl (ID_number, Nomenclature) VALUES (12345,“Orbitron 4000”);
mysql> SHOW COLUMNS FROM products_tbl;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID_number   | int(5)      |      |     |         |       |
| Nomenclature| char(13)    |      |     |         |       |
+-------------+-------------+------+-----+---------+-------+

Вы можете вставить несколько строк —

INSERT INTO products VALUES (1, “first row”), (2, “second row”);

Вы также можете использовать предложение SET —

INSERT INTO products SELECT * FROM inventory WHERE status = 'available';

Скрипт вставки PHP

Используйте ту же инструкцию «INSERT INTO …» внутри функции PHP для выполнения операции. Вы будете использовать функцию mysql_query () еще раз.

Просмотрите пример, приведенный ниже —

<?php
   if(isset($_POST['add'])) {
      $dbhost = 'localhost:3036';
      $dbuser = 'root';
      $dbpass = 'rootpassword';
      $conn = mysql_connect($dbhost, $dbuser, $dbpass);

      if(! $conn ) {
         die('Could not connect: ' . mysql_error());
      }

      if(! get_magic_quotes_gpc() ) {
         $product_name = addslashes ($_POST['product_name']);
         $product_manufacturer = addslashes ($_POST['product_name']);
      } else {
         $product_name = $_POST['product_name'];
         $product_manufacturer = $_POST['product_manufacturer'];
      }
      $ship_date = $_POST['ship_date'];
      $sql = "INSERT INTO products_tbl ".
         "(product_name,product_manufacturer, ship_date) ".
         "VALUES"."('$product_name','$product_manufacturer','$ship_date')";

      mysql_select_db('PRODUCTS');
      $retval = mysql_query( $sql, $conn );
      
      if(! $retval ) {
         die('Could not enter data: ' . mysql_error());
      }

      echo "Entered data successfully\n";
      mysql_close($conn);
   }
?>

При успешной вставке данных вы увидите следующий вывод:

mysql> Entered data successfully

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

MariaDB — Выбрать запрос

В этой главе мы узнаем, как выбирать данные из таблицы.

Операторы SELECT извлекают выбранные строки. Они могут включать в себя операторы UNION, предложение заказа, предложение LIMIT, предложение WHERE, предложение GROUP BY … HAVING и подзапросы.

Просмотрите следующий общий синтаксис —

SELECT field, field2,... FROM table_name, table_name2,... WHERE...

Оператор SELECT предоставляет несколько опций для указания используемой таблицы —

  • database_name.table_name

  • table_name.column_name

  • database_name.table_name.column_name

database_name.table_name

table_name.column_name

database_name.table_name.column_name

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

  • Имя столбца.

  • Выражение с использованием операторов и функций.

  • Спецификация table_name. *, Чтобы выбрать все столбцы в данной таблице.

  • Символ «*» для выбора всех столбцов из всех таблиц, указанных в предложении FROM.

Имя столбца.

Выражение с использованием операторов и функций.

Спецификация table_name. *, Чтобы выбрать все столбцы в данной таблице.

Символ «*» для выбора всех столбцов из всех таблиц, указанных в предложении FROM.

Командная строка или PHP-скрипт могут быть использованы при выполнении оператора select.

Командная строка

В командной строке выполните инструкции следующим образом:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number   | Nomenclature  |
+-------------+---------------+
| 12345       | Orbitron 4000 |
+-------------+---------------+

PHP Select Script

Для выполнения операции используйте те же операторы SELECT в функции PHP. Вы будете использовать функцию mysql_query () еще раз. Просмотрите пример, приведенный ниже —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br>".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

При успешном извлечении данных вы увидите следующий вывод:

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

Лучшие практики предполагают освобождение памяти курсора после каждого оператора SELECT. PHP предоставляет функцию mysql_free_result () для этой цели. Проверьте его использование, как показано ниже —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Product ID :{$row[0]} <br> ".
         "Name: {$row[1]} <br> ".
         "Manufacturer: {$row[2]} <br> ".
         "Ship Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }

   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

MariaDB — Где пункт

Предложения WHERE фильтруют различные операторы, такие как SELECT, UPDATE, DELETE и INSERT. Они представляют критерии, используемые для определения действий. Они обычно появляются после имени таблицы в выражении, и их условие следует. Предложение WHERE по существу функционирует как оператор if.

Просмотрите общий синтаксис предложения WHERE, приведенного ниже —

[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]

Обратите внимание на следующие качества предложения WHERE:

  • Это необязательно.

  • Это позволяет указать любое условие.

  • Он позволяет задавать несколько условий с помощью оператора AND или OR.

  • Чувствительность к регистру применяется только к операторам, использующим сравнение LIKE.

Это необязательно.

Это позволяет указать любое условие.

Он позволяет задавать несколько условий с помощью оператора AND или OR.

Чувствительность к регистру применяется только к операторам, использующим сравнение LIKE.

Предложение WHERE разрешает использование следующих операторов:

оператор
=! =
> <
> = <=

Предложения WHERE могут использоваться в командной строке или в скрипте PHP.

Командная строка

В командной строке просто используйте стандартную команду —

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl WHERE product_manufacturer = 'XYZ Corp';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

Просмотрите пример, используя условие AND

SELECT *
FROM products_tbl
WHERE product_name = 'Bun Janshu 3000';
AND product_id <= 344;

Этот пример объединяет условия И и ИЛИ

SELECT *
FROM products_tbl
WHERE (product_name = 'Bun Janshu 3000' AND product_id < 344)
OR (product_name = 'Bun Janshu 3000');

PHP-скрипты с использованием условия Where

Используйте функцию mysql_query () в операциях с использованием предложения WHERE —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date
      FROM products_tbl
      WHERE product_manufacturer = "XYZ Corp"';
   
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

При успешном извлечении данных вы увидите следующий вывод:

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB — обновить запрос

Команда UPDATE изменяет существующие поля путем изменения значений. Он использует предложение SET, чтобы указать столбцы для модификации и указать новые назначенные значения. Эти значения могут быть либо выражением, либо значением поля по умолчанию. Установка значения по умолчанию требует использования ключевого слова DEFAULT. Команда также может использовать предложение WHERE для указания условий для обновления и / или предложение ORDER BY для обновления в определенном порядке.

Просмотрите следующий общий синтаксис —

UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]

Выполните команду UPDATE из командной строки или с помощью сценария PHP.

Командная строка

В командной строке просто используйте стандартный командный корень —

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> UPDATE products_tbl
   SET nomenclature = 'Fiber Blaster 300Z' WHERE ID_number = 112;
mysql> SELECT * from products_tbl WHERE ID_number='112';
+-------------+---------------------+----------------------+
| ID_number   | Nomenclature        | product_manufacturer |
+-------------+---------------------+----------------------+
| 112         | Fiber Blaster 300Z  | XYZ Corp             |
+-------------+---------------------+----------------------+      

PHP Update Query Script

Используйте функцию mysql_query () в инструкциях команды UPDATE —

<?php
   $dbhost = ‘localhost:3036’;
   $dbuser = ‘root’;
   $dbpass = ‘rootpassword’;
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die(‘Could not connect: ‘ . mysql_error());
   }

   $sql = ‘UPDATE products_tbl
      SET product_name = ”Fiber Blaster 300z”
      WHERE product_id = 112’;

   mysql_select_db(‘PRODUCTS’);
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die(‘Could not update data: ‘ . mysql_error());
   }

   echo “Updated data successfully\n”;
   mysql_close($conn);
?>

При успешном обновлении данных вы увидите следующий вывод:

mysql> Updated data successfully

MariaDB — Удалить запрос

Команда DELETE удаляет строки таблицы из указанной таблицы и возвращает удаленное количество. Доступ к количеству, удаленному с помощью функции ROW_COUNT (). Предложение WHERE указывает строки, а при его отсутствии все строки удаляются. Предложение LIMIT контролирует количество удаленных строк.

В операторе DELETE для нескольких строк он удаляет только те строки, которые удовлетворяют условию; и предложения LIMIT и WHERE не допускаются. Операторы DELETE позволяют удалять строки из таблиц в разных базах данных, но не позволяют удалять из таблицы, а затем выбирать из той же таблицы в подзапросе.

Просмотрите следующий синтаксис DELETE —

DELETE FROM table_name [WHERE …]

Выполните команду DELETE из командной строки или с помощью сценария PHP.

Командная строка

В командной строке просто используйте стандартную команду —

root@host# mysql –u root –p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DELETE FROM products_tbl WHERE product_id=133;
mysql> SELECT * from products_tbl WHERE ID_number='133';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

PHP Удалить Query Script

Используйте функцию mysql_query () в операторах команды DELETE —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'DELETE FROM products_tbl WHERE product_id = 261';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not delete data: ' . mysql_error());
   }

   echo "Deleted data successfully\n";
   mysql_close($conn);
?>

После успешного удаления данных вы увидите следующий вывод:

mysql> Deleted data successfully
mysql> SELECT * from products_tbl WHERE ID_number='261';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

MariaDB — Like Clause

Предложение WHERE предоставляет способ извлечения данных, когда операция использует точное совпадение. В ситуациях, требующих нескольких результатов с общими характеристиками, предложение LIKE обеспечивает широкое сопоставление с образцом.

Предложение LIKE проверяет совпадение с шаблоном, возвращая true или false. Шаблоны, используемые для сравнения, принимают следующие символы подстановки: «%», что соответствует количеству символов (0 или более); и «_», который соответствует одному символу. Подстановочный знак «_» соответствует только символам в его наборе, что означает, что он будет игнорировать латинские символы при использовании другого набора. По умолчанию совпадения не чувствительны к регистру и требуют дополнительных настроек чувствительности к регистру.

Предложение NOT LIKE позволяет протестировать противоположное условие, как и оператор not .

Если выражение оператора или шаблон имеют значение NULL, результатом будет NULL.

Просмотрите общий синтаксис предложения LIKE, приведенный ниже —

SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition

Используйте предложение LIKE в командной строке или в сценарии PHP.

Командная строка

В командной строке просто используйте стандартную команду —

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from products_tbl
   WHERE product_manufacturer LIKE 'XYZ%';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

PHP Script с использованием предложения Like

Используйте функцию mysql_query () в выражениях, использующих предложение LIKE

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date
      FROM products_tbl WHERE product_manufacturer LIKE "xyz%"';
   
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID:{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

При успешном извлечении данных вы увидите следующий вывод:

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB — заказ по пункту

Предложение ORDER BY , как упоминалось в предыдущих обсуждениях, сортирует результаты оператора. Он определяет порядок обработки данных и включает возможность сортировки в порядке возрастания (ASC) или убывания (DESC). При отсутствии спецификации заказа, по умолчанию порядок возрастает.

Предложения ORDER BY встречаются в самых разных операторах, таких как DELETE и UPDATE. Они всегда появляются в конце оператора, а не в подзапросе или перед заданной функцией, потому что они работают с конечной результирующей таблицей. Вы также не можете использовать целое число для идентификации столбца.

Просмотрите общий синтаксис предложения ORDER BY, приведенного ниже —

SELECT field, field2,... [or column] FROM table_name, table_name2,...
ORDER BY field, field2,... ASC[or DESC]

Используйте предложение ORDER BY в командной строке или в скрипте PHP.

Командная строка

В командной строке просто используйте стандартную команду —

root@ host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed

mysql> SELECT * from products_tbl ORDER BY product_manufacturer ASC
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 56789       | SuperBlast 400 | LMN Corp             |
+-------------+----------------+----------------------+
| 67891       | Zoomzoom 5000  | QFT Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

PHP-скрипт с использованием Order By

Используйте функцию mysql_query () еще раз в операторах, использующих предложение ORDER BY —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date 
      FROM products_tbl ORDER BY product_manufacturer DESC';

   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

При успешном извлечении данных вы увидите следующий вывод:

Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 67891
Nomenclature: Zoomzoom 5000
Manufacturer: QFT Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 56789
Nomenclature: SuperBlast 400
Manufacturer: LMN Corp
Ship Date: 01/04/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB — Присоединяйтесь

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

СОЕДИНЕНИЯ позволяют объединять две или более таблиц в один объект. Они используются через операторы SELECT, UPDATE и DELETE.

Просмотрите общий синтаксис оператора, использующего JOIN, как показано ниже:

SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;

Обратите внимание, что старый синтаксис для JOINS использовал неявные соединения, а не ключевые слова. Можно использовать предложение WHERE для достижения объединения, но ключевые слова работают лучше всего для удобочитаемости, обслуживания и рекомендаций.

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

Используйте JOIN в командной строке или с помощью скрипта PHP.

Командная строка

В командной строке просто используйте стандартную инструкцию —

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed

mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
   FROM products
   INNER JOIN inventory
   ON products.ID_numbeer = inventory.ID_number;
+-------------+----------------+-----------------+
| ID_number   | Nomenclature   | Inventory Count |
+-------------+----------------+-----------------+
| 12345       | Orbitron 4000  | 150             |
+-------------+----------------+-----------------+
| 12346       | Orbitron 3000  | 200             |
+-------------+----------------+-----------------+
| 12347       | Orbitron 1000  | 0               |
+-------------+----------------+-----------------+

PHP скрипт с использованием JOIN

Используйте функцию mysql_query () для выполнения операции соединения —

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count   
      FROM products_tbl a, pcount_tbl b 
      WHERE a.product_manufacturer = b.product_manufacturer';

   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Manufacturer:{$row['product_manufacturer']} <br> ".
         "Count: {$row['product_count']} <br> ".
         "Product ID: {$row['product_id']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

При успешном извлечении данных вы увидите следующий вывод:

ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully

MariaDB — нулевые значения

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

Пользовательские переменные имеют значение NULL до явного присвоения. Сохраненные рутинные параметры и локальные переменные позволяют установить значение NULL. Когда локальная переменная не имеет значения по умолчанию, она имеет значение NULL.

NULL нечувствителен к регистру и имеет следующие псевдонимы:

  • НЕИЗВЕСТНО (логическое значение)
  • \ N

NULL операторы

Стандартные операторы сравнения нельзя использовать с NULL (например, =,>,> =, <=, <или! =), Поскольку все сравнения со значением NULL возвращают NULL, а не true или false. Сравнения с NULL или, возможно, содержащие его, должны использовать оператор «<=>» (NULL-SAFE).

Другие доступные операторы —

  • IS NULL — проверяет значение NULL.

  • IS NOT NULL — подтверждает отсутствие значения NULL.

  • ISNULL — возвращает значение 1 при обнаружении значения NULL и 0 при его отсутствии.

  • COALESCE — возвращает первое ненулевое значение списка или возвращает нулевое значение при его отсутствии.

IS NULL — проверяет значение NULL.

IS NOT NULL — подтверждает отсутствие значения NULL.

ISNULL — возвращает значение 1 при обнаружении значения NULL и 0 при его отсутствии.

COALESCE — возвращает первое ненулевое значение списка или возвращает нулевое значение при его отсутствии.

Сортировка пустых значений

В операциях сортировки значения NULL имеют наименьшее значение, поэтому порядок DESC приводит к значениям NULL внизу. MariaDB позволяет устанавливать более высокое значение для значений NULL.

Есть два способа сделать это, как показано ниже —

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

Другой способ —

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL Функции

Функции обычно выводят NULL, когда любые параметры равны NULL. Однако существуют функции, специально предназначенные для управления значениями NULL. Они —

  • IFNULL () — Если первое выражение не NULL, оно возвращает его. Когда он оценивается как NULL, он возвращает второе выражение.

  • NULLIF () — возвращает NULL, когда сравниваемые выражения равны, если нет, возвращает первое выражение.

IFNULL () — Если первое выражение не NULL, оно возвращает его. Когда он оценивается как NULL, он возвращает второе выражение.

NULLIF () — возвращает NULL, когда сравниваемые выражения равны, если нет, возвращает первое выражение.

Такие функции, как SUM и AVG игнорируют значения NULL.

Вставка пустых значений

При вставке значения NULL в столбец, объявленный NOT NULL, возникает ошибка. В режиме SQL по умолчанию в столбец NOT NULL вместо этого будет вставлено значение по умолчанию в зависимости от типа данных.

Если поле представляет собой TIMESTAMP, AUTO_INCREMENT или виртуальный столбец, MariaDB по-разному управляет значениями NULL. Вставка в столбец AUTO_INCREMENT приводит к тому, что следующий номер в последовательности вставляется на его место. В поле TIMESTAMP MariaDB вместо этого назначает текущую метку времени. В виртуальных столбцах, обсуждаемых далее в этом руководстве, назначается значение по умолчанию.

УНИКАЛЬНЫЕ индексы могут содержать много значений NULL, однако первичные ключи не могут быть NULL.

Значения NULL и команда Alter

Когда вы используете команду ALTER для изменения столбца, при отсутствии спецификаций NULL MariaDB автоматически присваивает значения.

MariaDB — регулярное выражение

Помимо сопоставления с шаблоном, доступного в предложениях LIKE, MariaDB предлагает сопоставление на основе регулярных выражений с помощью оператора REGEXP. Оператор выполняет сопоставление с образцом для строкового выражения на основе заданного образца.

MariaDB 10.0.5 представила регулярные выражения PCRE, которые значительно расширяют возможности сопоставления с такими областями, как рекурсивные шаблоны, прогнозные утверждения и многое другое.

Просмотрите использование стандартного синтаксиса оператора REGEXP, приведенного ниже —

SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';

REGEXP возвращает 1 для совпадения с шаблоном или 0 при отсутствии такового.

Опция для обратного существует в форме NOT REGEXP. MariaDB также предлагает синонимы для REGEXP и NOT REGEXP, RLIKE и NOT RLIKE, которые были созданы по причинам совместимости.

Сравниваемый шаблон может быть литеральной строкой или чем-то еще, например столбцом таблицы. В строках он использует C-синтаксис, поэтому удваивайте любые символы «\». REGEXP также нечувствителен к регистру, за исключением двоичных строк.

Таблица возможных шаблонов, которые можно использовать, приведена ниже —

Sr.No Шаблон и описание
1

^

Это соответствует началу строки.

2

$

Это соответствует концу строки.

3

,

Это соответствует одному символу.

4

[…]

Соответствует любому символу в скобках.

5

[^ …]

Соответствует любому символу, не указанному в скобках.

6

p1 | p2 | p3

Это соответствует любой из моделей.

7

*

Это соответствует 0 или более экземпляров предыдущего элемента.

8

+

Это соответствует 1 или более экземпляров предыдущего элемента.

9

{п}

Он соответствует n экземплярам предыдущего элемента.

10

{т, п}

Это соответствует от m до n экземпляров предыдущего элемента.

^

Это соответствует началу строки.

$

Это соответствует концу строки.

,

Это соответствует одному символу.

[…]

Соответствует любому символу в скобках.

[^ …]

Соответствует любому символу, не указанному в скобках.

p1 | p2 | p3

Это соответствует любой из моделей.

*

Это соответствует 0 или более экземпляров предыдущего элемента.

+

Это соответствует 1 или более экземпляров предыдущего элемента.

{п}

Он соответствует n экземплярам предыдущего элемента.

{т, п}

Это соответствует от m до n экземпляров предыдущего элемента.

Просмотрите примеры соответствия шаблонов, приведенные ниже —

Продукты, начинающиеся с «pr» —

SELECT name FROM product_tbl WHERE name REGEXP '^pr';

Продукты, заканчивающиеся на «на» —

SELECT name FROM product_tbl WHERE name REGEXP 'na$';

Продукты начинающиеся с гласной —

SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';

MariaDB — Сделки

Транзакции — это последовательные групповые операции. Они функционируют как единое целое и не завершаются до тех пор, пока все операции в группе не будут успешно выполнены. Один сбой в группе приводит к сбою всей транзакции и не влияет на базу данных.

Транзакции соответствуют ACID (атомарность, согласованность, изоляция и долговечность) —

  • Атомарность — обеспечивает успех всех операций, прерывая сбои и откатывая изменения.

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

  • Изоляция — это позволяет независимой транзакции операции транзакций.

  • Долговечность — обеспечивает постоянство успешной транзакции в случае сбоя системы.

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

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

Изоляция — это позволяет независимой транзакции операции транзакций.

Долговечность — обеспечивает постоянство успешной транзакции в случае сбоя системы.

Во главе оператора транзакции находится оператор START TRANSACTION, за которым следуют операторы COMMIT и ROLLBACK —

  • START TRANSACTION начинает транзакцию.

  • COMMIT сохраняет изменения в данных.

  • ROLLBACK завершает транзакцию, уничтожая любые изменения.

START TRANSACTION начинает транзакцию.

COMMIT сохраняет изменения в данных.

ROLLBACK завершает транзакцию, уничтожая любые изменения.

В случае успешной транзакции действует COMMIT. В случае сбоя действует ROLLBACK.

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

Транзакции MariaDB также включают такие опции, как SAVEPOINT и LOCK TABLES. SAVEPOINT устанавливает точку восстановления для использования с ROLLBACK. LOCK TABLES позволяет контролировать доступ к таблицам во время сеансов, чтобы предотвратить изменения в определенные периоды времени.

Переменная AUTOCOMMIT обеспечивает контроль над транзакциями. Установка 1 заставляет все операции считаться успешными транзакциями, а установка 0 заставляет сохранение изменений происходить только в явном операторе COMMIT.

Структура транзакции

Общая структура оператора транзакции начинается с START TRANSACTION. Следующим шагом является вставка одной или нескольких команд / операций, вставка операторов, проверяющих наличие ошибок, вставка операторов ROLLBACK для управления обнаруженными ошибками и, наконец, вставка оператора COMMIT для применения изменений к успешным операциям.

Просмотрите пример, приведенный ниже —

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;

MariaDB — Alter Command

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

Использование ALTER для изменения столбцов

ALTER в сочетании с DROP удаляет существующий столбец. Тем не менее, это не удается, если столбец является единственным оставшимся столбцом.

Просмотрите пример, приведенный ниже —

mysql> ALTER TABLE products_tbl DROP version_num;

Используйте оператор ALTER … ADD для добавления столбцов —

mysql> ALTER TABLE products_tbl ADD discontinued CHAR(1);

Используйте ключевые слова FIRST и AFTER, чтобы указать расположение столбца —

ALTER TABLE products_tbl ADD discontinued CHAR(1) FIRST;
ALTER TABLE products_tbl ADD discontinued CHAR(1) AFTER quantity;

Обратите внимание, что ключевые слова FIRST и AFTER применяются только к операторам ALTER … ADD. Кроме того, вы должны удалить таблицу, а затем добавить ее, чтобы изменить положение.

Измените определение или имя столбца, используя предложение MODIFY или CHANGE в инструкции ALTER. Предложения имеют схожие эффекты, но используют существенно другой синтаксис.

Просмотрите пример ИЗМЕНЕНИЯ, приведенный ниже —

mysql> ALTER TABLE products_tbl CHANGE discontinued status CHAR(4);

В операторе CHANGE укажите исходный столбец, а затем новый столбец, который заменит его. Посмотрите пример MODIFY ниже —

mysql> ALTER TABLE products_tbl MODIFY discontinued CHAR(4);

Команда ALTER также позволяет изменять значения по умолчанию. Просмотрите пример —

mysql> ALTER TABLE products_tbl ALTER discontinued SET DEFAULT N;

Вы также можете использовать его для удаления ограничений по умолчанию, связав его с предложением DROP —

mysql> ALTER TABLE products_tbl ALTER discontinued DROP DEFAULT;

Использование ALTER для изменения таблиц

Измените тип таблицы с помощью предложения TYPE —

mysql> ALTER TABLE products_tbl TYPE = INNODB;

Переименуйте таблицу с помощью ключевого слова RENAME —

mysql> ALTER TABLE products_tbl RENAME TO products2016_tbl;

MariaDB — индексы и статистические таблицы

Индексы — это инструменты для ускорения поиска записей. Индекс порождает запись для каждого значения в индексированном столбце.

Есть четыре типа индексов —

  • Основной (одна запись представляет все записи)

  • Уникальный (одна запись представляет несколько записей)

  • гладкий

  • Полнотекстовый (позволяет много вариантов в текстовом поиске).

Основной (одна запись представляет все записи)

Уникальный (одна запись представляет несколько записей)

гладкий

Полнотекстовый (позволяет много вариантов в текстовом поиске).

Термины «ключ» и «индекс» в этом использовании идентичны.

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

Хотя индексы ускоряют поиск или операторы SELECT, они делают вставки и обновления перетаскиваемыми из-за выполнения операций как с таблицами, так и с индексами.

Создать индекс

Вы можете создать индекс с помощью оператора CREATE TABLE … INDEX или оператора CREATE INDEX. Наилучшим вариантом, поддерживающим удобочитаемость, обслуживание и лучшие практики, является CREATE INDEX.

Просмотрите общий синтаксис индекса, приведенный ниже —

CREATE [UNIQUE or FULLTEXT or...] INDEX index_name ON table_name column;

Просмотрите пример его использования —

CREATE UNIQUE INDEX top_sellers ON products_tbl product;

Оставьте индекс

Вы можете удалить индекс с помощью DROP INDEX или ALTER TABLE … DROP. Наилучшим вариантом, поддерживающим удобочитаемость, обслуживание и лучшие практики, является DROP INDEX.

Просмотрите общий синтаксис Drop Index, приведенный ниже —

DROP INDEX index_name ON table_name;

Просмотрите пример его использования —

DROP INDEX top_sellers ON product_tbl;

Переименовать индекс

Переименуйте индекс с помощью инструкции ALTER TABLE. Просмотрите его общий синтаксис, приведенный ниже —

ALTER TABLE table_name DROP INDEX index_name, ADD INDEX new_index_name;

Просмотрите пример его использования —

ALTER TABLE products_tbl DROP INDEX top_sellers, ADD INDEX top_2016sellers;

Управление индексами

Вам нужно будет изучить и отследить все индексы. Используйте SHOW INDEX, чтобы перечислить все существующие индексы, связанные с данной таблицей. Вы можете установить формат отображаемого содержимого, используя параметр, например «\ G», который указывает вертикальный формат.

Просмотрите следующий пример —

mysql > SHOW INDEX FROM products_tbl\G

Таблица статистики

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

MariaDB — Временные столы

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

Создать временную таблицу

Ключевое слово TEMPORARY в операторе CREATE TABLE порождает временную таблицу. Просмотрите пример, приведенный ниже —

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

При создании временной таблицы вы можете клонировать существующие таблицы, то есть все их общие характеристики, с помощью предложения LIKE. Оператор CREATE TABLE, используемый для порождения временной таблицы, не будет фиксировать транзакции в результате ключевого слова TEMPORARY.

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

  • Иногда они конфликтуют с призрачными временными таблицами из истекших сеансов.

  • Иногда они конфликтуют с теневыми именами невременных таблиц.

Иногда они конфликтуют с призрачными временными таблицами из истекших сеансов.

Иногда они конфликтуют с теневыми именами невременных таблиц.

Примечание. Временные таблицы могут иметь то же имя, что и существующая невременная таблица, поскольку MariaDB рассматривает ее как разностную ссылку.

администрация

MariaDB требует предоставления пользователям привилегий для создания временных таблиц. Используйте оператор GRANT, чтобы предоставить эту привилегию пользователям без прав администратора.

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

Бросить временную таблицу

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

mysql> DROP TABLE order;

MariaDB — клонирование таблиц

В некоторых ситуациях требуется создание точной копии существующей таблицы. Оператор CREATE … SELECT не может создать этот вывод, потому что он игнорирует такие вещи, как индексы и значения по умолчанию.

Процедура дублирования таблицы следующая:

  • Используйте SHOW CREATE TABLE для создания оператора CREATE TABLE, который детализирует всю структуру исходной таблицы.

  • Измените оператор, чтобы дать таблице новое имя, и выполните его.

  • Используйте оператор INSERT INTO … SELECT, если вам также необходимо скопировать данные таблицы.

Используйте SHOW CREATE TABLE для создания оператора CREATE TABLE, который детализирует всю структуру исходной таблицы.

Измените оператор, чтобы дать таблице новое имя, и выполните его.

Используйте оператор INSERT INTO … SELECT, если вам также необходимо скопировать данные таблицы.

mysql> INSERT INTO inventory_copy_tbl (
   product_id,product_name,product_manufacturer,ship_date)
   
   SELECT product_id,product_name,product_manufacturer,ship_date,
   FROM inventory_tbl;

Другой метод создания дубликата использует инструкцию CREATE TABLE AS. Оператор копирует все столбцы, определения столбцов и заполняет копию данными исходной таблицы.

Просмотрите его синтаксис, приведенный ниже —

CREATE TABLE clone_tbl AS
   SELECT columns
   FROM original_tbl
   WHERE conditions];

Рассмотрите пример его использования ниже —

CREATE TABLE products_copy_tbl AS
   SELECT *
   FROM products_tbl;

MariaDB — последовательности

В версии 10.0.3 MariaDB представила механизм хранения, известный как sequence. Его ad hoc генерирует целочисленную последовательность для операций, а затем завершается. Последовательность содержит положительные целые числа в порядке убывания или возрастания и использует начальное, конечное и инкрементное значение.

Он не позволяет использовать его в нескольких запросах, только в исходном запросе из-за его виртуальной (не записанной на диск) природы. Однако таблицы последовательности можно преобразовать в стандартные таблицы с помощью команды ALTER. Если преобразованная таблица удалена, таблица последовательности все еще существует. Последовательности также не могут давать отрицательные числа или вращаться на минимуме / максимуме.

Установка механизма последовательности

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

INSTALL SONAME "ha_sequence";

После установки проверьте это —

SHOW ENGINES\G

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

Создание последовательности

Есть два метода создания последовательности —

  • Создайте таблицу и используйте атрибут AUTO_INCREMENT, чтобы определить столбец как автоинкремент.

  • Используйте существующую базу данных и используйте запрос SELECT для создания последовательности. В запросе используется синтаксис seq_ [FROM] _to_ [TO] или seq_ [FROM] _to_ [TO] _step_STEP.

Создайте таблицу и используйте атрибут AUTO_INCREMENT, чтобы определить столбец как автоинкремент.

Используйте существующую базу данных и используйте запрос SELECT для создания последовательности. В запросе используется синтаксис seq_ [FROM] _to_ [TO] или seq_ [FROM] _to_ [TO] _step_STEP.

Лучшие практики предпочитают использовать второй метод. Просмотрите пример создания последовательности, приведенный ниже —

SELECT * FROM seq_77_to_99;

Последовательности имеют много применений —

  • Найдите пропущенные значения в столбце, чтобы защитить от связанных с ними проблем в операциях —

Найдите пропущенные значения в столбце, чтобы защитить от связанных с ними проблем в операциях —

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • Построить комбинацию ценностей —

Построить комбинацию ценностей —

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • Найти кратные числа —

Найти кратные числа —

SELECT seq FROM seq_3_to_100_step_4;
  • Построить последовательность дат для использования в приложениях, таких как системы бронирования.
  • Построить временную последовательность.

MariaDB — Управление дубликатами

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

В некоторых ситуациях дубликаты вызывают проблемы, и они часто появляются из-за неявных действий или мягкой политики команды MariaDB. Существуют способы решения этой проблемы, поиска дубликатов, удаления дубликатов и предотвращения создания дубликатов.

Стратегии и инструменты

Существует четыре основных способа управления дубликатами:

  • Ловите их с помощью JOIN и удаляйте их с помощью временной таблицы.

  • Используйте INSERT … ON DUPLICATE KEY UPDATE для обновления при обнаружении дубликата.

  • Используйте DISTINCT, чтобы сократить результаты оператора SELECT и удалить дубликаты.

  • Используйте INSERT IGNORE, чтобы остановить вставку дубликатов.

Ловите их с помощью JOIN и удаляйте их с помощью временной таблицы.

Используйте INSERT … ON DUPLICATE KEY UPDATE для обновления при обнаружении дубликата.

Используйте DISTINCT, чтобы сократить результаты оператора SELECT и удалить дубликаты.

Используйте INSERT IGNORE, чтобы остановить вставку дубликатов.

Использование соединения с временной таблицей

Просто выполните полусоединение как внутреннее соединение, а затем удалите найденные дубликаты с временной таблицей.

Использование INSERT

Когда INSERT … ON DUPLICATE KEY UPDATE обнаруживает дубликат уникального или первичного ключа, он выполняет обновление. При обнаружении нескольких уникальных ключей обновляется только первый. Следовательно, не используйте его для таблиц с несколькими уникальными индексами.

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

INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Примечание. Если ключ не найден, оператор INSERT … ON DUPLICATE KEY UPDATE выполняется как обычный оператор вставки.

Использование DISTINCT

Предложения DISTINCT удаляют дубликаты из результатов. Общий синтаксис для предложения DISTINCT следующий:

SELECT DISTINCT fields
FROM table
[WHERE conditions];

Примечание . Результаты оператора с предложением DISTINCT.

  • При использовании одного выражения оно возвращает для него уникальные значения.

  • При использовании нескольких выражений он возвращает уникальные комбинации.

  • Он не игнорирует значения NULL; таким образом, результаты также содержат NULL как уникальные значения.

При использовании одного выражения оно возвращает для него уникальные значения.

При использовании нескольких выражений он возвращает уникальные комбинации.

Он не игнорирует значения NULL; таким образом, результаты также содержат NULL как уникальные значения.

Просмотрите следующую инструкцию, используя предложение DISTINCT для одного выражения:

SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';

Просмотрите следующий пример, используя несколько выражений —

SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

Использование INSERT IGNORE

Оператор INSERT IGNORE предписывает MariaDB отменить вставку при обнаружении дублирующейся записи. Просмотрите пример его использования, приведенный ниже —

mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
   VALUES( 'Lex', 'Luther');

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

MariaDB — защита от SQL-инъекций

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

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

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

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Кроме того, используйте оператор REGEXP и предложения LIKE при создании входных ограничений.

Рассмотрим все типы необходимого явного контроля ввода, такие как —

  • Управляйте используемыми escape-символами.

  • Управляйте конкретными соответствующими типами данных для ввода. Ограничьте ввод нужным типом данных и размером.

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

  • Контролировать условия разрешено. Черный список ключевых слов SQL.

Управляйте используемыми escape-символами.

Управляйте конкретными соответствующими типами данных для ввода. Ограничьте ввод нужным типом данных и размером.

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

Контролировать условия разрешено. Черный список ключевых слов SQL.

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

1=1
-or-
*

Код, позволяющий вводить любой из них вместе с правильной командой, может привести к раскрытию всех пользовательских данных в базе данных или удалению всех данных в базе данных, и ни одна из инъекций не является особенно умной. В некоторых случаях злоумышленники даже не тратят время на изучение дыр; они выполняют слепые атаки с простым вводом.

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

MariaDB — методы резервного копирования

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

ОПЦИИ

Основные параметры резервного копирования включают в себя логические и физические резервные копии. Логические резервные копии содержат операторы SQL для восстановления данных. Физические резервные копии содержат копии данных.

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

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

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

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

Инструменты резервного копирования

Основным инструментом, используемым для резервного копирования MariaDB, является mysqldump . Он предлагает логические резервные копии и гибкость. Это также является отличным вариантом для небольших баз данных. Mysqldump сбрасывает данные в SQL, CSV, XML и многие другие форматы. Его выходные данные не сохраняют хранимые процедуры, представления и события без явной инструкции.

Существует три варианта резервного копирования mysqldump

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

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

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp PRODUCTS products_tbl
  • Экспорт данных / определений — эта опция позволяет экспортировать одну или несколько таблиц в файл и поддерживает резервное копирование всех существующих баз данных на хост-компьютере. Изучите пример экспорта содержимого или определений в файл

Экспорт данных / определений — эта опция позволяет экспортировать одну или несколько таблиц в файл и поддерживает резервное копирование всех существующих баз данных на хост-компьютере. Изучите пример экспорта содержимого или определений в файл

$ mysqldump -u root -p PRODUCTS products_tbl > export_file.txt
  • Перенос — Вы также можете вывести базы данных и таблицы на другой хост

Перенос — Вы также можете вывести базы данных и таблицы на другой хост

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

Использование оператора SELECT … INTO OUTFILE

Другой вариант экспорта данных использует оператор SELECT … INTO OUTFILE. Эта простая опция выводит таблицу в простой форматированный текстовый файл —

mysql> SELECT * FROM products_tbl
   -> INTO OUTFILE '/tmp/products.txt';

Его атрибуты позволяют форматировать файл в соответствии с вашими предпочтениями.

Обратите внимание на следующие качества этого утверждения —

  • Имя файла должно указывать желаемое местоположение для вывода.

  • Вам нужны привилегии файла MariaDB для выполнения оператора.

  • Имя выходного файла должно быть уникальным.

  • Вам нужны учетные данные для входа на хост.

  • В среде UNIX выходной файл доступен для чтения всем, но владение сервером влияет на вашу возможность его удаления. Убедитесь, что у вас есть привилегии.

Имя файла должно указывать желаемое местоположение для вывода.

Вам нужны привилегии файла MariaDB для выполнения оператора.

Имя выходного файла должно быть уникальным.

Вам нужны учетные данные для входа на хост.

В среде UNIX выходной файл доступен для чтения всем, но владение сервером влияет на вашу возможность его удаления. Убедитесь, что у вас есть привилегии.

Использование CONNECT в резервных копиях

Обработчик CONNECT позволяет экспортировать данные. Это оказывается полезным прежде всего в ситуациях, когда операция SELECT … INTO OUTFILE не поддерживает формат файла.

Просмотрите следующий пример —

create table products
engine = CONNECT table_type = XML file_name = 'products.htm' header = yes
option_list = 'name = TABLE,coltype = HTML,attribute = border = 1;cellpadding = 5'

select plugin_name handler, plugin_version version, plugin_author
author, plugin_description description, plugin_maturity maturity
from information_schema.plugins where plugin_type = 'STORAGE ENGINE';

Другие инструменты

Другие варианты резервного копирования:

  • XtraBackup — эта опция предназначена для баз данных XtraDB / InnoDB и работает с любым механизмом хранения. Узнайте больше об этом инструменте на официальном сайте Percona.

  • Снимки — некоторые файловые системы позволяют делать снимки. Процесс состоит из очистки таблиц с блокировкой чтения, монтирования снимка, разблокировки таблиц, копирования снимка, а затем размонтирования снимка.

  • LVM — этот популярный метод использует Perl-скрипт. Он получает блокировку чтения для каждой таблицы и сбрасывает кэши на диск. Затем он получает снимок и разблокирует таблицы. Обратитесь к официальному сайту mylvmbackup для получения дополнительной информации.

  • TokuBackup — это решение, предоставляемое Percona, обеспечивает горячее резервное копирование с учетом проблем и ограничений параметров резервного копирования InnoDB. Он создает транзакционную звуковую копию файлов, в то время как приложения продолжают манипулировать ими. Обратитесь к веб-сайту Percona за дополнительной информацией.

XtraBackup — эта опция предназначена для баз данных XtraDB / InnoDB и работает с любым механизмом хранения. Узнайте больше об этом инструменте на официальном сайте Percona.

Снимки — некоторые файловые системы позволяют делать снимки. Процесс состоит из очистки таблиц с блокировкой чтения, монтирования снимка, разблокировки таблиц, копирования снимка, а затем размонтирования снимка.

LVM — этот популярный метод использует Perl-скрипт. Он получает блокировку чтения для каждой таблицы и сбрасывает кэши на диск. Затем он получает снимок и разблокирует таблицы. Обратитесь к официальному сайту mylvmbackup для получения дополнительной информации.

TokuBackup — это решение, предоставляемое Percona, обеспечивает горячее резервное копирование с учетом проблем и ограничений параметров резервного копирования InnoDB. Он создает транзакционную звуковую копию файлов, в то время как приложения продолжают манипулировать ими. Обратитесь к веб-сайту Percona за дополнительной информацией.

INNODB Соображения

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

MariaDB — методы загрузки резервных копий

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

Есть три варианта загрузки данных: оператор LOAD DATA, mysqlimport и простое восстановление mysqldump.

Использование LOAD DATA

Оператор LOAD DATA функционирует как массовый загрузчик. Просмотрите пример его использования, который загружает текстовый файл —

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl;

Обратите внимание на следующие качества оператора LOAD DATA —

  • Используйте ключевое слово LOCAL, чтобы запретить MariaDB выполнять глубокий поиск хоста, и используйте очень конкретный путь.

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

  • Используйте предложение FIELDS, чтобы явно указать форматирование полей в строке. Используйте предложение LINES, чтобы указать окончание строки. Посмотрите пример ниже.

Используйте ключевое слово LOCAL, чтобы запретить MariaDB выполнять глубокий поиск хоста, и используйте очень конкретный путь.

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

Используйте предложение FIELDS, чтобы явно указать форматирование полей в строке. Используйте предложение LINES, чтобы указать окончание строки. Посмотрите пример ниже.

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl
   FIELDS TERMINATED BY '|'
   LINES TERMINATED BY '\n';
  • Оператор предполагает, что столбцы в файле данных используют тот же порядок таблицы. Если вам нужно установить другой порядок, вы можете загрузить файл следующим образом:

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

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl (c, b, a);

Использование MYSQLIMPORT

Инструмент mysqlimport действует как оболочка LOAD DATA, позволяющая выполнять те же операции из командной строки.

Загрузите данные следующим образом —

$ mysqlimport -u root -p --local database_name source_file.txt

Укажите форматирование следующим образом —

$ mysqlimport -u root -p --local --fields-terminated-by="|" \
   --lines-terminated-by="\n" database_name source_file.txt

Используйте параметр — столбцы, чтобы указать порядок столбцов —

$ mysqlimport -u root -p --local --columns=c,b,a \
   database_name source_file.txt

Использование MYSQLDUMP

Восстановление с помощью mysqldump требует этого простого оператора для загрузки файла дампа обратно на хост —

shell> mysql database_name < source_file.sql

ОСОБЫЕ ХАРАКТЕРЫ И ЦИТАТЫ

В операторе LOAD DATA кавычки и специальные символы могут интерпретироваться неправильно. Оператор принимает значения без кавычек и обрабатывает обратную косую черту как escape-символы. Используйте предложение FIELDS, чтобы указать форматирование. Укажите на кавычки с помощью «ENCLOSED BY», который вызывает удаление кавычек из значений данных. Изменения выходят с «ESCAPED BY».

MariaDB — Полезные функции

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

MariaDB Агрегатные функции

Наиболее часто используемые агрегатные функции приведены ниже —

Sr.No Имя и описание
1

COUNT

Подсчитывает количество записей.

Пример — SELECT COUNT (*) FROM customer_table;

2

MIN

Он показывает минимальное значение набора записей.

Пример — ВЫБРАТЬ организацию, МИН (учетная запись) ОТ контрактов GROUP BY организации;

3

МАКСИМУМ

Он показывает максимальное значение набора записей.

Пример — SELECT организации, MAX (account_size) FROM контрактов GROUP BY организации;

4

AVG

Он рассчитывает среднее значение набора записей.

Пример — SELECT AVG (account_size) ОТ контрактов;

5

SUM

Он рассчитывает сумму набора записей.

Пример — SELECT SUM (account_size) ОТ контрактов;

COUNT

Подсчитывает количество записей.

Пример — SELECT COUNT (*) FROM customer_table;

MIN

Он показывает минимальное значение набора записей.

Пример — ВЫБРАТЬ организацию, МИН (учетная запись) ОТ контрактов GROUP BY организации;

МАКСИМУМ

Он показывает максимальное значение набора записей.

Пример — SELECT организации, MAX (account_size) FROM контрактов GROUP BY организации;

AVG

Он рассчитывает среднее значение набора записей.

Пример — SELECT AVG (account_size) ОТ контрактов;

SUM

Он рассчитывает сумму набора записей.

Пример — SELECT SUM (account_size) ОТ контрактов;

MariaDB Возраст Расчет

Функция TIMESTAMPDIFF позволяет рассчитать возраст —

SELECT CURDATE() AS today;
SELECT ID, DOB, TIMESTAMPDIFF(YEAR,DOB,'2015-07-01') AS age FROM officer_info;

MariaDB Строка Конкатенация

Функция CONCAT возвращает результирующую строку после операции конкатенации. Вы можете использовать один или несколько аргументов. Просмотрите его синтаксис, приведенный ниже —

SELECT CONCAT(item, item,...);

Просмотрите следующий пример —

SELECT CONCAT('Ram', 'bu', 'tan');
Output:Rambutan

MariaDB Дата / Время Функции

Ниже приведены важные функции даты —

Sr.No Имя и описание
1

CURDATE ()

Возвращает дату в формате гггг-мм-дд или ггггммдд.

Пример — SELECT CURDATE ();

2

ДАТА()

Возвращает дату в нескольких форматах.

Пример — CREATE TABLE product_release_tbl (x DATE);

3

CURTIME ()

Возвращает время в формате ЧЧ: ММ: СС или ЧЧММСС.уууууу.

Пример — ВЫБЕРИТЕ CURTIME ();

4

DATE_SUB ()

Это добавляет или вычитает количество дней от указанной даты.

Пример — SELECT DATE_SUB (‘2016-02-08’, INTERVAL 60 DAY);

5

DATEDIFF ()

Он определяет дни между двумя датами.

Пример — SELECT DATEDIFF (‘2016-01-01 23:59:59’, ‘2016-01-03’);

6

ДАТА ДОБАВИТЬ ()

Это добавляет или вычитает любую единицу времени к / от даты и времени.

Пример — SELECT DATE_ADD (‘2016-01-04 23:59:59’, INTERVAL 22 SECOND);

7

ВЫПИСКА ()

Извлекает единицу из даты.

Пример — ВЫБРАТЬ ЭКСТРАКТ (ГОД ОТ ‘2016-01-08’);

8

СЕЙЧАС()

Возвращает текущую дату и время в формате гггг-мм-дд чч: мм: сс или ггггммдччммсс.ууууууу.

Пример — ВЫБРАТЬ СЕЙЧАС ();

9

ФОРМАТ ДАТЫ()

Форматирует дату в соответствии с указанной строкой формата.

Пример — SELECT DATE_FORMAT (‘2016-01-09 20:20:00’, ‘% W% M% Y’);

CURDATE ()

Возвращает дату в формате гггг-мм-дд или ггггммдд.

Пример — SELECT CURDATE ();

ДАТА()

Возвращает дату в нескольких форматах.

Пример — CREATE TABLE product_release_tbl (x DATE);

CURTIME ()

Возвращает время в формате ЧЧ: ММ: СС или ЧЧММСС.уууууу.

Пример — ВЫБЕРИТЕ CURTIME ();

DATE_SUB ()

Это добавляет или вычитает количество дней от указанной даты.

Пример — SELECT DATE_SUB (‘2016-02-08’, INTERVAL 60 DAY);

DATEDIFF ()

Он определяет дни между двумя датами.

Пример — SELECT DATEDIFF (‘2016-01-01 23:59:59’, ‘2016-01-03’);

ДАТА ДОБАВИТЬ ()

Это добавляет или вычитает любую единицу времени к / от даты и времени.

Пример — SELECT DATE_ADD (‘2016-01-04 23:59:59’, INTERVAL 22 SECOND);

ВЫПИСКА ()

Извлекает единицу из даты.

Пример — ВЫБРАТЬ ЭКСТРАКТ (ГОД ОТ ‘2016-01-08’);

СЕЙЧАС()

Возвращает текущую дату и время в формате гггг-мм-дд чч: мм: сс или ггггммдччммсс.ууууууу.

Пример — ВЫБРАТЬ СЕЙЧАС ();

ФОРМАТ ДАТЫ()

Форматирует дату в соответствии с указанной строкой формата.

Пример — SELECT DATE_FORMAT (‘2016-01-09 20:20:00’, ‘% W% M% Y’);

Ниже приведены некоторые важные функции времени —

Sr.No Имя и описание
1

ЧАС()

Возвращает час времени или прошедшие часы.

Пример — ВЫБЕРИТЕ ЧАС (’19: 17: 09′);

2

МЕСТНОЕ ВРЕМЯ()

Он работает точно так же, как СЕЙЧАС ().

3

Микросекунды ()

Возвращает микросекунды времени.

Пример — ВЫБРАТЬ МИКРОСЕКУНД (’16: 30: 00.543876′);

4

МИНУТНЫЙ ()

Возвращает минуты времени.

Пример — SELECT MINUTE (‘2016-05-22 17:22:01’);

5

ВТОРОЙ ()

Возвращает секунды даты.

Пример — ВЫБРАТЬ ВТОРОЕ (‘2016-03-12 16: 30: 04.000001’);

6

TIME_FORMAT ()

Он форматирует время в соответствии с указанной строкой формата.

Пример — SELECT TIME_FORMAT (’22: 02: 20 ‘,’% H% k% h% I% l ‘);

7

ТШЕЗТАМР ()

Он предоставляет метку времени для действия в формате гггг-мм-дд чч: мм: дд.

Пример — CREATE TABLE orders_ (ID INT, tmst TIMESTAMP);

ЧАС()

Возвращает час времени или прошедшие часы.

Пример — ВЫБЕРИТЕ ЧАС (’19: 17: 09′);

МЕСТНОЕ ВРЕМЯ()

Он работает точно так же, как СЕЙЧАС ().

Микросекунды ()

Возвращает микросекунды времени.

Пример — ВЫБРАТЬ МИКРОСЕКУНД (’16: 30: 00.543876′);

МИНУТНЫЙ ()

Возвращает минуты времени.

Пример — SELECT MINUTE (‘2016-05-22 17:22:01’);

ВТОРОЙ ()

Возвращает секунды даты.

Пример — ВЫБРАТЬ ВТОРОЕ (‘2016-03-12 16: 30: 04.000001’);

TIME_FORMAT ()

Он форматирует время в соответствии с указанной строкой формата.

Пример — SELECT TIME_FORMAT (’22: 02: 20 ‘,’% H% k% h% I% l ‘);

ТШЕЗТАМР ()

Он предоставляет метку времени для действия в формате гггг-мм-дд чч: мм: дд.

Пример — CREATE TABLE orders_ (ID INT, tmst TIMESTAMP);

MariaDB Числовые Функции

Ниже приведены некоторые важные числовые функции в MariaDB —

Sr.No Имя и описание
1

TRUNCATE ()

Возвращает усеченное число в спецификации десятичного разряда.

Пример — SELECT TRUNCATE (101.222, 1);

2

COS ()

Возвращает косинус x радиан.

Пример — ВЫБЕРИТЕ COS (PI ());

3

ПОТОЛОК ()

Возвращает наименьшее целое число не ниже х.

Пример — ВЫБЕРИТЕ ПОТОЛОК (2.11);

4

ГРАДУСЫ ()

Он преобразует радианы в градусы.

Пример — ВЫБРАТЬ СТЕПЕНИ (PI ());

5

DIV ()

Он выполняет целочисленное деление.

Пример — SELECT 100 DIV 4;

6

EXP ()

Возвращает е к степени х.

Пример — SELECT EXP (2);

7

ЭТАЖ()

Возвращает наибольшее целое число не выше х.

Пример — ВЫБРАТЬ ЭТАЖ (2.01);

8

LN ()

Возвращает натуральный логарифм x.

Пример — ВЫБРАТЬ LN (3);

9

ЖУРНАЛ()

Возвращает натуральный логарифм или логарифм к заданному основанию.

Пример — SELECT LOG (3);

10

SQRT ()

Возвращает квадратный корень.

Пример — SELECT SQRT (16);

TRUNCATE ()

Возвращает усеченное число в спецификации десятичного разряда.

Пример — SELECT TRUNCATE (101.222, 1);

COS ()

Возвращает косинус x радиан.

Пример — ВЫБЕРИТЕ COS (PI ());

ПОТОЛОК ()

Возвращает наименьшее целое число не ниже х.

Пример — ВЫБЕРИТЕ ПОТОЛОК (2.11);

ГРАДУСЫ ()

Он преобразует радианы в градусы.

Пример — ВЫБРАТЬ СТЕПЕНИ (PI ());

DIV ()

Он выполняет целочисленное деление.

Пример — SELECT 100 DIV 4;

EXP ()

Возвращает е к степени х.

Пример — SELECT EXP (2);

ЭТАЖ()

Возвращает наибольшее целое число не выше х.

Пример — ВЫБРАТЬ ЭТАЖ (2.01);

LN ()

Возвращает натуральный логарифм x.

Пример — ВЫБРАТЬ LN (3);

ЖУРНАЛ()

Возвращает натуральный логарифм или логарифм к заданному основанию.

Пример — SELECT LOG (3);

SQRT ()

Возвращает квадратный корень.

Пример — SELECT SQRT (16);

MariaDB Строковые функции

Важные строковые функции приведены ниже —

INSTR ()

Возвращает позицию первого экземпляра подстроки.

Пример — SELECT INSTR («рамбутан», «загар»);

ПРАВО()

Возвращает самые правые строковые символы.

Пример — ВЫБРАТЬ ПРАВО («рамбутан», 3);

ДЛИНА ()

Возвращает длину в байтах строки.

Пример — SELECT LENGTH («рамбутан»);

LOCATE ()

Возвращает позицию первого экземпляра подстроки.

Пример — SELECT LOCATE (‘tan’, ‘rambutan’);

ВСТАВИТЬ ()

Возвращает строку с указанной подстрокой в ​​определенной позиции, которая была изменена.

Пример — SELECT INSERT («рампутан», 4, 1, «b»);

ОСТАВИЛ()

Возвращает самые левые символы.

Пример — ВЫБРАТЬ ВЛЕВО («рамбутан», 3);

ВЕРХНИЙ ()

Изменяет символы в верхний регистр.

Пример — SELECT UPPER (фамилия);

НИЖНИЙ ()

Изменяет символы в нижний регистр.

Пример — SELECT LOWER (фамилия);

STRCMP ()

Он сравнивает строки и возвращает 0, когда они равны.

Пример — SELECT STRCMP («яйцо», «сыр»);

REPLACE ()

Возвращает строку после замены символов.

Пример — SELECT REPLACE (‘sully’, ‘l’, ‘n’);

ЗАДНИЙ ХОД()

Он переворачивает символы в строке.

Пример — SELECT REVERSE (‘гоночный автомобиль’);

ПОВТОРЕНИЕ()

Возвращает строку, повторяющую данные символы х раз.

Пример — SELECT REPEAT (‘ха’, 10);

SUBSTRING ()

Возвращает подстроку из строки, начиная с позиции x.

Пример — SELECT SUBSTRING («рамбутан», 3);

ОТДЕЛКА()

Удаляет завершающие / ведущие символы из строки.

Пример — SELECT TRIM (LEADING ‘_’ FROM ‘_rambutan’);