Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1077

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
750.04 Кб
Скачать

Многие из этих команд будут рассмотрены далее, но сначала следует запомнить два важных положения, касающихся команд MySQL.

1. Команды и ключевые слова MySQL нечувствительны к регистру. Все три команды – CREATE, create и CrEaTe – абсолютно равнозначны. Но для написания более читабельного кода для команд рекомендуется использовать буквы верхнего регистра.

2. Имена таблиц чувствительны к регистру в Linux и Mac OS X, но нечувствительны в Windows. Поэтому из соображений переносимости нужно всегда выбирать буквы одного из регистров и пользоваться только ими. Для имен таблиц рекомендуется использовать буквы нижнего регистра.

Создание базы данных

Для создания новой базы данных следует воспользоваться командой CREATE. Например, создадим базу данных с именем publications:

CREATE DATABASE publications;

При успешном выполнении команды будет выведено со-

общение вида «Query OK, 1 row affected (0.02 sec)».

После создания базы данных с ней можно работать. Для этого следует ввести следующую команду:

USE publications;

Теперь должно быть выведено сообщение об изменении текущей базы данных – Database changed и с ней можно проводить базовые операции – создание таблиц и т.д.

29

Организация доступа пользователей

Для создания пользователя и наделения его правами доступа к базе можно воспользоваться командами CREATE и GRANT, например:

CREATE USER 'mike'@'localhost' IDENTIFIED BY ‘my-

pass’;

GRANT ALL ON publications.* TO ‘mike’@’localhost’;

Кроме имени пользователя указывается еще имя хоста,

например 'mike'@’localhost’.

Данная комбинация команд создает пользователя mike с паролем 'mypass' и предоставляет ему полный доступ к базе данных publications.

Можно объединить две команды в одну:

GRANT ALL ON publications.* TO ‘mike’@’localhost’ IDENTIFIED BY ‘mypass’;

Результат данной операции можно проверить, если выйти из MySQL, и запустить его из командной строки заново указав новые ключи:

Z:\WebServers\usr\local\mysql-5.5\bin\mysql –u mike –p

На экране появится приглашение для ввода пароля (можно сразу указать пароль после ключа –p в командной строке, но это некорректно с точки зрения безопасности). После указания пароля доступ к MySQL будет открыт.

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

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

30

Например, создадим таблицу books для базы данных publications:

CREATE TABLE books ( author VARCHAR(128), title VARCHAR(128), type VARCHAR(16),

year CHAR(4)) ENGINE MyISAM;

Данная команда создает новую таблицу состоящую из 4 полей: ФИО автора (author), название книги (title), тип или жанр книги (type), год издания (year). Также указаны типы и размер создаваемых данных.

В конце команды стоит директива ENGINE MyISAM, которая указывает на тип механизма управления базой данных (например, MyISAM или InnoDB).

Для проверки корректности создания таблицы можно проверить ее существование, выведя на экран ее структуру с помощью команды DESCRIBE:

DESCRIBE books;

На экране появится описание полей таблицы базы данных (рис. 2). Для каждого поля таблицы указана следующая информация:

Field – имя каждого из полей или столбцов таблицы; Type – тип данных, сохраняемых в поле;

Null – показывает, может ли поле содержать значение

NULL;

Key – тип применяемого к полю ключа (если таковой имеется);

Default – исходное значение, присваиваемое полю, если при создании новой строки не указано никакого значения;

Extra – дополнительная информация, например, о настройке поля на автоматическое приращение его значения.

31

Рис. 2. Пример результата работы команды DESCRIBE

Типы данных MySQL

В табл. 6 перечислены основные типы данных MySQL.

Таблица 6

Основные типы данных в MySQL

Тип данных

Количество байт

Особенности

 

(формат)

 

 

 

 

CHAR(n)

В точности равное

Требуется указать

 

n (<=255)

максимальную или

 

 

точную длину стро-

 

 

ки

 

 

 

VARCHAR(n)

Вплоть до n

Требуется указать

 

(<=65535)

максимальную или

 

 

точную длину стро-

 

 

ки

32

 

 

Продолжение табл. 6

 

 

 

BINARY(n) или

В точности равное

Оба типа данных

BYTE(n)

n (<=255)

используются для

VARBINARY(n)

Вплоть до n

хранения строк, за-

 

(<=65535)

полненных байтами,

 

 

не имеющих ника-

 

 

кой связи с таблицей

 

 

символов

TINYTEXT(n)

Вплоть до n

Все типы считаются

 

(<=255)

строкой с набором

TEXT(n)

Вплоть до n

символов

 

(<=65535)

 

MEDIUMTEXT(n)

Вплоть до n

 

 

(<=16 777 215)

 

LONGTEXT(n)

Вплоть до n

 

 

(<=4 294 967 295)

 

TINYBLOB(n)

Вплоть до

Все типы считаются

 

n(<=255)

не набором симво-

BLOB(n)

Вплоть до

лов, а двоичными

 

n(<=65535)

данными. Термин

 

 

BLOB означает

MEDIUMBLOB(n)

Вплоть до n

 

(<=16 777 215)

Binary Large Object –

LONGBLOB(n)

Вплоть до n(<=

большой двоичный

 

4 294 967 295)

объект.

33

 

 

Продолжение табл. 6

 

 

 

TINYINT

1 (-128..127 или

Целые числовые ти-

 

0..255)

пы данных. Для ука-

SMALLINT

2 (-32768..32767

зания знакового или

 

или 0..65535)

беззнакового типа

MEDIUMINT

3 (-

используется спе-

 

8388608..8388607)

цификатор

INT или INTEGER

4 (-2 147 483 648..2

UNSIGNED, напри-

 

147 483 647 или

мер:

 

0..4 294 967 295)

 

BIGINT

8 (-

CREATE TABLE

 

9 223 372 036 854

tablename (fieldname

 

775 808.. 9 223 372

INT UNSIGNED);

 

036 854 775 807

 

 

или 0..184 467

Можно добавить

 

440 737 09 551 615

число, показываю-

 

 

щее отображаемую

 

 

ширину данных в

 

 

поле:

 

 

CREATE TABLE

 

 

tablename (fieldname

 

 

INT(4));

 

 

Если указать специ-

 

 

фикатор ZEROFILL,

 

 

то недостающие по-

 

 

зиции будут запол-

 

 

нены нулями:

 

 

CREATE TABLE

 

 

tablename (fieldname

 

 

INT(4) ZEROFILL);

 

34

 

 

 

Окончание табл. 6

 

 

 

FLOAT

4 (-

Вещественные типы

 

3,402823466E+38

данных. Беззнако-

 

.. 3402823466E+38)

выми не бывают

DOUBLE или

8 (-1,797

 

REAL

693 134 862

 

 

3157E+308.. 1,797

 

 

693 134 862

 

 

3157E+308)

 

DATETIME

‘YYYY-MM-DD

Типы данных даты и

 

HH:MM:SS’

времени.

DATE

‘YYYY-MM-DD’

TIMESTAMP и

TIMESTAMP

‘YYYY-MM-DD

DATETIME отобра-

 

HH:MM:SS’

жаются одинаково,

TIME

‘HH:MM:SS’

но у TIMESTAMP

YEAR

YYYY

уже диапазон лет

 

 

(1970 – 2037).

 

 

TIMESTAMP удо-

 

 

бен тем, что получа-

 

 

ет по умолчанию

 

 

значение текущей

 

 

даты и времени.

 

 

 

Тип данных AUTO_INCREMENT

Для обеспечения уникальности записи в таблице базы данных требуется ключевое поле (или комбинация полей). В случае, если значениях все полей могут повторяться, можно создать отдельное поле – счетчик записей. Для его реализации можно воспользоваться типом данных AUTO_INCREMENT.

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

35

Добавим поле id в таблицу books, которая рассматривалась в предыдущем примере:

ALTER TABLE books ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY;

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

INT UNSIGNED – делает столбец способным принять большое число, достаточное для того, чтобы в таблице могло храниться более 4 миллиардов записей;

NOT NULL – обеспечивает наличие значения в каждой записи столбца (появление пустого значения в данном поле недопустимо);

AUTO_INCREMENT – задает тип данных – счетчик; KEY – поле-счетчик с автоприращением значения будет

использоваться в качестве ключа.

Теперь каждая запись будет иметь уникальное число в поле id, для первой записи это будет число 1, а счет других записей будет вестись по нарастающей.

Для того, чтобы удалить поле id (для рассмотрения следующих операций с таблицами базы MySQL оно временно не нужно) можно воспользоваться командой DROP:

ALTER TABLE books DROP id;

Операции с таблицами базы данных

Для добавления данных к таблице используется команда INSERT. Рассмотрим ее на конкретном примере – добавление нескольких записей в таблицу books:

INSERT INTO books(author, title, type, year)

36

VALUES ('Mark Twain', 'The Adventures of Tom Sawyer','Novel',2005);

INSERT INTO books(author, title, type, year)

VALUES ('Emily Bronte', 'Wuthering Heights', 'Novel',2010);

INSERT INTO books(author, title, type, year)

VALUES ('Stephen King', 'The Shining','Horror novel', 2011);

Для проверки корректности ввода содержимого можно воспользоваться запросом, отображающим содержимое всей таблицы:

SELECT * FROM books;

Результат запроса приведен на рис. 3.

Рис. 3. Просмотр содержимого таблицы books

Теперь рассмотрим составные части команды INSERT. Ее первая часть, INSERT INTO books сообщает MySQL, куда

37

нужно вставлять следующие за ней данные. Затем в круглых скобках перечисляются четыре имени полей: author, title, type и year, - которые отделяются друг от друга запятыми. Таким образом MySQL сообщается, что именно в эти четыре поля будут вставляться данные.

Во второй строке команды INSERT содержится ключевое слово VALUES, за которым следуют четыре строковых значения, взятых в кавычки и отделенных друг от друга запятыми. Они обеспечивают MySQL теми четырьмя значениями, которые будут вставлены в четыре ранее указанных столбца. Каждый элемент данных будет вставлен по порядку в соответствующие столбцы.

Переименование таблиц

Переименование таблиц, как и любые другие изменения ее структуры или метаданных можно осуществить посредством команды ALTER. Поэтому, для того, чтобы изменить имя таблицы books на classics, используется следующая команда:

ALTER TABLE books RENAME classics;

Если требуется вернуть таблице прежнее имя, то можно ввести следующую команду:

ALTER TABLE classics RENAME books;

Изменение типа данных поля

Для изменения типа данных поля также используется команда ALTER, но в этом случае вместе с ней используется ключевое слово MODIFY. Поэтому для изменения данных поля с CHAR(4) на SMALLINT (для которого потребуется только 2 байта памяти, что способствует экономии дискового пространства), нужно ввести следующую команду:

ALTER TABLE books MODIFY year SMALLINT;

38