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

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

Ваш сервер бесполезен, пока нет баз данных, которые он обслуживает. Можно создавать новые базы данных:

create DATABASENAME

Поскольку в MySQL база данных - это каталог с группой файлов, команда create создает новый каталог, который будет содержать файлы базы данных. Например, если вы создали базу данных с именем «mydata», в каталоге data, содержащемся в директории, в которую установлена MySQL, будет создан каталог mydata.

П оскольку базы данных и таблицы MySQL хранятся как файлы файловой системы, вы столкнетесь с неприятными различиями -в поведении реализаций для Unix и Win32. Именно, все файловые системы для Win32 нечувствительны к регистру, в то время как файловые системы Unix различают регистр. В результате имена баз данных и таблиц различаются по регистру в Unix и не различаются в Win32.

Удаление базы данных

В процессе разработки приложения вам, вероятно, потребуется создать несколько баз данных для поддержки процесса разработки. Например, обычной практикой в разработке приложений баз данных является создание отдельных баз данных для разработки, тестирования и работы. По завершении разработки следует избавиться от этих промежуточных баз данных. Удалить базу данных можно с помощью параметра «drop»:

drop DATABASENAME

Как и в команде create, DATABASENAME является именем базы данных, которую нужно уничтожить. MySQL не позволит вам случайно удалить базу данных. После ввода этой команды она предупредит вас, что удаление базы данных потенциально очень опасно и попросит вас подтвердить свое намерение. После удаления базы данных вы можете убедиться в том, что в каталоге data больше нет каталога, служившего ранее этой базой данных.

Переименование и копирование баз данных

В MySQL нет утилиты для переименования и копирования баз данных. Поскольку база данных - это просто файлы в некотором каталоге, можно, соблюдая осторожность, переименовывать и копировать базы данных с помощью операционной системы. Хотя использование команд операционной системы позволяет переименовывать и копировать базы данных, результат не сохранит параметров защиты исходных таблиц, поскольку MySQL хранит данные по защите в таблице системной базы данных. Для того чтобы полностью скопировать базу данных, вам потребуется также продублировать ее информацию по защите, хранимую в системной базе данных MySQL

Состояние сервера

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

Последняя строка выглядит следующим образом:

Uptime: 395 Threads: 1 Questions: 14 Slow queries: 0

Opens: 10 Flush tables: 1 Open tables: 6

Выводимые величины означают следующее:

Uptime

Число секунд, в течение которых сервер запущен и работает.

Threads

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

Questions

Число запросов, переданных базе данных с момента запуска.

Slow queries

Число запросов, выполнение которых потребовало больше времени, чем время, указанное в конфигурации.

Opens

Число таблиц, открытых с момента запуска сервера.

Flush tables

Количество команд flush, refresh и reload.

Open tables

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

Завершение работы сервера

Следующая команда производит корректное завершение работы сервера MySQL:

shutdown

Эта команда - самый правильный способ завершения работы сервера. Если вы запустили MySQL с помощью safe_mysqld и пытаетесь закрыть сервер каким-либо другим способом, safe_mysqld просто запустит еще один экземпляр сервера. Можно также безопасно закрыть сервер традиционной Unix-командой kill

CREATE

CREATE DATABASE dbname

CREATE TABLE name ( field_name field__type, ... )

Создает новые элементы базы данных (или полностью новую базу). Предложение используется для создания баз данных, таблиц и функций, определяемых пользователем (UDFs).

CREATE DATABASE создает полностью пустую базу данных. Вы должны иметь права администратора MySQL (обычно root или mysql) для выполнения этой команды.

CREATE TABLE определяет структуру таблицы в базе данных. Этим оператором создаются все таблицы MySQL. Предложение состоит из имени таблицы, за которым идет любое количество определений полей. Синтаксис определения полей включает в себя имя поля, за ним его тип, за ним любой модификатор (например: name char(30) not null ).

В дополнение к основным типам могут использоваться некоторые модификаторы.

decimal

Максимальное количество цифр справа от запятой в числе с плавающей запятой. Любое значение с более длинной дробной частью будет округлено. Например, для поля price FLOAT(5,2) значение 4.34 будет показано как 4.34, значение 234.27 будет показано как 234.3 (для соответствия общей максимальной длине), значение 3.331 будет выглядеть как 3.33 (для соответствия максимальной длине дробной части).

length

Количество символов для числовых значений, показываемое пользователю. Включает десятичные запятые, знаки и индикаторы экспонент. Например, поле peanuts INT(4) имеет допустимый диапазон от -999 до 9999. MySQL сохранит значение, выходящие за пределы заданного диапазона, пока оно не выйдет за пределы максимального размера для своего типа. Если вы сохраните значение вне заданного диапазона, MySQL выдаст предупреждение, но будет функционировать нормально.

При использовании с типом TIMESTAMP модификатор length определяет формат, используемый для timestamp.

При использовании с символьными (текстовыми) типами length определяет количество символов. Для символьных типов с фиксированной длиной length это точное число символов, используемое для хранения данных. Для текстовых типов с переменной длиной length это максимально возможная длина строки.

Атрибут length является необязательным для всех типов, кроме DECIMAL/NUMERIC , CHAR и VARCHAR .

П оскольку тип DECIMAL/NUMERIC хранится как символьная строка, он ограничен максимальной длиной точно так же, как и поле CHAR. Поэтому ввод чисел больше указанного диапазона вызовет такую же ошибку, что и при вводе слишком длинной строки в поле CHAR.

precision

Этот атрибут доступен для типа FLOAT в целях совместимости с системой ODBC. Значение этого атрибута, равное 4, указывает на обычное вещественное число (то же, что и FLOAT без атрибута точности), а значение 8 определяет число с плавающей запятой двойной точности (то же, что поле DOUBLE).

AUTO_INCREMENT

Атрибут позволяет автоматически обновлять числовое поле. Это удобно для создания уникальных идентификаторов для записей в таблице. Данные могут быть записаны и прочитаны из такого поля, как из обычного, но при вводе значения NULL или 0 существующее значение автоматически увеличивается на единицу. Текущее значение поля AUTO_INCREMENT может быть получено с помощью функции LAST_INSERT_ID (см. SELECT ниже).

BINARY

Атрибут используется с типами CHAR и VARCHAR- для указания на двоичные данные в текстовой строке. Единственным эффектом этого атрибута будет чувствительность к регистру при сортировке данных. По умолчанию MySQL игнорирует регистр при сортировке текста.

DEFAULT value

Атрибут приписывает полю значение по умолчанию. Это значение будет присвоено полю в случае, если во вводимой в таблицу записи это поле пустое. Если значение по умолчанию не определено и нет ограничения NOT NULL , то будет записано значение NULL. В случае NOT NULL MySQL запишет значение на основе типа поля.

NOT NULL

Этот атрибут гарантирует, что каждая запись в столбце будет иметь какое-либо, отличное от NULL, значение. Попытка вставить в такое поле значение NULL вызовет ошибку.

NULL

Атрибут указывает на допустимость значения NULL. Это атрибут по умолчанию в случае, если никакой атрибут не указан. Поля, входящие в состав индекса, не могут иметь атрибут NULL. (Он будет проигнорирован, даже если он указан.)

PRIMARY KEY

Атрибут автоматически делает поле первичным ключом таблицы. Таблица может иметь только один первичный ключ (см. ниже). Любое поле, являющееся первичным ключом, должно иметь атрибут NOT NULL.

UNSIGNED

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

ZEROFILL

Атрибут используется с целочисленными типами для добавления нулей перед числом, пока не будет достигнута длина, максимальная для типа. Например, поле counter INT(5) ZEROFILL покажет число 132 как 00132.

У вас должны быть право CREATE для базы данных, где используется предложение CREATE TABLE .

Примеры

# Создать новую пустую базу данных 'employees'

CREATE DATABASE employees;

# Создать простую таблицу

CREATE TABLE empjata ( id INT, name CHAR(50) );

DELETE

DELETE FROM table [WHERE clause]

Удаляет запись из таблицы. При использовании без предложения WHERE будет полностью удалена вся таблица, а затем будет создана новая пустая таблица. С использованием WHERE будут удалены записи, отвечающие условиям выражения. Предложение DELETE возвращает пользователю количество удаленных записей.

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

Для использования следующего выражения у вас должно быть право DELETE для БД.

Примеры

# Удалить все данные из таблицы 'olddata (но не саму таблицу).

DELETE FROM olddata

# Удалить все записи из таблицы 'sales', где поле 'year' равно '1995'.

DELETE FROM sales WHERE year=1995

DESCRIBE

DESC

DESCRIBE table [column] DESC table [column]

Выдает информацию о таблице или столбце. Хотя операция работает как описано, ее функциональные возможности (и многие другие) доступны в операторе SHOW. Оператор DESC поддерживается исключительно для совместимости с Oracle SQL. Имя столбца (не обязательное) может содержать знаки подстановки SQL, в этом случае будет выдана информация о всех подходящих столбцах.

Пример

# Описать таблицу 'messy'

DESCRIBE messy

# Показать информацию о всех столбцах таблицы 'big’ начинающихся с 'mу_'.

# Помните что ' ' является также знаком подстановки и следует избегать,

# его буквального употребления.

DESC big my\_%

DROP

DROP DATABASE name

DROP TABLE [IF EXISTS] name[, name2, ...]

Удаляет базу данных, таблицу из системы MySQL. .

DROP DATABASE

Удаляет всю базу и все файлы, связанные с ней. Пользователю возвращается количество удаленных файлов. Так как большинство таблиц представлено тремя файлами, обычно возвращаемое значение равно числу таблиц, умноженному на три. Для выполнения команды должны быть права администратора MySQL (обычно root или mysql).

DROP TABLE

Полностью стирает таблицу. В текущей реализации MySQL просто удаляет связанные с таблицей файлы. Для выполнения этой операции необходимо право DELETE на таблицу.

Для выполнения этой операции необходимо право DROP на таблицу.

D ROP - это, возможно, самое опасное из выражений SQL. Если вы имеете право на выполнение команд DROP, вы можете полностью стереть таблицу или даже целую базу данных. Это произойдет без предупреждения или запроса на подтверждение. Единственный способ отменить DROP - восстановление базы из резервной копии. Мораль отсюда такова: (1) всегда сохраняйте резервную копию базы (backup); (2) если в чем-то не уверены, - не используйте DROP; и (3) всегда сохраняйте резервную копию базы данных.

Соседние файлы в папке Лабараторная работа 2