Урок 12. Типы данных MySQL. Создание таблицы. Вставка данных
Прислано AMD на Сентябрь 30 2011 04:40:23

Типы полей в MySQL



TINYINT[(M)][UNSIGNED][ZEROFILL]
Наименьший целочисленный тип. Диапазон значений - -128..127
(в случае INSIGNED - 0..255)

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Малый целый тип. Диапазон значений - -32768..32767 и соответственно
0..65535 для беззнакового целого.

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Средний целый тип. Значения могут быть от -8388608 до 8388607 и
от 0 до 16777215 при указании UNSIGNED.

INT[(M)] [UNSIGNED] [ZEROFILL] (INTEGER[(M)] [UNSIGNED] [ZEROFILL])
Обычный целый тип. Значения - -2147483648..2147483647 и 0..4294967295
для беззнакового целого.

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Большой целочисленный тип. Значения лежат в пределах
от -9223372036854775808 до 9223372036854775807 и от 0
до 18446744073709551615 для UNSIGNED. Впрочем, примите к сведению, что
все арифметический действия производятся при помощи BIGINT со знаком,
поэтому не следует пользоваться значениями, большими, чем 9223372036854775807.



Типы чисел с плавающей точкой

FLOAT(разрядность) [ZEROFILL]
Число с плавающей точкой. Не может быть объявлено беззнаковым.
Разрядность может быть <= 24 (чисел с низкой разрядностью) или
от 25 до 53 (для чисел с двойной разрядностью). Аналогами этих двоих
типов являются описанные ниже типа FLOAT и DOUBLE

FLOAT[(M,D)] [ZEROFILL]
Малое число с плавающей точкой. Разрядность не указывается - для этого
типа она считается <= 24. Значения этого типа лежат в границах
от -3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до
3.402823466E+38.

DOUBLE[(M,D)] [ZEROFILL]
Простое число с плавающей точкой (с двойной размерностью). Значения -
от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0 и
от 2.2250738585072014E-308 до 1.7976931348623157E+308 Синонимами к
DOUBLE являются REAL и DOUBLE PRECISION

DECIMAL[(M[,D])] [ZEROFILL]
Unpacked число с плавающей точкой. Unpacked означает то, что значение
хранится в строке, по символу на каждый разряд числа, точку и знак.
Диапазон значений этого типа такой же, как и у DOUBLE.
Синоним к DECIMAL - NUMERIC.



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

DATE
Тип для хранения даты. Допустимые значения - от '1000-01-01' до
'9999-12-31'. Дата хранится в виде YYYY-MM-DD.

DATETIME
Комбинация даты и времени. Допустимые значения - от
'1000-01-01 00:00:00' до '9999-12-31 23:59:59'. Данные зранятся в виде
'YYYY-MM-DD HH:MM:SS'.

TIMESTAMP[(M)]
Еще одна дата. Значения лежат в диапазоне от
'1970-01-01 00:00:00' до некоторого времени в 2037-году. В зависимости
от значения параметра M формат хранения данных может быть

YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD
(значения 14, 12, 8 или 6). По умолчанию в поля такого типа значения
заносятся с текщими датой и временем.

TIME
Время. Значения могут лежать в границах '-838:59:59'..'838:59:59'
и представляются в формате 'HH:MM:SS'.
YEAR[(2 или 4)] Хранит год. В зависимости от значения указанного в
скобках (по умолчанию - 4), год хранится в виде YYYY или YY.



Строковые типы

[NATIONAL] CHAR(M) [BINARY]
Строка, всегда имеющая длину M (в случае, когда занесенное значение
короче, оно дополняется пробелами). M может лежать в пределах от 1 до
255. Приставка NATIONAL указывет на необходимость использования кодовой
таблицы, используемой по умолчанию.

[NATIONAL] VARCHAR(M) [BINARY]
Аналогично посленему, за исключением того, что длина значения может
быть произвольной (от 1 до 255 :), а все пробелы в конце строки
удалаются.

TINYBLOB (TINYTEXT)
Тип BLOB или TEXT, длиной от 1 до 255 символов.

BLOB (TEXT)
Тип BLOB или TEXT, длиной от 1 до 65535 символов.

MEDIUMBLOB (MEDIUMTEXT)
Тип BLOB или TEXT, длиной от 1 до 16777215 символов.

LONGBLOB (LONGTEXT)
Тип BLOB или TEXT, длиной от 1 до 4294967295 символов.


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


Для соединения с базой MySQl используется следующая схема



$sql_host = "localhost";
$sql_user = "user";
$sql_pass = "password";
$sql_db = "baza";


$link = mysql_connect($sql_host, $sql_user, $sql_pass)or die("Связи нет\n");
mysql_select_db($sql_db)or die("Нету связи никакой - лучше связи ....\n");


хост на котором расположена база - $sql_host
юзер которым к базе конектимся - $sql_user
пароль юзера - $sql_pass
база к которой конектимся (их может быть несколько, потому выбираем одну) - $sql_db


соединемся с MySQL если связаться не удается то выводится строка указаная в die и выполнение скрипта останавливается
die можно и не указывать $link = mysql_connect($sql_host, $sql_user, $sql_pass)or die("Связи нет\n");
выбираем и соединяемся с указанной базой - mysql_select_db($sql_db)or die("Нету связи никакой - лучше связи ....\n");


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



Создадим таблицу GMENU (у меня она хранит заголовки блоков меню)

Выполните у себя в phpMyAdmin (этот комплекс есть в DENWER или у вашего провайдера есть что то подобное)
следующий запрос

CREATE TABLE IF NOT EXISTS `gmenu` (
`id` smallint(3) NOT NULL auto_increment,
`name` text NOT NULL,
`mod` varchar(20) NOT NULL default '',
`por` smallint(6) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `por` (`por`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;



Этот запрос создает таблицу gmenu, если она не существует

если вы уверены что она несуществует то достаточно выполнить запрос

CREATE TABLE `gmenu` (
`id` smallint(3) NOT NULL auto_increment,
`name` text NOT NULL,
`mod` varchar(20) NOT NULL default '',
`por` smallint(6) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `por` (`por`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

В запросе мы задаем имена полей, их типы и размеры. так же указываем кодировку (но это не обязательно)
`id` smallint(3) мы создаем поле ID типа smallint и размером 3 символа
NOT NULL - значит значение должно быть обязательно. (если значение отсутствует, то значит она равно NULL)
auto_increment - значит что значение присваимается автоматом. каждая запись приобретает значение равное максимальному значению + 1

PRIMARY KEY (`id`) - устанавливаем первичный индекс на это поле (индексы позволяют делать быструю сортировку по значениям это поля)
Первичный ключ представляет собой один из примеров уникальных индексов и применяется для уникальной идентификации записей таблицы. Никакие из двух записей таблицы не могут иметь одинаковых значений первичного ключа. Первичный ключ обычно сокращенно обозначают как PK. Как мы уже говорили, в реляционных базах данных практически всегда разные таблицы логически связаны друг с другом. Первичные ключи как раз используются для однозначной организации такой связи.
Т.е. мы получаем у каждой записи уникальный индификатор. (помните как мы для этого использовали время?)
KEY `por` (`por`) - тоже индекс но первичный. мы его будем использовать для сортировки.


id - индефикатор записи
name - название блока
mod - ссылка, если ее указать то заколовок становится ссылкой, если не указывать, то получаем просто заголовок.
por - порядок


Ставка записи в таблицу




INSERT INTO `gmenu` (`id`, `name`, `mod`, `por`) VALUES
('', 'Статистика', '', 3),
('', 'Опросы', '', 2),
('', 'Навигация', '', 1);


Выполняем этот запрос и наполняем таблицу данными.


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


+++