Анимация
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

Язык запросов MySQL

Разумеется, весь язык запросов SQL в рамках одной главы описать просто невозможно. О нем сочиняют (и будут сочинять) "объемистые" книги. Однако самые основные команды я в этой главе приведу. Более подробно о них (и о некоторых других инструкциях) будет рассказано в части V книги, где описаны и другие распространенные приемы программирования.

Все без исключения запросы к базе данных посылаются при помощи одной-единственной функции - mysql query() (или mysql(), см. рассуждения выше). Они должны передаваться ей в виде строкового параметра. Этот параметр, впрочем, может быть и многострочным - т. е., содержать символы перевода строки. MySQL допускает включение любого количества пробелов, символов табуляции или перевода строки везде, где разрешено использование одного пробела (в этом смысле он похож на PHP и большинство других языков программирования).

Язык SQL позволяет нам создавать довольно сложные запросы. Ниже перечислены наиболее употребительные команды MySQL.

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

create table ИмяТаблиц: (ИмяПоля тип, ИмяПоля тип, ...)

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

Типы полей

Сейчас я перечислю практически все типы полей, которые могут применяться в MySQL. Их довольно много. Квадратными скобками, по традиции, я буду помечать необязательные элементы.

Целые числа

Существует несколько разных типов целых чисел, различающихся количеством байтов данных, которые отводятся в базе данных для их хранения. Все эти типы рознятся только названиями и (с некоторыми сокращениями) записываются так:

Служит для тех же целей, что и функция mysql query(), только обращение осуществляется не к текущей выбранной базе данных, а к указанной в параметре $dbname. Если вы владеете сразу несколькими базами данных и обращаетесь к ним одновременно, то, возможно, применение этой функции окажется для вас оправданным. Как обычно, параметр $link identifier можно опустить, тогда используется последнее открытое соединение.



Описание

tinyint

Может хранить числа от -128 до +127

smallint

Диапазон от -32 768 до 32 767

mediumint

Диапазон от -8 388 608 до 8 388 607

Диапазон от -2 147 483 648 до 2 147 483 647

bigint

Диапазон от -9 223 372 036 854 775 808 до

9 223 372 036 854 775 807

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

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

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

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

Таблица 26.2. Типы рациональных чисел в MySQL

Тип Описание

float

Число с плавающей точкой небольшой точности

double

Число с плавающей точкой двойной точности

real

Синоним для double

decimal

Дробное число, хранящееся в виде строки

numeric

Синоним для decimal

префиксINT [unsigned]

Необязательный флаг unsigned задает, что будет создано поле для хранения беззнаковых чисел (больших или равных 0). Имена типов, в вобщем виде обозначенные здесь как префиксINT, приводятся в табл. 26.1.

Таблица 26.1. Типы целочисленных данных MySQL.



Описание

TINYTEXT

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

TEXT

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

MEDIUMTEXT

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

LONGTEXT

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

Чаще всего применяется тип text, но если вы не уверены, что данные не будут всегда короче 65 536 байтов, используйте longtext.

( Замечание

Слухи о том, что TEXT-типы занимают намного больше места, чем аналогичные VARCHAR-поля, сильно преувеличены.

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

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

Таблица 26.4. Типы бинарных данных, используемые в MySQL

Строки

Строки представляют собой массивы символов. Обычно при поиске по текстовым полям по запросу select не берется в рассмотрение регистр символов, т. е. строки "вася" и "ВАСЯ" считаются одинаковыми. Кроме того, если база данных настроена на автоматическую перекодировку текста при его помещении и извлечении (см. ниже), эти поля будут храниться в указанной вами кодировке.

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

VARCHAR(length) [BINARY]

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

Таблица 26.3. Строковые типы данных таблиц MySQL



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