Общие сведения об SQL. Простейшие SQL-запросы.




SQL означает Структурированный Язык Запросов (Structured Query Language). Это — язык, который дает возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации, сохраняемой в таблицах.

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

Запрос – это команда, которая формируется для СУБД и требует представить определенную информацию. Вообще говоря, такие запросы называются запросами на извлечение информации. Но существуют запросы на создание таблицы, на создание структуры БД, на удаление таблицы и т.д.

Запросы на выборку из базы данных строятся с помощью единственного оператора Select. В этом операторе, кроме того, могут присутствовать при необходимости уточняющие предложения: Where, Group by, Having, Order by. Но использование уточняющего предложения From обязательно.

Для построения SQL- запросов, рассмотрим базу данных, которая моделирует сдачу сессии в некотором учебном заведении. Пусть она состоит из 3 отношений R1, R2, R3 соответственно.

R1 (ФИО, Дисциплина, Оценка); R2 (ФИО, Группа); R3 (Группа, Дисциплина).

ФИО Дисциплина Оценка
Гаджиев МАП  
Грушев МАП  
Грушев БД  
Иванов ИПС  
Иванов БД  
Ивлев МАП  
Ивлев ОС  
Петров ИПС  
Петров МАП  
Петров БД  

R1: R2: R3

ФИО Группа
Гаджиев  
Грушев  
Иванов  
Ивлев  
Петров  
Группа Дисциплина
  БД
  ИПС
  МАП
  МАП
  ИПС
  БД
  ОС
  БД
  МАП
  МАП

 

 

 

Приведем несколько примеров оператора Select.

· Вывести список всех групп (без повторений), где должны пройти экзамены:

Select Distinct Группа

From R3;

· Вывести список студентов, которые сдали экзамен по дисциплине “БД” на “отлично”

Select ФИО

From R1

Where Дисциплина=”БД” and Оценка=5

· Вывести список студентов, которые обучаются не в группах 3941 и 3931

SELECT ФИО

FROM R2

WHERE Группа Not In (3941,3931);

· Вывести список всех студентов, которым надо сдавать экзамены с указанием названий дисциплин, по которым должны проводиться эти экзамены

Select R2.ФИО, R3.Дисциплина

From R2, R3

Where R2.Группа=R2.Группа;

· Список студентов, имеющих несколько двоек

Select distinct a.ФИО

From R1 as a, R1 as b

Where (a.ФИО=b. ФИО) and (a.Дисциплина<>b.Дисциплина) and (a.Оценка=2) and

(b.Оценка=2);

Контрольные упражнения

Написать запросы к вышеприведенной базе данных:

  1. Вывести список всех дисциплин (без повторений), по которым проводятся экзамены
  2. Вывести список студентов, которые имеют оценку “3” по ОС.
  3. Вывести список студентов, которые не сдавали дисциплину по ИПС

 

Функции агрегирования в SQL- запросах

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

Это делается с помощью агрегатных функций.

Вычислим количество студентов, сдавших экзамены по каждой дисциплине:

Select Дисциплина, count (Дисциплина)

From R1

Group by Дисциплина;

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

SELECT count(*)

FROM R1

WHERE Оценка<>2;

 

Контрольные упражнения

Написать запросы к вышеприведенной базе данных:

  1. Найти максимальный бал, полученный студентом Ивлевым.
  2. Количество студентов, сдавшие дисциплину “БД”
  3. Вывести средний бал оценок, полученный каждым студентом

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: