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

Порядок роботи

  1. Створити HTML-шаблон типової сторінки сайту/

  2. Адаптувати шаблон для обраної CMS.

  3. Наповнити сторінки інформацією.

  4. Додати стандартні сервіси, що пропонує CMS (реєстрація, лист зі сторінки тощо).

  5. Розмістити сайт на хостингу.

  6. Підключити систему статистики.

Самостійна робота №10 Знайомство з мовою sql Довідкові відомості

Структурована мова запитів (Structured Query Language) – стандарт комунікації з базою даних, який підтримується ANSI. Остання версія - SQL-99, хоча новий стандарт SQL-200n вже знаходиться в розробці. Більшість баз даних твердо дотримується стандарту ANSI-92. Майже кожна окрема база даних використовує деякий унікальний набір синтаксису. У більшості випадків, цей синтаксис є розширенням базового стандарту, хоча бувають випадки, коли такий синтаксис призводить до різних результатів роботи різних баз даних.

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

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

Кожен стовпець представляє собою атрибут або сукупність атрибутів об'єктів, наприклад ідентифікаційні номери службовців, зріст, колір машин і т.п. Часто у відношенні стовпця використовується термін поле з вказівкою імені. Поле рядка є мінімальним елементом таблиці. Кожен стовпець у таблиці має певне ім'я, тип даних і розмір. Імена стовпців повинні бути унікальні в межах таблиці.

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

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

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

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

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

Можна створити такі типи запитів:

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

  • запит на перетворення таблиць передбачає вибір із таблиць бази даних

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

Типи запитів даних

Є чотири основних типи запитів даних в SQL, які належать до так званої мови маніпулювання даними (Data Manipulation Language або DML):

  • SELECT - вибрати рядки з таблиць;

  • INSERT - додати рядки в таблицю;

  • UPDATE - змінити рядки в таблиці;

  • DELETE - видалити рядки в таблиці;

Кожен з цих запитів має різні оператори та функції, які використовуються для того, щоб виконати якісь дії з даними. Запит SELECT, має найбільшу кількість опцій. Існують також додаткові типи запитів, використовуваних разом з SELECT, типу JOIN і UNION.

Використання запиту SELECT

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

SELECT column1, column2 FROM table_name

Також, можна отримати всі стовпці з таблиці, використовуючи підстановлювальний знак «*»:

SELECT * FROM table_name

Це може бути корисно в тому випадку, коли ви збираєтеся вибрати дані з певною умовою WHERE. Наступний запит поверне всі стовпці з усіх рядків, де «column1» містить значення «3»:

SELECT * FROM table_name WHERE column1 = 3 Крім «=» (дорівнює), існують такі умовні оператори:

  • Рівно

<> Не дорівнює

  • Більше

  • Менше

>= Більше або дорівнює

<= Менше або дорівнює

Додатково можна використовувати умови BITWEEN і LIKE для порівняння з умовою WHERE, а так само комбінації операторів AND і OR.

SELECT * FROM table_name WHERE ((Age> = 18) і (LastName BITWEEN 'Іванов' AND 'Сидоров')) OR company LIKE '%Motorola%'

Що в перекладі на російську мову означає: вибрати всі стовпці з таблиці table_name, де значення стовпця вік більше або дорівнює 18, а також значення стовпця LastName знаходиться в алфавітному проміжку від Іванов до Сидоров включно, або ж значенням стовпця є компанія Motorola.

Використання запиту INSERT

Запит INSERT використовується для створення нового рядка даних. Для оновлення вже існуючих даних або порожніх полів рядка потрібно використовувати запит UPDATE.

Приблизний синтаксис запиту INSERT:

INSERT INTO table_name (column1, column2, column3) VALUES ('data1', 'data2', 'data3')

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

Змінюється вже існуюча інформація в базі даних схожим чином.

Запит UPDATE і умова WHERE

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

UPDATE table_name SET column1 = 'data1', column2 ='data2' WHERE column3 = 'data3'

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

UPDATE table_name SET FirstName = 'Василь' WHERE FirstName = 'Василь' AND LastName = 'Пупкін'

Запит DELETE

Запит DELETE повністю видаляє рядок з бази даних. Якщо ви хочете видалити одне єдине поле, то потрібно використовувати запит UPDATE і встановити для цього поля значення, яке буде аналогом NULL у вашій програмі. Будьте уважні, і обмежуйте ваш запит DELETE умовою WHERE, інакше ви можете втратити весь вміст таблиці.

DELETE FROM table_name WHERE column1 = 'data1'

Оператор SELECT

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

Один з найпростіших прикладів використання цього оператора: SELECT * FROM table

де * - показати всі дані; FROM - з таблиці ....; table - назва таблиці.

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

SELECT cost FROM table де, cost - назва колонки.

Тут, як і в будь-якій мові програмування є можливість виконання умови, тобто Вам потрібно відображати не всю колонку, а тільки деякі її осередки, які відповідають вашому умові, наприклад:

SELECT cost FROM table WHERE cost>100

де, WHERE - умова, тобто ми відображаємо лише ті осередки, які відповідають нашому умові (ціна більше 100)

Також можна вказувати умова потрапляє або не потрапляє значення в певний проміжок, наприклад:

SELECT cost FROM table WHERE cost BETWEEN 100 AND 600 де, вказується, що ціна повинна бути в проміжку від 400 до 600

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

SELECT cost FROM table WHERE cost IN (100,600) тобто ми виведемо тільки ціну з вартістю 400 і 600

Але якщо нам потрібно щоб ціна не повторювалася (нам потрібна тільки унікальна ціна) нам необхідно вказати ключове слово DISTINCT, наприклад:

SELECT DISTINCT cost FROM table WHERE cost>100

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

SELECT cost, name, model FROM table

де, cost, name, model і будуть ваші колонки з таблиці table.

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

Дуже часто необхідно відсортувати колонки по певному типу або колонці в цілому. Для цього потрібно в кінці запиту (завжди тільки в кінці! Такий синтаксис) вказати ORDER BY при цьому можна вказувати як назву полів, так і їхні порядкові позиції в умові SELECT. Припустимо вам необхідно відсортувати від більшого до меншого, вам потрібно написати ось так:

SELECT cost FROM table ORDER BY cost DESC

Цей приклад сортування за спаданням, але можна сортувати за зростанням, тоді замість DESC - ASC, але зазвичай його не пишуть, так як сортування за зростанням є за замовчуванням.

Дуже корисні так звані підсумкові функції:

COUNT - кількість значень у вказаному стовпці; SUM - сума значень у вказаному стовпці;

AVG - середнє значення у вказаному стовпці; MIN - мінімальне значення у вказаному стовпці; MAX - максимальне значення у вказаному стовпці.

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

SELECT AVG (cost), MAX (cost), MIN (cost) FROM table

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

SELECT model, MAX (cost) AS ‘середня ціна’ FROM table GROUP BY model Тут застосоване привласнення «псевдоніма» для більш зручного

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

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

SELECT model, Max (cost) FROM table GROUP BY model HAVING MAX (cost)

  • 500

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

Таким чином, загальна структура оператора SELECT:

SELECT [DISTINCT] <Список полів> або * [FROM <Список таблиць>]

[WHERE <Умова відбору>]

[GROUP BY <Список полів для групування> [ASC | DESC], ...] [HAVING <Умова групування>]

[ORDER BY <Список полів для сортування> [ASC | DESC], ...]

Це загальний синтаксис оператора Select, і його порушення призведе до синтаксичну помилку.

КОНСТРУКЦІЇ ОПЕРАТОРА SELECT

DISTINCT

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

WHERE

Умовна команда Select, яка дозволяє встановлювати предикати, умова яких може бути вірною або невірною для будь-якого рядка таблиці. Витягуються тільки ті рядки, для яких таке твердження вірне. Наприклад:

SELECT u_id,lname from publishers WHERE city ='New York'

Виводить колонки u_id і lname з таблиці publishers для яких значення в стовпці city має значення 'new York'. Це дає можливість зробити запит конкретнішим.

Реляційні оператори Реляційний оператор - математичний символ, який вказує на певний тип

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

  • = Рівно

  • Більше

  • < Менше

  • >=Більше або рівно

  • <=Менше або рівно

  • < >Не рівно

Припустимо що ви хочете побачити всіх замовників з оцінкою(rating) вище 200. Оскільки 200 - це скалярне значення, як і значення в стовпці оцінки, для їх порівняння ви можете використовувати реляційного оператора.

SELECT * FROM Customers WHERE rating > 200 Булеві оператори

Основні Булеві оператори також розпізнаються в SQL. Вирази Буля - є або вірними, або невірними, подібно до предикатів. Булеві оператори зв'язують одне або більше значень і проводять єдине вірне або невірне значення. Стандартними операторами Буля розпізнаваними в SQL є: AND, OR, і NOT.

Припустимо ви хочете бачити всіх замовників в Далласі, які мають рейтинг вище 200:

SELECT * FROM Customers WHERE city = 'Dallas' AND rating > 200

При використанні оператора AND, повинні виконуватись обидві умови, тобто повинні бути вибрані всі замовники з Далласа, рейтинг яких більше 200.

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

SELECT * FROM Customers WHERE city = 'Dallas' OR rating > 200

В даному випадку будуть вибрані всі замовники з Далласа або всі які мають рейтинг більше 200, навіть якщо вони не з Далласа.

NOT може використовуватися для інвертування значень Буля. Приклад запиту з NOT:

SELECT * FROM Customers WHERE city = 'Dallas' OR NOT rating > 200 При такому запиті будуть вибрані всі замовники з Далласа або всі

замовники, рейтинг яких менше 200.В цьому запиті оператор NOT застосовується тільки до виразу rating >200. Можна зробити складніший запит:

SELECT * FROM Customers WHERE NOT( city = 'Dallas' OR rating > 200 )

У цьому запиті NOT застосований до обох виразів в дужках. В даному випадку, сервер читає вирази в дужках, визначає, чи відповідає істині рівність city = 'Dallas' або рівність rating > 200. Якщо будь-яка умова вірна, вираз Буля усередині круглих дужок вірний. Проте, якщо вираз Буля усередині круглих дужок - вірний, предикат як єдине ціле невірний, тому що NOT перетворить вірно в невірно і навпаки. Тобто, будуть вибрані всі замовники що не знаходяться в Далласі і рейтинг яких менше 200.

IN

Оператор IN визначає набір значень, в яке дане значення може або не може бути включене. Наприклад запит:

SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London' може бути переписаний простіше:

SELECT * FROM Salespeople WHERE city IN ( 'Barcelona', 'London' )

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

BETWEEN

Оператор BETWEEN схожий на оператор IN. У відмінності від визначення по номерах з набору, як це робить IN, BETWEEN визначає діапазон, значення якого повинні зменшуватися, що робить предикат вірним. Ви повинні ввести ключове слово BETWEEN з початковим значенням, ключове AND і кінцеве значення. На відміну від IN, BETWEEN чутливий до порядку, і перше значення в умові повинне бути першим по алфавітному або числовому порядку, наприклад:

SELECT * FROM Salespeople WHERE comm BETWEEN .10 AND .12 SELECT * FROM Salespeople WHERE city BETWEEN 'Berlin' AND 'London'

LIKE

LIKE застосовується тільки до полів типу CHAR або VARCHAR, з якими він використовується, щоб знаходити підрядки. Тобто він шукає поле символу щоб бачити, чи співпадає з умовою частина його рядка. Як умову він використовує групові символи - спеціальні символи, які можуть відповідати чому-небудь. Є два типи групових символів використовуваних з LIKE:

  • символ підкреслення «_» заміщає будь-який одиничний символ.

  • знак «%», заміщає будь-яку кількість символів.

Якщо ми задамо наступні умови:

SELECT * FROM Customers WHERE fname LIKE 'J%'

то будуть вибрані всі замовники, чиї імена починаються на J: john, jerry, james і так далі.

COUNT

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

SELECT COUNT ( DISTINCT snum ) FROM Orders При підрахунку рядків має синтаксис:

SELECT COUNT (*) FROM Customers

GROUP BY

Умова GROUP BY дозволяє визначати підмножину значень в особливому полі в термінах іншого поля, і застосовувати функцію агрегату до підмножини. Це дає можливість об'єднувати поля і агрегатні функції в єдиній умові SELECT. Наприклад, припустимо що ви хочете знайти найбільшу суму покупок отриману кожним продавцем. Ви можете зробити роздільний запит для кожного з них, вибравши MAX () з таблиці для кожного значення поля. GROUP BY дозволить Вам помістити їх всіх в одну команду:

SELECT snum, MAX (amt) FROM Orders GROUP BY snum

HAVING

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

SELECT cid, cname, price, max(price) //max() - це також агрегатна функція FROM customers HAVING max(price) >500

HAVING діє схоже з Where, але з WHERE не можна використовувати агрегатні функції.

ORDER BY

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

DESC, ASC

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

Завдання

1. Вивчити призначення та написання основних операторів мови SQL.

2. Розібрати приклади використання основних операторів мови SQL.

Самостійна робота №11

Огляд мови програмування Java

Довідкові відомості