База данных представляет собой систему храниения данных, которая включает в себя также и механизм контроля доступа к данным, систему управления этими данными.
Каждая база данных поддерживает один или несколько программных интерфейсов (API) для разных языков программирования. Библиотеки API предназначены для обеспечения доступа ко всем функциям базы, таким как: создание, удаление, модификация баз данных, доступа к данным, поиска и репликации данных и др..
В принципе, для хранения данных могут быть использованы и другие способы. Например: файлы в файловой системе, таблицы в памяти. Но база данных предоставляет несравнимо больше возможностей для выборки и обработки больших массивов данных, скорость обработки и защищённость данных.
В настоящее время для хранения и управления большими массивами информации используются:
реляционные системы управления базами данных (RDBMS Relational Database Management System). Все данные в такой системе хранятся в разных таблицах и отношения между ними устанавливаются с использованием различного типа ключей. Иногда называют SQL - базы данных.
MySQL - популярная система управления базами данных. Практически все языки программирования поддерживают API для работы с MySQL.
Самое популярное сочетание для современных WEB разработок - это язык программирования PHP и MySQL в качестве системы управления базами данных.
MySQL использует стандартные запросы языка SQL (Structured Query Languagequeries) для манипуляций с данными.
PhpMyAdmin - это самый популярный сегодня, бесплатный программный инструмент - графический WEB интерфейс, написанный на PHP, предназначенный для управления бзами данных MySQL через интернет.
PhpMyAdmin поддерживает широкий спектр операций с базами данных MySQL. Часто используемые операции (управление базами данных, таблицы, столбцы, отношения, индексы, пользователи, разрешения и т. Д.) могут выполняться как через пользовательский интерфейс так и через SQL - запросы.
Язык PHP предоставляетрасширения для работы с различными базами данных. В том числе - MySQL.
API предоставляет на выбор три набора инструментов для подключения к серверу баз данных MySQL:
Наиболее часто сегодня используется MySQLi.
Расширение MySQLi, или как его еще называют улучшенное (improved) MySQL расширение, было разработано, чтобы дать возможность программистам в полной мере воспользоваться функционалом MySQL сервера версий 4.1.3 и выше. Расширение mysqli включается в поставку PHP версий 5 и выше.
Объекты данных PHP, или PDO, представляют из себя абстракцию коннектора баз данных для PHP приложений. PDO предоставляет API интерфейс взаимодействия с базой данных, не зависящий от конкретной СУБД. Теоретически, при использовании PDO можно поменять сервер баз данных, например с Firebird на MySQL, и это приведет лишь к незначительным изменениям в PHP коде.
База данных в MySQL - это набор таблиц и связей между ними.
Для управления этой базой данных создаётся пользователь с определённым набором прав на неё. Когда на сервер ставится MySQL, он создаёт единственного пользователя root с максимальными правами. Далее можно управлять пользователями, создавать новых, удалять, менять права. Обычная практика: дл каждой базы данных создаётся свой пользователь.
Для проведения любых операций нужно изначально подключиться к MySQL серверу, используя учётные данные пользователя, имеющего право на проведение этих операций.
Каждое действие с данными проводит SQL запрос (SQL query), который даёт команду серверу.
Предположим, что наш MySQL server установлен на localhost (тот же компьютер, на котором запускается PHP программа, обращающаяся к этому серверу).
Пользователь, имеющий полные права на управление сервером - root, с паролем Test12345.
Создадим базу данных Students вот такой структуры:
ID | Имя | Дата регистрации | Курс |
Для этого:
Используем методы MySQLi. Для создания баз подключаемся к серверу с данными пользователя, имеющего право создавать базы данных (сейчас - root nr как никаких других мы не создавали).
Подключаемся к MySQL серверу из PHP программы,
созданём базу данных Students
Созданём пользователя и даём ему права на базу данных
Создаём таблицу
Тип данных | Объем памяти байт |
Диапазон | Описание |
TINYINT (M) | 1 | от -128 до 127 или от 0 до 255 |
Целое. Может быть объявлено UNSIGNED. Необязательный параметр М - количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.
TINYINT - число в диапазоне от -128 до 127.
TINYINT UNSIGNED - число в диапазоне от 0 до 255.
TINYINT (3) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 002. |
SMALLINT (M) | 2 | от -32768 до 32767 или от 0 до 65535 |
SMALLINT - целое число в диапазоне от -32768 до 32767.
SMALLINT UNSIGNED - целое число в диапазоне от 0 до 65535.
SMALLINT (4) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0002. |
MEDIUMINT (M) | 3 | от -8388608 до 8388608 или от 0 до 16777215 |
MEDIUMINT - целое число в диапазоне от -8388608 до 8388608.
MEDIUMINT UNSIGNED - целое число в диапазоне от 0 до 16777215.
MEDIUMINT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002. |
INT (M) или INTEGER (M) |
4 | от -2147683648 до 2147683648 или от 0 до 4294967295 |
INT - хранит целое число в диапазоне от -2147683648 до 2147683648.
INT UNSIGNED - целое число в диапазоне от 0 до 4294967295.
INT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002. |
BIGINT (M) | 8 | от -263 до 263-1 или от 0 до 264 |
BIGINT - целое число в диапазоне от -263до 263-1.
BIGINT UNSIGNED - целое число в диапазоне от 0 до 264.
BIGINT (7) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0000002. |
BOOL или BOOLEAN | 1 | либо 0, либо 1 | Булево значение. 0 - ложь (false), 1 - истина (true). |
DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D) | M + 2 | зависят от параметров M и D | Используются для величин повышенной точности, например, для денежных данных. M - количество отводимых под число символов (максимальное значение - 64). D - количество знаков после запятой (максимальное значение - 30).
DECIMAL (5,2) - будет хранить числа от -99,99 до 99,99. |
FLOAT (M,D) | 4 | мин. значение +(-) 1.175494351 * 10-39 макс. значение +(-) 3. 402823466 * 1038 |
Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M - количество отводимых под число символов. D - количество символов дробной части.
FLOAT (5,2) - будет хранить числа из 5 символов, 2 из которых будут идти после запятой (например: 46,58). |
DOUBLE (M,D) | 8 | мин. значение +(-) 2.2250738585072015 * 10-308 макс. значение +(-) 1.797693134862315 * 10308 |
DOUBLE - большие дробные числа. |
Тип данных | Объем памяти символов |
Максимальный размер символов |
Описание |
CHAR (M) | M | М | Позволяет хранить строку фиксированной длины М. Значение М - от 0 до 65535.
CHAR (8) - хранит строки из 8 символов и занимает 8 байтов. Например, любое из следующих значений: '', 'Иван','Ирина', 'Сергей' будет занимать по 8 байтов памяти. А при попытке ввести значение 'Александра', оно будет усечено до 'Александ', т.е. до 8 символов. |
VARCHAR (M) | L+1 | М | Позволяет хранить переменные строки длиной L. Значение М - от 0 до 65535.
VARCHAR (3) - хранит строки максимум из 3 символов, но пустая строка '' занимает 1 байт памяти, строка 'a' - 2 байта, строк 'aa' - 3 байта, строка 'aaa' - 4 байта. Значение более 3 символов будет усечено до 3. |
BLOB, TEXT | L+2 | 216-1 | Позволяют хранить большие объемы текста. Причем тип TEXT используется для хранения именно текста, а BLOB - для хранения изображений, звука, электронных документов и т.д. |
MEDIUMBLOB, MEDIUMTEXT | L+3 | 224-1 | Аналогично предыдущему, но с большим размером. |
LONGBLOB, LONGTEXT | L+4 | 232-1 | Аналогично предыдущему, но с большим размером. |
ENUM ('value1', 'value2', ...,'valueN') | 1 или 2 байта | 65535 элементов | Строки этого типа могут принимать только одно из значений указанного множества.
ENUM ('да', 'нет') - в столбце с таким типом может храниться только одно из имеющихся значений. Удобно использовать, если предусмотрено, что в столбце должен храниться ответ на вопрос. |
SET ('value1', 'value2', ...,'valueN') | до 8 байт | 64 элемента | Строки этого типа могут принимать любой или все элементы из значений указанного множества.
SET ('первый', 'второй') - в столбце с таким типом может храниться одно из перечисленных значений, оба сразу или значение может отсутствовать вовсе. |
Тип данных | Объем памяти байт |
Диапазон | Описание |
DATE | 3 | от '1000-01-01' до '9999-12-31' | Предназначен для хранения даты. В качестве первого значения указывается год в формате "YYYY", через дефис - месяц в формате "ММ", а затем день в формате "DD". В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры. |
TIME | 3 | от '-838:59:59' до '838:59:59' | Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате - hh:mm:ss, где hh - часы, mm - минуты, ss - секунды. В качестве разделителя может выступать любой символ отличный от цифры. |
DATATIME | 8 | от '1000-01-01 00:00:00' до '9999-12-31 23:59:59' | Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры. |
TIMESTAMP | 4 | от '1970-01-01 00:00:00' до '2037-12-31 23:59:59' | Предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года (начало эпохи UNIX). |
YEAR (M) | 1 | от 1970 до 2069 для М=2 и от 1901 до 2155 для М=4 | Предназначен для хранения года. М - задает формат года. Например, YEAR (2) - 70, а YEAR (4) - 1970. Если параметр М не указан, то по умолчанию считается, что он равен 4. |
NOT NULL (значение не может отсутствовать) для полей логин и пароль,
NULL (значение может отсутствовать) для полей дата рождения и пол.
По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.
Пример:
create table users (login varchar(20), password varchar(15), sex enum('man', 'woman') NULL, date_birth date NULL);
Таким образом создаем таблицу с 4 столбцами:
логин (не более 20 символов) обязательное,
пароль (не более 15 символов) обязательное,
пол (мужской или женский) не обязательное,
дата рождения (тип дата) необязательное.