СОВРЕМЕННЫЕ ПРЕДСТАВЛЕНИЯ О ФУНКЦИОНАЛЬНОЙ
MySQL
MySQL - это популярная система управления базами данных (СУБД), очень часто применяемая в сочетании с PHP.
MySQL - это система управления реляционными базами данных. В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц.
Схема "Клиент-сервер"
трехуровневая структура: базы данных — таблицы — записи.
Тип поля может быть:
- Целым;
- Вещественным;
- Строковым;
- Бинарным;
- Дата и время;
- Перечисления и множества.
Возможные типы данных, диапазоны и описания представлены в последующих таблицах:
Целочисленные типы данных
Тип Диапазон
TINYINT -128...+127
SMALLINT -32768...+32767
MEDIUMINT -8 388 608...+8 388 607
INT -2 147 483 648...+2 147 483 647
BIGINT -9 223 372 036 854 775 808...+9 223 372 036 854 775 807
Вещественные числа
Тип Описание
FLOAT Небольшая точность
DOUBLE Двойная точность
REAL То же, что и DOUBLE
DECIMAL Дробное число, хранящееся в виде строки
NUMERIC То же, что и DECIMAL
Строки
Любая строка - это массив символов. При поиске с помощью оператора SELECT (мы рассмотрим его далее) не учитывается регистр символов: строки "HELLO" и "Hello" считаются одинаковыми. Можно настроить MySQL на автоматическое перекодирование символов - в этом случае в базе данных строки будут храниться в одной кодировке, а выводиться - в другой. В большинстве случаев применяется тип VARCHAR или просто CHAR, позволяющий хранить строки, содержащие до 255 символов. В скобках после типа указывается длина строки:
VARCHAR(48); CHAR(73);
Тип Описание
TINYTEXT Максимальная длина 255 символов
TEXT Максимальная длина 65535 символов (64 Кб)
MEDIUMTEXT Максимальная длина 16 777 215 символов
LONGTEXT Максимальная длина 4 294 967 295 символов
Бинарные типы данных
Бинарные типы данных также можно использовать для хранения текста, но при поиске будет учитываться регистр символов. К тому же, любой текстовый тип можно преобразовать в бинарный, указав модификатор BINARY:
VARCHAR(30) BINARY;
Тип Описание
TINYBLOB Максимум 255 символов
BLOB Максимум 65535 символов
MEDIUMBLOB Максимум 16 777 215 символов
LONGBLOB Максимум 4 294 967 295
Примечание: Бинарные данные не перекодируются "на лету", если установлена перекодировка символов.
Дата и время
Тип Описание
DATE Дата в формате ГГГ-ММ-ДД
TIME Время в формате ЧЧ:ММ:СС
TIMESTAMP Дата и время в формате timestamp, ГГГГММДДЧЧММСС
DATETIME Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
CREATE TABLE Имя_таблицы (
Имя_поля1 Тип Модификатор
...
Имя_поляN Тип Модификатор
)
Модификаторы:
NOT NULL
PRIMARY KEY
AUTO_INCREMENT
DEFAULT
INSERT INTO Имя_таблицы [(Список полей)] VALUES (Список констант);
Если список полей не задан, то берутся все поля в том порядке, как они указаны при создании таблицы
UPDATE Имя_таблицы SET Поле1 = Значение1, ... , ПолеN = ЗначениеN
[WHERE Условие];
DELETE FROM Имя_таблицы WHERE Условие;
SELECT [DISTINCT|ALL] {*| [поле1 AS псевдоним] [,..., полеN AS псевдоним]}
FROM Имя_таблицы1 [,..., Имя_таблицыN]
[WHERE условие]
[GROUP BY список_полей] [HAVING условие]
[ORDER BY список_полей порядок_сортировки]
дистинкт - без повторов
Будем рассматривать оригинальное АПИ. Сейчас рекомендуется к использованию усовершенствованная версия, mysqli. Реализайция - одноименный класс, функции для работы с БД объявлены как его методы. Для большинства доступны псевдонимы с аналогичными именами (как оригинальные функции), но mysqli_
resource mysql_connect ([string $hostname] [, string $user] [, sting $password]); - создает соединение
bool mysql_select_db ( string database_name [, resource link_identifier] ); - выбор БД. Тут и далее, если не указан ид подключение, используется последнее открытое
int mysql_errno ( [resource link_identifier] ) - код последней выполненной функции работы с БД. 0 если успешно
string mysql_error ( [resource link_identifier] ) - текст сообщения об ошибке ---//---
resource mysql_query ( string query [, resource link_identifier] ) - выполнение запроса. Строка запроса НЕ должна заканчиваться точкой с запятой. Для запросов не возвращающих данных возвращается тру или фолс.
bool mysql_close ([ resource $link_identifier = NULL ] ) - закрытие соединения
Функции для обработки результатов запроса:
mixed mysql_result ( resource result, int row [, mixed field] ) - возвращает значение 1 ячейки результата запроса. неэффективно. Аргументом поля может быть смещение,
имя поля, или имя поля и имя таблицы через точку (tablename.fieldname).
array mysql_fetch_array ( resource result [, int result_type] ) - Возвращает ассоциативный массив с обработанным рядом результата запроса, или FALSE, если рядов больше нет. result_type - тип индексирования в массиве: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH (по-умолчанию)
<?php
mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
printf ("ID: %s Name: %s", $row['id'], $row['name']);
}
mysql_free_result($result);
?>
array mysql_fetch_row ( resource result ) - аналог, но возвращает неассоциативный массив (MYSQL_NUM). индекс начинается с 0
array mysql_fetch_assoc ( resource result ) - еще 1 аналог, но с ассоциативным массивом (MYSQL_ASSOC)
object mysql_fetch_object ( resource result ) - преобразует в объект
int mysql_num_rows ( resource result ) - Возвращает количество рядов результата запроса
int mysql_num_fields ( resource result ) - Возвращает количество полей результата запроса