Команды SQL часть3

При изменении только типа столбца, а не его имени, указание имени все-равно необходимо, хотя в этом случае оно будет фактически повторяться.
mysql>ALTER TABLE forums CHANGE new_test new_test int(5) not null;

Результат выполнения этого запроса приведен на рисунке
img_php74.gif

Теперь удалим столбец new_test:

mysql>ALTER TABLE forums DROP new_test;
Как видно из рисунка, после удаления этого столбца таблица forums приобрела исходную структуру
img_php74_2.gif

DROP TABLE

Команда DROP TABLE предназначена для удаления одной или нескольких таблиц:

DROP TABLE table_name [ ,table_name,...]

К примеру, для удаления таблицы forums нужно выполнить следующий SQL-запрос:

mysql>DROP TABLE forums;

DROP DATABASE

Команда DROP DATABASE удаляет базу данных со всеми таблицами входящими в её состав:
DROP DATABASE database_name

Удалим, например, базу данных forum:

mysql>DROP DATABASE forum;

INSERT INTO…VALUES

Команда INSERT…VALUES вставляет новые записи в существующую таблицу. Синтаксис команды:

INSERT INTO table_name VALUES (values,…)

После оператора VALUES в скобках через запятую перечисляются значения соответствующих полей таблицы в соответствии с их типами.

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

mysql>INSERT INTO authors VALUES (1, 'Maks', '123', ' [email protected] ',
' www.visavi.net ', '', 'программист', '', '', '', 0, 0);
mysql>INSERT INTO authors VALUES (2, 'Igor', '123', '[email protected]',
'http://www.visavi.net', '', 'Программист', '', '', '', 407, 0);
mysql>INSERT INTO authors VALUES (3, 'Sergey', '212', '[email protected]',
'http://www.visavi.net', '', 'Дизайнер', '', '', '', 408, 0);

DELETE

DELETE FROM table_name [WHERE definition]

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

mysql>DELETE FROM authors;

Важной частью запросов DELETE, UPDATE и SELECT является оператор WHERE, который позволяет задать условия для выбора записей, на которые будут действовать эти команды. Следующий запрос удаляет из таблицы посетителя, первичный ключ для которого равен 1:

mysql>DELETE FROM authors WHERE id_author = 1;

Условия отбора могут быть значительно сложнее, так в листинге 13.16 удаляются все авторы с паролем '123' и первичный ключ которых превышает 10:

mysql>DELETE FROM authors WHERE passw = '123' AND id_author >10;

Оператор AND является логическим "и". В запросах можно так же применять логическое или "или".

SELECT

Команда SELECT предназначена для извлечения строк данных из одной или нескольких таблиц и имеет в общем случае следующий синтаксис:
SELECT column,...
[FROM table WHERE definition]
[ORDER BY col_name [ASC | DESC], ...]
[LIMIT [offset], rows]
Здесь column - имя выбираемого столбца. Можно указать несколько столбцов через запятую. Если необходимо выбрать все столбцы можно просто указать знак звёздочки *. Ключевое слово FROM указывает таблицу table из которой извлекаются записи. Ключевое слово WHERE определяет, так же как и в операторе DELETE определяет условия отбора строк. Ключевое слово ORDER BY сортирует строки запросов по столбцу col_name в прямом (ASC) или обратном порядке (DESC). Ключевое слово LIMIT сообщает MySQL об выводе только rows запросов начиная с позиции offset.

Давайте вставим в таблицу forums несколько записей, чтобы потом на их примере выполнять различные варианты команды SELECT.

mysql>INSERT INTO forums VALUES (1, 'Форум1', '', '', 1, 0);
mysql>INSERT INTO forums VALUES (2, 'Форум2', '', '', 2, 0);
mysql>INSERT INTO forums VALUES (3, 'Форум3', '', '', 3, 0);
mysql>INSERT INTO forums VALUES (4, 'Форум4', '', '', 4, 0);
mysql>INSERT INTO forums VALUES (5, 'Форум5', '', '', 5, 0);
Для того чтобы посмотреть всю таблицу forums выполняется следующий запрос:

mysql>SELECT * FROM forums;

Выбираем все столбцы из таблицы forums без ограничений. Результат показан на рисунке:
img_php74_3.gif

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

mysql>SELECT id_forum, name FROM forums;

В этом случае MySQL выведет лишь два столбца с первичным ключом id_forum и названием форума name
img_php74_4.gif

Оператор LIMIT используется для ограничения количества строк, возвращенных командой SELECT. К примеру:

mysql>SELECT * FROM forums LIMIT 3;

В результате этого запроса будет выведено только первые 3 записи из 5
img_php74_5.gif

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

mysql>SELECT * FROM forums LIMIT 1,3;

В этом случае будут возвращены строки 2, 3 и 4
img_php74_6.gif

Оператор WHERE применяется в команде SELECT точно так же, как и в команде DELETE. Выберем из таблицы только те записи, у которых значение id_forum больше 2:

mysql>SELECT * FROM forums WHERE id_forum >2;

Результат показан на слудующем рисунке:
img_php74_7.gif

Порядок сортировки выводимых записей можно задавать при помощи оператора ORDER BY:

mysql>SELECT * FROM forums WHERE id_forum >2 ORDER BY pos;

В этом запросе выводятся все записи со значением поля id_forum не меньше двух, которые при этом сортируются по значению поля pos. Результат такого запроса показан на рисунке
img_php74_8.gif



UPDATE

UPDATE table
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE definition]
[LIMIT rows]

Команда UPDATE обновляет столбцы таблицы table в соответствии с их новыми значениями в строках существующей таблицы. В выражении SET указывается, какие именно столбцы следует модифицировать и какие величины должны быть в них установлены. В выражении WHERE, если оно присутствует, задается, какие строки подлежат обновлению. В остальных случаях обновляются все строки. Ключевое слово LIMIT позволяет ограничить число обновляемых строк.

В следующим листинге разделу форума с первичным ключом 2 устанавливается новое название (PHP) и устанавливается атрибут hide равным 1, делая форум невидимым.

UPDATE forums SET name='PHP', hide=1 WHERE id_forum=2;

SHOW

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

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

mysql>SHOW FIELDS FROM authors;

Результат приведен на следующем рисунке
img_php74_9.gif

Можно также отобразить информацию обо всех индексах конкретной таблицы:

mysql> SHOW INDEX FROM authors;

Выполнив команду SHOW PROCESSLIST можно увидеть список всех выполняющихся в системе запросов
img_php74_10.gif



<<< - Предыдущая