создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Таблица и ее создание в базе данных MySQL

Для этого используем ранее рассмотренную функцию подключения к базе данных.

db_connect($serverMySql,$db_log,$db_pass);

mysql_select_db($database);

mysql_query("CREATE TABLE ИмяТаблицы(ИмяПоля тип,ИмяПоля тип)") or die(mysql_error());

Этой командой в базе данных создается новая таблица с колонками (полями), определяемыми своими именами (ИмяПоля) и указанными типами.

Типы полей

ТипОписание
TINYINTМожет хранить числа от –128 до +127
SMALLINTДиапазон от –32768 до 32767
MEDIUMINTДиапазон от –8388608 до 8388607
INTДиапазон от –2147483648 до 2147483647
BIGINTДиапазон от –9223372036854775808 до 922337203685477580

Дробные числа

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

В общем виде они записываются так:

ИмяТипа[(length,decimals)][UNSIGNED]

Здесь length - количество знакомест (ширина поля), в которых будет размещено дробное число при его передаче в PHP, а decimals - количество знаков после десятичной точки, которые будут учитываться. Как обычно, UNSIGNED задает беззнаковые числа. Строка ИмяТипа замещается на предопределенные значения, соответствующие возможным вариантам представления вещественных чисел

ТипОписание
FLOATЧисло с плавающей точкой небольшой точности
DOUBLEЧисло с плавающей точкой двойной точности
REALСиноним для DOUBLE
DECIMALДробное число, хранящееся в виде строки
NUMERICСиноним для DECIMAL

Строки

Для начала давайте ознакомимся с типом строки, которая может хранить не более length символов, где length принадлежит диапазону от 1 до 255.

VARCHAR(length)[BINARY]

При занесении некоторого значения в поле такого типа из него автоматически вырезаются концевые пробелы (как будто по вызову функции rtrim()). Если указан флаг BINARY, то при запросе SELECT строка будет сравниваться с учетом регистра. Тип VARCHAR неудобен тем, что может хранить не более 255 символов. Рассмотрим другие, более удобные типы

ТипОписание
TINYTEXTМожет хранить максимум 255 символов
TEXTМожет хранить не более 65535 символов
MEDIUMTEXTМожет хранить максимум 16777215 символов
LONGTEXTМожет хранить 4294967295 символов

Бинарные данные

Бинарные данные - это почти то же самое, что и данные в формате TEXT, но только при поиске в них учитывается регистр символов ("abc" и "ABC" - разные строки). Вего имеется 4 типа бинарных данных

ТипОписание
TINYBLOBМожет хранить максимум 255 символов
BLOBМожет хранить не более 65535 символов
MEDIUMBLOBМожет хранить максимум 16777215 символов
LONGBLOBМожет хранить 4294967295 символов

strong и время

MySQL поддерживает несколько типов полей, специально приспособленных для хранения дат и времени в различных форматах

ТипОписание
DATEДата в формате ГГГГ-ММ-ДД
TIMEВремя в формате ЧЧ:ММ:СС
DATETIMEДата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
TIMESTAMPВремя и дата в формате timestamp. Однако при получении значения поля оно отображается не в формате timestamp, а в виде ГГГГММДДЧЧММСС, что сильно умаляет преимущества его использования в PHP

Модификаторы и флаги типов

К типу можно также присоединять модификаторы, которые задают его "поведение" и те операции, которые можно (или, наоборот, запрещено) выполнять с соответствующими столбцами

МодификаторОписание
not nullОзначает, что поле не может содержать неопределенное значение - в частности, поле обязательно должно быть инициализировано при вставке новой записи в таблицу (если не задано значение по умолчанию)
primary keyОтражает, что поле является первичным ключом, т.е. идентификатором записи, на который можно ссылаться
auto_incrementПри вставке новой записи поле получит уникальное значение, так что в таблице никогда не будут существовать 2 поля с одинаковыми номерами
DefaultЗадает значение по умолчанию для поля, которое будет использовано, если при вставке записи поле не было проинициализировано явно

Для чего нужен auto_increment?

Все просто. В таблице обычно содержится очень много записей. При этом некоторые записи совпадают. Чтобы придать каждой записи уникальность нам нужен некий идентификатор (id). Как его сделать?

Как раз для решения этой проблемы и предназначена в MySQL возможность под названием AUTO_INCREMENT. А именно, при создании таблицы мы можем какое-нибудь ее поле (в нашем случае как раз id) объявить так:

ИмяПоля int auto_increment primary key

Немного длинновато, но это стоит того! Теперь любая операция INSERT автоматически проставит у добавленной записи поле ИмяПоля так, чтобы оно было уникально во всей таблице - MySQL это гарантирует. В простейшем случае - просто увеличит на 1 некий внутренний счетчик, глобальный для всей таблицы, и занесет его новое значение в нужное поле записи. Причем гарантируется, что никакие проблемы с совместным доступом к таблице просто не могут возникнуть, как это произошло бы, используй мы "кустарные" способы.

Получить только что вставленный идентификатор можно при помощи функции

mysql_insert_id();

Итак, создаем таблицу в MySQL

db_connect($serverMySql,$db_log,$db_pass);

mysql_select_db($database);

mysql_query("CREATE TABLE users(id int auto_increment primary key,

email TINYTEXT,

password VARCHAR(16),

name TINYTEXT,

daybirth VARCHAR(2),

monthbirth VARCHAR(40),

yearbirth VARCHAR (4))") or die(mysql_error());

mysql_close();

print"Таблица создана!";

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting