
- •1)Базы данных. История развития.
- •2)Определение бд
- •3)Архитектура базы данных. Иерархическая модель данных.
- •4) Архитектура базы данных. Сетевая модель данных.
- •5)Архитектура базы данных. Реляционная модель данных.
- •6)Система управления базами данных. Функции субд.
- •7)Жизненный цикл бд
- •8)Этапы проектирования базы данных.
- •9)Трехуровневая архитектура базы данных.
- •10)Проектирование базы данных.
- •11) Модель сущность-связь. Правила отношений между сущностями. Формирование связей для отношений 1:1.
- •12)Модель сущность-связь. Правила отношений между сущностями. Формирование связей для отношений 1:м.
- •13)Модель сущность-связь. Правила отношений между сущностями. Формирование связей для отношений м:n.
- •Нормализация бд.
- •15.Транзакция.
- •17.Oltp-системы
- •18.Хранилища данных (Data Warehouse)
- •19.Администрирование бд.
- •20.Защита инф. В бд
- •21. Команды sql защите инф-ии.
- •22.Резервное коп-ие бд.
- •23.Восстановление бд.
- •Структурированный язык создания sql.
- •Удаление избыточных данных.
- •26.Выбор при использование предложений. Примеры простых предикат.
- •33. Явные операции соединения таблиц.
- •34.Традиционные операции над множествами. Декартово произведение, объединение.
- •35.Традиционные операции над множествами. Пересечение и разность.
- •36.Команды описания данных ddl.
- •37) Изменение свойств в таблице Alter table
- •38. Команды модификации языка dml (ввод значений).
- •40. Изменение значение Update.
Удаление избыточных данных.
Dictinct-это аргумент к0ый обеспеч-т уст. 2-ых знач. Из предлож. Select т.е Dictinct следует за тем какие значения выводились раньше и что бы они не были продублированы в списке.
All-дублирование строк. Сохр.
Пример1
вывести все знаечения табл пк.
Select *
from pc
пример2
выести номера всех мод из табл пк
а)с повторение
б)без повторений
a)select model
from pc
б)select distinct model
from pc
26.Выбор при использование предложений. Примеры простых предикат.
т.к из сех табл.обычно интересует опред строки SQL дает нам возможность устанавливать критерии отбора.
Where-предложения команды select к-ый поз-т уст-ть предикаты усл. К-ых может быть верным либо не верным для любой строки табл. Команда извлекает только те строки из талб. Для к-ый это усл. Верно.
Предикаты- пред. Собой выражение(либо одно,либо комбинацию пост-ый с помощью Булевых операций and,or,not)так же в этих комбинациях могут использоваться круглые скобки,для конкретизации порядка вып операций.
Предикаты сравнения пред.собой два выражения соед-ых опер-ом сравнения ><,<=,>=,<>.
Примеры простых предикат.
Сравнение.
Price<100-цена меньше 100
type='laptop'типо продукта яв-ся laptop
cd='24x'-скор-ть 24х
color<>'y'-не цветной принтер
ram=128-опер. Память равен 128
price<=speed*2-цена не привышает уд-го чистоты прцессора.
Пример1.
Получить инф. О чистоте процессора и объем опер. Памяти для комп с ценой ниже 500
select distinct speed,ram
from pc
where price<500
пример2
получ. Инф.о комп имеющих частоту процессора не менее 500мгц.и цену ниже 800.
select *
from pc
where (speed>=500) and (price<800)
пример3
получ.инф. О принтарах к-ые не яв-ся матричными и стоит меньше 300.
select *
from printer
where (type<>matrix) and (price<300).
27. Предикат BETWEEN.-проверяет,попадают ли значения проверяемого выражения в диапазон задаваемый пограничными выр-ями,соединяемыми служебными словами and.
Синтаксис between.
<проверяемое выр-е>[NOT]Between<нач-е значение>and<конечное значение>
Пример8.Найти модель и частоту процессора стоимостью от 400до600$.
Select model,speed
From pc
Where price between 400and600
Предикат IN-опред-т будет ли значение проверяемого выр-я обнаружено в наборе значений кот.либо явно определен,либо с помощью табличного подзапроса.
Табличный подзапрос-это обычный оператор select,кот.создает одну или неск.строк для одного столбца,совместимого по типу данных со значением проверяемого значения.
<пров.значение>[NOT]IN<(подзапрос)>либо<список значений>.
Пример1.Найти модель,частоту процессора и объем жесткого диска для тех комп-ов,кот.комплектуются накопителями размером 10или20.
Select model,speedd,hd
From pc
Where hd in (10,20)
model |
speed |
hd |
1260 1233 1233… |
500 800 750… |
10 20 20… |
Пример2. Найти модель,частоту процессора,объем жесткого диска для тех комп-в,кот.комплектуются накопителями 10или20байтов и выпускают производителем А.
1)Select pc.model,speed,hd
From product,pc
Where (product.model=pc.model) and (hd in (10,20))and(maker=’A’)
2)select model,speed,hd
From pc
Where (hd in (10,20)) and model in (select model
From product
Where maker=’A’)
Model |
1232 1233 1276 … |
model |
speed |
Hd |
1233 1232 1232 1233 |
750 500 450 800 |
20 10 10 20 |
28.Предикат LIKE.-сравнивает строку,указанную в проверяемом выражении с шаблоном, кот-й указан в выр-ии для выч-ий значения строки.
<пров-е знач>[NOT]LIKE<выр-е для вычисления знач.строки>
Предикат LIKE применим только к полям типа char и varchar,чтобы находить подстроки.
В образце разрешается исп-ть 2 трафоретных символа:
-символ подчеркивания можно исп-ть вместо любого единичного символа в проверяемом значении.
-символ %,кот.заменяет набор любых символов.
Шаблон |
описание |
‘abc%’ |
Любые строки,кот.нач-ся с букв a,b,c |
‘abc_’ |
Строки длиной 4 символа,причем 1ми символами строки д.б.abc |
‘%z’ |
Любая послед-сть символов,кот.заканчив-ся символом z. |
‘%Kazan%’ |
Любая послед-сть символов,сод-щий слово Kazan в любом месте строки. |
Пример1.вывести производителя,модель продукции,тип кот.нач-ся с буквы ‘p’.
Select maker,model,type
From product
Where type like ‘p%’
Пример2.с таб printer вывести все модели и типы продукции,типы кот-х заканчив-ся на ‘er’.
Select model,type
From printer
Where type like ‘%er’
Пример3.вывести из таб printer модель и тип той продукции,у кот-й тип состоит из 3х символов(название).
Select model,type
From printer
Where type like ‘_ _ _’
29.Получение итоговых значений с помощью агрегатных функций.
Ф-ция |
Описание |
Count(*) |
Подсчитывает общее число строк в таб-це. |
Count(<имя поля>) |
Подсчитывает кол-во знач-й в указанном столбце. |
Sum(<имя поля>) |
Выч-т сумму знач-й в УК-м ст-це |
Avg(<>) |
Выч ср.знач. в у.с. |
Min(<>) |
Выч.мин.зн.в у.с. |
Max(<>) |
Выч.макс.зн.в у.с. |
Все эти ф-ции возвращают единственное знач-е.Ф-ции count,min,max применимы к любым типам,ф-ции sum и avg исп-ся только для числовых полей.Разница м-у ф-циями count(*) и count(имя поля) состоит в том,что ф-я count(имя поля) при подсчете не учитывает NULL зн-я(пустые ячейки).
Пример.найти min и max цены на ПК.
Select min(price) as min_price
Max(price) as max_price
From pc
Min_price |
Max_price |
350 |
980 |
Все эти ф-ции нельзя представлять в разделе where.
Пример.найти имеющиеся в наличии кол-во комп-в,выпущенных производителем А.
Select count(*)as kol
From pc
Where model in (select model
From product
Where maker=’A’)
Model |
|
1232 1233 1276 … |
|
Kol |
|
8 |
|
Пример.найти кол-во различных моделей,выпускаемых производителем А.
Select count(model)as kol_mod
From product
Where maker=’A’
Kol_mod |
7 |
Пример.найти кол-во имеющихся различных моделей комп-в,выпускаемых производителем А.
Select count(distinct model)as kol
From pc
Where in (select model
From product
Where maker=’A’)
Kol |
2 |
Для того,чтобы при получении статических показателей исп-лись только уникальные знач-я(неповторяющиеся),при аргументе агрегатных ф-ций можно исп-ть параметр distinct.
30.Использование групповых операций. Предложение GROUP BY.предл-е GROUP BY исп-ся для определения групп выходных строк,к кот-м могут применяться агрегатные ф-ции(count,min,max,avg,sum).
Если это предл-е отсутсвует и исп-ся агрегатная ф-я,то эти ф-ции будут применяться ко всему набору строк,кот.удовлетворяют предикату запроса.
Для GROUP BY все зн-я NULL (пустые зня) трактуется как равные,т.е. при группировке по полю,содержащему NULL зн-е все эти строки попадут в одну группу.
Если при наличии предл-я GROUP BY в предл-нии select отсутствует агрегатные ф-ции,то запрос просто вернет по одной строке из каждой группы.
Пример.для каждой модели ПК опр-ть их кол-во и сред.стоимость.
Select model,count(model)as kol,avg(price)as pr
From PC
Group by model
model |
kol |
Pr |
1232 11211 1233 1260 |
4 3 4 1 |
425 850 875 350 |
Сущ-т неск.опред-х правил выполнения агрегатных ф-ций:
1)если в рез-те вып-ния запроса не получено ни одной строки,то исходные данные для выч-ния агрегатной ф-ции отсутствуют.В этом случае рез-том вып-ния ф-ции count будет NULL.
2)аргумент агр-й ф-ции не может сам сод-ть агрегатную ф-цию,т.е.,напр,в одном запросе нельзя получить max ср-нее знач-е.
Max(avg(price))
3)рез-т выполнения ф-ции count есть целое число,др-е агр-е ф-ции наследуют типы данных обрабатываемых значений.
4)если при вып-нении ф-ции sum был получен рез-т,превышающий max зн-е исп-ого типа данных возникает ошибка.
Пример.найти ср-юю стоимость для каждого типа принтеров,вывести тип и ср-юю цену.
Select type,avg(price)as pr
From printer
Group by type
31.Предложение HAVING.-применяется после группировки для опр-ния предиката,фильтрующего группы по зн-ниям агр-ых ф-ций.Это предл-е необходимо для проверки зн-ний,кот.получены с помощью агрегатной ф-ции не из отдельных строк таб-цы,опред-х в предл-нии from,а из групп таких строк.Поэтому проверка не может содержаться в предл-нии where.
Пример.Получить кол-во ПК и ср-юю цену для каждой модели,при условии,что ср.цена меньше 800$.
Select model,count(model)as kol,avg(price)as pr
From pc
Group by model
Having avg(price)<800
model |
kol |
Pr |
1232 1260 |
4 1 |
425 350 |
Замечание.В предл-нии having нельзя исп-ть псевдоним pr,кот. исп-зовался для переименования агр-й ф-ции.
Пример.Из таб.Laptop вывести те модели,кот.больше 2х(кол-во больше 2х).Вывести модель и кол-во.
Select model,count(model)as kol
From laptop
Group by model
Having count(model)>2
Пример.Для каждого произ-ля подсчитать кол-во выпускаемых им моделей.
Select maker,count(model)as kol
From prodect
Group by maker
Пример.Для каждого типа продукции подсчитать кол-во моделей.
Select type count(model)as kol
From product
Group by type.
32.Использование в запросе нескольких источников записей.В разделе from допускается указание неск-х таблиц.Простое перечисление неск-х таб-ц практически не исп-ся и соот-т это операция декартовому произведению,т.е.в результирующем наборе каждая запись одной таб-цы будет сочетаться с каждой записью др-й таб-цы.
-
А
В
а
в
с
d
1
2
2
4
2
1
4
3
Select *
From A,B
A |
B |
C |
D |
1 |
2 |
2 |
4 |
1 |
2 |
3 |
3 |
2 |
1 |
2 |
4 |
2 |
1 |
3 |
3 |
Обычно пересечение таб-ц в разделе from исп-зя с условием соед-ния записей из разных таблиц,кот.указываются в предложениях where.
Пример.В предыдущем примере возьмем условие совпадения значений в полях а и с.
Select*
From A,B
Where a=c
A |
B |
C |
D |
2 |
1 |
2 |
4 |
В данном примере соед-ся только те строки таб-ц,у кот-х в указанных полях находится равные знач-я(эквисоединение).
Пример.Вывести пары моделей ПК,имеющих одинаковые цены.
Select distinct A.model,B.model
From pc as A,PC as B
Where A.price=B.price and A.model<B.model
A.model<B.model-условие,чтобы исключить одинаковые пары.
Переименование в разделе from исп-ся также если там,в разделе from имеется подзапрос.
Пример.найти номер модели и произ-ля ПК,имеющих цену меньше 600.
Select pc.model,maker
From pc,(select maker,model
From product
Where type=’pc’)as A
Where price<600 and pc.model=A.model.
Maker |
Model |
A A B E E E |
1232 1233 1121 1260 2112 2113 |
В данном случае в предложении select нельзя использ-ть данные таб-цы product,т.к.product уже не исп-ся,а вместо нее исп-ся подзапрос А.