Основи SQL

Загальна характеристика, особливості та переваги мови SQL. Захист бази даних. Операції та агрегатні функції. Ідентифікатори користувачів і право володіння. Створення горизонтального представлення. Шифрування, копіювання, авторизація та аутентифікація.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык украинский
Дата добавления 16.11.2018
Размер файла 96,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

ПРИКАРПАТСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ ВАСИЛЯ СТЕФАНИКА

Навчальний посібник

Основи sql

Б.М. Дрінь

О.В. Козич

Івано-Франківськ

Прикарпатський національний університет імені Василя Стефаника

2012

УДК 681.3.07

Д95

ББК 32.973.26

Рекомендовано до друку Вченою радою факультету математики та інформатики Прикарпатського національного університету імені Василя Стефаника, протокол №2 від 16.10.2012р.

Рецензенти:

Шарин С.В. доцент кафедри математичного та функціонального аналізу Прикарпатського національного університету імені Василя Стефаника

Шашкевич О.П. доцент кафедри комп'ютерної та програмної інженерії ПВНЗ “Галицька академія”

Дрінь Б.М.

Основи SQL: Навч.посібн. / Б.М. Дрінь, О.В. Козич - Івано-Франківськ, Прикарпатський національний університет, ВДВ ЦІТ “Плай”, 2012. - с.

В посібнику дано загальну характеристику і описано стандарт мови SQL.

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

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

Передмова

Всі мови маніпулювання даними, створені до появи реляційних баз даних (БД) були орієнтовані на операції з даними, представленими у вигляді локальних інформаційних файлів лінійної структури. Це вимагало від користувачів детального знання організації збереження даних і значних зусиль для вказання не тільки того які дані потрібно, але де вони розміщені і як крок за кроком їх отримати. В той же час реляційні мови, це мови орієнтовані на операції з даними представленими у вигляді сукупності логічно взаємозв'язаних таблиць.

Будь-яка мова роботи з реляційними базами даних повинна надавати користувачеві наступні можливості:

с створювати бази даних у вигляді таблиць з повним описом їх структури;

с виконувати основні операції маніпулювання даними;

с виконувати різного виду запити для отримання потрібних даних.

Крім того, мова роботи з базами даних повинна вирішувати всі вказані вище завдання при мінімальних зусиллях з боку користувача та мати по можливості досить просту структуру і синтаксис. Вона має бути універсальною, тобто відповідати деякому визнаному стандарту, що дозволить використовувати один і той же синтаксис і структуру команд при переході від однієї системи управління базами даних (СУБД) до іншої. Мова яка задовольняє практично всім цим вимогам є мова SQL (Structured Query Language - мова структурованих запитів).

Даний посібник містить інформацію про основні положення мови SQL, синтаксис команд даної мови. Приклади і цілісність Матеріал даного посібника пройшов апробацію при вивченні навчального курсу “Бази даних та інформаційні системи“ студентами факультету математики та інформатики Прикарпатського національного університету імені Василя Стефаника.

1. Розвиток і загальна характеристика мови

Мова SQL є прикладом універсальної прикладної мови, яка застосовується як для створення так і для зміни даних, а також керування ними у реляційних БД. Вона включає тільки команди визначення та маніпулювання даними і не містить команд управління ходом обчислень. Мова SQL може використовуватися двома способами. Перший передбачає інтерактивну роботу, що полягає у введенні користувачем з клавіатури окремих SQL-операторів. Другий полягає у впровадженні SQL-операторів в клієнтські програми.

Мова SQL - перша і практично єдина стандартна мова для роботи з базами даних, яка набула достатньо широкого поширення. Створення мови сприяло не лише виробленню необхідних теоретичних основ, але і підготовці успішно реалізованих технічних рішень. Це особливо справедливо відносно оптимізації запитів, методів розподілу даних і реалізації засобів захисту. На початку 70-х років двадцятого століття працівниками компанії IBM була розроблена експериментальна СУБД «System R», основою якої була мова SEQUL (Structured English Query Language - структурована англійська мова запитів). Мова SEQUL з часом перейменована у SQL. У 1986 році був прийнятий перший ANSI (American National Standards Institute) стандарт мови SQL який називався «ANSI X3.115-1986». Метою розробки було створення простої, не процедурної мови, якою міг би скористатись будь-який користувач, що немає навиків програмування. Перша версія стандарту мови SQL-86 була прийнята ANSI і ISO (Міжнародна Організація Стандартів) і затверджена у 1987 році. У 1989 році вийшов стандарт SQL-89, де були внесені незначні зміни у порівнянні з попереднім. Із розвитком мови у 1992 році прийнято новий розширений стандарт із скороченою назвою SQL-92 або SQL-2. У 1999 році вийшов стандарт SQL-99 (SQL-3), де додані регулярні вирази, рекурсивні запити, тригери, деякі об'єктно-орієнтовані нововведення. У 2003 році в SQL-99 (SQL-3) додані XML - залежні нововведення.

На даний час мова SQL реалізована трьома способами:

с інтерактивний або прямий виклик. Набір операторів SQL передається безпосередньо програмі управління базами даних. Така програма відповідає на запит, відображаючи результат, якщо це можливо;

с пакетно-модульна обробка. Програмістом створюються пакетні файли, що складаються з операторів SQL, які можуть бути виконані додатком;

с вмонтований або вкладений SQL. Тут команди SQL генеруються прикладною програмою або вмонтовуються у програмний код, що робить ці програми більш ефективними. Такий варіант реалізації SQL використаний, зокрема, в СУБД ACCESS.

шифрування авторизація копіювання ідентифікатор

2. Особливості та переваги мови SQL

Мова SQL є основою багатьох СУБД, оскільки відповідає за фізичну структуризацію і запис даних на диск та їх зчитування з диску, дозволяє приймати SQL-запити від інших компонентів СУБД та додатків користувача.

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

Основні переваги мови SQL:

стандартність - використання мови SQL в програмах стандартизованих міжнародними організаціями;

незалежність від конкретних СУБД - всі поширені СУБД використовують SQL, оскільки реляційну базу даних можна перенести з однією СУБД на іншу з мінімальними доопрацюваннями;

можливість перенесення з однієї обчислювальної системи на іншу, оскільки додатки, створені за допомогою SQL, можуть використовуватись як для локальних БД, так і для багатокористувацьких систем;

реляційна основа мови - SQL є мовою реляційних БД;

можливість створення інтерактивних запитів - SQL забезпечує користувачам негайний доступ до даних, при цьому в інтерактивному режимі можна отримати результат запиту за дуже короткий час без написання складної програми;

можливість програмного доступу до БД - мову SQL легко інтегрується в програми, яким необхідно звертатися до баз даних. Одні і ті ж оператори SQL використовуються як для інтерактивного, так і програмного доступу, тому частини програм, що містять звернення до БД, можна спочатку перевірити в інтерактивному режимі, а потім вбудовувати в програму;

забезпечення різного представлення даних - за допомогою SQL можна задати таку структуру даних, що той або інший користувач бачитиме різні їх представлення. Крім того, дані з різних частин БД можуть бути скомбіновані і подані у вигляді однієї простої таблиці, а значить, представлення придатні для посилення захисту БД і її налаштування під конкретні вимоги окремих користувачів;

можливість динамічної зміни і розширення структури БД - мова SQL дозволяє маніпулювати структурою БД, тим самим забезпечуючи гнучкість з точки зору пристосованості БД до вимог предметної області, що змінюються;

підтримка архітектури клієнт-сервер - SQL - один з кращих засобів для реалізації програм на платформі клієнт-сервер. SQL служить сполучною ланкою між клієнтською системою, що взаємодіє із користувачем, і серверною системою, БД, що управляє, дозволяючи кожній з них зосередитися на виконанні своїх функцій.

3. Групи команд мови SQL

Команди мови SQL за функціями можна поділити на наступні групи:

DQL (Data Query Language) - мова запиту даних, яка використовується для пошуку та вибору даних із БД та їх відображення (SELECT);

DDL (Data Definition Language) - мова опису даних, яка включає оператори, що описують структуру таблиць і режим відображення даних, команди для зміни структури таблиць, створення та вилучення індексів (CREATE TABLE, CREATE VIEW, тощо);

DML (Data Manipulation Language) - мова маніпулювання даними, команди якої дозволяють додавати та вилучати рядки з таблиць, вносити зміни значень полів (INSERT, DELETE, UPDATE);

TPL (Transaction Processing Language) - мова обробки транзакцій, що включає команди, які об'єднують декілька команд DML;

CCL (Cursor Control Language) - мова управління курсором, яка містить команди, що дозволяють виділити для обробки фрагмент результатного набору записів;

DCL (Data Control Language) - мова управління даними, яка забезпечує виконання адміністративних функцій надання та відміни прав доступу до всієї бази, набору таблиць тощо.

4. Мова SQL -- типи даних та функції

4.1 Типи даних SQL

Дані - це сукупна інформація, що зберігається в базі даних у вигляді одного з декількох різних типів. За допомогою типів даних встановлюються основні правила для даних, що містяться в конкретному стовпці таблиці, у тому числі розмір пам'яті, що виділяється для них.

Основні типи даних -- символьні, числові, дата та час.

4.1.1 Символьні дані

Складаються з послідовності символів, що входять у визначений набір символів створеної БД. Найчастіше використовуються набори символів ASCII, UTF, тощо.

SQL визначає два первинних символьних типи: із строго заданою кількістю символів (character) та змінною кількістю символів (character varying).

Для визначення даних символьного типу використовується наступний синтаксис:

CHARACTER VARYING (<довжина>) | VARCHAR (<довжина>)

та

CHARACTER (<довжина>) | CHAR (<довжина>)

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

Крім цього, у конкретних реалізаціях SQL існують типи для збереження текстових даних “необмеженої” (визначається архітектурою ЕОМ та особливістю ОС) довжини, наприклад MEMO чи TEXT.

4.1.2 Бітовий тип даних

Використовується для визначення бітових рядків, тобто послідовності двійкових цифр (бітів), кожна з яких може мати значення 0 або 1. Дані бітового типу визначаються за допомогою наступного синтаксису:

BIT [VARYING] (<довжина>)

4.1.3 Числові типи даних

Дані числового типу визначаються точністю і довжиною дробової частини. Точність задає спільну кількість значущих десяткових цифр числа, в яку входить довжина як цілої частки, так і дробової, але без врахування самої десяткової крапки. Масштаб вказує кількість дробових десяткових розрядів числа.

Синтаксис:

SMALLINT{ INTEGER | INT }BIGINT { NUMERIC | DECIMAL | DEC } [(<точність>[,<масштаб>])]

Типи NUMERIC і DECIMAL призначені для зберігання чисел в десятковому синтаксисі. За замовчуванням довжина дробової частки дорівнює нулю, а точність, що приймається за умовчанням, залежить від версії SQL. Тип INTEGER (INT) використовується для зберігання великих додатних або від'ємних цілих чисел. Тип SMALLINT - для зберігання невеликих додатних або від'ємних цілих чисел. В цьому випадку використання зовнішньої пам'яті істотно зменшується.

Дійсні числа або числа з плаваючою крапкою представляються за допомогою мантиси, помноженої на певний степінь десятки (порядку), наприклад: 10Е3, +5.2Е6, -0.2Е-4. Для визначення даних дійсного типу використовується Синтаксис:

{ FLOAT | REAL } [(<точність>)]

DOUBLE PRECISION

Параметр точність задає кількість значущих цифр мантиси. Точність типів REAL і DOUBLE PRECISION залежить від конкретної реалізації.

4.1.4 Тип даних «дата/час»

Даний тип використовується для визначення часу з деякою встановленою точністю. Стандарт SQL підтримує наступний cинтаксис:

{ DATE | TIME | TIMESTAMP } [<точність>][WITH TIME ZONE]

Тип даних DATE використовується для зберігання календарних дат, що включають поля YEAR (рік), MONTH (місяць) і DAY (день). Тип даних TIME - для зберігання відміток часу, що включають поля HOUR (години), MINUTE (хвилини) і SECOND (секунди). Тип даних TIMESTAMP - для спільного зберігання дати і часу. Параметр <точність> задає кількість дробових десяткових знаків, що визначають точність збереження значення в полі SECOND. Якщо цей параметр опускається, то за замовчуванням його значення, для стовпців типу TIME, встановлюється рівним нулю (тобто зберігаються цілі секунди), тоді як для полів типу TIMESTAMP він встановлюється рівним 6-и (тобто відмітки часу зберігаються з точністю до мілісекунд). Наявність ключової фрази WITH TIME ZONE визначає використання полів TIMEZONE HOUR і TIMEZONE MINUTE, тим самим задаються година і хвилини зміщення зонального часу по відношенню до універсального координатного часу (час за Гринвічем). Дані типу INTERVAL використовуються для представлення періодів часу.

4.2 Операції та агрегатні функції.

При створенні запитів на мові SQL використовуються реляційні та булеві оператції, спеціальні операції умов, а також агрегатні функції.

4.2.1. Реляційні операції

Реляційні операції - це математичні символи, які вказують на певний тип порівняння двох значень. SQL використовує наступні операції:

=

рівне;

>

більше ніж;

<

менше ніж;

>=

більше або рівне;

<=

менше або рівне;

<>

не дорівнює.

Ці операції мають стандартні значення для числових значень. Для символьних значень їх визначення залежить від синтаксису перетворення ASCII або EBCDIC.

4.2.2 Булеві операції

Основні булеві операції (NOT, AND, OR) Булеві вирази набувають значення істина або хибність згідно таблиці

a

b

a AND b

a OR b

TRUE

TRUE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

TRUE

NULL

NULL

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

NULL

FALSE

NULL

NULL

NULL

NULL

NULL

a

NOT a

TRUE

FALSE

FALSE

TRUE

NULL

NULL

Мова SQL дозволяє використовувати також спеціальні операції, а саме:

IN - визначає набір значень, в який дане значення може бути включене або ні (A IN (1, 2, 3, 4, 5); B IN (`X', `Y', `Z'));

BETWEEN - визначає діапазон значень, куди дане значення може входити (A BETWEEN 1 AND 5; B BETWEEN `X' AND `Z'). Тут числа '1' і '5'та символи 'X' і 'Z' входять у діапазон;

LIKE - використовується тільки для даних символьних типів, де у значеннях шукає входження рядка; при використанні символ (_) він заміняє будь-який один символ, а символ (%) заміняє послідовність будь-яких символів. Наприклад вираз

Text LIKE `S_'

дасть значення істина, якщо значення текстового поля Text починається з літери S, а другий символ довільний.

Text LIKE `S%'

дасть значення істина, якщо значення поля Text починається з літери S,а решту - будь які символи;

IS NULL - вказує на невизначене значення.

4.2.3 Агрегатні функції

Агрегатні функції видають конкретне значення для всієї вибірки.

Такими функціями є:

COUNT - видає кількість вибраних значень;

SUM - видає арифметичну суму вибраних значень;

AVG - видає середнє значення вибраних значень;

MAX - видає найбільше значення серед вибраних значень;

MIN - видає найменше значення серед вибраних значень.

Математики

4.2.4 Додаткові функції і оператори

Оператори

Operator

Description

Example

Result

+

Addition

2 + 3

5

-

Subtraction

2 - 3

-1

*

Multiplication

2 * 3

6

/

division (integer division truncates results)

4 / 2

2

%

modulo (remainder)

5 % 4

1

^

Exponentiation

2.0 ^ 3.0

8

|/

Square root

|/ 25.0

5

||/

Cube root

||/ 27.0

3

!

Factorial

5 !

120

@

Absolute value

@ -5.0

5

&

Побітне AND

91 & 15

11

|

Побітне OR

32 | 3

35

#

Побітне XOR

17 # 5

20

~

Побітне NOT

~1

-2

<<

Побітний зсув вліво

1 << 4

16

>>

Побітний зсув вправо

8 >> 2

2

Математичні функції

Function

Return Type

Description

Example

Result

abs(x)

(same as x)

absolute value

abs(-17.4)

17.4

cbrt(dp)

dp

cube root

cbrt(27.0)

3

ceil(dp or numeric)

(same as input)

smallest integer not less than argument

ceil(-42.8)

-42

ceiling(dp or numeric)

(same as input)

smallest integer not less than argument (alias for ceil)

ceiling(-95.3)

-95

degrees(dp)

dp

radians to degrees

degrees(0.5)

28.6478897565412

exp(dp or numeric)

(same as input)

exponential

exp(1.0)

2.71828182845905

floor(dp or numeric)

(same as input)

largest integer not greater than argument

floor(-42.8)

-43

Ln(dp or numeric)

(same as input)

natural logarithm

ln(2.0)

0.693147180559945

log(dp or numeric)

(same as input)

base 10 logarithm

log(100.0)

2

log(b numeric, x numeric)

numeric

logarithm to base b

log(2.0,64.0)

6.0000000000

mod(y, x)

(same as argument types)

remainder of y/x

mod(9,4)

1

Pi()

dp

"?" constant

pi()

3.14159265358979

power(a dp, b dp)

dp

a raised to the power of b

power(9.0,3.0)

729

power(a numeric, b numeric)

numeric

a raised to the power of b

power(9.0,3.0)

729

radians(dp)

dp

degrees to radians

radians(45.0)

0.785398163397448

random()

dp

random value between 0.0 and 1.0

random()

round(dp or numeric)

(same as input)

round to nearest integer

round(42.4)

42

round(v numeric, s int)

numeric

round to s decimal places

round(42.4382,2)

42.44

sign(dp or numeric)

(same as input)

sign of the argument (-1, 0, +1)

sign(-8.4)

-1

sqrt(dp or numeric)

(same as input)

square root

sqrt(2.0)

1.4142135623731

trunc(dp or numeric)

(same as input)

truncate toward zero

trunc(42.8)

42

trunc(v numeric, s int)

numeric

truncate to s decimal places

trunc(42.4382,2)

42.43

Тригонометричні функції

Function

Description

acos(x)

inverse cosine

asin(x)

inverse sine

atan(x)

inverse tangent

atan2(y, x)

inverse tangent of y/x

cos(x)

cosine

cot(x)

cotangent

sin(x)

sine

tan(x)

tangent

Рядкові функції та оператори

Function

Return Type

Description

Example

Result

string || string

text

String concatenation

'Post' || 'greSQL'

PostgreSQL

string || non-string or non-string || string

text

String concatenation with one non-string input

'Value: ' || 42

Value: 42

char_length(string) or character_length(string)

int

Number of characters in string

char_length('jose')

4

lower(string)

text

Convert string to lower case

lower('TOM')

tom

overlay(string placing string from int [for int])

text

Replace substring

overlay('Txxxxas' placing 'hom' from 2 for 4)

Thomas

position(substring in string)

int

Location of specified substring

position('om' in 'Thomas')

3

substring(string [from int] [for int])

text

Extract substring

substring'(Thomas' from 2 for 3)

hom

trim([leading | trailing | both] [characters] from string)

text

Remove the longest string containing only the characters (a space by default) from the start/end/both ends of the string

trim(both 'x' from 'xTomxx')

Tom

upper(string)

text

Convert string to uppercase

upper('tom')

TOM

Додаткові рядкові функції

Function

Return Type

Description

Example

Result

ascii (string)

int

ASCII code of the first character of the argument. For UTF8 returns the Unicode code point of the character. For other multibyte encodings. the argument must be a strictly ASCII character.

ascii('x')

120

chr(int)

text

Character with the given code. For UTF8 the argument is treated as a Unicode code point. For other multibyte encodings the argument must designate a strictly ASCII character. The NULL (0) character is not allowed because text data types cannot store such bytes.

chr(65)

A

initcap(string)

text

Convert the first letter of each word to uppercase and the rest to lowercase. Words are sequences of alphanumeric characters separated by non-alphanumeric characters.

initcap('hi THOMAS')

Hi Thomas

length(string)

int

Number of characters in string

length('jose')

4

repeat(string text, number int)

text

Repeat string the specified number of times

repeat('Pg', 4)

PgPgPgPg

replace(string text, from text, to text)

text

Replace all occurrences in string of substring from with substring to

replace('abcdefabcdef', 'cd', 'XX')

abXXefabXXef

strpos(string, substring)

int

Location of specified substring (same as position(substring in string), but note the reversed argument order)

strpos('high', 'ig')

2

substr(string, from [, count])

text

Extract substring (same as substring(string from from for count))

substr('alphabet', 3, 2)

ph

4.3 Пошук за шаблоном

4.3.1 Оператор LIKE

Здійснює пошук за шаблоном.

Синтаксис:

string LIKE pattern [ESCAPE escape-character]

string NOT LIKE pattern [ESCAPE escape-character]

Тут pattern - означає шаблон.

4.3.2 Оператор SIMILAR TO

Синтаксис:

string SIMILAR TO pattern [ESCAPE escape-character]

string NOT SIMILAR TO pattern [ESCAPE escape-character]

Аналогічний до LIKE за винятком того, що шаблон інтерпретується як SQL-стандартний регулярний вираз.

Теж можна використовувати метасимволи «_» і «%»

Крім цього підтримуються такі метасимволи:

| - задає альтернативу;

* - задає повторення нуль чи більше разів;

+ - задає повторення один чи більше разів;

() - можуть використовуватись для групування;

[...] - задають множину символів які можуть зустрічатись.

Як і у LIKE обернений слеш (\) відміняє дію метасимволу, який інтерпретується як символ.

'abc' SIMILAR TO 'abc'

true

'abc' SIMILAR TO 'a'

false

'abc' SIMILAR TO '%(b|d)%'

true

'abc' SIMILAR TO '(b|c)%'

false

4.3.3 POSIX - регулярні вирази

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

Для співставлень з регулярними виразами використовуються такі оператори:

Operator

Description

Example

~

Matches regular expression, case sensitive

Співставлення з регулярним виразом (з врахуванням регістру символів)

'thomas' ~ '.*thomas.*'

~*

Matches regular expression, case insensitive

Співставлення з регулярним виразом (без врахування регістру символів)

'thomas' ~* '.*Thomas.*'

!~

Does not match regular expression, case sensitive

Заперечення співставлення з регулярним виразом (з врахуванням регістру символів)

'thomas' !~ '.*Thomas.*'

!~*

Does not match regular expression, case insensitive Заперечення співставлення з регулярним виразом (без врахування регістру символів)

'thomas' !~* '.*vadim.*'

5. Мова SQL - вибірка даних

Вибірка даних здійснюється за допомогою основного та найбільш функціонального оператора:

5.1 Оператор SELECT

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

Синтаксис оператора:

SELECT [ ALL | DISTINCT ] * |

<ім'я таблиці>.* |

[ <ім'я таблиці>.]<назва поля> [AS <псевдонім>] [, …] |

<вираз> [AS <псевдонім>] [, …]

[ FROM

<ім'я таблиці> [, …] ]

[WHERE …]

[GROUP BY …]

[HAVING …]

[ORDER BY …] ;

ALL | DISTINCT - предикати, які використовуються для обмеження числа записів, що повертаються. За замовчуванням використовується ALL (повертає усі значення), якщо предикати відсутні. DISTINCT - виключає записи, що містять значення, які повторюються у всіх вибраних полях. Впливає на результат тоді, коли у запиті аналізуються не всі поля з таблиці. Символ «*» означає, що вибрані всі поля заданої таблиці або таблиць. Параметр <ім'я таблиці> - назва таблиці, з якої потрібно вибрати записи, <назва поля> - назва поля, з якого вибирають дані; якщо ж задано декілька полів, то дані вибираються у визначеному порядку, AS - задає нову назву заголовка стовпця у запиті, <псевдонім> - назва, що буде заголовком стовпця замість початкового.

Даний оператор не змінює дані у БД, де відбувається вибір. У найпростішому випадку дію оператора SELECT можна сформулювати так: вибрати <елемент> із <джерела>.

5.1.1 Фраза FROM

Фраза FROM міститься у операторі SELECT і є обов'язковою у випадку вибірки даних хоча б з однієї чи кількох таблиць. Дана фраза може бути опущена у вибірках результатів із деяких виразів чи функцій, наприклад SELECT 2+3;

Порядок таблиць у виразі не важливий -- більшість сучасних СУБД проводять попередній аналіз та планування оптимізації виконання запиту.

Синтаксис:

FROM <ім'я таблиці> [, …];

Тут <ім'я таблиці> - назва таблиці, з якої потрібно вибрати записи.

Приклади.

Розглянемо таблицю Students (табл.1), яка складається з п'яти полів і п'яти записів: Num містить ідентифікаційні номери студентів; Surname - прізвища студентів; Name - імена студентів; Age - вік студентів; Speciality - спеціальність, на якій студент навчається.

Таблиця 1

Num

Surname

Name

Age

Speciality

1

Крупик

Віктор

19

Інформатика

2

Прапій

Степан

19

Інформатика

3

Працків

Оксана

18

Інформатика

4

Селань

Віктор

20

Математика

5

Ятрів

Олег

17

Інформатика

6

Петрів

Назар

20

Дана таблиця буде використовуватись при розгляді решти прикладів.

Приклад 1.

Вивести всі значення таблиці Students.

Запит матиме вигляд:

SELECT * FROM Students;

Результат - табл. 2

Таблиця 2

Num

Surname

Name

Age

Speciality

1

Крупик

Віктор

19

Інформатика

2

Прапій

Степан

19

Інформатика

3

Працків

Оксана

18

Інформатика

4

Селань

Віктор

20

Математика

5

Ятрів

Олег

17

Інформатика

6

Петрів

Назар

20

Приклад 2.

Інший варіант реалізації прикладу 1.

SELECT

Num, Surname, Name, Age, Speciality

FROM

Students;

Даний запит також виводить усі значення таблиці Students (табл.1).

Результат - табл. 2

Приклад 3.

Вивести тільки значення поля Age (вік студентів), з новою назвою заголовка стовпця s_age.

Запит матиме вигляд:

SELECT

Age AS s_age

FROM

Students;

Результат - табл. 3

Таблиця 3

s_age

19

19

18

20

17

20

Для отримання переліку даних без повторень, використовують оператор DISTINCT.

Приклад 4.

Вивести якого віку є студенти у таблиці Students.

Запит матиме вигляд:

SELECT DISTINCT

Age

FROM

Students;

Результатом дії будуть унікальні дані (табл. 5).

Таблиця 5

Age

17

18

19

20

В команді SELECT можуть міститись не тільки імена стовпців таблиці чи таблиць, але і обчислювальні вирази.

Приклад 5.

Вивести прізвища студентіві їх вік у місяцях вважаючи, що у таблиці вказаний повний рік (12 місяців).

Запит матиме вигляд:

SELECT

Surname, Age*12, ' місяців '

FROM

Students;

5.1.2 Фраза WHERE

Фраза WHERE є необов'язковою. Дана фраза визначає умову вибірки результуючих рядків. Якщо фраза WHERE не включена у запит, то результатом будуть усі результуючі рядки. Якщо в запиті використовуються декілька таблиць і фраза WHERE відсутня, то результатом буде скалярний добуток таблиць.

Синтаксис: [WHERE <умова>]

де <умова> - умова або умови вибору значень із поля чи полів які включають операції відношення, логічні операції, функції тощо.

Приклад 6.

Вибрати прізвища студентів, яким є дев'ятнадцять років. Для цього використаємо фразу WHERE.

Запит матиме вигляд:

SELECT

Surname, Age

ROM

Students

WHERE

Age=19;

Результат - табл. 6

Таблиця 6

Surname

Age

Крупик

19

Прапій

19

Приклад 7.

Вибрати студентів, що поступили на інформатику і яким менше 19 років.

Запит матиме вигляд:

SELECT

Surname, Age, Speciality

FROM

Students

WHERE

Speciality='Інформатика' AND Age<19;

Результат - табл. 7

Таблиця 7

Surname

Age

Speciality

Працків

18

Інформатика

Ятрів

17

Інформатика

Приклад 8.

Вивести прізвища всіх студентів для яких не задана спеціальність.

Запит матиме вигляд:

SELECT

Surname, Age, Speciality

FROM

Students

WHERE

Speciality is null

Результат - табл.8

Таблиця 8

Surname

Age

Speciality

Ціпій

20

Якщо потрібно вивести прізвища студентів із визначеними спеціальностями, то запит матиме вигляд:

SELECT

Surname, Age, Speciality

FROM

Students

WHERE

Speciality is not null

Приклади використання функцій between і in у запитах.

Select * from Students where Age between 17 and 19;

Select * from Students where Age in (17,19);

5.1.3 Фраза GROUP BY

Фраза GROUP BY є необов'язковою. Використовується при формуванні підсумкових запитів і об'єднує записи з однаковими значеннями у вказаному списку полів в один запис. Дозволяє застосовувати агрегатні функції до кожної групи, яка визначається загальним значенням поля або полів, вказаних в цій фразі.

Синтаксис:

[GROUP BY

[<таблиця>.]<назва поля> [,…] ]

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

Параметр <назва поля> - поле, по якому відбувається групування. Йому може передувати ім'я таблиці, якщо вибір виконується більше ніж з однієї таблиці.

Приклад 9.

Підрахувати кількість студентів на кожній із спеціальностей і вивести назву спеціальності і кількість студентів на ній. Для зручності скористаємось реченням GROUP BY.

Запит матиме вигляд:

SELECT

Speciality, COUNT(Speciality)

FROM

Students

GROUP BY

Speciality;

Тут функція Count повертає кількість записів у групі.

Результат - табл. 9

Таблиця 9

Speciality

COUNT(Speciality)

Інформатика

4

Математика

1

5.1.4 Фраза HAVING

Фраза HAVING є необов'язковою. Після того, як записи будуть згруповані за допомогою GROUP BY, фраза HAVING відбере ті значення з отриманих записів, що задовольнять умовам вибірки, які вказані у HAVING.

Синтаксис:

[HAVING <умова>]

Параметр <умова> - умова або умови відбору значень із отриманих записів.

Приклад 10.

Видати назви спеціальностей на які поступило більше трьох людей та точну їх кількість. Для цього у GROUP BY застосуємо HAVING.

Запит матиме вигляд:

SELECT

Speciality, COUNT(Speciality)

FROM

Students

GROUP BY

Speciality

HAVING

COUNT(Speciality)>3;

Результат - табл. 10

Таблиця 10

Speciality

COUNT(Speciality)

Інформатика

4

5.1.5 Фраза ORDER BY

Фраза ORDER BY є необов'язковою. Дана фраза сортує результуючі записи, що отримані після виконання запиту за зростанням або спаданням указаних полів чи поля. Його необхідно вказувати для сортування результату запиту. За замовчуванням задано порядок сортування за зростанням.

Синтаксис:

[ ORDER BY

{ <назва поля> [ ASC | DESC ] } [,…]]

<назва поля> - поле, за яким відбувається сортування. ASC (DESC) - зареєстровані слова для розташування елементів у зростаючому (спадному) порядку.

Приклад 11.

Вивести на екран всю інформацію про студентів, яка відсортована у спаданні за віком студентів, а потім у зростанні за їх прізвищами.

Запит матиме вигляд:

SELECT *

FROM

Students

ORDER BY

Age DESC, Surname ASC;

Результат - табл. 11

Таблиця 11

Num

Surname

Name

Age

Speciality

6

Петрів

Назар

20

4

Селань

Віктор

20

Математика

1

Крупик

Віктор

19

Інформатика

2

Прапій

Степан

19

Інформатика

3

Працків

Оксана

18

Інформатика

5

Ятрів

Олег

17

Інформатика

5.2 Операція JOIN -- об'єднання таблиць

Для задання об'єднання кількох таблиць у фразі FROM виконують операцію JOIN. Якщо в результат вибірки необхідно включити всі рядки з обох таблиць, що задовольняють умові вибірки, використовується операція INNER JOIN.

Синтаксис: FROM

<таблиця1> [AS <,псевдонім>]

[ INNER | LEFT | RIGHT | FULL ] JOIN

<таблиця2> [AS ,псевдонім>]

ON

{<таблиця1>.<поле1>} <операція> {<таблиця2>.<поле2>}

Тут <таблиця1>, <таблиця2> - імена таблиць, записи яких підлягають об'єднанню; <поле1>, <поле2> - імена полів, що об'єднуються; якщо поля не є числовими, то повинні мати однаковий тип даних і містити дані одного виду; поля можуть мати різні імена, <операція> - будь-яка операція порівняння. Нехай дано дві таблиці Т1 і Т2:

T1

F1

F2

A

100

B

101

C

102

D

103

T2

F3

F4

B

200

C

201

F

202

G

203

Задамо запит:

SELECT *

FROM

T1 join T2 on T1.F1=T2.F3 ;

Результатом такого запиту буде таблиця 12:

Таблиця 12

F1

F2

F3

F4

B

101

B

200

C

102

C

201

Операція LEFT JOIN використовується для створення лівого зовнішнього об'єднання, при якому всі записи з першої (лівої) таблиці включаються в динамічний набір, навіть якщо в другій (правій) таблиці немає відповідних до них записів. Якщо у лругій таблиці, з якою виконується з'єднання, не має відповідних рядків, то замість значень її полів додається значення Null.

Задамо запит:

SELECT *

FROM

T1 left join T2 on T1.F1=T2.F3

Результат - табл.13

Таблиця 13

F1

F2

F3

F4

A

100

null

null

B

101

B

201

C

102

C

202

D

103

null

null

Операція RIGHT JOIN використовується для створення правого зовнішнього об'єднання, при якому всі записи з другої (правої) таблиці включаються в динамічний набір, навіть якщо в першій (лівій) таблиці немає відповідних до них записів. Якщо у першій таблиці, з якою виконується з'єднання, не має відповідних рядків, то замість значень її полів додається значення Null.

Операції JOIN можуть бути вкладеними.

Синтаксис:

SELECT <поля>

FROM

<таблиця1> INNER JOIN ( <таблиця2> INNER JOIN

[ ( ] <таблиця3> [INNER JOIN

[ ( ] <таблицяX> [INNER JOIN…)]

[ ON <таблиця3>.<поле3> <операція> <таблицяХ>.<полеХ> ]

[ ON <таблиця2>.<поле2> <операція> <таблиця3>.<поле3>) ]

ON <таблиця1>.<поле1> <операція> <таблиця2>.<поле2>;

5.3 Вкладені підзапити

SQL дозволяє використовувати одні запити всередені інших запитів, тобто вкладати один запит у інший. При цьому верхнього рівня оператор SELECT використовує результат внутрішнього оператора SELECT для визначення отримання кінцевого результату всього запиту. Внутрішні оператори можуть бути розміщені у реченнях WHERE і HAVING і в такому разі отримують назву підзапитів, або вкладених запитів. Крім того, внутрішні оператори SELECT можуть використовуватись в операторах INSERT, UPDATE і DELETE.

Існує три типи підзапитів, а саме:

с скалярний підзапит який повертає значення вибране із перетину одного стовпця і одного запису чи результату виразу;

с рядковий підзапит який повертає значення декількох стовпців таблиці у вигляді одного рядка;

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

При побудові підзапитів потрібно дотримуватись наступних правил і обмежень:

1. У підзапитах не повинна використовуватись фраза ORDER BY, хоча вона може бути присутня у зовнішньому запиті.

2. Список у визначенні SELECT підзапиту повинні складатись із імен окремих стовпців або складених із них виразів за виключенням того випадку, коли у підзапиті використовується ключове слово EXIST. Дане слово використовується тільки разом із підзапитом і результатом його дії є логічне значення True чи False. Істина буде в тому випадку коли у результуючій таблиці підзапиту присутній хоча би один рядок.

3. За замовчуванням імена стовпців у підзапиті відносяться до таблиці, ім'я якої вказано у фразі FROM.

4. Якщо підзапит є одним із двох операндів, які беруть участь в операції порівняння, то підзапит повинен бути вказаний у правій частині даної операції.

5. У вкладених підзапитах використовується предикат IN ( Select … From … Where … IN).

6. У підзапитах, які повертають один стовпець числових значень, можуть використовуватись ключові слова ALL і ANY.

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

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

Приклад 12.

Вибрати прізвища студентів, вік яких дорівнює мінімальному.

Запит матиме вигляд:

SELECT

Surname, Age

FROM

Students

WHERE

Age = ( SELECT MIN(Age) FROM Students );

У даному запиті спочатку вибереться мінімальний вік студентів, а тоді прізвища всіх студентів із мінімальним віком.

Вкладений підзапит працює наступним чином:

1. вибирається рядок з таблиці, назва якого вказана у зовнішньому запиті;

2. виконується підзапит і отримане значення застосовується для аналізу цього рядка в умові речення WHERE зовнішнього запиту;

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

4. аналогічно процедура виконується для наступного рядка таблиці зовнішнього запиту.

У мові SQL можна використовувати стандартні операції над множинами, а саме: об'єднання, перетин і різниця, які дозволяють комбінувати результати виконання двох і більше запитів в одну результуючу таблицю.

На таблиці, які можуть комбінуватись з допомогою операцій над множинами накладаються певні обмеження, а саме:

- вони повинні мати одну і ту ж структуру, тобто одну і ту ж кількість стовпців;

- у відповідних стовпцях повинні міститись дані однакового типу і довжини.

5.4 Операція UNION

Дана операція створює запит на об'єднання, що поєднує результати кількох незалежних запитів.

Синтаксис:

<запит1> [ UNION [ALL] <запит2> […] ];

<запит1>, <запит2> - інструкція SELECT.

Всі запити, включені в операцію UNION, повинні відбирати однакове число полів.

Приклад 13. Об'єднати два запити, один з яких вибирає прізвище та ім'я із таблиці Students, а другий із відповідних двох полів P1і P2 із таблиці NTab:

SELECT

Surname, Name

FROM

Students

UNION

SELECT

P1, P2

FROM

Ntab;

5.5 Оператор SELECT…INTO

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

Синтаксис:

SELECT

<назва поля> [, …]

INTO <нова таблиця>

FROM

<ім'я таблиці> [, …];

<назва поля> - поле, що копіюється у нову таблицю, <нова таблиця> - ім'я таблиці, що створюється. Запит на створення нової таблиці можна використати наприклад для створення резервних копій.

Приклад 13.

Створити нову таблицю з назвою Informatics із даними про студентів, що вчаться на спеціальності 'Інформатика'.

Запит матиме вигляд:

SELECT

Num, Surname...


Подобные документы

  • Основи безпеки даних в комп'ютерних системах. Канали проникнення та принципи побудови систем захисту. Ідентифікація і аутентифікація користувачів. Захист даних від несанкціонованого доступу. Технічні можливості зловмисника і засоби знімання інформації.

    курс лекций [555,1 K], добавлен 05.12.2010

  • Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.

    курсовая работа [633,3 K], добавлен 11.07.2015

  • Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.

    лекция [445,0 K], добавлен 24.07.2014

  • Дослідження криптографічних методів захисту даних від небажаного доступу. Основи безпеки даних в комп'ютерних системах. Класифікаційні складові загроз безпеки інформації. Характеристика алгоритмів симетричного та асиметричного шифрування інформації.

    курсовая работа [245,8 K], добавлен 01.06.2014

  • Основи технології запису на оптичні диски. Довготривале зберігання інформації на оптичних носіях. Дослідження існуючих програмних і технічних засобів шифрування даних. Можливі рішення проблем і попередження злому. Програмні засоби шифрування даних.

    дипломная работа [4,0 M], добавлен 27.01.2012

  • Бізнес процеси й елементи даних. Специфікація елементів даних. Діаграма класів проектування. Створення та використання об'єктів бази даних. Таблиці, обмеження цілісності, тригери, типові вибірки, представлення, індекси. Типові оператори модифікації даних.

    курсовая работа [255,3 K], добавлен 01.06.2019

  • Поняття та переваги реляційної бази, автоматизація аналізу даних. Опис основних компонентів сховища даних AS/400. Процес перетворення оперативних даних в інформаційні. Багатовимірні бази даних (MDD). Опис даних і створення файлів в інтеграційних базах.

    реферат [36,8 K], добавлен 14.01.2012

  • Характеристика мови програмування VBA (Visual Basic for Application): можливості й засоби. Використання редактора Visual Basic. Створення та виконання VBA-програм. Типи даних, змінні й константи, операції й вирази. Керуючі оператори, процедури й функції.

    реферат [29,9 K], добавлен 28.06.2011

  • Форми вихідних документів. Перелік запитів до бази даних. Побудова інфологічної моделі, її структурні компоненти: сутності, зв’язки та відносини. Перелік таблиць, опис запитів. Загальна характеристика та головний зміст форм розроблюваної бази даних.

    курсовая работа [414,5 K], добавлен 31.01.2014

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

    курсовая работа [1,2 M], добавлен 29.02.2012

  • Архітектура Web-баз даних. Загальні відомості про мову SQL. Створення таблиць баз даних. Використання бібліотеки для пошуку інформації. Аутентифікація за допомогою РНР й MySQL. Зберігання паролів в окремому файлі на сервері, використання бази даних.

    курсовая работа [913,8 K], добавлен 12.01.2010

  • Схема взаємодії учасників платіжної системи з використанням пластикових карток. Вхідні та вихідні повідомлення для проектування бази даних для автоматизації аналізу користувачів пластикових карток. Проектування та реалізація бази даних у MS Access.

    курсовая работа [3,0 M], добавлен 27.12.2013

  • Засоби доступу до БД в середовищі Lazarus. Створення і робота з таблицями за допомогою DBase. Набір візуальних компонентів LCL в Lazarus. Основні переваги останньої версії InterBase. Основи створення нової таблиці бази даних програмного забезпечення.

    курсовая работа [49,5 K], добавлен 23.11.2010

  • Проектування бази даних та інтерфейсу програми. Розробка бази даних за допомогою Firebird 2.5. Контроль коректності вхідних та вихідних даних. Додавання та редагування інформації. Вплив електронно-обчислювальних машин на стан здоров'я користувачів.

    дипломная работа [4,7 M], добавлен 12.10.2015

  • Вивчення інтерфейсу, архітектури, функцій (генерування криптографічних послідовностей випадкових чисел, операції із електронним підписом) бібліотеки CryptoAPI. Розгляд способів ідентифікації та аутентифікації як захисту від несанкціонового доступу.

    реферат [502,9 K], добавлен 06.04.2010

  • Договірна діяльність організацій як предмет проекту створення бази даних. Основні етапи роботи з Microsoft Access зі створення бази даних. Мінімальний список характеристик, які потрібно врахувати в ході роботи. Ознайомлення з основними об'єктами СУБД.

    лабораторная работа [1,7 M], добавлен 21.04.2011

  • Основні відомості про реляційні бази даних, система управління ними. Основні директиви для роботи в середовищі MySQ. Визначення та опис предметної області. Створення таблиць та запитів бази даних автоматизованої бази даних реєстратури в поліклініці.

    курсовая работа [2,9 M], добавлен 06.11.2011

  • Опис основних кроків створення бази даних по автомобілям у програмі Microsoft Access, та запитів. Порядок формування таблиць, їх зміст і структура, встановлення зв'язків між таблицями. Операції, що проводяться над таблицями. Правила оформлення звіту.

    практическая работа [1,1 M], добавлен 27.05.2010

  • Методи використання предикатів Cut, Fail. Організація циклу (repeat), складання програми. Алгоритм роботи зі списками та рядками. Елементарні операції і базові функції мови програмування Лісп. Робота зі складними типами даних на прикладі бази даних АТС.

    контрольная работа [219,3 K], добавлен 17.06.2011

  • Основні поняття та особливості розробки баз даних в Microsoft Access. Побудова бази даних магазину побутової техніки: створення таблиць та встановлення зв’язків між ними, створення запитів, форм та звітів. Охорона праці і гігієна користувача комп'ютера.

    курсовая работа [2,5 M], добавлен 19.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.