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

9. Типи даних в sql

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

Основні типи даних SQL:

INTEGER – ціле число (до 10 значущих цифр і знак);

SMALLINT коротке ціле (до 5 цифр і знак);

CHAR (n)символьний рядок фіксованої довжини з n символів (0<n<256);

VARCHAR - дозволяє зберігати дані змінної довжини, які містять до 8000 символів. На відміну від типу CHAR, розмір пам’яті змінюється в залежності від кількості символів в елементах стовпця;

REAL – це дійсний тип даних з плаваючою крапкою, для збереження яких в пам’яті виділяється 4 байти. Додатні та від’ємні числа можна зберігати як дані типу REAL з точністю до 7 цифр. Дані типу REAL належать інтервалу від (-3,4Е-38) до (+3,4Е+38);

DATЕTIME - це тип даних для представлення дати і часу, який можна використовувати для збереження значень в стовпцях. Цей тип дозволяє зберігати дату і час в діапазоні від 01.01.1753 до 31.12.9999 н.е. Для збереження значень типу DATETIME виділяється 8 байт;

SMALLDATETIME — це тип даних для представлення дати і часу, який можна використовувати для збереження значення в стовпцях. Цей тип дозволяє зберігати дати і час в діапазоні від 01.01.1900 до 06.06.2079 н. е.

Для збереження значення типу SMALLDATETIME виділяється 4 байта;

MONEY дозволяє зберігати грошові значення. Дані типу MONEY фізично зберігаються у вигляді 2 частин — цілої та дробової, за допомогою двох 4-байтних цілочисельних форматів.

Поняття про атрибути

Для стовпця можна визначити не лише тип даних, але й і ще одну додаткову характеристику, яка називається атрибутом. Наприклад, атрибут NULL і NOT NULL. Якщо для стовпця таблиці визначений атрибут NULL, це дозволяє не вказувати при введенні даних даного стовпця. Якщо ж, навпаки для стовпця визначений атрибут NOT NULL SQL Server не дозволить лишити даний стовпець пустим під час вставки рядка.

Атрибут IDENTYTY. Визначивши для поля цю властивість, необхідно вказати початкове значення і крок його зростання (лічильник).

Атрибут PRIMARY KEY встановлює первинний (внутрішній) ключ.

Атрибут FOREIGN KEY встановлює вторинний (зовнішній) ключ.

Атрибут UNIQUE застосовується для будь-якого поля з метою не дозволити вводити значення, які повторюються. Таке поле не може бути ключем чи складовою частиною ключа.

Атрибут DEFAULT забезпечує автоматичне введення у поле повне значення.

Атрибут CHECK накладає умови на введення даних.

10. Визначення даних засобами sql

Визначення даних – це маніпулювання цілими таблицями. Сюди включаються операції:

  • створення нової таблиці;

  • знищення таблиці;

  • зміна складу полів таблиці;

  • створення і знищення індекса.

Ці дії виконуються з допомогою підмножини операторів визначення даних мови SQL.

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

Рис. 1.2. База даних у сприйнятті користувача

Створення і знищення таблиці

Для створення таблиці служить оператор, який має наступний формат:

CREATE TABLE <Ім´я таблиці>

(<Ім´я поля> <Тип даних> [<атрибут>],

...

< Ім´я поля > <Тип даних> [<атрибут>])

Обов´язковими операндами є ім´я таблиці та ім´я як мінімум одного поля з відповідним типом даних. Зауважимо, що замість імені таблиці вказується ім’я головного файлу таблиці.

Наприклад:

create table stat

(cod smallint not null,

prizv char(20) not null,

adressa char(20) null,

tel char(10) null,

data_nar smalldatetime not null,

osvita char(20) null,

stag int not null)

create table obsag

(nom smallint not null,

cod smallint not null,

data s malldatetime not null,

suma int not null,

nazva char(20) null)

Щоб перевірити результат виконання команди використовують процедуру sp_help.

Наприклад, sp_help stat.

Column_name Type Computed Lengtp Prec Scale Nullable

cod smallint no 2 5 0 no

prizv char no 20 no

adressa char no 20 no

tel char no 10 yes

data_nar smalldatetime no 4 no

osvita char no 10 yes

stag int no 4 10 0 no

Для знищення таблиці призначений оператор:

DROP TABLE <ім´я таблиці>

Наприклад: drop table stat

Зміна складу полів таблиці

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

ALTER TABLE <ім´я таблиці>

ADD <ім´я поля> <тип даних>,

DROP COLUMN <ім´я поля>,

ADD <ім´я поля> <тип даних>,

DROP COLUMN <ім´я поля>

Оператор ADD добавляє до таблиці нове поле, ім’я і тип якого задаються як в операторі CREATE, а операнд DROP знищує в таблиці поле з заданим іменем. Оператори ADD і DROP не залежать один від одного і можуть слідувати в довільному порядку.

Наприклад, додавання до таблиці stat поля number виконується наступним оператором:

alter table stat

add number int

Коли з допомогою оператора ALTER TABLE до таблиці додається новий стовпець, в нього автоматично поміщаються NULL-значення.

Знищення поля number з таблиці stat виконується з допомогою оператора:

alter table stat

drop column number

Оператор

alter table stat

add number int identity (1,1)

добавляє до таблиці поле number, якому призначається атрибут identity (лічильник).

З допомогою оператора ALTER TABLE можна змінити тип даних полів таблиці, а також їх ширину. Наприклад, оператор

alter table stat

alter column telef int

змінює тип поля telef на цілочисловий (int).

Якщо для поля потрібно добавити обмеження (встановити атрибут), необхідно виконати команду:

alter table stat

add lter column telef int ст. 218

Створення та знищення індексів

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

CREATE INDEX

< ім’я індекса > ON < ім’я таблиці > (< ім’я поля >, ..., [< ім’я поля >]);

Одним оператором можна створити один індекс, при цьому одне поле може входити в склад декількох індексів. Наприклад:

CREATE INDEX

ind Name ON Percon.db (Name)

Для знищення індекса використовується оператор:

DROP INDEX

< ім’я таблиці > . < ім’я індекса >

або

DROP INDEX

< ім’я таблиці > .PRIMARY

Під час знищення індекса таблиця не повинна використовуватися іншим додатком.

Додавання первинних і зовнішніх ключів. Звязування таблиць.

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

В SQL Server первинні і зовнішні ключі можна додати трьома способами: використовуючи SQL Server Enterprise Manager, оператор ALTER TABLE ... ADD CONSTRAINT або визначивши опцію PRIMARY/FOREIGN KEY в операторі CREATE TABLE.

У синтаксисі команди CREATE TABLE передбачена можливість додавання в розділі CONSTRAINT елементи PRIMARY KEY або FOREIGN KEY. Спрощений формат команди:

CREATE TABLE <Ім´я таблиці>

(<Ім´я поля> <Тип даних> CONSTRAINT . . ., . . . )

Наприклад, оператор для створення таблиці, коли не вказується ім’я первинного ключа (воно буде призначено сервером) виглядає так:

CREATE TABLE <Ім´я таблиці>

(<Ім´я поля> smallint PRIMARY KEY)

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

CREATE TABLE <Ім´я таблиці>

(<Ім´я поля> smallint CONSTRAINT pk_<Ім´я поля> PRIMARY KEY)

Зовнішній ключ таблиці_2, який посилається на таблицю_1, можна створити наступною командою:

CREATE TABLE <Ім´я таблиці_2>

(<Ім´я поля_2> smallint FOREIGN KEY <Ім´я поля_2> REFERENCES <Ім´я таблиці_1>(<Ім´я поля_1>))

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

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

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

ALTER TABLE <Ім´я таблиці_1>

ADD PRIMARY KEY ( <Ім´я поля_1>)

Наприклад,

alter table stat

add primary key (cod)

Додавання зовнішнього ключа до таблиці_2, який посилається на таблицю_1, виконується командою:

ALTER TABLE <Ім´я таблиці_2>

ADD FOREIGN KEY (<Ім´я поля_2>) REFERENCES <Ім´я таблиці_1> (<Ім´я поля_1>)

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

Наприклад,

alter table obsag

add foreign key (cod) references stat (cod)

Для відображення інформації про ключі в SQL Server використовуються дві системні процедури. Основний спосіб відображення інформації про ключі полягає у використанні процедури sp_helpconstraint, яка має наступний формат:

SP_HELPCONSTRAINT <Ім´я таблиці>

Наприклад,

sp_helpconstraint stat

Результат виконання команди зображено на рис.1

Рис.1. Інформація про ключі таблиці stat.

Системна процедура sp_help виводить загальну інформацію про таблиці баз даних. Частина цієї інформації стосується ключів таблиці. Формат процедури:

SP_HELР <Ім´я таблиці>

Знищення первинних і зовнішніх ключів виконується командою

ALTER TABLE <Ім´я таблиці>

DROP CONSTRAINT <Ім´я ключа>

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

Наприклад, команди для знищення зовнішнього і внутрішнього ключів:

alter table obsag

drop constraint FK__obsag__cod__239E4DCF

alter table stat

drop constraint PK__stat__22AA2996

Модифікація записів

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

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

INSERТ INTO <Ім’я таблиці>

[(<Список полів>)]

VALUES (<Список значень>)

В результаті виконання цього оператора до таблиці, ім’я якої вказано після слова INTO, додається один запис. Для додавання запису заповнюються поля, перелічені в списку. Значення полів беруться із списку, розміщеного після слова VALUES. Списки полів і списки значень повинні відповідати один одному за кількістю елементів і за типом. При цьому порядок полів і значень може відрізнятися від порядку полів в таблиці. Наприклад,

insert into stat

(cod, prizv, adressa, tel, data_nar, osvita, stag)

values (101, 'Шестак', 'Львів', 772345, '05/05/1968', 'вища', 10)

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

При додаванні відразу декількох записів оператор INSERТ має формат:

INSERТ INTO <Ім’я таблиці>

(<Список полів>)

Оператор SELECT

Тут значення полів нових записів визначаються через значення полів записів, відібраних з допомогою оператора SELECT. Кількість доданих записів дорівнює кількості відібраних записів. Список значень полів в операторі SELECT повинен відповідати кількості і типу полів в списку оператора INSERТ.

Редагування записів – це зміна значень полів в групі записів. Воно виконується оператором UPDATE наступного формату:

UPDATE <Ім’я таблиці>

SET <Ім’я поля> = <Вираз>,

. . .

<Ім’я поля> = <Вираз>

[WHERE <Критерії відбору>]

Наприклад,

update stat

set adressa= 'Київ', stag=20

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

З допомогою оператора UPDATE можна змінити декілька рядків, які задовольняють критерію, визначеному в директиві WHERE.

Наприклад,

update obsag

set summa = summa -20

where nazva =’Svitoch’

Для рекламодавця ’Svitoch’ сума операції зменшується на 20 одиниць. Якщо забрати операнд WHERE, то змінюються значення всіх вказаних полів. Наприклад,

update obsag

set summa = summa -20

Знищення записів виконується оператором DELETE наступного формату:

DELETE FROM <Ім’я таблиці>

[WHERE <Критерії відбору>]

В результаті виконання цього оператора з таблиці, ім’я якої вказано після слова FROM, знищуються всі записи, що задовольняють критерій відбору. Якщо критерій відбору не задано, то з таблиці буде знищено всі записи.

Приклад запиту:

delete from stat

where stag <5

З таблиці stat знищуються всі записи про працівників, стаж роботи яких менший 5.

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