СОВРЕМЕННЫЕ ПРЕДСТАВЛЕНИЯ О ФУНКЦИОНАЛЬНОЙ

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 ) - Возвращает количество полей результата запроса