Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы MySQL.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
448.25 Кб
Скачать

1.Операторы присваивания значений переменным.

Операция присваивания значения переменной очень проста — достаточно лишь написать имя переменной, ввести после него один знак равенства (=), затем ввести выражение, значение которого требуется присвоить переменной:

Можно также присвоить значение пользовательской переменной в операторах кроме SET. В этом случае оператор присваивания должен быть := и нет = потому что последний обрабатывается как оператор сравнения = в не -SET операторы:

mysql> SET @t1=1, @t2=2, @t3:=4;mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;+------+------+------+--------------------+| @t1 | @t2 | @t3 | @t4 := @t1+@t2+@t3 |+------+------+------+--------------------+| 1 | 2 | 4 | 7 | +------+------+------+--------------------+

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

2. Написать sql- запрос, осуществляющий использование агрегатных функций.

Например, оператор

Select count(*) from Pers

подсчитает полное количество записей в таблице Pers, а оператор

Select count(*) from Pers where Dep=’Бухгалтерия’

выдаст число записей сотрудников бухгалтерии. Оператор

Select count(DISTINCT Dep) from Pers

вернет число различных подразделений, упомянутых в поле Dep таблицы Pers

2. Select min(Year_r), max(Year_r), avg(Year_r) from Pers

вернет минимальное, максимальное и среднее значение года рождения, а оператор

Select min(GetDate()-Year_r), max(GetDate()-Year_r), avg(GetDate()-Year_r) from Pers

выдаст аналогичные данные, но относящиеся к возрасту сотрудников

3.Написать вложенный SQL-запрос на примере любой базы данных.

Вложенные запросы

В рамках нашего примера, допустим, что нам понадобилось узнать имена узлов, которые посещали сайт www.dom2.ru. Требуемую информацию можно получить запросом:

SELECT hst_name FROM hosts WHERE hst_pcode IN

(SELECT vis_hstcode FROM visits, sites

WHERE (sit_pcode = vis_sitcode) AND (sit_name LIKE 'www.dom2.ru'));

Рассмотрим этот запрос более пристально. Первый оператор SELECT нужен для выборки имен узлов. Чтобы выбрать требуемые нам имена, в запросе указана секция WHERE, в которой первичный ключ таблицы «Узлы» (hst_pcode) проверяется на принадлежность множеству (оператор IN). Судя по всему, множество для проверки на принадлежность должен вернуть второй оператор SELECT, находящийся в скобках. Рассмотрим его отдельно:

SELECT vis_hstcode FROM visits, sites WHERE (sit_pcode = vis_sitcode)

AND (sit_name LIKE 'www.dom2.ru')

Как видно из списка полей для выборки, запрос возвращает одно поле - vis_hstcode. Это коды узлов из таблицы «Посещения» (visits). Но после слова FROM указано две таблицы - visits и sites. Это нужно для удобства. Дело в том, что имена сайтов хранятся в таблице «Сайты» (sites), а в таблице «Посещения» - только идентификаторы сайтов. Таким образом, чтобы выбрать из таблицы «Посещения» данные только для сайта www.dom2.ru - мы связали две таблицы и указали в условии привычное для человека имя сайта. Подробнее о связывании речь пойдет чуть ниже. Таким образом, запрос, вернувший нам коды узлов будет являться вложенным запросом.

БИЛЕТ № 19