Слайд 1Лекция 6.
Создание SQL-запросов.
Слайд 2 SQL (ˈɛsˈkjuˈɛl; англ. Structured Query Language — «Структурированный язык запросов») — универсальный компьютерный язык, применяемый для создания,
модификации и управления данными в реляционных базах данных.
Слайд 3 Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять
следующий набор операций:
создание в базе данных новой таблицы;
добавление в таблицу новых записей;
изменение записей;
удаление записей;
выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
изменение структур таблиц.
Слайд 4 Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и
управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.
Слайд 5Различают следующие типы запросов:
запросы на создание или изменение в базе данных
новых или существующих объектов;
запросы на получение данных;
запросы на добавление новых данных (записей)
запросы на удаление данных;
обращения к СУБД.
Слайд 6 Все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы
делятся на:
запросы, оперирующие самими таблицами (создание и изменение таблиц);
запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
Слайд 7 Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с
указанием:
типа хранимых в каждом поле значений;
связей между таблицами (задание первичных и вторичных ключей);
информации, необходимой для построения индексов.
Слайд 8Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк,
с которым можно осуществить одну из трёх операций:
просмотреть полученный набор;
изменить все записи набора;
удалить все записи набора.
Слайд 9Язык SQL представляет собой совокупность
операторов,
инструкций,
и вычисляемых функций.
Слайд 10Язык определения данных (Data Difinition Language, DDL)
Язык запросов данных (Data Query
Language, DQL)
Язык манипуляции с данными (Data Manipulation Language, DML)
Язык контроля данных (Data Control Language, DCL)
Команды контроля транзакций.
Слайд 11Преимущества:
Независимость от конкретной СУБД;
Наличие стандартов;
Недостатки:
Несоответствие реляционной модели данных;
Сложность;
Отступления от стандартов;
Сложность работы
с иерархическими структурами.
Слайд 12 Инструкция SQL начинается с команды - ключевого слова, описывающего действие, выполняемое
инструкцией.
Типичными являются команды CREATE (создать), INSERT (добавить), SELECT (выбрать). DELETE (удалить)
Слайд 13 Следом за командой указывается одно или несколько предложений. Предложение описывает данные,
с которыми должна работать инструкция, или уточняет действие, выполняемое инструкцией. Предложения в инструкции делятся на обязательные и необязательные.
Каждое предложение начинается с ключевого слова, например — WHERE (где), FROM (откуда), INTO (куда).
Слайд 14 У каждого объекта в базе данных есть уникальное имя. Имена используются
в инструкциях SQL и указывают, над каким объектом базы данных инструкция должна выполнить действие.
В инструкциях SQL могут использоваться как полные имена объектов, так и короткие. Полное имя таблицы (в отличие от короткого) содержит имя пользователя и короткое имя таблицы, разделенные точкой:
Слайд 16
Типы данных
Целые числа (INT, SMALLINT).
Десятичные числа (NUMERIC, DECIMAL).
Числа с
плавающей запятой (REAL, FLOAT).
Строки символов постоянной длины (CHAR).
Строки символов переменной длины (VARCHAR).
Слайд 17
Типы данных
Денежные величины (MONEY, SMALLMONEY).
Дата и время (DATETIME, SMALLDATETIME).
Булевы
величины (BIT).
Длинный текст (TEXT).
Слайд 18Встроенные функции
Встроенные функции, доступные при работе с SQL, можно условно разделить
на следующие группы:
математические функции;
строковые функции;
функции для работы с величинами типа дата-время;
функции конфигурирования;
системные функции;
функции системы безопасности;
функции управления метаданными;
статистические функции.
Слайд 19
Команда создания таблицы — CREATE TABLE
CREATE TABLE имя_таблицы
({ | }
[, . . ., {<определение_столбца> | <определение_ограничения_таблицы>} ])
Слайд 20
Описание столбцов
Синтаксис:
[] [,...,]
Слайд 21
Таблица «Студенты»:
CREATE TABLE Студенты
(ID_Студент INTEGER NOT NULL,
Фамилия CHAR(30) NOT
NULL,
Имя CHAR (15) NOT NULL,
Отчество CHAR(20) NOT NULL,
Номер_группы INTEGER NOT NULL,
Адрес CHAR(30),
Телефон CHAR(8),
PRIMARY KEY (ID_Студент) )
Слайд 23
Таблица «Дисциплины»:
CREATE TABLE Дисциплины
(ID_Дисциплина INTEGER NOT NULL,
Наименование CHAR(40)
NOT NULL,
PRIMARY KEY (ID_Дисциплина),
UNIQUE (Наименование) )
Слайд 25
CREATE TABLE Кадровый_состав
(ID_Преподаватель INTEGER NOT NULL,
Фамилия CHAR(30) NOT NULL,
Имя
CHAR(15) NOT NULL,
Отчество CHAR(20) NOT NULL,
Должность CHAR(20) NOT NULL,
Кафедра CHAR(3) NOT NULL,
Адрес CHAR(30), Телефон CHAR(8),
PRIMARY KEY (ID_Преподаватель))
Слайд 27
CREATE TABLE Учебный_план
(ID_План INTEGER NOT NULL,
ID_Дисциплина NTEGER NOT NOLL,
Семестр INTEGER NOT
NULL,
Количество_часов INTEGER,
ID_Преподаватель INTEGER,
PRIMARY KEY ID_План) ,
CHECK((Семестр >= 1) OR (Семестр <= 10)))
Слайд 29
CREATE TABLE Сводная_ведомость
(ID_Студент INTEGER NOT NULL,
ID_план INTEGER NOT NULL,
Оценка INTEGER NOT NULL,
Дата_сдачи
DATETIME NOT NULL,
PRIMARY KEY (ID_Студент, ID_Дисциплина),
CHECK ((Оценка >1) OR (Оценка <= 5)))
Слайд 31
Структура запроса на выборку:
SELECT[ALL|DISTINCT|DISTINCTROW][TOP n PERCENT]]
FROM
>
[WHERE <условие отбора строк>]
[GROUP BY <список полей, по которым будут группироваться записи>]
[HAVING <условие отбора групп записей>]
[ORDER BY <определение сортировки записей>];
Слайд 32
FROM
[{INNER/ LEFT/ RIGHT }JOIN
< связанная таблица>
ON <условие объединения >]
Слайд 34Операторы для создания выражений.
Арифметические операторы
Слайд 35Операторы для создания выражений.
Операторы сравнения.
Слайд 36Операторы для создания выражений.
Логические операторы
Слайд 37Операторы для создания выражений.
Операторы конкатенации.
Слайд 38Операторы для создания выражений.
Операторы сравнения с образцом.
Слайд 40Select Count(ID_Студент)As Количество студентов From Студенты;
SELECT *
FROM Студенты
ORDER BY Номер_группы;
SELECT Фамилия,
Имя, Отчество, Номер_группы, Год_поступления
FROM Студенты
WHERE Год_поступления < 2011;
Слайд 42
SELECT Наименование, Семестр, Количество часов
From Ученый план INNER JOIN Дисциплины
ON
Учебный_план.ID_Дисциплина= Дисциплины.ID_Дисциплина
WHERE Количество_часов>60;
Слайд 44
SELECT Наименование, Семестр, Количество_часов
FROM Учебный_ллан INNER JOIN Дисциплины
ON
Учебный_план.ID_Дисцишшна = Дисциплины.ID__Дисциплина WHERE Количество_часов BETWEEN 50 AND
100;
Слайд 45
SELECT Наименование, Семестр, Количество_часов
FROM Учебный_план INNER JOIN Дисциплины
ON
Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина WHERE Наименование IN ('Английский язык', 'Физическая культура');
Слайд 46
SELECT Наименование, Семестр, Количество часов
FROM Учебный_план, Дисциплины
WHERE (Учебный_план.ID_Дисциплина
= Дисциплины.ID_Дисциплина) AND (Количество_часов > 60) AND (Семестр = 1);
Слайд 47
Синтаксис команды SELECT...INTO следуюищий:
SELECT { [[AS] ] [ .,
n] }
INTO <имя_новой_таблицы> FROM {<имя.исходной_таблицы> [,..„n]}
Слайд 48
SELECT ID_Студент, Адрес, Телефон
INTO Контакты
FROM Студенты;
Слайд 49
Вставка ОДНОЙ строки:
INSERT [INTO] [()] VALUES ()
Слайд 50
INSERT Сводная_ведомость VALUES (10, 3, 5)
INSERT INTO Сводная_ведомость (ID_Дисциплина, ID_Студент)
VALUES (3, 10)
Слайд 51
DELETE
[WHERE ];
DELETE Учебный_план
WHERE (Отчетность = 'з')
AND (Семестр = 1);
Слайд 52
UPDATE Учебный_план
SET Количество_часов =Количество__часов + 2
WHERE (Отчетность= 'Э')
AND (Семестр = 1)
SELECT *
FROM Учебный_план
WHERE (Отчетностью 'э') AND (Семестр = 1)