Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
позволяет производить большой объем обработки данных на сервере до их 
извлечения. Но этой мощью нужно пользоваться с большой осторожностью. Хотя 
может показаться, что перенос максимального объема обработки на сервер базы 
данных дает выигрыш в производительности, на самом деле это не так. Ваше 
приложение-клиент обслуживает потребности отдельного клиента, в то время как 
сервер совместно используется многими клиентами. Из-за большого объема работы, 
который должен производить сервер, почти всегда более эффективно возложить на 
сервер минимально возможную нагрузку. MySQL и mSQL, возможно, наиболее быстрые 
из имеющихся баз данных, но не нужно использовать эту скорость для той работы, 
к которой лучше приспособлено клиентское приложение.
Если вам известно, что много клиентов будет запрашивать одни и те же итоговые 
данные (например, данные по некоторому званию в нашем предыдущем примере), 
создайте новую таблицу с этими данными и обновляйте ее при изменении данных в 
исходной таблице. Эта операция аналогична буферизации и является 
распространенным приемом в программировании баз данных.
Расширения языка
Как MySQL, так и mSQL обладают некоторыми витиеватыми расширениями, аналогов 
которым вы не найдете в других базах данных. Большинство расширений, имеющихся 
в MySQL, в целом согласуется со стандартом ANSI SQL. Расширения mSQL связаны 
просто с особыми переменными, к которым можно обращаться при работе с базой 
данных mSQL.
Возможности MySQL
MySQL превосходит mSQL в поддержке SQL, предоставляя возможность работы с 
функциями и в некоторой мере — с внешними объединениями. Функции в SQL 
аналогичны функциям в других языках программирования, таких как С и Perl. 
Функция может принимать аргументы и возвращает некоторое значение. Например, 
функция SQRT(16) возвращает 4. В MySQL в команде SELECT функции могут 
использоваться в двух местах:
Как извлекаемая величина
В этом случае функция включается в список извлекаемых колонок. Возвращаемое 
функцией значение, вычисляемое для каждой выбранной строки, включается в 
возвращаемое результирующее множество, как если бы это была колонка базы данных.
 Вот пример:
# Выбрать название каждого события (event), а также его дату
# в удобном для чтения формате из всех событий, более свежих,
# чем указанная дата. Функция FROM_UnixTIME()
# преобразует стандартное значение времени Unix
# в читаемый вид.
SELECT name, FROM_UnixTIME(date)
FROM events
WHERE time > 90534323
# Выбрать заглавие статьи, полный текст ее,
# и длину (в байтах) полного текста для всех 
# статей, автор которых Stacie Sheldon.
# Функция LENGTHO возвращает длину заданной
# строки в символах.
SELECT title, text, LENGTH(text)
FROM papers
WHERE author = 'Stacie Sheldon'
Как часть предложения WHERE
В этом виде функция заменяет место константы при вычислении в предложении WHERE.
 Значение функции используется при сравнении в каждой строке таблицы. Приведем 
пример.
# Случайным образом выбрать название объекта из общего числа 35.
# Функция RAND() генерирует случайное число
# между 0 и 1 (умножается на 34, чтобы сделать его между 0
# и 34, и увеличивается на 1 , чтобы сделать его между 1 и
# 35). Функция ROUND() возвращает данное число округленным
# до ближайшего целого, что приводит к целому числу
# между 1 и 35, которое должно соответствовать одному
# из чисел ID в таблице.
SELECT name
FROM entries
WHERE id = ROUND( (RAND()*34) + 1 )
# Можно использовать функции одновременно в списке значений
# и предложении WHERE. В этом примере выбираются имя и дата
# всех событий, происшедших более суток назад. Функция UNIX_TIMESTAMP()
# без аргументов возвращает текущее время
# в формате Unix.
SELECT name, FROM_UnixTIME(date)
FROM events
WHERE time > (Unix_TIMESTAMP() - (60 * 60 * 24) )
# Функция может использовать значение поля таблицы.
# В этом примере возвращаются имена всех,
# кто использовал свое имя в качестве пароля. Функция ENCRYPTO
# возвращает зашифрованную в стиле пароля Unix
# заданную строку, используя 2-символьный ключ.
# Функция LEFT() возвращает п самых левых символов
# переданной строки.
SELECT name
 
<<-[Весь Текст]
Страница: из 157
 <<-