|
Программирование >> Программный интерфейс приложений
CREATE TABLE seq table (seq INT UNSIGNED NOT NULL) INSERT INTO seq table VALUES(0) Этими операторами создается и инициализируется таблица seqtable. В результате таблица содержит одну строку со значением seq равным 0. Генерирование следующего номера производится следующим образом: UPDATE seq table SET seq = LAST INSERT ID(seq+1) Этот оператор выбирает текущее значение столбца seq и увеличивает его на 1 для генерирования следующего значения последовательности. Генерирование нового значения с помощью функции LAST INSERT ID(seq+1) аналогично генерированию последовательностей механизмом aut0 INCREMENT. Причем этот механизм закрепляется за конкретным клиентом. Этот метод можно также использовать для создания отрицательных приращений или приращений больще 1. Ниже приведены два оператора. Один из них генерирует числовую последовательность с приращением равным 100, второй - с приращением -1: UPDATE seq table SET seq = LAST INSERT ID(seq+lOO) UPDATE seq table SET seq = LAST INSERT ID(seq-1) Этот метод можно развить и задать последовательность, начинающуюся с произвольного значения, задав столбцу seq соответствующее начальное значение. Посмотреть применение метода генерирования для множественных счетчиков можно в разделе Таблица со счетчиком главы 3, Синтаксис и использование языка SQL . Строковые типы столбцов в своем арсенале СУБД MySQL имеет несколько типов символических данных. Они позволяют хранить такие данные. N. Bertram, et al. Pencils (no. 2 lead) 123 Elm St. Monograph Series IX В действительности строки являются общим типом данных в том смысле, что в символических данных можно хранить любые данные. Это могут быть двоичные данные (изображения или звуки); архивный файл, созданный с помощью архивирующей утилиты gzip, и т.д. Необходимо помнить одну особенность строковых типов данных - усечение слищком длинных значений. Однжо в СУБД MySQL существуют самые различные типы строковых данных: от самых коротких до самых длинных. Причем самые вместительные могут хранить до 4 Гбайт информации. Так что с уверенностью можно сказать, что всегда можно подобрать достаточно длинный тип данных, чтобы избежать потери информации Из-за ограничений, накладываемых максимальным размером пакета коммуникационного протокола, эффективный предел размера столбца равен 24 Мбайт. Данные по строковым типам, максимальные размеры и требования к памяти приведены в табл. 2.8. Объем памяти, необходимый для хранения в данных в столбцах переменной длины, варьируется от строки к строке и зависит от длины значений, реально хранимых в этом столбце. Эта длина представлена в таблице буквой L. Байты, приплюсованные к L, - это байты, необходимые для хранения длины значения. СУБД MySQL позволяет хранить символические значения переменной длины. Для этого сохраняется как само значение, так и его длина. Эти дополнительные данные можно обрабатывать как беззнаковые целые. Обратите внимание на связь между максимальной длиной типов переменной длины, количеством дополнительных байт для этого типа и диапазоном беззнакового целого, который использует то же количество байт. Например, значения типа MEDIUMBLOB могут иметь длину до 2 -1 байт и требуют 3 байт для хранения результата. Трехбайтовый целочисленный тип MEDIUMINT имеет максимальное значение до 2 - L И это не просто совпадение. Таблица 2.8. Строковые типы столбцов
Типы столбцов CHAR и VARCHAR Типы CHAR И VARCHAR используются чаще всего. Единственная разница между ними заключается в том, что первый является типом с фиксированной длиной, а второй - с переменной. Все значения типа CHAR (М) занимают по М байт каждое, более короткие значения дополняются пробелами справа. (Во время выборки они отсекаются.) Значения типа VARCHAR (М) занимают столько байт, сколько им необходимо, плюс один байт для хранения длины строки. При сохранении значений хвостовые пробелы отсекаются. В этом заключается отличие от SQL-формата ANSI для значений типа VARCHAR. Тип char будет предпочтительней типа varchar в том случае, если длина значений столбца изменяется незначительно. Причина этого заключается в том, что таблицы со строками фиксированной длины обрабатываются эффективней таблиц со строками переменной длины. Очевидно, что при равных длинах значений тип varchar потребует больше памяти, так как для него требуется дополнительный байт для хранения длины значения. В версиях до 3.23 столбцы типа char и varchar объявл5потся с м в диапазоне от 1 до 255. Начиная с версии 2.23 можно объявлять столбцы типа char (0). Это очень удобно для резервирования места в таблице в случае, если известно, что столбец должен быть, но пока неизвестно, какова должна быть его длина. Позже можно воспользоваться оператором alter table для того, чтобы его расширить. Столбец типа char (о) можно использовать для значений, которые могут принимать два значения ON/OFF, если он будет иметь пустое значение. Этими двумя значениями будут значения null и пустая строка. Этот тип столбца занимает очень мало места - только 1 бит. За небольшим исключением, в одной таблице нельзя смешивать столбцы типа char и varchar. В Зависимости от обстоятельств СУБД MySQL может даже самостоятельно менять типы столбцов. (Это то, что другие базы данных делать не могут.) Вот перечень этих принципов. ш Таблицы со строками фиксированной длины обрабатываются эффективнее, чем таблицы со строками переменной длины. (Причины обсуждаются в разделе Выбор типа столбца .) ш Строки таблицы считаются строками фиксированной длины только в том случае, если все столбцы таблицы имеют фиксированную длину. Если один столбец будет иметь переменную длину, строки таблицы становятся строками переменной длины. Из-за потери преимушества производительности, проявл5ПОщемся при использовании строк фиксированной длины, любой другой столбец фиксированной длины может быть также преобразован в свой эквивалент переменной длины, если это приведет к экономии пространства. Это значит, что если в таблице имеются столбцы типа varchar, в ней нельзя использовать столбцы типа char, так как СУБД MySQL молча преобразует их тип в тип varchar. Предположим, что вы создали следующую таблицу. CREATE TABLE my table Cl CHAR(10) , c2 VARCHAR(10) ) Команда describe my table возвратит следующий результат. +-------+-------------+------+-----+---------+-------+ I Field I Type I Null I Key Default I Extra I I cl I varchar(lO) 1 YES 1 I NULL I c2 I varchar(lO) I YES I I NULL I I +-------+-------------+------+-----+---------+-------+
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |