Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

Тип Описание

tinyblob Может хранить максимум 255 символов

blob Может хранить не более 65 535 символов

mediumblob Может хранить максимум 16 777 215 символов

longblob Может хранить 4 294 967 295 символов

blob-данные не перекодируются автоматически, если при работе с установленным соединением включена возможность перекодирования текста "на лету" (см. ниже).

Дата и время

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

Таблица 26.5. Представление дат и времени в базах данных MySQL

Тип Описание

date

Дата в формате ГГГГ-ММ-ДД

time

Время в формате ЧЧ:мм:сс

datetime

Дата и время в формате гггг-мм-дд ЧЧ:ММ:СС

timestamp

Время и дата в формате timestamp. Однако при получе-

нии значения поля оно отображается не в формате time-

stamp, а в виде ггггммддччммсс, что сильно умаляет

преимущества его использования в PHP

Надо заметить, что в PHP будет проще самостоятельно генерировать дату и время при вставке данных в таблицу, а не задействовать встроенные в MySQL типы. Например, привлекательный с виду тип timestamp на деле оказывается довольно неудобным, потому что отображается не в том виде, который мы ожидаем.

Перечисления и множества

MySQL поддерживает еще несколько специфических типов данных, использовать которые в PHP вряд ли целесообразно. Например, тип перечисления задает, что значение соответствующего поля может быть не любой строкой или числом, а только одним из нескольких указанных при создании таблицы значений: value1, value2 и т. д. Вот как выглядит имя типа перечисления:

ENUM(value1,value2,value3,...)

В отличие от всех остальных типов, множества означают, что в соответствующем поле может содержаться не одно, а сразу несколько значений (value1, value2 и т.



( Замечание

Значений в множестве может быть не сколько угодно, а не более 64 штук. Иногда это сильно мешает при программировании.

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

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

Таблица 26.6. Основные модификаторы MySQL

Модификатор Описание

not null Означает, что поле не может содержать неопределенное зна-

чение - в частности, поле обязательно должно быть инициализировано при вставке новой записи в таблицу (если не задано значение по умолчанию)

primary key Отражает, что поле является первичным ключом, т. е. идентификатором записи, на которой можно ссылаться

auto increment При вставке новой записи поле получит уникальное значение, так что в таблице никогда не будут существовать два поля с одинаковыми номерами. (Мы поговорим об этом чуть позже.)

Default Задает значение по умолчанию для поля, которое будет ис-

пользовано, если при вставке записи поле не было проини-циализировано явно

Удаление таблицы

drop table ИмяТаблицы

Удаляет таблицу ИмяТаблицы. Таблица не обязательно должна быть пустой, так что будьте внимательны, чтобы случайно не "аннулировать" нужную таблицу с данными.

Вставка записи

insert into ИмяТаблицы: (ИмяПоля1 ИмяПоля2 ...) values(зн1,зн2,...)

Добавляет в таблицу ИмяТаблицы запись, у которой поля, обозначенные как ИмяПоляN, установлены в значения, соответственно, знN. Те поля, которые в этой команде не перечислены, получают "неопределенные" значения (неопределенное зна-

д., т. е. - множество значений). Формат задания данных такого типа имеет следующий вид:

SET(value1,value2,value3,...)



чение - это не пустая строка, а просто признак, который говорит MySQL, что у данного поля нет никакого значения). Впрочем, если для не указанного здесь поля при создании таблицы был задан not null, то данная команда закончится неуспешно. Значения полей можно заключать и в обычные кавычки, но, по-моему, апострофы тут использовать удобнее. При вставке в таблицу бинарных данных (или текстовых, содержащих апострофы и слэши) некоторые символы должны быть "защищены" обратными слэшами, а именно, символы \, и символ с нулевым кодом.

Удаление записей

delete from ИмяТаблиц: where В1ражение

Удаляет из таблице! ИмяТаблицы все записи, для котор1х вхполнено В1ражение. Параметр Выражение - это просто логическое вхражение, составленное почти что по правилам PHP. Вот показательный пример:

(id<10) and (name regexp a*b) and (age=25)

В выражении, помимо имен полей, констант и операторов, могут также встречаться простейшие "вгчисляемые" части, например: (id<10+11*234).

Вообще говоря, формат выражения един для всех команд запросов, которые мы встретим в дальнейшем. Например, он же используется и в операции select, и в операции update.

Поиск записей

select * from Таблица where В1ражение [order by ИмяПоля [desc]]

Эта команда - основная и очень мощная. Предназначена она для того, чтобы искать все записи, удовлетворяющие выражению Выражение. Ее возможности гораздо более богаты, чем то сжатое изложение, которое я вам предлагаю, и о них можно прочитать в книгах, посвященных SQL. Если записей несколько, то при указанном предложении order by они будут отсортированы по тому полю, имя которого записывается правее этого ключевого слова (если задан описатель desc, то упорядочивание происходит в обратном порядке). В предложении order by могут также задаваться несколько полей.

Особое значение имеет символ * . Он предписывает, что из отобранных записей следует извлечь все поля, когда будет выполнена команда получения выборки. С другой стороны, вместо звездочки можно через запятую непосредственно перечислить имена полей, которые требуют извлечения. Но чаще всего все же используется именно * .

Обновление записей

update Таблица set(ИмяПоля1=зн1, ИмяПоля1=зн2, ...) where В1ражение



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189