Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Додавання інформації в базу даних





Всі записи в SQL уводяться з використанням команди модифікації INSERT. У найпростішій формі ця команда ім'я наступний синтаксис:

INSERT INTO <table name> VALUES <value>, <value>…);

Так, наприклад, для додавання запису в таблицю викладачів TEACHERS, можна скористатися наступним вираженням:

INSERT INTO TEACHERS

VALUES (4006, 'Федченко', 'Світлана', 'Геннадіївна', 01/09/1999);

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

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

INSERT INTO TEACHERS

VALUES (NULL, 'Федченко', 'Світлана', 'Геннадіївна', 01/09/1999);

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

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

INSERT INTO TEACHERS (TDATE, TFAM, TIMA)

VALUES (01/09/1999, 'Федченко', 'Світлана');

дозволяє вставити значення в полючи таблиці в порядку TDATE, TFAM, TIMA, причому стовпці TNUM і ТОТСН відсутні. Це означає, що для цих полів автоматично встановлюється значення за замовчуванням. Значення за замовчуванням може бути введене чи заздалегідь, у противному випадку, це буде NULL значення. Якщо обмеження забороняє використання значення NULL у даному полі, то обов'язково треба подбати про забезпечення стовпця змістовним значенням для будь-якої команди INSERT.

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

INSERT INTO EXCELLENT SELECT * FROM USP WHERE OCENKA = 5;

У результаті буде сформована таблиця з даними, приведеними в табл. 2.5.

Таблиця 2.5 Таблиця ЕХСЕLLENT

UNUM OCENKA UDATE SNUM PNUM
    10/06/1999    
    12/06/1999    

 

Отже, буде зробленеі наступне: Всі значення, дані запитом (інформація про студентів, що має тільки особисті оцінки), містяться в таблицю, названу EXCELLENT. Для того щоб не відбулося помилки, таблиця EXCELLENT повинна вже бути створена командою CREATE TABLE і мати п'ять стовпців, що збігаються з таблицею USP по типі даних.

Таким чином, буде отримана незалежна таблиця з деякими даними з таблиці успішності USP. При зміні значень у таблиці USP це ні в якому разі не відіб'ється на таблиці EXCELLENT.

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

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

INSЕRT INTO AVGRAITING (SNUM, AVGOCENKA) SELECT SNUM, AVG

(OCENKA) FROM USP GROUP BY SNUM;

Зверніть увагу на те, що зазначено імена стовпців таблиці AVGRAITING, а виходить, послідовність даних списку, що вставляється, (тобто порядок проходження полів у пропозиції SELECT) повинна з цим порядком збігатися.

У INSERT можна використовувати подзапросы усередині запиту, що генерує значення для цієї команди аналогічно тому. Наприклад, для вставки у вже наявну таблицю STO прізвищ, імен і по батькові студентів, у яких хоча б одна відмінна оцінка, можна скористатися наступною командою:

INSERT INTO STO (SFAM, SIMA, SOTCH) SELECT SFAM, SIMA, SOTCH FROM STUDENTS WHERE SNUM = ANY (SELECT SNUM FROM USP WHERE OCENKA = 5);

Обидва запити в цій команді функціонують так само, як якби вони не були частиною вираження INSERT. Подзапрос знаходить Всі рядки для студентів, що мають відмінні оцінки, і формує набір значень SNUM. Зовнішній запит вибирає рядка з таблиці STUDENTS, де ці значення SNUM знайдені, а INSERT уставляє знайдені дані в таблицю STO.

У команді INSERT допускається використовувати співвіднесені подзапросы. Припустимо, що мається таблиця МАХОCENKA, у якій зберігається інформація про студента, що має максимальну оцінку за визначену дату (скажемо, для нарахування іменної стипендії). Тоді, для відстеження зміни даних у таблиці успішності і модифікації відповідної інформації про претендента на іменну стипендію, необхідно скористатися наступною командою зі співвіднесеним подзапросом:

INSERT INTO MAXOCENKA (SNUM, OCENKA) SELECT SNUM, OCENKA

FROM USP FIRST WHERE OCENKA = (SELECT MAX (OCENKA)

FROM USP SECOND WHERE FIRST.UDATE=SECOND.UDATE);

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

 







Date: 2015-12-11; view: 431; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию