Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


См.р.№12 Типи даних в СУБД MySQL.



Питання до самоконтролю:

1. Описати особливості кожного числового типу даних.

2. Які властивості числових типів даних?

3. Які властивості даних типу «Дата/ Время».

4. Описати особливості символьних типів даних.

5. Які властивості символьних типів даних?

Типы данных в MySQL

Как вы уже знаете, при создании таблицы нужно указать тип данных для каждого столбца. В MySQL предусмотрено множество типов данных для хранения чисел, даты/времени и символьных строк (текстов). Кроме того, существуют типы данных для хранения пространственных (spatial) объектов, которые в этой книге рассмат­риваться не будут.

Рассмотрим числовые типы данных.                                                     

□ BIT [ (<Количество битов>) ] .

Битовое число, содержащее заданное количество битов. Если количество битов не указано, число состоит из одного бита.

□ TINYINT.

Целое число в диапазоне либо от -128 до 127, либо (если указано свойство UNSIGNED) ОТ О ДО 255.

□ BOOL ИЛИ BOOLEAN .

Являются синонимами к типу данных TINYINT (1) (число в скобках — это ко­личество отображаемых цифр, см. примечание ниже). При этом ненулевое зна­чение рассматривается как истинное (TRUE), нулевое — как ложное (FALSE).

□ SMALLINT.

Целое число в диапазоне либо от -32 768 до 32 767, либо (если указано свойство UNSIGNED) ОТ О ДО 65 535.

□ MEDIUMINT.

Целое число в диапазоне либо от -8 388 608 до 8 388 607, либо (если указано свойство UNSIGNED) от 0 до 16 777 215.

 

□INT ИЛИ INTEGER.

Целое число в диапазоне либо от -2 147 483 648 до 2 147 483 647, либо (если

указано свойство UNSIGNED) от 0 до 4 294 967 295.

□BIGINT.

Целое число в диапазоне либо от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, либо (если указано свойство UNSIGNED) от 0 до 18 446 744 073 70 9 551615.

□SERIAL.

СИНОНИМ выражения BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE (большое целое число без знака, принимающее автоматически увеличиваемые уникальные значения; значения NULL запрещены). Используется для автомати­ческой генерации уникальных значений в столбце первичного ключа. Описание свойств UNSIGNED и AUTO_INCREMENT вы найдете в этом подразделе, а свойств NOT NULL и UNIQUE — в пункте «Свойства столбцов».

ПРИМЕЧАНИЕ

Для всех целочисленных типов данных, кроме BOOL (BOOLEAN) и SERIAL, мож­но в скобках указать количество отображаемых цифр, которое используется совместно с параметром ZEROFILL: если число содержит меньшее количество цифр, то при выводе оно дополняется слева нулями. Например, если столбец таблицы определен как INT(5) ZEROFILL, то значения «1234567» и «12345» отображаются «как есть», а значение «123» — как «00123». Для типа данных BIT в скобках указывается размер числа, то есть максимальное количество хранимых битов.

□ FLOAT.

Число с плавающей точкой в диапазоне от -3,40282346638 до -1,17549435138 и от 1,17549435138 до 3,40282346638 (а также значение 0) с точностью около 7 значащих цифр (точность зависит от возможностей вашего компьютера).

□ DOUBLE, DOUBLE PRECISION ИЛИ REAL.

Число с плавающей точкой в диапазоне от -1,7976931348623157308 до -2,2250738585072014-308 и от 2,2250738585072014-308 до 1,797693134862315738 (а также значение 0) с точностью около 15 значащих цифр (точность зависит от возможностей вашего компьютера).

□ FLOAT(<Точность>) .

При значении точности от 0 до 24 этот тип данных эквивалентен типу FLOAT, при значении от 25 до 53 — типу DOUBLE.

□ DECIMAL, DEC, NUMERIC ИЛИ FIXED.

Точное (неокругляемое) число с фиксированной точкой. Может содержать до 65 значащих цифр и до 30 цифр после десятичного разделителя (по умолча­нию — 10 значащих цифр и 0 после десятичного разделителя).

 

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

□UNSIGNED — данное свойство означает, что в столбце запрещены отрицательные (со знаком «-») значения. Указывать это свойство можно для любых столбцов с числовым типом данных, кроме BIT, BOOL(BOOLEAN) и SERIAL. . Для целочисленных столбцов при добавлении свойства UNSIGNED максимально допустимое значение столбца увеличивается вдвое.

□ZEROFILL — данное свойство означает, что значения при отображении будут дополнены нулями. Целые числа дополняются нулях а слева в соответствии с указанным количеством отображаемых цифр, десятичные — слева и справа в соответствии с указанными точностью и шкалой. Например, если столбец оп­ределен как DOUBLE (10,5) ZEROFILL, то значение «12.23» отображается как «0012.23000». Кроме того, данное свойство запрещает отрицательные значения, как и свойство UNSIGNED. Указывать свойство ZZPOFILL можно для любых столбцов с числовым типом данных, кроме BIT, ВOOL (BOOLEAN) и SERIAL.

□AUTO__INCREMENT — данное свойство обеспечивает автоматическую нумерацию строк таблицы. Это означает, что при добавлении в столбец неопределенного (NULL) или нулевого значения оно автоматически заменяется следующим номером, на единицу больше предыдущего (нумерация по умолчанию начина­ется с единицы, установить другой начальный номер можно с помощью соот­ветствующего свойства таблицы). Указывать это свойство можно для любых столбцов с числовым типом данных, кроме BIT и DECIMAL (DEC, NUMERIC, FIXED). В таблице может быть только один столбец с таким свойством, и для него должен быть создан ключ или индекс (об этом вы узнаете в пункте «Клю­чевые столбцы и индексы»).

Далее рассмотрим типы данных, используемые при хранении даты и времени. Для столбца, который будет содержать дату и/или время, вы можете использо­вать один из следующих типов данных.

□ DATE.

Дата в формате «YYYY-MM-DD», в диапазоне от «0000-01-01» до «9999-12-31».

□ DATETIME.

Дата и время в формате «YYYY-MM-DD HH:MM:SS» в диапазоне от «0000-01-

01 00:00:00» до «9999-12-31 23:59:59».

□ TIMESTAMP.

Отметка времени в формате «YYYY-MM-DD HH:MM:SS» в диапазоне от «1970-01-01 00:00:00» до некоторой даты в 2038 г. При добавлении или изме­нении строки таблицы в столбце с типом TIMESTAMP автоматически устанав­ливается дата и время выполнения операции (если значение этого столбца не указано явно или указано неопределенное значение). Если нужно, чтобы отметка времени проставлялась только при добавлении строки, после слова TIMESTAMP добавим СВОЙСТВО DEFAULT CURRENT_TIMESTAMP. Если в таблице есть несколько столбцов с типом TIMESTAMP, отметка времени автоматически проставляется только в первом из них. Если необходимо также вносить отметку времени в какой-либо из последующих столбцов с типом TIMESTAMP, то при добавлении/изменении строки укажем для этого столбца значение NULL, которое будет автоматически заменено текущей датой.

□ TIME.

Время в формате «HH:MM:SS» в диапазоне от «-838:59:59» до «838:59:59».

□ YEAR, YEAR (2), YEAR (4).

Год в формате «YYYY» или «YY» (если количество цифр не указано, использу­ется формат «YYYY»). Диапазон значений — от 1901 до 2155, если используется формат «YYYY», или от 70 (соответствует 1970 г.) до 69 (соответствует 2069 г.), если используется формат «YY».

Отмечу, что MySQL воспринимает даты не только в указанном выше формате. Вы можете ввести дату с любым знаком препинания в качестве разделителя, напри­мер 2007@12@31 23%59%59, или без разделителя, например 20071231235959. Более того, если в столбец с типом даты или времени вносится символьное или числовое значение в одном из таких форматов, MySQL автоматически преобразует это значение в дату и/или время.

Завершая изучение типов данных, рассмотрим символьные типы.

Столбцам, которые будут содержать текст, можно присвоить один из следующих

типов данных.

□ СНАR(<Количество символов>) или NATIONAL CHAR(<Количество сим­волов>) .

Символьная строка фиксированной длины. В таком столбце всегда хранится указанное количество символов, при необходимости значение дополняется справа пробелами. Вы можете задать количество символов от 0 до 255. Если количество символов не задано, используется длина строки по умолчанию — 1 символ.

 

Тип данных NATIONAL CHAR отличается от CHAR тем, что для столбцов с типом national CHAR используется кодировка UTF-8, в то время как для столбцов с типом CHAR можно указать любую кодировку, поддерживаемую MySQL.

□    VARCHAR(<Максимальное количество символов>) или NATIONAL
VARCHAR(<Максимальное количество символов>).

Символьная строка переменной длины, содержащая не более указанного коли­чества символов. Вы можете указать максимальное количество символов от О до 65 535, но не более 65 535 байтов в сумме для всех столбцов таблицы с типом CHAR, VARCHAR, BINARY или VARBINARY. Таким образом, если во всей таблице вы используете однобайтовую кодировку (где каждому символу соответствует 1 байт, например кодировку KOI8-R, СР-866 или СР-1251), то суммарное коли­чество символов, указанное при описании этих столбцов, не должно превышать 65 535. Если же вы используете кодировку UTF-8 (для которой сервер MySQL выделяет до 3 байтов на символ), то суммарное количество символов, указанное I при описании этих столбцов, не должно превышать 21 844 (в три раза меньше, чем для однобайтовых кодировок).

Тип данных NATIONAL VARCHAR отличается от VARCHAR тем, что для столбцов с типом NATIONAL VARCHAR используется кодировка UTF-8, в то время как для столбцов с типом VARCHAR можно указать любую кодировку, поддерживаемую MySQL.

□ BINARY(<Количество байтов>)

Байтовая (бинарная) строка фиксированной длины. Этот тип аналогичен типу CHAR, только строка содержит не символы, а байты, и значение меньшей длины дополняется справа не пробелами, а нулевыми байтами.

□ VARBINARY(<Максимальное количество байтов>)

Байтовая (бинарная) строка переменной длины. Этот тип аналогичен типу; VARCHAR, только строка содержит не символы, а байты.

□ TINYBLOB

Байтовая (бинарная) строка переменной длины. Максимальная длина — 255 байтов.

□ TINYTEXT

Символьная строка переменной длины. Максимальная длина — 255 байтов (не символов!).

ПРИМЕЧАНИЕ

Обратите внимание, что для типов данных TINYTEXT, TEXT, MEDIUMTEXT или LONGTEXT длина значения ограничена максимальным количеством байтов, а не символов. Для однобайтовых кодировок (таких как KOI8-R, СР-866 или СР-1251) длина значения в байтах и в символах одинакова. Однако для многобайтовых

 

□ BLOB[(<Максимальное количество байтов>)].

Байтовая (бинарная) строка переменной длины. Если количество байтов не ука­зано, то значение столбца ограничено 65 535 байтами. Если количество байтов указано, то создается столбец с типом данных TINYBLOB, BLOB, MEDIUMBLOB или LONGBLOB: выбирается тип данных с наименьшим размером, достаточным для хранения этого количества байтов.

□ TEXT[(<Максимальное количество символов>)] .

Символьная строка переменной длины. Если количество символов не указано, то значение столбца ограничено 65 535 байтами. Если количество символов указано, то создается столбец с типом данных tinytext, text, mediumtext или LONGTEXT: выбирается тип данных с наименьшим размером, достаточным для хранения этого количества символов.

□ MEDIUMBLOB.

Байтовая (бинарная) строка переменной длины. Максимальная длина —

16 777 215 байтов.

□ MEDIUMTEXT.

Символьная строка переменной длины. Максимальная длина — 16 777 215 бай­тов.

□ LONGBLOB.

Байтовая (бинарная) строка переменной длины. Максимальная длина — не бо­лее 4 294 967 295 байтов (4 Гбайт), в зависимости от используемого протокола взаимодействия с сервером MySQL и доступных системных ресурсов.

□ LONGTEXT.

Символьная строка переменной длины. Максимальная длина — не более 4 294 967 295 байтов (4 Гбайт), в зависимости от используемого протокола взаимодействия с сервером MySQL и доступных системных ресурсов.

□ ENUM (' <Значение 1>' , ' <Значение 2>',...).

Строка, содержащая ровно один элемент из заданного списка. Например, если столбец определен как ENUM (' а' , ' b' ), то допустимыми значениями этого столбца являются значения a, b и NULL (а также пустая строка «», которая мо­жет появиться при попытке вставки некорректного значения в данный столбец; о добавлении строк в таблицу и о возможных вариантах обработки некоррект­ных значений пойдет речь в подразделе «Вставка отдельных строк»). В список вы можете включить до 65 535 элементов.

□ SET ('Значение 1>' ,' Значение 2>',...).

Строка, содержащая любой набор элементов из заданного списка (в том числе пустой). Например, если столбец определен как SET (' а', ' b'), то он может содержать значения «» (пустая строка), а, Ь, а, Ь и NULL. В список вы можете включить до 64 элементов. Элементы списка не должны содержать запятых. Каждый из элементов может присутствовать в значении столбца только один раз, причем элементы могут следовать только в том порядке, в котором они перечислены в списке. Например, при вставке значений а, b, а, Ь и b, а они автоматически преобразуются в значение а, Ь.

В заключение отметим, что в MySQL вы можете указать кодировку отдельно для каждого символьного столбца. А именно, для столбцов с типом CHAR, VARCHAR, tinytext, text, mediumtext, longtext, enum и SET вы можете задать свойство CHARACTER SET <Имя кодировки> и/или COLLATE <Имя правила сравнения> (подробнее о кодировках и правилах сравнения символьных значений говорилось в разделе «Создание базы данных»).

Например, чтобы имена клиентов хранились в кодировке СР-1251, тогда как кодировкой по умолчанию для таблицы Customers (Клиенты) является UTF-8, столбец name (имя) можно определить следующим образом:

name VARCHAR(1OO)

 CHARACTER SET cp1251 COLLATE cp1251_general_ci

 

См.р.№13 Команди для роботи з таблицями.

Питання до самоконтролю:

1. Які команди використовують для отримання детальної інформації о конкретній таблиці?

2. Яка застосовується команда для виведення повної інформації про всі параметри таблиці?

3. Яка команда дозволяє вилучити таблицю?

 

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

Describe <Имя таблицы>;

или

show create E TABLE <Имя таблицы>;

 

Эти команды вы можете использовать, чтобы, например, узнать имена и порядок следования столбцов таблицы, проверить правильность изменений, внесенных в структуру таблицы с помощью команды ALTER TABLE и т. п.

Команда DESCRIBE выводит информацию о столбцах таблицы. Например, что­бы получить информацию о столбцах таблицы Customers (Клиенты), выполним команду

DESCRIBE Customers;

ПРИМЕЧАНИЕ

Во всех клиентских приложениях, подключенных к серверу MySQL, в резуль­тате выполнения одной и той же команды отображаются одни и те же данные. Однако окна разных клиентских приложений выглядят по-разному (сравним, например, рис. 2.2 и рис. 2.4). Поэтому здесь и далее мы будем приводить не изображение окна, а только сами данные, выводимые командой.

Результат выполнения этой команды представлен в табл. 2.1.

Таблица 2.1. Результат выполнения команды DESCRIBE Customers:

 

Field Type Null Key Default Extra
id bigint(20) unsigned NO PRI NULL Auto_ increment
name varchar(lOO) YES   NULL  
phone varchar(20) YES   NULL  
address varchar(150) YES   NULL  
rating int(ll) YES   NULL  

для каждого столбца таблицы команда DESCRIBE отображает следующие ха­рактеристики:

□ Field — имя столбца;

□ Туре — тип столбца;

□ Null — указывает, допускает ли столбец неопределенные значения (NULL): YES — допускает, NO — не допускает;

Q Key — показывает вхождение столбца в ключи и индексы:

• PRI — столбец входит в первичный ключ или, если в таблице нет пер­
вичного ключа, в уникальный индекс, не допускающий неопределенных
значений;

• UNI, MUL — столбец является первым столбцом индекса;
Q Default — значение столбца по умолчанию;

□ Extra — дополнительная информация.

Команда SHOW CREATE TABLE выводит полную информацию о всех парамет­рах таблицы в виде текста команды CREATE TABLE, позволяющей создать табли­цу, идентичную данной. Эта команда может не совпадать с командой, с помощью которой была в действительности создана таблица, если, например, таблица была изменена с помощью команды ALTER TABLE или программа MySQL автоматически внесла корректировки в структуру таблицы (например, добавление значения по умолчанию для столбца или присвоение имени индексу). К примеру, команда

SHOW CREATE TABLE Customers;

выводит результат, представленный в табл. 2.2.

Таблица 2.2. Результат выполнения команды SHOW CREATE TABLE Customers;

 

Table Create Table  
Customers CREATE TABLE ‘Customers’ ( "id" bigint(20) unsigned NOT NULL auto_increment,  
  "name" varchar(lOO) default NULL, "phone" varchar(20) default NULL, "address" varchar(150) default NULL, "rating" int(ll) default NULL, PRIMARY KEY ("id"), UNIQUE KEY "id" ("id") ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

Если сравнить данные из табл. 2.2 с «настоящей» командой создания таблицы Customers (см. листинг 2.2), то вы увидите, как изменились определения столбцов.

Просмотреть список таблиц текущей базы данных вы можете с помощью ко­манды

SHOW TABLES;

Если вы выбрали в качестве текущей базу данных SalesDept (Отдел продаж) и создали в ней три таблицы — Customers (Клиенты), Products (Товары) и Orders (Заказы), то команда SHOW TABLES выведет следующий результат (табл. 2.3).

Таблица 2.3. Результат выполнения команды SHOW TABLES:

 

Tables_in_ salesdept
customers  
orders  
products  

Наконец, чтобы удалить ненужную или ошибочно созданную таблицу, выпол­ните команду

DROP TABLE <Имя таблицы>;





ВНИМАНИЕ

Удаление таблицы — очень ответственная операция , поскольку она приводит к удалению всех данных , хранившихся в таблице . Рекомендуется перед уда­лением таблицы создать резервную копию базы данных .

Итак, вы освоили основные операции, выполняемые с таблицами, а именно: команды CREATE TABLE (создание), ALTER TABLE (изменение), DROP TABLE (удаление), SHOW TABLES (просмотр списка таблиц), DESCRIBE и SHOW CREATE TABLE (просмотр информации о таблице). Теперь мы переходим к работе с отдель­ными строками.

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 185; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.061 с.)
Главная | Случайная страница | Обратная связь