ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.10.2024
Просмотров: 16
Скачиваний: 0
Лабораторна робота 6
Тема: Робота з таблицями. Внесення, витягання, пошук і видалення даних.
Мета: розглянути команди внесення даних, їх модифікації та видалення. Набути практичних навичок маніпуляції з даними бази.
Теоретична частина
Запис даних в таблиці
Оператор INSERT заповнює таблицю даними. Ось загальна форма INSERT.
INSERT into table_name (column1, column2 ...)
values (value1, value2...);
де table_name є ім'ям таблиці, в яку треба внести дані; column1, column2 і т.д. є іменами стовпців, а value1, value2 і т.д. є значеннями для відповідних стовпців.
Наступний оператор вносить перший запис в таблицю employee_data, яку ми розглядали в роботі №4.
INSERT INTO employee_data
(f_name, l_name, title, age, уоs, salary, реrks, email)
values
("Михайло", "Петров", "директор", 28, 4, 200000, 50000, "misha@yandex.ru");
Як і інші оператори MySQL, цю команду можна вводити на одному рядку або розмістити її на декількох рядках. Важливо пам’ятати наступне – значення символьних полів необхідно брати в подвійні лапки, а кожну з команд закінчувати крапкою з комою.
Декілька важливих моментів:
Значеннями для стовпців f_name, l_name, title і email є текстові рядки, і вони записуються в лапках.
Значеннями для age, уоs, salary і реrks є числа (цілі), і вони не мають лапок.
Можна бачити, що дані задані для всіх стовпців окрім emp_id. Значення для цього стовпця задає система MySQL, яка знаходить в стовпці найбільше значення, збільшує його на одиницю, і вставляє нове значення.
Якщо приведена вище команда правильно введена в запрошенні клієнта mysql, то програма виведе повідомлення про успішне виконання, як показано на мал. 6.1.
Мал. 6.1. Введення даних в таблицю.
Створення додаткових записів вимагає використовування окремих операторів INSERT. Щоб полегшити цю роботу можна помістити всі оператори INSERT у файл. Це повинен бути звичайний текстовий файл з оператором INSERT в кожному рядку.
Заповнення таблиці employee_data даними за допомогою файлу employee.dat
1) Помістіть файл в каталог \mysql\bin.
2) Перевірте, що MySQL працює.
3) Виконайте команду
mysql employees <employee.dat
Таблиця містить тепер 21 запис (20 з файлу employee.dat і один, вставлений оператором INSERT на початку заняття).
Обрання даних з таблиці MySQL
Таблиця employee_data містить тепер достатньо даних, щоб можна було почати з нею працювати. Запит на вибірку даних виконується за допомогою команди MySQL SELECT. Оператор SELECT має наступний формат:
SELECT імена_колонок from ім'я_таблиці [WHERE ...умови];
Частина оператора з умовами є необов'язковою (ми розглянемо її пізніше). По суті, вимагається знати імена стовпців і ім'я таблиці, з якої витягуються дані.
Наприклад, щоб витягнути імена і прізвища всіх співробітників, виконайте наступну команду.
SELECT f_name, l_name from employee_data;
Оператор MySQL виводить всі дані із стовпців f_name і l_name. Результат роботи оператора представлений на мал. 6.2.
Мал. 6.2. Виведення даних з таблиці
При найближчому розгляді можна помітити, що дані представлені в тому порядку, в якому вони були введені. Більш того, останній рядок указує число рядків в таблиці - 21.
Щоб вивести всю таблицю, можна або ввести імена всіх стовпців, або скористатися спрощеною формою оператора SELECT.
SELECT * from employee_data;
Символ * в цьому виразі означає 'ВСІ колонки'. Тому цей оператор виводить всі рядки всіх стовпців.
Розглянемо ще один приклад.
SELECT f_name, l_name, age from employee_data;
Вибірка стовпців f_name, l_name і age представлена на мал. 6.3.
Мал. 6.3. Вибірка стовпців f_name, l_name і age
Завдання
1. Напишіть оператор SQL для створення нової бази даних з ім'ям addressbook
2. Який оператор використовується для отримання інформації про таблицю? Як використовується цей оператор?
3. Як одержати список всіх баз даних, доступних в системі?
4. Напишіть оператор для запису наступних даних в таблицю employee_data
Ім'я: Рудольф
Прізвище: Курочкин
Посада: Програміст
Вік: 34
Стаж роботи в компанії: 2
Зарплата: 95000
Надбавки: 17000
email: rudolf@yandex.ru
5. Приведіть дві форми оператора SELECT, які виводитимуть всі дані з таблиці employee_data.
6. Як витягнути дані стовпців f_name, email з таблиці employee_data?
7. Напишіть оператор для виведення даних із стовпців salary, реrks і уоs таблиці employee_data.
8. Як дізнатися число рядків в таблиці за допомогою оператора SELECT?
9. Як витягнути дані стовпців salary, l_name з таблиці employee_data?
Примітка: Оператори SQL не розрізняють регістр символів, проте імена таблиць і імена баз даних можуть розрізняти регістр символів, залежно від операційної системи, що використовується.
Примітка: Оператор DESCRIBE дозволяє отримати структуру таблиці.
Вибірка даних за допомогою умов
Тепер більш детально розглянемо формат оператора SELECT. Його повний формат має вигляд:
SELECT імена_колонок from ім'я_таблиці [WHERE ...умови];
В операторі SELECT умови є необов'язковими.
Оператор SELECT без умов виводить всі дані з вказаних стовпців. Одним з достоїнств RDBMS є можливість витягувати дані на основі певних умов.
Тепер перейдемо до розгляду операторів порівняння.
Оператори порівняння = і !=
SELECT f_name, l_name from employee_data where f_name = 'Иван';
Результат запиту приведений на мал. 6.4.
Мал. 6.4. Вибірка стовпців з умовою для поля "ім'я".
Цей оператор виводить імена і прізвища всіх співробітників, які мають ім'я Іван. Відзначимо, що слово Іван в умові укладено в одиночні лапки. Можна використовувати також подвійні лапки. Лапки є обов'язковими, оскільки MySQL породжуватиме помилку при їх відсутності. Окрім того порівняння MySQL не розрізняють регістр символів, що означає, що з рівним успіхом можна використовувати "Иван", "иван" і навіть "ИвАн".
SELECT f_name,l_name from employee_data where title="программист";
Результат запиту приведений на мал. 6.5.
Мал. 6.5. Вибірка стовпців з умовою для поля "посада"
Вибирає імена і прізвища всіх співробітників, які є програмістами.
SELECT f_name, l_name from employee_data where age = 32;
Результат запиту приведений на мал. 6.6.
Мал. 6.6. Вибірка стовпців з умовою для поля "вік"
Це список імен і прізвищ всіх співробітників з віком 32 року. Пригадайте, що тип стовпця age був заданий як int, тому лапки навкруги 32 не потрібні. Це - незначна відмінність між текстовим і цілочисельним типами стовпців.
Оператор != означає 'не дорівнює і є протилежним оператору рівності.
Оператори більше і менше
Давайте одержимо імена і прізвища всіх співробітників, які старше за 32 роки.
SELECT f_name, l_name from employee_data where age > 32;
Результат запиту приведений на мал. 6.7.
Мал. 6.7. Вибірка стовпців з умовою "більше" для поля "вік"
Спробуємо знайти співробітників, які одержують зарплату більше 120000.
SELECT f_name, l_name from employee_data where salary > 120000;
Результат запиту приведений на мал. 6.8.
Мал. 6.8. Вибірка стовпців з умовою "більше" для поля "зарплата"
Тепер перерахуємо всіх співробітників, які мають стаж роботи в компанії менше 3 років.
SELECT f_name, l_name from employee_data where уоs < 3;
Результат запиту приведений на мал. 6.9.
Мал. 6.9. Вибірка стовпців з умовою "менше" для поля "стаж"
Оператори <= і >=
Оператори, що використовуються в основному з цілочисельними даними, менше або рівно ( <= ) і більше або рівно ( >= ) забезпечують додаткові можливості.
select f_name, l_name, age, salary
from employee_data where age >= 32;
Результат запиту приведений на мал. 6.10.
Мал. 6.10. Вибірка стовпців з умовою "більше або рівно" для поля "вік"
Вибірка містить імена, вік і зарплати співробітників, яким більше 32 років.
select f_name, l_name from employee_data where уоs <= 2;
Результат запиту приведений на мал. 6.11.
Мал. 6.11. Вибірка стовпців з умовою "менше або рівно" для поля "стаж"
Запит виводить імена співробітників, які працюють в компанії не більше 2 років.
Завдання
1. Напишіть оператор SELECT для витягання ідентифікаційного номера співробітників, які старше 30 років.
2. Напишіть оператор SELECT для витягання імен і прізвищ всіх Web-розробників.
3. Що виведе наступний оператор SELECT:
SELECT * from employee_data where salary <=100000;
4. Як вивести зарплати і надбавки співробітників, які одержують як надбавки більше 16000?
5. Перерахуйте імена всіх співробітників (прізвище, а потім ім'я), які посідають посаду бухгалтера.
Пошук текстових даних за шаблоном
В даній частині ми розглянемо пошук текстових даних за шаблоном за допомогою пропозиції where і оператора LIKE.
Оператор порівняння на рівність ( = ) допомагає вибрати однакові рядки. Так, щоб перерахувати імена співробітників, яких звуть Іван, можна скористатися наступним оператором SELECT.
select f_name, l_name from employee_data where f_name = "Иван";
Результат запиту приведений на мал. 6.12.
Мал. 6.12. Результат пошуку співробітників, яких звуть Іван
Як бути, якщо треба вивести дані про співробітників, ім'я яких починається з букви В? Мова SQL дозволяє виконати пошук рядкових даних за шаблоном. Для цього в пропозиції where використовується оператор LIKE таким чином.
select f_name, l_name from employee_data where f_name LIKE "В%";
Результат запиту приведений на мал. 6.13.
Мал. 6.13. Результат пошуку співробітників, ім'я яких починається з букви В
Можна бачити, що тут в умові замість знака рівності використовується LIKE і знак відсотка в шаблоні.
Знак % діє як символ-заступник (аналогічно використовуванню * в системах DOS і Linux). Він замінює собою будь-яку послідовність символів. Таким чином "В%" позначає всі рядки, які починаються з букви В. Аналогично "%В" вибирає рядки, які закінчуються символом В, а "%В%" рядки, які містять букву В.
Давайте виведемо, наприклад, всіх співробітників, які мають в назві посади рядок "про".
select f_name, l_name, title from employee_data
where title like '%про%';
Результат запиту приведений на мал. 6.14.
Мал. 6.14. Результат пошуку співробітників, в назві посади яких міститься рядок "про"
Перерахуємо всіх співробітників, імена яких закінчуються буквою 'а'. Це дуже просто зробити.
mysql> select f_name, l_name from employee_data
where f_name like '%a';
Результат запиту приведений на мал. 6.15.
Мал. 6.15. Результат пошуку співробітників, імена яких закінчуються буквою 'а'
Завдання
1. Перерахувати всіх співробітників, прізвища яких починаються з букви P.