Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fondovi-lekcii.doc
Скачиваний:
20
Добавлен:
10.11.2018
Размер:
4.09 Mб
Скачать

1.3.2. Імена

Кожний об’єкт в базі даних повинен мати ім’я. Повне ім’я кожного об’єкту повинно бути унікальним. Імена вказують, над якими об’єктами SQL-команда виконує свою дію. Основні об’єкти, які повинні мати імена згідно стандарту SQL1 – це таблиці, стовпчики, користувачі. Стандарт SQL2 до цього переліку ще додає схеми (колекції, набори таблиць), обмеження (умови, які накладаються на вміст таблиць та їх відношення) і домени (допустимі набори значень, які можуть бути занесені у стовпчик). За стандартом SQL1 імена повинні складати від 1 до 18 символів, починатися з літери і не містити пробілів, чи знаків пунктуації. Стандарт SQL2 дозволяє утворювати імена довжиною 128 символів.

Я кщо в команді вказане ім’я таблиці, то СУБД вважає, що відбувається звертання до однієї із Ваших власних таблиць, тобто до однієї з тих таблиць БД, яку створили Ви самі. Якщо Ви маєте відповідні привілеї, тобто відповідний дозвіл, то можна звертатися до таблиць, власниками яких є інші користувачі. Для цього використовується повне ім’я таблиці:

С тандарт SQL2 узагальнює поняття повного імені таблиці:

Д еякі СУБД організовані таким чином, що дозволяють створювати та опрацьовувати кілька баз даних (Inter Base, MS SQL SERVER). Вони дають можливість звертатися до таблиці із іншої бази даних.

Приклад 1. Звертання до таблиці із іншої БД за допомогою драйверів BDE.

DELETE FROM Pracivnyky

WHERE Kod IN

(SELECT Kod

FROM :ARCHIVE: Pracivnyky)

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

M S SQL Server реалізує звертання до бази даних так (діалект SQL Server: Transact-SQL):

Ця команда вибирає всю інформацію із таблиці Pracivnyky вказаної бази даних.

Якщо в команді вказане ім’я стовпчика, то СУБД сама визначає, якій саме таблиці із тих, що вказані у цій команді, належить даний стовпчик. Якщо в команді вказуються два однойменних стовпчика із різних таблиць, то необхідно вказувати повне ім’я стовпчика:

Я кщо стовпчик міститься в таблиці, власником якої є інший користувач, то повне ім’я має таку будову:

1.3.3. Типи даних

Стандарт SQL1 описує мінімальний набір типів даних. Ці типи підтримуються усіма комерційними СУБД. Стандарт SQL2 додав до переліку типів даних літерні рядки змінної довжини, значення дати і часу тощо.

Типи даних в SQL

Тип даних

Опис

CHAR (довжина)

Літерні рядки постійної довжини SQL1

CHARACTER (довжина)

VARCHAR (довжина)

Літерні рядки змінної довжини SQL1

CHAR VARYING (довжина)

CHARACTER VARYING (довжина)

NCHAR (довжина)

Локалізовані літерні рядки постійної довжини SQL2

NATIONAL CHAR (довжина)

NATIONAL CHARACTER (довжина)

NCHAR VARYING (довжина)

Локалізовані літерні рядки змінної довжини SQL3

NATIONAL CHAR VARYING (довжина)

NATIONAL CHARACTER VARYING (довжина)

INTEGER

Цілі числа SQL

INT

SMALLINT

Малі цілі числа SQL1

BIT (довжина)

Рядки бітів постійної довжини SQL2

BIT VARYING (довжина)

Рядки бітів змінної довжини SQL2

NUMERIC (точність, степінь)

Числа з плаваючою крапкою SQL1

DECIMAL (точність, степінь)

DEC (точність, степінь)

FLOAT (точність)

REAL

Числа з плаваючою крапкою низької точності SQL1

DOUBLE PRECISION

Числа з плаваючою крапкою високої точності SQL1

DATE

Дата SQL2

TIME (точність)

Час SQL2

TIMESTAMP (точність)

Дата-час SQL2

INTERVAL

Інтервал SQL2

Різні СУБД по-різному опрацьовують типи даних. Розглянемо це на прикладі опрацювання дати і часу.

Приклад.

Для DB2

DATA << June 30, 1990 >>

TIME << 12:30 PM >>

TIMESTAMP – конкретний момент часу з точністю до наносекунди.

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

SELECT Prizv, DatePryjomu

FROM Pracivnyky

WHERE DatePryjomu > = ‘05/30/1990’+15 DAYS

Тут поле DatePryjomu типу DATE.

Для SQL Server

Є єдиний тип для представлення дати-часу DATATIME:

SELECT Prizv, DatePryjomu

FROM Pracivnyky

WHERE DatePryjomu > = ‘06/14/1990’

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

WHERE DatePryjomu > = ‘06/14/1990 12:00 AM’

В SQL Server також підтримуються арифметичні дії над датами:

WHERE DatePryjomu > = DATEADD (DAY, 15, ‘05/30/1990’)

Для Oracle

Тип DATE TIMESTAMP (з SQL). Як і для SQL Server, якщо час явно не вказаний, то він вважається рівним опівночі:

WHERE DatePryjomu > = ‘14-JUN-90’

В Oracle також підтримуються арифметичні дії над датами:

WHERE DatePryjomu > = ‘30-MAY-90’ + 15

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]