- •Глава 3. Учебное пособие по MySql
- •3.1. Подсоединение к серверу и отсоединение от него
- •3.2. Ввод запросов
- •3.3. Создание и использование базы данных
- •3.3.1. Создание и выбор базы данных
- •3.3.2. Создание таблицы
- •3.3.3. Загрузка данных в таблицу
- •3.3.4. Выборка информации из таблицы
- •3.3.4.1. Выборка всех данных
- •3.3.4.2. Выборка определенных строк
- •3.3.4.3. Выборка определенных столбцов
- •3.3.4.4. Сортировка строк
- •3.3.4.5. Вычисление дат
- •3.3.4.6. Работа с значениями null
- •3.3.4.7. Сравнение по шаблонам
- •3.3.4.8. Подсчет строк
- •3.3.4.9. Использование нескольких таблиц
- •3.4. Получение информации о базах данных и таблицах
- •3.5. Примеры стандартных запросов
- •3.5.1. Максимальное значение столбца
- •3.5.2. Строка, содержащая максимальное значение некоторого столбца
- •3.5.3. Максимальное значение столбца для группы
- •3.5.4. Строка, содержащая максимальное значение некоторого столбца
- •3.5.5. Использование пользовательских переменных
- •3.5.6. Использование внешних ключей
- •3.5.7. Поиск по двум ключам
- •3.5.8. Подсчет посещений за день
- •3.5.9. Использование атрибута auto_increment
- •3.6. Использование mysql в пакетном режиме
- •3.7. Запросы проекта 'Близнецы' (Twin Project)
- •3.7.1. Поиск нераспределенных близнецов
- •3.7.2. Вывод таблицы состояний пар близнецов
- •3.8. Использование MySql совместно с Apache
3.4. Получение информации о базах данных и таблицах
Как быть, если вы забыли имя базы или таблицы, или структуру какой-либо из таблиц (например имена столбцов)? В MySQL эта проблема решается при помощи нескольких команд, выводящих информацию о базе данных и содержащихся в ней таблицах.
Вы уже познакомились с командой SHOW DATABASES, выводящей список управляемых сервером баз данных. Определить, какая из них выбрана в данный момент, можно с помощью функции DATABASE():
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
Если ни одна из баз не выбрана, результат будет пуст.
Выяснить, какие таблицы содержит текущая база данных (что необходимо, если, например, никак не получается вспомнить имя нужной таблицы), можно при помощи следующей команды:
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| event |
| pet |
+---------------------+
Узнать структуру таблицы можно при помощи команды DESCRIBE, которая выводит информацию о каждом из столбцов таблицы:
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
Field - имя столбца, Type - тип данных, к которому относится этот столбец, NULL указывает, может ли данный столбец содержать значения NULL, Key - является ли этот столбец индексным, и, наконец, Default указывает значение данного столбца по умолчанию.
Если для таблицы созданы индексы, информацию о них можно получить с помощью команды SHOW INDEX FROM tbl_name.
3.5. Примеры стандартных запросов
3.5.1. Максимальное значение столбца
3.5.2. Строка, содержащая максимальное значение некоторого столбца
3.5.3. Максимальное значение столбца для группы
3.5.4. Строка, содержащая максимальное значение некоторого столбца
3.5.5. Использование пользовательских переменных
3.5.6. Использование внешних ключей
3.5.7. Поиск по двум ключам
3.5.8. Подсчет посещений за день
3.5.9. Использование атрибута AUTO_INCREMENT
Здесь представлены примеры решения некоторых стандартных задач средствами MySQL.
В некоторых из примеров используется таблица shop (магазин), в которой содержатся цены по каждому изделию (item number)для определенных продавцов (dealer). Предположим, что каждый продавец имеет одну фиксированную цену для каждого изделия; тогда пара изделие-продавец (article, dealer) является первичным ключом для записей таблицы.
Запустите клиента mysql:
mysql имя-вашей-базы-данных
(Для большинства инсталляций MySQL можно использовать базу данных 'test'.)
Таблицу примера можно создать таким образом:
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
Ну и, скажем, данные для примера будут такими:
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
