Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало пути.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
7.81 Mб
Скачать

Групповые функции

Если нас не интересуют строки таблицы как таковые, а интересуют некоторые итоги, мы можем использовать в процессе выборки колонок таблиц групповые функции. Основные групповые функции представлены ниже:

Функция

Описание

SUM(Field)

Вычисляет сумму по указанной колонке

MIN(Field)

Вычисляет минимальное значение по указанной колонке

MAX(Field)

Вычисляет максимальное значение по указанной колонке

AVG(Field)

Вычисляет среднее значение по указанной колонке

COUNT(*)

Вычисляет количество строк в результирующей выборке

COUNT(Field)

Вычисляет количество не пустых значений в колонке

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

SELECT MAX(SALARY)FROM Employees

Общее количество записей в таблице вернет запрос вида:

SELECT COUNT(*)FROM Employees

По умолчанию группой, на которой вычисляется групповая функция, является вся результирующая выборка. Если мы нуждаемся в вычислении промежуточных итогов, мы можем разбить итоговую выборку на подгруппы с помощью необязательной секции GROUP BY:

GROUP BY Field1 [, Field2] [, …]

Например, подсчитаем максимальную зарплату по отделам:

SELECT DeptNum, MAX(SALARY)

FROM Employees

GROUP BY DeptNum

В этом случае функция MAX будет считаться отдельно для всех записей с одинаковым значением поля DeptNum.

Секция having

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

SELECT DeptNum, MAX(SALARY) FROM Employees

GROUP BY DeptNum HAVING MAX(SALARY) > 1000

Важно понимать, что секции HAVING и WHERE взаимно дополняют друг друга. Сначала с помощью ограничений WHERE формируется итоговая выборка, затем выполняется разбивка на группы по значениям полей, заданных в GROUP BY. Далее по каждой группе вычисляется групповая функция и в заключение накладывается условие HAVING.

Изменение данных

Под изменением данных понимаются следующие операции:

  • втавка новых строк в таблицу;

  • именение существующих строк;

  • уаление существующих строк.

Команда insert

Добавление новых записей в таблицу осуществляется посредством команды INSERT. Она имеет следующий синтаксис:

INSERT INTO <имя таблицы> [(<список имен колонок>)]

VALUES(<список констант>)

Например, для внесения сведений о новом работнике необходимо выполнить следующую команду:

INSERT INTO Employees(TabNum, Name, Position, DeptNum,

Salary)

VALUES(45, ‘Сергеев’, ‘Старший менеджер’, 15, 850)

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

Employees

TabNum

Name

Position

DeptNum

Salary

1

Иванов

Начальник

15

1000

2

Петров

Инж.

15

500

3

Сидоров

Менеджер

10

700

45

Сергеев

Старший менеджер

15

850

Если какая-либо колонка в списке будет опущена при вставке – в соответствующее поле записи автоматически будет занесено пустое значение (NULL):

INSERT INTO Employees(TabNum, Name, DeptNum, Salary)

VALUES(45, ‘Сергеев’, 15, 850)

После выполнения команды таблица Employees будет выглядеть так:

Employees

TabNum

Name

Position

DeptNum

Salary

1

Иванов

Начальник

15

1000

2

Петров

Инж.

15

500

3

Сидоров

Менеджер

10

700

45

Сергеев

15

850

Количество констант в секции VALUES всегда должно соответствовать количеству колонок. Список колонок в команде INSERT может быть опущен целиком, в этом случае список констант в секции VALUES должен точно соответствовать описанию колонок таблицы в словаре данных СУБД, иначе команда будет отвергнута ядром БД. Пример правильной команды:

INSERT INTO Employees VALUES(45, ‘Сергеев’,

‘Старший менеджер’, 15, 850)

Команда вида:

INSERT INTO Employees VALUES(45, ‘Сергеев’, 15, 850)

Завершится ошибкой, так как количество констант не соответствует реальному количеству колонок в таблице. В колонку можно в явном виде внести пустое значение посредством ключевого слова NULL. Последний запрос можно переписать следующим образом:

INSERT INTO Employees VALUES(45, ‘Сергеев’, NULL, 15, 850)

В этом случае команда вставки отработает корректно и в поле Position будет внесено пустое значение. Очевидно, что к аналогичному результату приведет и команда:

INSERT INTO Employees(TabNum, Name, Position, DeptNum,

Salary)

VALUES(45, ‘Сергеев’, NULL, 15, 850)

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

INSERT INTO <имя таблицы> [(<список имен колонок>)]

<команда SELECT>

Например:

INSERT INTO Table1(Field1, Field2)

SELECT Field3, (Field4 + 5) FROM Table2

Чтобы удалить ненужные записи из таблицы – следует использовать команду DELETE:

DELETE FROM <имя таблицы> [WHERE <условия поиска>]

Если опустить секцию WHERE – из таблицы будут удалены все записи. Иначе – только записи, удовлетворяющие критериям поиска. Примеры команды DELETE:

DELETE FROM Employees

DELETE FROM Employees WHERE TabNum = 45

Изменить ранее внесенные командой INSERT данные можно с помощью команды UPDATE:

UPDATE < имя таблицы>

SET <имя колонки> = <новое значение> , <имя колонки> =

<новое значение>, …

WHERE <условия поиска>]

При отсутствии секции WHERE обновлены будут все строки таблицы. Иначе – только подходящие под заданные условия. Примеры:

UPDATE Employees SET Salary = Salary + 100

UPDATE Employees

SET Position = ‘Старший менеджер’, Salary = 1000

WHERE TabNum = 45 AND Position IS NULL

Для создания новых таблиц используется команда CREATE TABLE. В общем виде ее синтаксис следующий:

CREATE TABLE <имя таблицы>

(

<имя колонки> <тип колонки>[(<размер колонки>)] [<ограничение целостности уровня колонки>]

[, <имя колонки> <тип колонки>[(<размер колонки>)] [<ограничение целостности уровня колонки>]]

[, …]

[<ограничение целостности уровня таблицы>]

[,<ограничение целостности уровня таблицы>]

[, …]

)

Примеры:

CREATE TABLE Departments

(DeptNum int NOT NULL PRIMARY KEY,

Name varchar(80) NOT NULL)

CREATE TABLE Employees

(

TabNum int NOT NULL PRIMARY KEY,

Name varchar(100) NOT NULL,

Position varchar(200),

DeptNum int,

Salary decimal(10, 2) DEFAULT 0,

CONSTRAINT FK_DEPARTMENT FOREIGN KEY (DeptNum)

REFERENCES Departments(DeptNum)

)

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

ALTER TABLE Departments ADD COLUMN City int

ALTER TABLE Departments DROP COLUMN City

Удаление ранее созданной таблицы производится командой DROP TABLE:

DROP TABLE Departments

СУБД MySQL

MySQL – многопользовательский, многопо­точный сервер базы данных. Имеет хорошую скорость и гибкость, если использовать его для хранения изображений и файлов. MySQL соответствует спецификации ANSI 92 SQL. Основные достоинства MySQL - скорость, устойчивость и легкость в работе.

Другие преимущества:

  1. Поддержка нескольких одновременных запросов (многопоточность).

  2. Возможность записи фиксированной, а также переменной длины.

  3. Оптимизация связей с присоединением многих данных за один проход.

  4. Гибкая система паролей и доступов.

  5. ODBC драйвер в комплекте с исходником.

  6. Интерфейс с языками C и perl.

  7. Легко управлять таблицей (включая добавление и удаление ключей и по­лей).

  8. До 16 ключей в таблице (в каждом ключе до 15 полей).

  9. Поддержка ключевых полей, а также специальных полей в операторе CREATE.

  10. Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.

  11. Утилита проверки и ремонта таблицы (isamchk).

  12. Быстрая система памяти, основанная на потоках.

  13. Псевдонимы применимы не только к таблицам, но также к отдельным ко­лонкам в таблице.

  14. Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.

Язык клиентских скриптов JavaScript

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

JavaScript является скриптовым языком, программы обходятся без компиляции. JavaScript вместе с XML и библиотекой JQuery образует основу популярной технологии AJAX.

Сжатие изображений с помощью фракталов

Существуют ряд алгоритмов для сжатия изображения с помощью фракталов. Они основаны на теореме Банаха о сжимающих преобразованиях и являются результатом работы исследователя Технологического института шт. Джорджия Майкла Барнсли.

Дорогу осилит идущий…

Из научного фальклора

Глава 4. Информационной обмен, НТМL и CSS

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

На этапе моделирования создается информационный объект, содержащий данные. На этом этапе выделяются следующие проблемы:

- Анализ предметной области. При этом ищется ответ на вопрос: «Какую именно информацию мы хотим передать».

- Создание правил формализации. «Какая формальная схема, какой способ позволяет лучше всего передать намерения, смысл? Например, музыка, живопись или текст»

- Кодирование в терминах правил. «Как эффективнее выразить информацию в выбранном формализме? »

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

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

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

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