
- •Практичні завдання
- •2.Робота із запитами Теоретичні відомості
- •Практичні завдання
- •3. Функції маніпулювання даними Теоретичні відомості
- •Практичні завдання
- •Теоретичні відомості
- •Практичні завдання
- •5. Об’єднання таблиць Теоретичні відомості
- •Практичні завдання
- •7. Представлення Теоретичні відомості
- •Практичні завдання
- •8. Індекси. Зовнішній ключ Теоретичні відомості
- •Практичні завдання
- •9. Транзакції Теоретичні відомості
- •Практичні завдання
- •10. Проектування власної бази даних MySql
Міністерство освіти і науки України
Чернігівський технікум транспорту та комп’ютерних технологій
Звіт про виконання
практики з систем управління та створення баз даних
Виконав
студент групи ПС-1110 Середа В.В
Перевірив
викладач Базилевич В.М.
Чернігів, 2013р.
Практичні завдання
Створити базу даних Бібліотека(library).Для цього виконайте SQL-запит::
Запустити denwer Та перейти за адресою http://localhost/Tools/phpMyAdmin/index.php
Із пунктів меню натискаємо на SQL та вписуємо наступний запит:
create database library default
character set utf8 collate
utf8_general_ci
Та натискаємо ОК.
Створити таблицю Книги (Books) з такими полями:
id — номер по порядку;
name — назва книжки;
author — автор книги;
print_year — рік видання;
publisher — видавництво.
Для цього виконайте SQL-запит:
У створеній базі виконуємо наступний SQL-запит:
CREATE TABLE books (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(200) default NULL,
print_year year(4) default NULL,
publisher varchar(200) default NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Розділити відношення “книги” (див. попереднє завдання) так, щоб:
автори і видавництва були розміщені в окремих таблицях, а не в таблиці Books;
база даних повинна підтримувати введення кількох авторів для однієї книги (враховуючи і попередній пункт).
Для цього виконайте:
1)
2)
3)
Щоб розділити відношення “книги” так, щоб:
автори і видавництва були розміщені в окремих таблицях, а не в таблиці Books.
Та щоб база даних підтримувала введення кількох авторів для однієї книги (враховуючи і попередній пункт).
Потрібно вмконати наступні SQL-запити:
3.
create table authors (
id int not null auto_increment,
author varchar(200) default null,
primary key (id)
) engine=innodb default charset=utf8 auto_increment=1;
3-1.
create table publishers (
id int not null auto_increment,
publisher varchar(200) default null,
primary key (id)
) engine=innodb default charset=utf8 auto_increment=1;
3-2.
alter table books drop author, drop publishers;
3-3.
ALTER TABLE books
ADD author_id INT(11) NOT NULL,
ADD INDEX (author_id),
ADD publisher_id INT(11) NOT NULL,
ADD INDEX (publisher_id);
Створити базу даних phones (порівняння cp1251_general_ci). Використовувати SQL.
Створив базу даних phones, за допомогою такого SQL-запиту:
create database phones default
character set cp1251 collate
cp1251_general_ci
Створити таблицю phone.Для цього виконайте SQL-запит:
У базі данних phones створив таблицю phone, використовуючи наступний SQL-запит.
CREATE TABLE IF NOT EXISTS phone (
abonent varchar(40) DEFAULT NULL,
street varchar(20) DEFAULT NULL,
house varchar(3) DEFAULT NULL,
flat varchar(50) DEFAULT NULL,
phone int(10) NOT NULL DEFAULT 0,
PRIMARY KEY (phone)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Заповнити таблицюphones даними про 10-20 осіб. Використовувати SQL.
Напр.,
Заповнив таблицю phones даними про 15 осіб. Використовуючи твкий SQL-запит:
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Середа', 'Московський', '19', '2', 210342);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Остряк', 'Добриня', '20', '3', 137499);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Абалмазов', 'Шевченко', '21', '4', 231989);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Вугольок', 'Воїнів', '22', '5', 324565);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Самусь', 'Добриня', '23', '6', 127999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Булавенко', 'Київська', '24', '7', 666666);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Чупакабра', 'Лісна', '25', '8', 999999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Голуб', 'Майська', '26', '9', 099229);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Кличко', 'Німецька', '27', '10', 066111);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Омелько', 'Лісна', '28', '11', 111000);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Бурачок', 'Чернігівська', '29', '12', 063777);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Курапаткін', 'Одинцова', '30', '13', 337999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Хропатий', 'Центральна', '31', '14', 067999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Булавенко', 'Київська', '32', '15', 0627999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Давидов', 'Одинцова', '18', '1', 937999);
INSERT INTO `phones`.`phone` (`abonent`, `street`, `house`, `flat`, `phone`) VALUES ('Приходько', 'Факульса', '2', '23', 124254);
Створити базу даних films (порівняння cp1251_general_ci). Використовувати SQL.
Створив базу данних films, використовуючи наступний SQL-запит:
create database films default
character set cp1251 collate
cp1251_general_ci
Створити таблицю film_list. Для цього виконайте наступний SQL-запит:
Створити таблицю fim_list, для цьоого треба перейти в новостворену БД та у розділі створення таблиць натиснути SQL та записати наступний запит:
CREATE TABLE IF NOT EXISTS `film_list` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`country` varchar(255) DEFAULT NULL COMMENT 'Країна створення фільму',
`year` int(11) DEFAULT NULL COMMENT 'Рік створення фільму',
`addDate` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Заповнити таблицю даними про 10-15 фільмів. Використовувати SQL.
Перейти до створеної таблиці та заповнити її данними, використовуючи наступний SQL-запит:
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('1', 'Маска', 'Італія', '1992', '1994-04-12 12:00:23');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('2', 'Брюсс', 'Італія', '1994', '2000-01-04 23:00:00');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('3', 'Джимм', 'Франція', '1996', '1994-06-23 12:22:12');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('4', 'Мом', 'Португалія', '1995', '1996-12-11 06:13:44');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('5', 'Свято', 'Росія', '2008', '2004-10-14 16:00:00');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('6', 'Тараска', 'Венеція', '1997', '2006-02-12 21:00:00');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('7', 'Новий рік', 'Україна', '2004', '2009-01-12 01:22:21');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('8', 'Сам у дома', 'Нью-Йорк', '1994', '2010-12-02 21:00:00');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('9', 'За двома зайцями', 'Україна', '2005', '2012-04-12 23:00:00');
INSERT INTO `films`.`film_list` (`id`, `name`, `country`, `year`, `addDate`) VALUES ('10', 'Зайці', 'Україна', '2010', '2013-12-11 11:00:00');
Створити базу даних univer (порівняння cp1251_general_ci). Використовувати SQL.
Перейти до головного меню, натиснути SQL і ввести наступний запит після чого створиться нова БД.
create database univer default
character set cp1251 collate
cp1251_general_ci
Створити таблицю faculty.Для цього виконайте SQL-запит:
Перейти до створеної БД та натиснути SQL, щоб створити таблицю і вписати наступний запит:
create table `faculty` (
`id` int(10) not null,
`name` varchar(30) default null,
key `id` (`id`)
) engine=innoDB default charset=cp1251;
Заповнити її даними про 3-5 факультетів. Використовувати SQL.
Перейти до створеної таблиці у розділ SQL та створити запит:
INSERT INTO `univer`.`faculty` (`id`, `name`) VALUES ('1', 'Будівельний');
INSERT INTO `univer`.`faculty` (`id`, `name`) VALUES ('2', 'Фізико-математичний');
INSERT INTO `univer`.`faculty` (`id`, `name`) VALUES ('3', 'Технічний');
INSERT INTO `univer`.`faculty` (`id`, `name`) VALUES ('1', 'Хіміко-біологічний');
INSERT INTO `univer`.`faculty` (`id`, `name`) VALUES ('1', 'Фізичний');
Створити таблицю speciality.Для цього виконайте SQL-запит:
Повернутися до БД univer та створити таблицю speciality натиснувши SQL на вписавши наступний запит:
create table `speciality` (
`id` int(10) not null auto_increment,
`name` varchar(35) default null,
key `id` (`id`)
) engine=innoDB default charset=cp1251;
Заповнити її даними про 6-10 спеціальностей. Використовувати SQL.
Перейти до таблиці та увійти у пунк меню SQL та вписати наступний запит:
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('1', 'Програмні системи');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('2', 'Конструювання');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('3', 'Автомобілі та двигуни');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('4', 'Фінанси та кредит');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('5', 'Радіо-техніка');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('6', 'Бухгалтерский облік');
INSERT INTO `univer`.`speciality` (`id`, `name`) VALUES ('7', 'Автоматизація та налагодження програмних комплексів');
Створити таблицю students. Для цього виконайте наступний SQL-код:
Перейти до БД univer та у пункті меню SQL записати запит для таблиці students
CREATE TABLE IF NOT EXISTS `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`faculty_id` int(10) DEFAULT NULL COMMENT 'id факультету',
`speciality_id` int(10) DEFAULT NULL COMMENT 'id спеціальності',
`course` int(11) DEFAULT NULL COMMENT 'курс, на якому навчається',
`group` int(11) DEFAULT NULL COMMENT 'група',
`birthday` date DEFAULT NULL COMMENT 'дата народження',
`paid` tinyint(1) NOT NULL COMMENT 'платна форма навчання',
`mrk1` float(24,2) DEFAULT NULL COMMENT 'середній бал за 1 курс',
`mrk2` float(24,2) DEFAULT NULL COMMENT 'середній баз за 2 курс',
`mrk3` float(24,2) DEFAULT NULL COMMENT 'середній бал за 3 курс',
`mrk4` float(24,2) DEFAULT NULL COMMENT 'середній бал за 4 курс',
`adress` varchar(120) DEFAULT NULL COMMENT 'адреса',
PRIMARY KEY (`id`),
KEY `st_fac` (`faculty_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
Заповнити її даними про 12-20 студентів. Використовувати SQL.
Пункти 17-20 виконувати лише з використанням SQL-запитів.
Перейти до таблиці та у пункті меню SQL записати запит для заповнення таблиці студентами
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('1', 'Середа','10','505100','3','1110','1994-05-23','1','3','4','5','5','Московська');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('2', 'Родько','11','120007','1','1010','1996-07-13','1','3','3','3','3','Московська');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('3', 'Абрамов','12','340077','4','1000','1992-09-21','0','4','4','5','5','Шевченка');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('4', 'Руденко','13','505100','3','1110','1994-06-11','0','4','3','3','3','Проспект-м');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('5', 'Калуга','14','110077','5','1033','1991-02-20','0','4','5','5','5','Шевченка');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('6', 'Приходько','10','505100','3','1110','1995-04-12','1','4','4','4','4','Бобра');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('7', 'Лукаш','15','330067','1','1100','1996-05-17','1','3','3','4','5','Лосося');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('8', 'Даниленко','16','666000','3','1001','1994-04-21','1','3','3','4','4','Одинцова');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('9', 'Булавочка','17','120011','4','1400','1992-09-21','1','3','4','3','3','Шевченка');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('10', 'Сердючка','18','222222','5','1900','1991-02-22','0','4','4','4','5','Київська');
INSERT INTO`univer`.`students`(`id`,`name`,`faculty_id`,`speciality_id`,`course`,`group`,`birthday`,`paid`,`mrk1`,`mrk2`,`mrk3`,`mrk4`,`adress`) VALUES ('12', 'Потапенко','19','777077','4','1370','1992-09-21','0','4','4','5','5','Шевченка');
Створити власну базу даних, дати базі ім'я таке ж, як ваше прізвище (у латинській транскрипції).
Щоб створити свою власну БД треба перейти до головного меню phpMyadmin та у пункті меню SQL записати такий запис:
create database sereda default
character set cp1251 collate
cp1251_general_ci
У власній базі даних створити таблицю Склад (Sklad), що описує продукцію на складі солодощів. Таблиця має складатися з таких полів:
порядковий номер товару (id);
назва товару (name);
штрих-код товару (до 20 цифр) (bar_code);
одиниця виміру товару (unit);
кількість товару (cnt);
ціна товару за одиницю виміру (unit_price).
У своїй базі данних створити таблицю `sklad`
Для цього в БД знайти пункт меню SQL натиснути та записати запит:
CREATE TABLE IF NOT EXISTS `sklad` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`bar_code` int(20) DEFAULT NULL COMMENT 'штрих-код товару',
`unit` int(10) DEFAULT NULL COMMENT 'одиниця виміру товару',
`cnt` int(11) DEFAULT NULL COMMENT 'кількість товару',
`unit_price` int(11) DEFAULT NULL COMMENT 'ціна товару за одиницю виміру',
PRIMARY KEY (`id`),
KEY `st_cod` (`bar_code`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
Заповнити таблицю, створену в попередньому завданні, ввівши 5-10 найменувань товару.
Перейти до таблиці та натиснути на пунк меню SQL і записати запит для заповнення таблиці товарами, після чого натиснути 'ок'
INSERT INTO`sereda`.`sklad`(`id`,`name`,`bar_code`,`unit`,`cnt`,`unit_price`) VALUES ('1', 'Кетчуп','111111','022222','25','6');
INSERT INTO`sereda`.`sklad`(`id`,`name`,`bar_code`,`unit`,`cnt`,`unit_price`) VALUES ('2', 'Хліб','111000','021111','10','3');
INSERT INTO`sereda`.`sklad`(`id`,`name`,`bar_code`,`unit`,`cnt`,`unit_price`) VALUES ('3', 'Риба','100000','011122','30','15');
INSERT INTO`sereda`.`sklad`(`id`,`name`,`bar_code`,`unit`,`cnt`,`unit_price`) VALUES ('4', 'Сухарі','001111','033332','70','10');
INSERT INTO`sereda`.`sklad`(`id`,`name`,`bar_code`,`unit`,`cnt`,`unit_price`) VALUES ('5', 'Гумка','000000','000011','100','4');
Створити таблицю Одиниці виміру (Units). Таблиця повинна складатися з двох полів: порядковий номер (id) та назва одиниці виміру (name).
Cтворити ще одну таблицю 'units', для цього в нашій БД натискаємо на SQL та створюємо такий запит:
CREATE TABLE IF NOT EXISTS `units` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `st_nam` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
Примітка. В наступних завданнях, якщо запит неможливо виконати, через те, що в базі не вистачає інформації, або інформація не задовольняє умову запиту, потрібно додатинеобхідну інформацію в базу.