Автор работы: Пользователь скрыл имя, 19 Января 2014 в 13:37, доклад
Банк данных (БнД) в общем случае состоит из следующих компонентов: базы (нескольких баз) данных, системы управления базами данных, словаря данных, администратора, вычислительной системы и обслуживающего персонала. Вкратце рассмотрим названные компоненты и некоторые связанные с ними важные понятия.
База данных (БД) представляет собой совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы и отображающих состояние объектов и их взаимосвязей в рассматриваемой предметной области.
Таблица 2.7. Сокращения названий месяцев
Название месяца |
Используемое обозначение |
Январь |
JAN |
Февраль |
FEB |
Март |
MAR |
Апрель |
APR |
Май |
MAY |
Июнь |
JUN |
Июль |
JUL |
Август |
AUG |
Сентябрь |
SEP |
Октябрь |
OCT |
Ноябрь |
NOV |
Декабрь |
DEC |
Создает новую базу данных:
Создает новую таблицу в выбранной базе данных.
Показывает структуру
Изменение структуры таблицы. Эта команда позволяет добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу.
Удаляет одну или несколько таблиц:
Удаляет базу данных со всеми таблицами, входящими в ее состав:
Вставляет новые записи в существующую таблицу. Синтаксис команды:
Удаляет из таблицы table_name записи, удовлетворяющие заданным в definition условиям, и возвращает число удаленных записей.
Извлекает данные из одной или нескольких таблиц и имеет синтаксис:
Обновляет столбцы таблицы table в соответствии с их новыми значениями в строках существующей таблицы.
В выражении SET указывается, какие именно столбцы следует модифицировать и какие величины должны быть в них установлены.
В выражении WHERE, если оно присутствует, задается, какие строки подлежат обновлению.
Оператор SHOW может принимать множество форм и предназначен для мониторинга таблиц, баз данных и сервера MySQL.
При помощи оператора SHOW CHARACTER SET можно выяснить кодировки, поддерживаемые сервером MySQL.
Оператор SHOW COLUMN TYPES позволяет вывести перечень информации о типах столбцов, которые использовались при создании таблиц MySQL.
При помощи оператора SHOW FULL COLUMNS FROM authors можно получить расширенное описание структуры таблицы.
Оператор SHOW PROCESSLIST позволяет получить информацию о потоках, выполняющихся на сервере.
Оператор SHOW STATUS позволяет получить значения переменных состояния сервера.
Определение столбца, его свойства.
Столбцы таблицы называются полями. Поле БД — это столбец таблицы, содержащий
значения определенного свойства. Значения
полей в одной строчке относятся к одному
объекту. Разные поля отличаются именами.
В реляционной БД используются четыре основных типа полей:
Создание базы данных, ограничение
целостности БД. Индексы.
Структура запросов.
Основные операции над таблицами.
Команды манипулирования данными: INSERT,
DELET, UPDATE.
Команда INSERT
Вариант 1 - вставка одной строки
Команда имеет вид: INSERT INTO имятаблицы [(списокименстолбцов)] VALUES (список значений)
Вариант 2 - вставка множества строк на основе запроса по другим таблицам
Команда имет вид: INSERT INTO имя таблицы [(список столбцов)] SELECT ... (запрос на выборку из других таблиц)
. Команда DELETE
Общий вид команды: DELETE FROM имя таблицы [WHERE условиеотборастрокдляудаления]
Например:
Удалить всех студентов с фамилией Иванов DELETE FROM students WHERE name_st='Иванов'
Полностью очистить таблицу students
DELETE FROM students
Нельзя удалить строку родительской
таблицы, если есть связанные строки
в подчиненной таблице и
Команда UPDATE
Данная команда не изменяет количество строк в таблице, поскольку ее назначение состоит в изменении данных, которые уже имеются в таблице.
Общий вид команды: UPDATE имятаблицы SET столбец1=значение [, столбец2=значение
[WHERE условиеотборастрок]
Например;
При выполнении команды UPDATE автоматически проверяются все ограничения столбца.
Команда выборки данных SELECT, сортировка
данных.
Команда выборки данных (SELECT)
Команда выборки SELECT
SELECT [DISTINCT] список_выражений(* - все столбцы
таблицы) FROM список_таблиц, представлений,
запросов (возможно, с операцией соединения
JOIN) [WHERE условияотборастрок] [GROUP BY список_выражений_для_
Поскольку команда SELECT является многофункциональной, разберем по порядку возможности ее практического применения.
Запросы на выборку по одной таблице
Выборка всех данных таблицы
SELECT * FROM имятаблицы (представления)
Например: выбрать все данные из таблицы students SELECT * FROM students
Отбор столбцов (операция проекции) SELECT списокименстолбцов FROM имятаблицы
Например: выбрать столбцы с фамилией и датой рождения из таблицы студентов SELECT namest, born FROM students выбрать только столбец с фамилией из таблицы студентов SELECT namest FROM students
Результаты выборки по этим запросам могут не удовлетворить пользователей по двум причинам.
Фраза ORDER BY..., необходимая для представления результатов выборки в отсортированном виде, обязательно должна быть последней в команде SELECT, поскольку сортировка результатов всегда завершает выполнение запроса на выборку.
Отбор строк (операция выборки)
В качестве критерия для отбора строк таблицы можно задать любое логическое выражение, используя фразу WHERE.
Условие отбора строк может включать следующие операции:
или их наличие IS NOT NULL
BETWEEN начальное значение AND конечное значение
• операция принадлежности значения заданному множеству
IN (множество)
• операция соответствия заданному шаблону (для текстовых столбцов)
LIKE 'шаблон'
В шаблоне для операции LIKE разрешено использовать два символа-заменителя:
SELECT введены агрегатные (статистические, итоговые) функции. Основная особенность этих функций состоит в том, что каждая из них вычисляет одно итоговое значение по какому-либо столбцу для множества строк таблицы.
В стандарте определено 5 агрегатных функций:
SUM(имя_столбца) - сумма значений заданного столбца,
AVG(имястолбца) - среднее значение
MIN(имя_столбца), МАХ(имястолбца)- минимальное и максимальное значение
COUNT([DISTINCT] * или имястолбца) - подсчет количества строк.
Вложенные и комбинированные запросы.
Вложенные запросы
Это запросы, которые содержатся в теле другого запроса. Они могут использоваться во фразах FROM, WHERE и HAVING, а также в списке после слова SELECT, создавая, таким образом, вычисляемый столбец.
Перечислим несколько основных правил, которые должны соблюдаться при использовании в запросе вложенных запросов:
Вложенные запросы во фразе FROM
конструкция SELECT .... FROM (SELECT ... ) полностью равнозначно SELECT .... FROM имятаблицы
Например, пусть требуется найти значения минимального и максимального среднего балла студентов. столбец avgmark (задание псевдонима во вложенном запросе обязательно)
SELECT MIN (avgmark) minavg mark, MAX(avgmark) maxavgmark FROM (SELECT AVG (mark) avg_mark FROM marks GROUP BY cod_st)
Вложенные запросы как альтернатива соединению таблиц в запросах
Этот вариант использования вложенного запроса во многих случаях позволяет избежать операции соединения таблиц.
Например, пусть требуется выяснить оценку студента Иванова по математике (если таких студентов несколько - все оценки). Можно легко решить эту задачу, соединив таблицы students, subjects и marks и выполнив выборку из полученной в результате соединения таблицы. Однако, логичным представляется и такой вариант: найти коды всех Ивановых из таблицы students, найти код математики из таблицы subjects, на последнем этапе найти оценку (или несколько оценок) в таблице marks. Получаем такой текст запроса с двумя вложенными запросами: SELECT mark FROM marks WHERE cod_st IN
(SELECT codst FROM students WHERE name_st='HBaHOB') AND codsub IN (SELECT codsub FROM subjects WHERE name_sub='Математика')
Вложенные запросы в условиях отбора (WHERE и HAVING)
Эти запросы по своей логике ничем не отличаются от запросов, приведенных выше, поэтому просто приведем примеры.
Пусть требуется вывести фамилии самых молодых студентов (т.е. тех, у которых самая поздняя дата рождения). Этот запрос состоит из двух этапов: сначала нужно найти самую позднюю дату рождения (эту задачу решит вложенный запрос), а затем всех студентов, которые имеют найденную дату рождения. SELECT namest FROM students WHERE born= (SELECT MAX(born) FROM students)
Здесь знак равенства в условии WHERE уместен, поскольку вложенный запрос гарантированно возвратит одно непустое значение, если в таблице students имеется хотя бы одна строка (на пустой таблице этот
запрос также корректно работает, возвращая сообщение «строки не выбраны»).
Следующий пример несколько объемнее, но использует ту же логику разбиения задачи на несколько этапов.
Пусть требуется найти студентов, которые имеют максимальный (или минимальный) средний балл. Запрос, который находит максимальный средний балл студента, приводился выше, осталось только продолжить логику рассуждений. Зная максимальный средний балл, по таблице оценок можно найти коды студентов, имеющих такой средний балл (здесь потребуется использование фразы HAVING), а по кодам студентов в самом внешнем запросе можно отыскать в таблице студентов их фамилии.
В результате получили «многоэтажный», но довольно простой по логике, запрос:
SELECT namest FROM students WHERE codst IN (SELECT cod_st FROM marks GROUP BY cod_st HAVING AVG(mark)= (SELECT MAX(avgmark) maxavgmark FROM
(SELECT AVG (mark) avg_mark FROM marks GROUP BY cod_st
) ) )
Вложенные запросы в качестве вычисляемых столбцов
Такое использование вложенных запросов приводит к очень интересной конструкции SELECT ... (SELECT ...) FROM ... Она поддерживается большинством СУБД.
В качестве примера приведем задачу вычисления средних баллов всех студентов, для которой уже было представлено несколько вариантов запросов. Приведем еще один, не самый эффективный, но правильный. SELECT codst, namest,
(SELECT AVG(mark) FROM marks WHERE cod_st=students.cod_st) avgmark FROM students
В данном примере avgmark является вычисляемым столбцом, для которого в качестве выражения используется вложенный запрос, гарантированно возвращающий одно значение для каждой строки внешнего запроса.
В последнем приведенном примере можно обратить внимание на одно важное обстоятельство. Вложенный запрос, использующий только одну таблицу marks, тем не менее, содержит во фразе WHERE столбец из другой таблицы students.mark.
Комбинированные запросы
Над результатами запросов
можно выполнять обычные
Эти операции выполняются только над запросами, которые возвращают одинаковое количество столбцов одинакового типа.
Стандартом установлены
Ключевое слово ALL в данном контексте запрещает удаление дубликатов из результатов операций (тем самым повышается эффективность, поскольку удаление дубликатов - достаточно медленная операция). SELECT namest FROM students 1
Информация о работе Понятие данных, принципы построения информационных систем