You are on page 1of 65

Лекція 14

Введення в бази даних


База даних (БД) – це сховище даних про деяку предметну
область, організоване у вигляді спеціальної структури.
Важливо:
 дані про деяку область (не про все)
 впорядковані
Система керування базою даних (СКБД) – це програмне
забезпечення для роботи з БД.
Функції:
 пошук інформації в БД
 виконання нескладних розрахунків
 виведення звітів на друк
 редагування БД

Інформаційна система – це БД + СКБД.


Типи інформаційних систем
• локальні ІС
БД і СКБД знаходяться на одному комп'ютері.
• файл-серверні
БД знаходиться на сервері мережі
(файловому сервері), а СКБД на комп'ютері
користувача.
• клієнт-серверні
БД і основна СКБД знаходяться на сервері,
СКБД на робочій станції посилає запит
і виводить на екран результат.
Локальні ІС

БД
СКБД

автономність (незалежність)
1) з БД працює тільки одна людина
2) складно обновляти при великій кількості
користувачів
3) практично неможливо “стикувати” зміни, які
вносять різні користувачі
Файл-серверні ІС
СКБД БД
СКБД

СКБД СКБД

декілька людей працюють з одною базою


1) основну роботу виконують робочі станції (РС),
вони повинні бути потужними
2) для пошуку рядка на РС копіюється вся БД –
навантаження на мережу
3) слабкий захист від злому (тільки на РС)
4) проблеми при одночасній зміні з різних РС
Клієнт-серверні ІС
СКБД-клієнт БД СКБД-сервер:
• MS SQL Server • Interbase
• Oracle • SyBase
• MySQL

запит
СКБД-клієнт
на SQL
відповідь

СКБД-клієнт

SQL (Structured Query Language) – мова структурних запитів


1) основну роботу виконує сервер, робочі станції можуть бути
малопотужними
2) легше модернізується (тільки сервер)
3) по мережі ідуть тільки потрібні дані
4) захист і права доступу встановлюються на сервері (складніше пошкодити)
5) розділення доступу (черга завдань)
1) складність налаштування
2) висока вартість ПЗ (тисячі $)
Типи баз даних
• табличні БД
дані у вигляді однієї таблиці
• мережеві БД
набір вузлів, в яких кожен може бути
зв'язаний з кожним.
• ієрархічні БД
у вигляді багаторівневої структури
• реляційні БД (99,9%)
набір взаємопов'язаних таблиць
Табличні БД
Модель – картотека
Приклади: Петров Вася
• записна книжка Шевченка пл., б. 32, кв. 11
• каталог в бібліотеці 275-75-75

поля
записи
Прізвище Ім'я Адреса Телефон
Петров Вася Шевченка пл., б. 32, кв. 11 275-75-75
Іванов Петро Франка вул., б. 25, кв.12 276-76-76

1) найпростіша структура
2) всі інші типи БД використовують таблиці
в багатьох випадках – дублювання даних:
Т.Г. Шевченко Кобзар 540 ст.
Т.Г. Шевченко Гайдамаки 45 ст.
Табличні БД
1. Кількість полів визначається розробником і не може змінюватися
користувачем.
2. Будь-які поля повинні мати унікальне ім'я.
3. Поля можуть мати різний тип:
• рядок символів (довжиною до 255 символів)
• дійсне число (з дробовою частиною)
• ціле число
• грошова сума
• дата, час, дата і час
• логічне поле (істина або хибність, так або ні)
• багатосторінковий текст (МЕМО)
• малюнок, звук або інший об'єкт (об'єкт OLE)
4. Поля можуть бути обов'язковими для заповнення або ні.
5. Таблиці можуть містити скільки завгодно записів (ця кількість
обмежується тільки об'ємом диску); записи можна добавляти, вилучати,
редагувати, сортувати, шукати.
Ключове поле (ключ таблиці)
Ключове поле (ключ) – це поле (або комбінація полів),
які однозначно визначають запис.
В таблиці не може бути двох записів з однаковими
значеннями ключа.
Чи можуть дані поля бути ключем?
• прізвище
• ім'я
• номер паспорта
• номер будинку
• реєстраційний номер автомобіля
• пункт проживання
• дата виконаних робіт
• марка пральної машини ?
Мережеві БД
Мережева БД – це набір вузлів, в яких кожен може бути
зв'язаний з кожним.

А
Г Б
В
найповніше відображає структуру деяких задач
(наприклад, мережеве планування в економіці)
1) складно зберігати і шукати інформацію в усіх зв'язках
2) заплутаність структури

! Можна зберігати у вигляді таблиці, але з


дублюванням даних!
Ієрархічна БД
Ієрархічна БД – це набір даних у вигляді багаторівневої
структури.
Прайс-лист:
Продавець (рівень 1) Іван

Товар (рівень 2) Монітори Принтери

Виробник (рівень 3) Sony Phillips Samsung

Модель (рівень 4) S93 X93B

Ціна (рівень 5) $306 $312


Ієрархічна БД
Перетворення в табличну форму:

Продавець Товар Виробник Модель Ціна


Іван Монітор Sony S93 $306
Іван Монітор Sony X93B $312
Іванн Монітор Phillips 190 B5 CG $318
Іван Монітор Samsung SyncMaster $452
193P

1) дублювання даних
2) при зміні адреси фірми потрібно міняти її в усіх
рядках
3) немає захисту від помилок введених оператором
(Іван – Іванн), краще було б вибрати із списку
Реляційні БД
1970-і рр. Е. Кодд, англ. relation – відношення.
Реляційна база даних – це набір простих таблиць, між якими
встановлені зв'язки (відношення) з допомогою числових кодів.

Виробник
Продавці
Прайс-лист Код
Код
Код запису Назва
Назва
Код продавця Країна
Адреса
Код виробника Сайт
Телефон
Код товару
Сайт
Код моделі
Ціна

Товари Моделі

Код Код

Назва Назва
Код виробника
Реляційні БД
1) немає дублювання інформації;
2) при зміні адреси фірми, достатньо змінити її тільки в
таблиці Продавці;
3) захист від неправильного введення: можна вибирати
тільки фірму, яка заздалегідь введена в таблицю
Продавці;
4) механізм транзакції: будь-які зміни вносяться в базу
тільки тоді, коли вони повністю завершені.

1) складність структури (не більше 40-50 таблиць);


2) при пошуку потрібно звертатися до декількох таблиць;
3) потрібно підтримувати цілісність: при вилученні фірми
продавця потрібно вилучати всі зв'язані записи з всіх
таблиць (в СКБД – автоматично, каскадні вилучення).
Зв'язки між таблицями
Один до одного («1-1») – одному запису в першій таблиці відповідає
тільки один запис в другій таблиці.
Примітка: виділення часто використовуваних даних.
1 1
Код Прізвище Ім'я Код Рік народження Адреса
1 Іванов Кузьма 1 1992 Шевченка, б.20, кв. 6
2 Петров Василь 2 1993 Франка вул., б. 30, кв. 18
… …

Один до багатьох («1- ») – одному запису в першій таблиці


відповідає декілька записів в другій.
товари прайс-
1  лист
Код Назва Код Код товару Ціна
1 Монітор 123 1 2 999
2 Вінчестер 345 1 2 499
… …
Зв’язок між таблицями
Багато до багатьох (« - ») – одному запису в першій таблиці
відповідає декілька записів в другій, і навпаки.
вчителі предмети
Код Прізвище Код Назва
1 Іванов
  1 Історія
2 Петров 2 Географія
… 3 Біологія

Реалізація – через третю таблицю і два зв'язки «1-».


розклад
1   1
Код Прізвище Код Код Код Назва
Код Клас
1 Іванов вчителя предмету
1 Історія
2 Петров 1 1 1 9-А
2 Географія
… 2 1 2 8-Б
3 Біологія
3 2 3 7-В


Нормалізація бази даних
Нормалізація – це розробка такої структури БД, в які немає
надлишкових даних і зв'язків.
Основні принципи:
 Будь-яке поле повинно бути неподільним.
Прізвище і ім'я Прізвище Ім'я
Іванов Петро Іванов Петро
Петров Іван Петров Іван
… …

 Не повинно бути полів, в яких позначені різні види одного і того


ж, наприклад, товарів.
 1
Рік Банани Ківі Код Код Назва
Рік Кількість
товару 1 Банани
2006 3200 1200
2006 1 1200 2 Ківі
2007 5600 1500
2007 2 1500 …


Нормалізація бази даних
Основні принципи:
 Будь-яке поле повинно залежати тільки від ключа (ключ – це поле
або комбінація полів, однозначно визначає запис).
залежить не тільки від
назви товару!
товари
Код Назва Ціна
1 Монітор 1800 грн.
2 Вінчестер 2200 грн. прайс-лист

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


інших.

Ціна за Кількість,
Код Товар Вартість
тонну тонн
1 Банани 240 10 2400
2 Киви 300 20 6000

Пошук в базі даних
Лінійний пошук – це перебір всі записів до тих пір, поки не
буде знайдений потрібний.

Код Прізвище
1 Сидоров Іванов?
2 Вєтров
… 1024 порівняння!
1024 Помаранський

дані не потрібно попередньо підготовлювати

низька швидкість пошуку


Двійковий пошук

1. Розділити область пошуку на


дві рівні частини.
2. Визначити, в якій половині
знаходиться потрібний об'єкт.
3. Перейти до кроку 1 для цієї
половини.
4. Повторювати кроки 1-3 поки
об'єкт не буде “зловлений”.
Пошук в базі даних
Двійковий пошук в БД – потребує попереднього
сортування.
Іванов? 1 Андрєєв 1 Андрєєв …
2 Борсуков … 255 Жаров
… 255 Жаров …
512 Коваль … 383 Ігорів
… 512 Коваль …
1023 Юр'єв … 512 Коваль
1024 Яшин 1024 Яшин …

? Скільки порівнянь? 11 порівнянь!

швидкий пошук
1) записи потрібно відсортувати по відповідному полю;
2) можна використовувати тільки для одного поля.
Пошук по індексах
Індекс – це допоміжна таблиця, яка призначена для
швидкого пошуку в основній таблиці по обраному
стовпчику.
Таблиця
Номер Дата Товар Кількість
1 02.02.2006 Ківі 6
2 01.11.2006 Банани 3
3 12.04.2006 Апельсини 10

Індекси:
по даті по товару по кількості
Номер Дата Номер Товар Номер Количество
1 02.02.2006 3 Апельсини 2 3
3 12.04.2006 2 Банани 1 6
2 01.11.2006 1 Ківі 3 10
Пошук по індексах
Алгоритм пошуку:
1) двійковий пошук по індексу – знайти номер
потрібних записів;
2) вибрати ці записи по номерам із основної таблиці.

двійковий пошук по всім стовпчикам, для яких


побудовані індекси

1) індекси займають місце на диску;


2) при зміні таблиці потрібно перебудовувати всі
індекси (в СКБД – автоматично).
Основи SQL
SQL (Structured query language — мова структурованих запитів) –
декларативна мова, що використовується для керування даними.
В цій мові відсутні алгоритмічні конструкції (умовні переходи, оператори
циклу на ін.).
Таким чином, мова SQL приховує від користувача складності алгоритмів
пошуку даних та їх реалізацію
Основні риси мови SQL:
- високорівнева структура, що нагадує англійську мову
- незалежність від конкретних СКБД
- можливість різноманітного представлення даних
- підтримка архітектури клієнт/сервер
- динамічне визначення даних (можливість змінювати і
розширювати структуру бд навіть в той час, коли користувачі
щвертаються до її вмісту)
Мова SQL грунтується на використанні запитів (query) – інструкціях,
що оформлені певним чином

Кожна інструкція використовується для того щоб виконати певну


дію, наприклад:

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

CREATE DATABASE ім’я_БД;

Наприклад:

CREATE DATABASE users;


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

USE ім’я_БД;

Наприклад:

USE users;

Тепер база даних готова до продовження роботи


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

CREATE TABLE ім’я_таблиці;

Наприклад:

CREATE TABLE data;


Як правило, при створенні нової таблиці вказуються і стовпці, яка будуть в
ній використовуватись

Наприкад:

CREATE TABLE data (


id INT NOT NULL AUTO_INCREMENT
name VARCHAR (32)
year CHAR (4)
PRIMARY KEY (id)
);
Приклад:

CREATE TABLE data (


id INT NOT NULL AUTO_INCREMENT
name VARCHAR (32)
year CHAR (4)
PRIMARY KEY (id)
);
Для перевірки факту створення нової таблиці використовується команда:

DESCRIBE ім’я таблиці;

Наприклад:

DESCRIBE data;

Команда DESCRIBE є засобом налагодження, коли потрібно впевнетись в


успішному створенні таблиці MySQL. Цю команду можна використати
також для перегляду імен полів і стовпців таблиці і типів даних в кожному
з них.
Для додавання даних призначена команда INSERT

INSERT INTO таблиця COLUMNS ([стовпчики]) VALUES ([значення])

Команді необхідно вказати, в яку таблицю будуть додаватися дані і


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

INSERT INTO months VALUES (1,'January',31);


INSERT INTO months (id,name,days) VALUES (2,'February',29);
Правила заповнення бази даних:

- числові значення мають вказуватись без лапок


- строкові значення завжди мають бути в лапках
- значення дати і часу завжди мають бути в лапках
- функції мають вказуватись без лапок
- значення NULL ніколи не повинно писатись в лапках

Якщо в стрічці відсутнє якесь значення, то по замовчуванню воно стає


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

Для цього використовується команда:

ALTER TABLE таблиця дії


Для отримання даних використовується команда

SELECT стовпчики FROM таблиця


[WHERE умова_вібірки_строк]
[ORDER BY порядок сортування];

Наприклад:
SELECT * FROM users_data;
Вибір певних полів:

SELECT * FROM users_data


WHERE name=“Олександр”;

Сортування:

SELECT * FROM users_data


ORDER BY name DESC;

DESC – сортування від більшого до меншого


ASC – (за замовчуванням) сортування від меншого до більшого
Приклад:

SELECT *  FROM albums


WHERE genre = 'rock' AND sales_in_millions <= 50 
ORDER BY released
Умови в WHERE можуть бути записані з використанням ще кількох команд:
IN - порівнює значення в стовпці з декількома можливими значеннями і
повертає true, якщо значення збігається хоча б з одним значенням
BETWEEN - перевіряє, чи знаходиться значення в якомусь проміжку
LIKE - шукає за шаблоном

Наприклад:

SELECT * FROM users_data


WHERE name LIKE “Helen_”;

Будуть отримані всі стрічки, де ім’я користувача починатиметься з “Helen” і


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

SELECT * FROM albums WHERE genre IN ('pop', 'soul');

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

SELECT * FROM albums WHERE released BETWEEN 1975 AND 1985;

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

SELECT * FROM albums WHERE album LIKE '%R%';

Знак % означає будь-яку послідовність символів (0 символів теж вважається за послідовність).


Функції
У SQL багато вбудованих функцій для виконання різних операцій. Найбільш
часто використовувані:

COUNT() - повертає число рядків


SUM() - повертає суму всіх полів з числовими значеннями в них
AVG() - повертає середнє значення серед рядків
MIN()/MAX() - повертає мінімальне/максимальне значення серед рядків

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


виконати такий запит:

SELECT MAX (released) FROM albums;


Якщо ми потрібно використовувати результат даних обчислень, то необхідно
використовувати так звані вкладені запити. Припустимо, необхідно вивести артиста,
альбом і рік випуску найстарішого альбому в таблиці.
Вивести ці стовпці можна, використовуючи наступний запит:
SELECT artist, album, released FROM albums;

Також ми знаємо, як отримати найбільш ранній рік з наявних:


SELECT MIN (released) FROM album;

Об'єднати ці запити можна в WHERE:


SELECT artist, album, released
FROM albums
WHERE released = (
SELECT MIN (released) FROM albums
);
Для здійснення змін в даних в таблицях використовується команда
UPDATE.
Використання UPDATE включає в себе:
вибір таблиці, в якій знаходиться поле, яке ми хочемо змінити
запис нового значення
використання WHERE, щоб позначити конкретне місце в таблиці

Наприклад, у нас є таблиця з серіалами. Однак у нас є проблема: «Гра


Престолів» позначена як комедія і нам виразно потрібно це змінити:

UPDATE tv_series
SET genre = 'drama'
WHERE name = 'Game of Thrones';
Видалення запису з таблиці через SQL - дуже проста операція.
Все, що потрібно - це позначити, що саме ми хочемо видалити.

DELETE FROM tv_series


WHERE id = 4;

Переконайтеся, що використовуєте WHERE, коли видаляєте запис з


таблиці. Інакше ви видалите всі записи з таблиці, самі того не бажаючи.
Якщо потрібновидалити всі дані з таблиці, але при цьому залишити
саму таблицю, слід використовувати команду TRUNCATE:

TRUNCATE TABLE table_name;

У разі, якщо потрібновидалити саму таблицю, то слід використовувати


команду DROP:

DROP TABLE table_name;


Робота з БД
в Python
Python містить стандартний Database API (набір чітко визначених методів для
взаємодії різних компонентів, який можна використовувати для отримання доступу
до веб-систем, операційних систем, баз даних тощо), в якому вказані деякі
стандартні правила підключення до баз даних.

Його основні функції:

•connect() - створення з’єднання з базою даних. Виклик цієї функції може включати в
себе аргументи, на зразок, імені користувача, пароля, адреси сервера та ін.

•cursor() - створення об’єкта курсору, призначеного для роботи із запитами.

•execute() і executemany() - запуск однієї або багато команд SQL.

•fetchone(), fetchmany() і fetchall() - отримання результатів роботи функції execute().


Мова запитів SQL

SQL - це декларативна універсальна мова реляційних баз даних. Запити SQL до


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

Існують дві основні категорії SQL:

1.DDL (Data Definition Language, мова визначення даних) - обробляє створення,


видалення, обмеження і дозволи для таблиць, баз даних.

2.DML (Data Manipulation Language, мова маніпулювання даними) - обробляє


додавання даних, їх вибірку, оновлення та видалення.
Основні команди SQL DDL
Основні команди SQL DML
SQLite -це легка реляційна база даних з відкритим початковим
кодом.
Браузери і операційні системи використовують SQLite як вбудовану базу даних.

Робота з базою даних починається з виклику connect() для встановлення з’єднання з локальним
файлом бази даних, який треба створити або використовувати.

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

•id - унікальний номер дисципліни (первинний ключ)


•discipline - назва дисциплыни (рядок змінної довжини)
•lec_num - кількість лекційних занять(ціле число)
•lab_num – кількість практичних занять
•points – кількість балів, що студент отримує за одне лабораторне заняття(дійсне число)
1. Імпортуємо бібліотеку, що відповідає типу нашої бази даних (sqlite3).
2. Створюємо з’єднання з нашою базою даних (у нашому прикладі це створення файла бази даних
first_year.db).
3. Створюємо курсор - це спеціальний об’єкт (curs), який робить запити і отримує їх результати.
4. Створюємо таблицю studing з відповідними полями.
5. Якщо ми не просто читаємо дані, а й вносимо зміни у базу даних - необхідно зберегти транзакцію.
Рядок conn.commit() дозволяє зберети поточні зміни.
6. Перед тим, як завершити роботу з SQLite, необхідно закрити курсор.
7. Перед тим, як завершити роботу з SQLite, необхідно закрити з’єднання

import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('''CREATE TABLE studing (id INT PRIMARY KEY,
discipline VARCHAR(20),
lec_num INT,
lab_num INT,
points FLOAT)''')
conn.commit()
curs.close()
conn.close()
Почнемо заповнювати таблицю
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('INSERT INTO studing VALUES(1, "Maths", 12, 18, 2.5)')
curs.execute('INSERT INTO studing VALUES(2, "Physics", 16, 12, 3.5)')
conn.commit()
curs.close()
conn.close()

Існує більш безпечний спосіб додавання даних - використовуючи заповнювач у вигляді ?

import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
ins = 'INSERT INTO studing (id, discipline, lec_num, lab_num, points) VALUES(?, ?, ?, ?, ?)'
curs.execute(ins, (3, 'Programming', 18, 8, 5.0))
ins = 'INSERT INTO studing (id, discipline, lec_num, lab_num, points) VALUES(?, ?, ?, ?, ?)'
curs.execute(ins, (4, 'IttS', 12, 8, 5.5))
conn.commit()
curs.close()
conn.close()
Цього разу у запиті використовувалися п’ять знаків ?, щоб показати, що планується додати п’ять значень,
а потім додати ці значення списком у функцію execute().
Заповнювачі полегшують розставлення лапок і захищають від SQL-ін’єкцій.
SQL ін’єкція - зовнішня атака, поширена в мережі Інтернет, яка впроваджує у систему шкідливі команди
SQL.
Також в запиті можна використовувати імена змінних з префіксом :.

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

import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute("INSERT INTO studing (id, discipline, lec_num, lab_num, points)
VALUES (:idst, :discst, :lecst, :labst, :pointst)",
{"idst": 5, "discst": "Electronics", "lecst": 15, "labst":10, "pointst": 4.5})
conn.commit()
curs.close()
conn.close()
Тепер перевіримо, чи зможемо ми отримати список наших предметів

import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('SELECT * FROM studing')
conn.commit()
rows = curs.fetchall()
print(rows)
curs.close()
conn.close()

В результаті отримаємо:
Також можна у циклі пройти по рядкам об’єкта курсору
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('SELECT * FROM studing')
conn.commit()
for row in curs:
print(row)
curs.close()
conn.close()

за аналогією з перебором по файлу:


Отримаємо список знову, але на цей раз впорядкуємо його за кількістю лекцій:
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('SELECT * FROM studing ORDER BY lec_num')
conn.commit()
for row in curs:
print(row)
curs.close()
conn.close()
Отримаємо список від дисципліни з найбільшою кількістю лабораторних робіт до найменшої
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('SELECT * FROM studing ORDER BY lab_num DESC')
conn.commit()
for row in curs:
print(row)
curs.close()
conn.close()
Визначимо в якомі предметі за одну лабораторну роботу отримують більше всього балів
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('SELECT * FROM studing WHERE points = (SELECT MAX(points) FROM studing)')
conn.commit()
for row in curs:
print(row)
curs.close()
conn.close()
Оновимо базу даних first_year.db. Змінимо кількість лабораторних робіт (lab_num) в Programming з 8 на 16

import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('UPDATE studing SET lab_num = 16 WHERE id = 3')
conn.commit()
curs.execute('SELECT * FROM studing WHERE id = 3')
for row in curs:
print(row)
curs.close()
conn.close()

Запис у базі даних із значенням id = 3 зміниться на такий:


Виконаєм операцію видалення дисципліни з бази даних за назвою дисципліни
import sqlite3
conn = sqlite3.connect('first_year.db')
curs = conn.cursor()
curs.execute('DELETE FROM studing WHERE discipline = "Maths"')
conn.commit()
curs.execute("SELECT * FROM studing")
for row in curs:
print(row)
curs.close()
conn.close()
Відповідно бачимо, що в базі даних «Математика» тепер відсутня
Дякую за увагу!

You might also like