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

Приклади:

  1. додати дисципліну „Математика” під номером 6.

  2. Додати групу Ф-01 під № 18

INSERT INTO GRUPA (nom_gr, shifr,name,kurs)

Values (18, ‘Ф-01’, „Фінансово-економічний факультет”,2);

  1. Додати студента Іванова І.І. під №10, якщо він вчиться в групі БО_10 і не отримує стипендію

INSERT INTO STUDENT (nom_st, nom_gr, fio, n zal, stip)

Select 10, „Іванов І.І.”, „БО-35”, nom_gr, 0

From Gru

Where shifr= „БО-10”

Оператор delete

DELETE вилучає інформацію із таблиць БД.

Структура оператора:

DELETE * FROM таблиці БД

[Where умова_вилучення]

Приклад:

Вилучити студентів, в яких номер групи =10

DELETE * FROM STUDENT

Where nom_gr=10;

Вилучити оцінки, поставлені після 25 вересня 99 року:

DELETE * FROM Ozenka

Where data>09/25/99

DELETE * FROM STUDENT

Where stip=0;

Приклади:

1 Вилучити трійки, поставлені після 31 вересня 2001 р.

DELETE * FROM Ozenka

Where oz=3 AND data >09-31-01

2 Вилучити всіх студентів з таблиці STUDENT, які навчаються в групі ЕК-13

DELETE STUDENT.* from STUDENT

INNER JOIN GRUPA ON STUDENT.nom_gr=Gru. Nom_gr

Where Gru.shifr=’E-13’;

3Вилучити дані про оцінки, поставлені до 25 травня 2001 р. по дисципліні „Фізика”

DELETE OZENKA.* From OZENKA

INNER JOIN DIS ON OZENKA. Nom_dis=Dis. Nom_dis

Where OZENKA. Data<=05-25-01AND DIS. Name=’ФІЗИКА’

Оператор update

UPDATE використовується для заміни значень в існуючих рядках таблиці.

Структура оператора:

UPDATE таблиці БД SET (ім.’я поля=значення поля [,…])

Where умова_відбору

Примітка:

  1. Може бути вказано кілька полів та їх значень через кому. Значенням поля може бути текст, число, математичний вираз, функція чи Select оператор, який повертає одне значення.

  2. Умова відбору строчок записується по тим же правилам, що і в операторі Select

Приклад:

Замінити всі 4, поставлені 1 жовтня 98 на 5

UPDATE OZENKA

SET oz=5 Where oz=4 AND data= 10/01/98

Зменшити стипендію на 5% у всіх студентів:

UPDATE Student

Set stip=stip-stip*0,05

Зменшити вартість навчання на 2 курсі всіх спеціальностей на 7%

Замінити прізвище Петрова І.І. на Іванова І.І.

UPDATE Student

Set fio=”Іванов І.І.”

Where fio=”Петров І.І.”

Приклади:

  1. Зменшити стипендію на 7% для студентів групи №3

UPDATE Student

Set stip=stip-stip*0,07

Where nom_gr=3

2 Замінити оцінку 2 на 4 по дисципліні „Фізкультура”

UPDATE Ozenka

Inner join Dis On Ozenka. Nom_dis=Dis. Nom_dis

Set Ozenka. Oz=4

Where Ozenka. Oz=2 And Dis. Name= ‘Фізкультура’

3 Збільшити оцінку на 1 бал для студентів, у яких стипендія не менше 30 грн.

UPDATE Ozenka

Inner join Student On ???

Set Ozenka.oz=V. oz+1

Where Student. Stip>=30;

Приклади

1 Вибрати факультети в назві яких є буквосполучення „чний”

SELECT * From Gru

Where name Like ‘*чний’

2 Вибрати студентів з однаковим ПІП

SELECT fio From Student

Group By fio Having count (*)>1

3 Замінити оцінку 4 на 5 по дисципліні з №15 або 9

Update Ozenka Set oz=5

Where oz=4 AND nom_dis In (15,9)

4 Підрахувати кількість оцінок, отриманих протягом травня 99 р студентом №15

Select count (*) AS [кількість оцінок] From Ozenka

Where nom_st=15 AND data Between 05/01/99AND05/31/99

5 Вилучити з таблиці гру всі групи 5-курсу будівельного факультету

Delete* From Gru

Where Kurs=5 AND name=’ будівельного факультету’

6 Для кожного студента підрахувати середню стипендію

Select AVG (stip) AS [середню стипендію], fio

From Student

Group BY fio

7 Додати в таблицю дисциплін дисципліну „Фіз.-ра” під №22

Insert Into Dis

Values (22, „Фіз.-ра”)

8 Вибрати дисципліни, назва яких не розпочинається з буквосполучення „Мат”

Select * From Dis

Where name Not Like “Мат*”

9 Замінити прізвище у студентки Іванової А.А. на Петрову А.А.

Update Student

Set fio=” Петрову А.А.”

Where fio=’ Іванової А.А.’

10 Скільки двійок було виставлено в 2 півріччі 97р.

Select count (*) As [k-t 2]

From Ozenka

Where oz=2 And data Between 07/01/97AND12/31/97

11 Додати для кожного студента оцінку 4 по дисципліні з №8

Insert Into Ozenka (nom_st, nom_dis, oz)

Select nom_st,8,4 From Student

12 Вилучити з таблиці оцінок всі 3, поставлені 20 березня 99р.

Delete* From Ozenka

Where oz=3 And data= 03/20/99

Формування запитів при роботі з декількома таблицями

Зв’язок між таблицями-це відношення, установлення між полями (стовпчиками) двох таблиць. Існують зв’язки з відношенням „один-до-одного” і „один до багатьох”.

Першим кроком при цьому є визначення зв’язків між таблицями. Після цього стає можливим створення запитів, форм і звітів, у яких виводяться дані з декількох таблиць відразу.

Як працює зв’язок між таблицями? Зв’язок між таблицями встановлює зв’язки між однаковими значеннями в ключових полях і між полями різних таблиць, що мають однакові імена. У більшості випадків із „ключем” однієї таблиці, що є унікальним ідентифікатором кожного запису, зв’язується „зовнішній ключ” іншої таблиці.

При відношенні „один до багатьох” запис у таблиці А може мати не більш одного пов’язаного запису в таблиці В і навпаки. Цей тип зв’язку використовується не дуже часто, оскільки такі дані можуть бути поміщенні в одну таблицю.

Зв’язок із відношенням „один-до-багатьох”

Є найбільш часто використовуючим типом зв’язку між таблицями. У такому зв’язку кожному запису в таблиці А можуть відповідати декілька записів у таблиці В, а запис у таблиці В не може мати більш одного відповідного їй запису в таблиці А

Наприклад між таблицями Student і Gru існує відношення один до багатьох. В кожній групі можуть навчатись різні студенти, але кожній групі відповідає єдиний порядковий номер.

Таблиці можна зв’язати при наявності в обох таблиць полдя однакового типу. Наприклад: таб. Student і Gru з’єднуються через поля nom_gr.

Якщо потрібно підрахувати к-ть студентів, які навчаються в групі БО-89, то в операторі Select після слова Where прирівнюються поля, по яким відбувається зв’язок

Select Dictinctrow count (*) AS килькисть From Student, Gru

Where Student. Nom_gr= Gru. Nom_gr AND Gru.shifr= ‘БО-89’

GRU

Nom_gr

shifr

kurs

1

ФК-84

2

2

85

2

3

86

2

4

87

2

5

БО-89

2

STUDENT

fio

Nom_gr

Абрамо

2

Іванов

5

Петров

5

При з’єднані таблиць поля з цих таблиць, які мають однакові значення спільного поля, з’єднуються в одну таблицю.

Нова таблиця містить 3 рядка

Nom_gr

shifr

kurs

fio

5

БО-89

2

Іванов

5

БО-89

2

Петров

5

БО-89

2

Сидоров

У більшості випадків зв’язують ключове поле (подане в списку полів полу жирним шрифтом) однієї таблиці з відповідним йому полем (яке має те ж ім.’я), що називається полем зовнішнього ключа в другій таблиці. Пов’язані поля не обов’язково повинні мати однакові імена, проте вони повинні мати однакові типи даних і мати вміст одного типу.

Перевага запитів полягає в тому, що вони дозволяють об’єднувати дані або виконувати дії з даними з декількох таблиць або запитів. При додаванні в запит декількох таблиць варто перевірити, чи їхні списки полів пов’язані лініями об’єднання.

Якщо потрібно, щоб у запиті об’єднувалися таблиці, не пов’язані лініями зв’язку, необхідно в режимі SQL створити інструкцію SQL.

Після слова Select перед списком полів вказують предикти відбору ALL, Distinct, Distinct Row ,або TOP. Розглянемо призначення кожного з предикатів ALL. Якщо оператор Select не містить ні одного предиката, то вважається, що використовується предикат ALL. При його використанні оператор відбирає всі записи які відповідають умовам, заданим в операторі. Приведені приклади операторів еквівалентні, вони видають всі записи з таблиці STUDENT.

Наприклад: відсортувати студентів по прізвищам

Select ALL* From STUDENT

Order By fio

Select * From STUDENT

Order By fio

Distinct виключає записи, які містять в відібраних полях значення, що повторюються. Щоб запис був включений в результат виконання запиту, значення в кожному полі, включеному в Select, повинні бути унікальними. Наприклад: в таб. STUDENT є тезки. Якщо два записи містять значення „Іванов” в полі fio, то наступний оператор відбере тільки один з них:

Select Distinct fio From STUDENT

Якщо не вказувати предикат Distinct, цей запис відбере 2 записи про Іванова.

Distinct Row не виключає дані, які основані на повністю однакових записах, а не окремих полях, що повторюються. Наприклад: якщо в табл. STUDENT існують чотири записи про Іванова, але кожний студент має свій порядковий номер, то створений запит буде відбирати кожного Іванова окремо, але не більше одного разу.

Наприклад відібрати ПІП студенті які отримували 3

Select Distinct Row fio From STUDENT, Ozenka

Student

Nom_st

Fio

1

Абрамов

2

Іванов

3

Сидоров

4

Абрамов

Ozenka

Nom_st

oz

1

2

1

5

2

5

2

5

2

4

4

3

4

3

Select All Student. Fio

fio

Абрамов

Абрамов

Іванов

Іванов

Іванов

Абрамов

Абрамов

Select Distinct Student fio

From Student, Ozenka

Where Student Nom_st= Ozenka. Nom_st

Fio

Абрамов

Іванов

Select Distinct Row Student. Fio

From Student, Ozenka

Where Student Nom_st= Ozenka. Nom_st

fio

Абрамов

Іванов

Абрамов

Select Top 5 Studen. fio

From Student, Ozenka

Where Student Nom_st= Ozenka. Nom_st

Student

Nom_st

fio

1

Іванов

2

Петров

3

Сидоров

4

Петров

Ozenka

Nom_st

oz

1

2

1

3

2

4

2

4

2

5

3

2

4

2

4

2

Select ALL Student. Fio

From Student, Ozenka

Where Student. Nom_st= Ozenka. Nom_st

fio

Іванов

Іванов

Петров

Петров

Петров

Сидоров

Петров

Петров

Select Distinct Row Student. Fio

From

fio

Іванов

Петров

Сидоров

Петров

Select Top 5 Student. Fio

From Student

Where

Order By Oz

Top повертає визначне число записів, що знаходяться на початку або наприкінці діапазону, описаного за допомогою опції Order By. Така інструкція SQL дозволяє одержати список 25 кращих студентів, які отримують найбільшу стипендію:

Select Top 25 Student. Fio

From Student

Where

Order By stip DESC

Якщо слово Order By будуть опущені, запит поверне довільний набір із 25 записів із таблиці Student, що задовольняють умові Where . Значення, що вказується після предиката Top повинно бути числовим значенням без знака типу Integer.

Після слова From записується список таблиць, з яких відбираються дані.

Таблиці вказуються через кому. При звертанні до імен полів обов’язково необхідно вказувати імена таблиць і через крапку імена полів.

Якщо дві таблиці, з яких відбирається інформація, не мають загального поля, треба шукати зв’язок через 3 таблицю. В цьому випадку після слова Where

два зв’язки. Таким чином, зв’язків завжди на один менше, ніж таблиць.