Методичка: Разработка Web-приложений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Оператор SELECT

Оператор SELECT применяется для извлечения строк, выбранных из одной или нескольких таблиц. То есть с его помощью мы задаем столбцы или выражения, которые надо извлечь ( select_выражения ), таблицы ( table_references ), из которых должна производиться выборка, и, возможно, условие ( where_definition ), которому должны соответствовать данные в этих столбцах, и порядок, в котором эти данные нужно выдать.

Кроме того, оператор SELECT можно использовать для извлечения строк, вычисленных без ссылки на какую-либо таблицу. Например, чтобы вычислить, чему равно 2*2, нужно просто написать

mysql> SELECT 2*2;

Упрощенно структуру оператора SELECT можно представить следующим образом:

SELECT select_выражение1, select_выражение2,

...

[FROM table_references

[WHERE where_definition]

[ORDER BY {число | имя_столбца |

формула}

[ASC | DESC], ...]]

Квадратные скобки [ ] означают, что использование находящегося в них оператора необязательно, вертикальная черта | означает перечисление возможных вариантов.

После ключевого слова ORDER BY указывают имя столбца, число (целое беззнаковое) или формулу и способ упорядочения (по возрастанию - ASC, или по убыванию - DESC ). По умолчанию используется упорядочение по возрастанию.

Когда в select_выражении мы пишем " * ", это значит выбрать все столбцы. Кроме " * " в select_выражения могут использоваться функции типа max, min и avg.

Оператор INSERT

Оператор INSERT вставляет новые строки в существующую таблицу. Оператор имеет несколько форм.

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

Столбцы, для которых задаются значения, указываются в списке имен столбцов ( имя_столбца ) или в части SET.

Синтаксис:

1. INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

2. [INTO] имя_таблицы [(имя_столбца,...)]

3. VALUES (выражение,...),(...),...

Эта форма команды INSERT вставляет строки в соответствии с точно указанными в команде значениями. В скобках после имени таблицы перечисляются столбцы, а после ключевого слова VALUES - их значения.

Например:

mysql> INSERT INTO Persons

(last_name, bday) VALUES

('Иванов', '1934');

вставит в таблицу Persons строку, в которой значения фамилии ( last_name ) и даты рождения ( bday ) будут заданы соответственно как "Иванов" и "1934".

4. INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

5. [INTO] имя_таблицы [(имя_столбца,...)]

6. SELECT ...

Эта форма команды INSERT вставляет строки, выбранные из другой таблицы или таблиц.

Например:

mysql> INSERT INTO Artifacts (author)

SELECT id FROM Persons

WHERE last_name='Иванов'

AND bday='1934';

вставит в таблицу Artifacts в поле "автор" ( author ) значение идентификатора, выбранного из таблицы Persons по условию, что фамилия человека Иванов и год рождения 1934.

7. INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

8. [INTO] имя_таблицы

9. SET имя_столбца=выражение,

10. имя_столбца=выражение, ...

Например:

mysql> INSERT INTO Persons

SET last_name='Петров',

first_name='Иван';

Эта команда вставит в таблицу Persons в поле last_name значение "Петров", а в поле first_name - строку "Иван".

Форма INSERT... VALUES со списком из нескольких значений поддерживается в версии MySQL 3.22.5 и более поздних.

Синтаксис выражения имя_столбца=выражение поддерживается в версии MySQL 3.22.10 и более поздних.

Действуют следующие соглашения.

· Если не указан список столбцов для INSERT... VALUES или INSERT... SELECT , то величины для всех столбцов должны быть определены в списке VALUES() или в результате работы SELECT .

· Если порядок столбцов в таблице неизвестен, для его получения можно использовать DESCRIBE имя_таблицы.

· Любой столбец, для которого явно не указано значение, будет установлен в свое значение по умолчанию. Например, если в заданном списке столбцов не указаны все столбцы в данной таблице, то не упомянутые столбцы устанавливаются в свои значения по умолчанию.

· Выражение expression может относиться к любому столбцу, который ранее был внесен в список значений. Например, можно указать следующее:

· mysql> INSERT INTO имя_таблицы (col1,col2)

VALUES(15,col1*2);

Но нельзя указать:

mysql> INSERT INTO имя_таблицы (col1,col2)

VALUES(col2*2,15);

Мы еще не обсудили три необязательных параметра, присутствующих во всех трех формах команды: LOW_PRIORITY, DELAYED иIGNORE.

Параметры LOW_PRIORITY и DELAYED используются, когда с таблицей работает большое число пользователей. Они предписывают устанавливать приоритет данной операции перед операциями других пользователей.

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

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

В противоположность этому команда INSERT DELAYED позволяет данному клиенту продолжать операцию сразу же, независимо от других пользователей.

Если в команде INSERT указывается ключевое слово IGNORE, то все строки, имеющие дублирующиеся ключи PRIMARY или UNIQUEв этой таблице, будут проигнорированы и не внесены в таблицу. Если не указывать IGNORE, то данная операция вставки прекращается при обнаружении строки, имеющей дублирующееся значение существующего ключа.

Оператор UPDATE

Синтаксис:

UPDATE [LOW_PRIORITY] [IGNORE] имя_таблицы

SET имя_столбца1=выражение1

[, имя_столбца2=выражение2, ...]

[WHERE where_definition]

[LIMIT число]

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

В выражении WHERE, если оно присутствует, задается, какие строки подлежат обновлению. В остальных случаях обновляются все строки.

Если задано выражение ORDER BY, то строки будут обновляться в указанном в нем порядке.

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

Если указывается ключевое слово IGNORE, то команда обновления не будет прервана, даже если возникнет ошибка дублирования ключей. Строки, из-за которых возникают конфликтные ситуации, обновлены не будут.

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

Например, следующая команда устанавливает столбец death_date в значение, на единицу большее его текущей величины:

mysql> UPDATE Persons

SET death_date=death_date+1;

В версии MySQL 3.23 можно использовать параметр LIMIT #, чтобы убедиться, что было изменено только заданное количество строк.

Например, такая операция заменит в первой строке нашей таблицы экспонатов название title на строку "Ламповая ЭВМ":

mysql> UPDATE Artifacts

SET title='Ламповая ЭВМ' Limit 1;

Оператор DELETE

Оператор DELETE удаляет из таблицы имя_таблицы строки, удовлетворяющие заданным в where_definition условиям, и возвращает число удаленных записей.

Если оператор DELETE запускается без определения WHERE, то удаляются все строки.

Синтаксис:

DELETE [LOW_PRIORITY] FROM имя_таблицы

[WHERE where_definition]

[LIMIT rows]

Например, следующая команда удалит из таблицы Persons все записи, у которых поле "год рождения" ( bday ) больше 2003:

mysql> DELETE FROM Persons WHERE bday>2003;

Удалить все записи в таблице можно еще и с помощью такой команды:

mysql> DELETE FROM Persons WHERE 1>0;

Но этот метод работает гораздо медленнее, чем использование той же команды без условия:

mysql> DELETE FROM Persons;

Специфическая для MySQL опция LIMIT для команды DELETE указывает серверу максимальное количество строк, которые следует удалить до возврата управления клиенту.

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

Задания к работе

1. Каким образом команда INSERT используется для переноса данных из одной таблицы в другую?

2. В каких случаях необходимо динамически изменять структуру таблицы?

3. Каков формат SQL- предписаний, осуществляющих динамическое изменение структуры данных?

4. Каким образом пользователь может отслеживать возможные ошибки, возникающие вследствие непродуманного изменения структуры таблиц?

5. Насколько, по вашему мнению, динамическое изменение структуры таблиц с помощью SQL эффективнее традиционного подхода?

6. Вывести номера домашних телефонов всех директоров.

7. Вывести номера сотовых телефонов всех директоров.

8. Вывести номера домашних телефонов всех факультетов.

9. Вывести название веб-сайтов высших учебных заведений.

10. Составить список владельцев всех 3-комнатных квартир.

11. Подсчитать количество сотрудников в каждом из отделений.

12. Создать представление сотрудников и объектов, которые они предлагают в аренду.

Практическое занятие №15-17.

Тема: Основы разработки интерактивного web- приложения в РНР+МYSQL

Цель работы: научиться работать с базой базой данных и соединять ее к браузеру.

Указание к работе: применение на практике и показать их на примере.

Основные характеристики MySQL

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

В названии MySQL составляющая SQL означает Structured Query Language -- язык структурированных запросов. Если характеризовать его в общих чертах, то это язык, основанный на словах английского языка и используемый также в других системах управления базами данных, например Oracle и Microsoft SQL Server. Он разработан для предоставления возможности создания простых запросов к базе данных посредством команд следующего вида:

SELECT title FROM publications WHERE author = 'Charles Dickens';

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

Таблица 1. Пример простой базы данных

Author (автор)

Title (название)

Type (категория)

Year (год)

Mark Twain

(Марк Твен)

The Adventures of Tom Sawyer

(«Приключения Тома Сойера»)

Fiction

( Художественная )

1876

Jane Austen

(Джейн Остен)

Pride and Prejudice

(«Гордость и предубеждение»)

Fiction

( Художественная )

1811

Charles Darwin

(Чарльз Дарвин)

The Origin of Species

(«Происхождение видов»)

Non-Fiction

( Научная )

1856

Charles Dickens

(Чарльз Диккенс)

The Old Curiosity Shop

(«Лавка древностей»)

Fiction

( Художественная )

1841

William Shakespeare

(Вильям Шекспир)

Romeo and Juliet

(«Ромео и Джульетта»)

Play

( Пьеса )

1594

Каждая строка таблицы подобна строке в таблице MySQL, и каждый элемент в этой строке подобен полю MySQL.

Чтобы однозначно идентифицировать эту базу данных, в последующих примерах я буду ссылаться на нее как на базу данных publications (издания). Как вы уже заметили, все эти издания относятся к классической литературе, поэтому таблицу в базе данных, содержащую сведения о них, я буду называть classics.

Сводка понятий, используемых в базах данных

Основными понятиями, с которыми следует ознакомиться на данном этапе, являются:

Ѓ база данных -- контейнер для всей коллекции данных MySQL;

Ѓ таблица -- вложенный в базу данных контейнер, в котором хранятся сами данные;

Ѓ строка -- отдельная запись, в которой могут содержаться несколько полей;

Ѓ столбец -- имя поля внутри строки.

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

Доступ к MySQL из командной строки

Работать с MySQL можно тремя основными способами: используя командную строку, применяя веб-интерфейс наподобие phpMyAdmin и задействуя такой язык программирования, как PHP. Третий из перечисленных способов будет рассмотрен в главе 10 , а сейчас изучим первые два способа.

Начало работы с интерфейсом командной строки

В следующих разделах даны соответствующие инструкции для Windows, Mac OS X и Linux.