Сделай Сам Свою Работу на 5

V. SQL-код и запросы для работы с базой данных





SQL — «язык структурированных запросов») —универсальныйкомпьютерный язык, применяемый для создания, модификации и управления данными вреляционных базах данных. SQL основывается наисчислении кортежей.

Изначально, SQL был основным способом работы пользователя с базой данныхи позволял выполнять следующий набор операций:

· создание в базе данных новой таблицы;

· добавление в таблицу новых записей;

· изменение записей;

· удаление записей;

· выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);

· изменение структур таблиц.

Со временем, SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.

При всех своих изменениях, SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время, современные СУБД, а, также, информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.



Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:

· запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);

· запросы на получение данных;

· запросы на добавление новых данных (записей)

· запросы на удаление данных;

· обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы— это операции над таблицами. В соответствии с этим, запросы делятся на

· запросы, оперирующие самими таблицами (создание и изменение таблиц);

· запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием

· типа хранимых в каждом поле значений;



· связей между таблицами (задание первичных и вторичных ключей);

· информации, необходимой для построения индексов.

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

· вставка новой строки;

· изменение значений полей строки или набора строк;

· удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

· просмотреть полученный набор;

· изменить все записи набора;

· удалить все записи набора.

Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.

Постоим запросы для нашей базы данных.

При работе с базой данных «Антикварный магазин» может понадобиться выборочная информация. Предположим, что нам необходимо вывесит информацию о договоре, номер которого равен 234.Тогда запрос на SQL – коде будет выглядеть следующим образом:

Select "ДОГОВОР".* From "ДОГОВОР" where ID_CONTRACT=234;

Результат запроса:

Рисунок 3 . Визуализациязапроса.

 

В случае форс-мажорных обстоятельствах – банкротства или грабежа, необходимо было знать сумму всех товаров в магазине, поэтому организуем следующий запрос: « Вывести сумму цен всех товаров в магазине».SQL – коде будет выглядеть следующим образом:



SELECT SUM("ТОВАР".PRICE ) SUM_OF_PRICE FROM "ТОВАР";

Результат запроса:

 

Рисунок 4. Визуализациязапроса.

 

Дляучета товара необходимо знать всю информацию о нем, наименование при этом должны сортироваться в алфавитном порядке:

select * from "ТОВАР" order by NAME_PRODUCTA ASC ;

Результат запроса:

Рисунок 5. Визуализациязапроса.

 

При заключении договора, сотрудник может посмотреть в базе данных информацию о покупателе, чтобы уменьшить время заключения договора на продажу товара. Предположим, что фамилия клиента начинается на букву «С»:

select "ПОКУПАТЕЛЬ".surnamefrom "ПОКУПАТЕЛЬ" whereSURNAMElike 'С%';

Результат запроса:

Рисунок 6. Визуализациязапроса.

 

В магазин иногда обращаются покупатели, которых не устраивает качество товара. Покупатель Светлана обратилась в магазин с претензией о ненадлежащем качестве товара и попросила вернуть ей стоимость товара - 20500. После принятие данной претензии мы составили акт возврата товара, в котором необходимо указать номер поставщика. Тогда запрос на SQL – коде будет выглядеть следующим образом:

select "ТОВАР".ID_SUPPLIER from "ТОВАР", "ПОКУПАТЕЛЬ" where "ТОВАР".price=20500 AND "ПОКУПАТЕЛЬ".NAME='СВЕТЛАНА';

Результат запроса:

Рисунок 7. Визуализациязапроса.

 

Часто в магазин обращаются покупатели, которые хотят приобрести товар в пределах определенной стоимости. Предположим, что диапазон цены находится от 100 до 10000 тысяч рублей. SQL – коде будет выглядеть следующим образом:

selectdistinct "ТОВАР".* FROM "ТОВАР" where "ТОВАР".PRICE between 100 and 10000;

Результат запроса:

Рисунок 8.Визуализациязапроса.

 

В любом магазине существует система премирования персонала. Премию получают сотрудники, которые оформляли заказы. Бухгалтерии необходимы списки сотрудников, которые в данном квартале не получат премию, то есть продавцов, которые не оформили ни одного заказа. Тогда запрос будет выглядеть таким образом:

select "СОТРУДНИКИ".* from "ДОГОВОР", "СОТРУДНИКИ" where "СОТРУДНИКИ".ID_EMPLOYEE notin (select "ДОГОВОР".ID_EMPLOYEE FROM "ДОГОВОР");

Результат запроса:

Рисунок 9.Визуализациязапроса.

 

Контактна информация в таблице «ПОКУПАТЕЛЬ» стала неактуальной, следовательно ее нужно удалить. Напишем следующий запрос:

ALTER TABLE "ПОКУПАТЕЛЬ" DROP CONTACT_INFORMATION;

Результат запроса:

Рисунок 10.Визуализациязапроса.

 

Для составления докладной нам необходим перечень поставщиков, которые доставляют больше одного товара. Тогда запрос на SQL – коде будет выглядеть следующим образом:

selectTITLEfrom "ПОСТАВЩИК" where 1<(selectcount(*) from "ТОВАР"

where "ПОСТАВЩИК".ID_SUPPLIER="ТОВАР".ID_SUPPLIER);

Результат запроса:

Рисунок 11.Визуализациязапроса.

Магазин существует 5000 дней. Премию получают сотрудники,заключившие договора на сумму 5000. Бухгалтерии необходимы списки сотрудников, которые в данном квартале заключили договора на эту сумму. Тогда запрос будет выглядеть таким образом:

selectdistinctSURNAMEfrom "СОТРУДНИКИ", "ДОГОВОР" where

500000<( select sum(PRICE) from "ТОВАР" where "СОТРУДНИКИ".ID_EMPLOYEE="ДОГОВОР".ID_EMPLOYEE

and "ДОГОВОР".ID_PRODUCT="ТОВАР".ID_PRODUCT group by ID_PRODUCT) ;

Результат запроса:

 

Рисунок 12.Визуализациязапроса.

 

Составить ведомость о продаже товара на данный момент, а именно вывести информацию о том какой товар заказал каждый покупатель:

selectdistinct "ПОКУПАТЕЛЬ".surname, "ТОВАР".name_productafrom "ТОВАР", "ПОКУПАТЕЛЬ", "ДОГОВОР"

where "ДОГОВОР".id_buyer="ПОКУПАТЕЛЬ".id_buyer AND "ТОВАР".id_product="ДОГОВОР".id_product;

Результат запроса:

Рисунок 13.Визуализациязапроса.

Заключение

В результате выполнения курсовой работы были выполнены все поставленные цели, была разработана база данных для антикварного магазина и изучены основные разделы реляционных баз данных, освоены методы проектирования баз данных и работы с базами данных в среде конкретной СУБД (ibExpert).

 

Список использованной литературы:

1. Дейт К. Дж. Введение в системы баз данных;

2. ПoлУилтoн, ДжoнКoлби, «Ввeдeниe в SQL», 2006г.

3. Хомоненко А.Д. Работа с базами данных в DELPHI, 3-е издание // А.Д. Хомоненко, В.Э. Гофман – СПб.: БХВ-Петербург 2005, – 623 с.

4. Хомоненко А.Д. Базы данных // А.Д. Хомоненко– СПб.: Корона-Принт 2004.

5. Microsoft Access 2002 Шаг за Шагом// - Москва – Эком 2002.

 

 

ПриложениеА

(справочное)

1. Создание таблицы «Товар»:

CREATE TABLE "ТОВАР" (

"ID_PRODUCT" INTEGER NOT NULL,

"NAME_PRODUCTA" CHAR(40),

"PRESENCE" CHAR(10),

"PHOTO" BLOB SUB_TYPE 0 SEGMENT SIZE 10000,

"TYPE_PRODUCT" CHAR(10),

"PRICE" INTEGER,

"ID_SUPPLIER" INTEGER);

 

2. Создание первичного ключа для таблицы «Товар»:

alter table "ТОВАР"

add constraint "PK_ТОВАР"

primarykey ("ID_PRODUCT");

 

3. Создание таблицы «Покупатель»:

CREATE TABLE "ПОКУПАТЕЛЬ" (

"ID_BUYER" INTEGER NOT NULL,

"SURNAME" CHAR(60),

"NAME" CHAR(60),

"PATRONOMIC" CHAR(60),

"CONTACT_INFORMATION" CHAR (30));

 

4. Создание первичного ключа для таблицы «Покупатель»:

alter table "ПОКУПАТЕЛЬ"

add constraint "PK_ПОКУПАТЕЛЬ"

primarykey ("ID_BUYER");

 

5. Создание таблицы «Договор»:

CREATE TABLE "ДОГОВОР" (

"ID_CONTRACT" INTEGER NOT NULL,

"DATA_OF_WRITING" DATE,

"DATA_OF_PERFORMANCE" DATE,

"ID_BUYER" INTEGER,

"ID_PRODUCT" INTEGER,

"ID_EMPLOYEE" INTEGER);

 

6. Создание первичного ключа для таблицы «Договор»:

alter table "ДОГОВОР"

add constraint "PK_ДОГОВОР"

primarykey ("ID_CONTRACT");

 

7. Создание таблицы «Сотрудники»:

CREATE TABLE "СОТРУДНИКИ" (

"ID_EMPLOYEE" INTEGER NOT NULL,

"SURNAME" CHAR(40),

"NAME" CHAR(40),

"PATRONOMIC" CHAR(40),

"POST" CHAR(40),

"CONTACT_INFORMATION" CHAR(30));

 

8. Создание первичного ключа для таблицы «Сотрудники»:

alter table "СОТРУДНИКИ"

add constraint "PK_СОТРУДНИКИ"

primarykey ("ID_EMPLOYEE");

 

9. Создание таблицы «Группа товара»:

CREATE TABLE "ГРУППАТОВАРА" (

"TYPE_PRODUCT" CHAR(20) NOT NULL,

"CHARACTERISTICS" CHAR(10000));

 

10. Создание первичного ключа для таблицы «Группа товара»:

alter table "ГРУППАТОВАРА"

add constraint "PK_ГРУППАТОВАРА"

primary key ("TYPE_PRODUCT");

 

11. Создание таблицы «Поставщик»:

CREATE TABLE "ПОСТАВЩИК" (

"ID_SUPPLIER" INTEGER NOT NULL,

"TITLE" CHAR(40),

"ADDRESS" CHAR(40),

"CONTACT_INFORMATION" CHAR(40));

 

12. Создание первичного ключа для таблицы «Поставщик»:

alter table "ПОСТАВЩИК"

add constraint "PK_ПОСТАВЩИК"

primarykey ("ID_SUPPLIER");

 

13. Заполнение данными таблицы «Товар»:

insertinto "ТОВАР" values (10, 'ЛАМПА_ОСОБАЯ', 'ДА', 'C:\Users\Светлана\Desktop\10.jpg', 'ЛАМПЫ', 20500, 244);

insertinto "ТОВАР" values (11, 'КОРОНА_ЦАРСКАЯ', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\11.jpg', 'ШЛЯПЫ', 505000, 245);

insertinto "ТОВАР" values (12, 'ШАПКА_НЕОБЫКНОВЕННАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\12.jpg', 'ШЛЯПЫ', 10002, 245);

insertinto "ТОВАР" values (13, 'ЗУБ_ДРАКОНА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\13.jpg', 'СУВЕНИРЫ', 8709, 246);

insertinto "ТОВАР" values (14, 'КОВЕР_С_УЗОРАМИ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\14.jpg', 'ЭКСКЛЮЗИВ', 5000, 247);

insertinto "ТОВАР" values (15, 'СТАКАН_ИМПЕРАТОРА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\15.jpg', 'ПОСУДА', 500, 248);

insertinto "ТОВАР" values (15, 'СТАКАН_ИМПЕРАТОРА', 'НЕТ', 'C:\Users\Светлана\Desktop\Фото для курсача\15.jpg', 'ПОСУДА', 500, 248);

insertinto "ТОВАР" values (17, 'УЛИЧНЫЙ_ФОНАРЬ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\17.jpg', 'ЛАМПЫ', 20000, 244);

insertinto "ТОВАР" values (18, 'КНИГА_РУКОПИСНАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\18.jpg', 'КНИГИ', 50305, 250);

insertinto "ТОВАР" values (19, 'ХАЛАТ_ФАРАОНА', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\19.jpg', 'ЭКСКЛЮЗИВ', 50305, 247);

insertinto "ТОВАР" values (20, 'ТАРЕЛКА_ЦАРСКАЯ', 'ДА', 'C:\Users\Светлана\Desktop\Фото для курсача\20.jpg', 'ПОСУДА', 508007, 248);

14. Заполнение данными таблицы «Покупатель»:

insertinto "ПОКУПАТЕЛЬ" values (1, 'СОКУР', 'СВЕТЛАНА', 'ВЯЧЕСЛАВОВНА', '40-55-31');

insertinto "ПОКУПАТЕЛЬ" values (2, 'БЫЧКОВА', 'АНАСТАСИЯ', 'СЕРГЕЕВНА', '78-24-87');

insertinto "ПОКУПАТЕЛЬ" values (3, 'КОНОНОВ', 'НИКИТА', 'СЕРГЕЕВИЧ', '17-78-98');

insertinto "ПОКУПАТЕЛЬ" values (4, 'САРАПКИН', 'АЛЕКСАНДР', 'ВЛАДИМИРОВИЧ', '47-98-71');

insertinto "ПОКУПАТЕЛЬ" values (5, 'ЗУБОРЕВ', 'АЛЕКСАНДР', 'ВЛАДИМИРОВИЧ', '40-55-36');

 

 

15. Заполнение данными таблицы «Договор»:

insert into "ДОГОВОР" values (123, '25.11.12', '05.05.13', 1, 15, 21);

insert into "ДОГОВОР" values (234, '26.12.12', '04.05.13', 2, 17, 22);

insert into "ДОГОВОР" values (345, '01.02.13', '14.04.13', 3, 11, 21);

insert into "ДОГОВОР" values (456, '09.03.13', '03.05.13', 4, 13, 22);

insert into "ДОГОВОР" values (567, '10.03.13', '19.05.13', 5, 20, 21);

 

16. Заполнение данными таблицы «Сотрудники»:

insertinto "СОТРУДНИКИ" values (21, 'СЕМЕНОВ', 'ВАСИЛИЙ', 'АЛЕКСАНДРОВИЧ', 'ПРОДАВЕЦ', '44-87-98');

insertinto "СОТРУДНИКИ" values (22, 'КОЗЛОВСКИЙ', 'НИКОЛАЙ', 'ПЕТРОВИЧ', 'ПРОДАВЕЦ', '44-87-98');

 

17. Заполнение данными таблицы «Группа товара»:

insertinto "ГРУППА ТОВАРА" values ('ЛАМПЫ', 'осветительные приборы');

insertinto "ГРУППА ТОВАРА" values ('ШЛЯПЫ', 'Головные уборы');

insertinto "ГРУППА ТОВАРА" values ('СУВЕНИРЫ', 'Подарки на память');

insertinto "ГРУППА ТОВАРА" values ('ЭКСКЛЮЗИВ', 'Оригинальные изделия');

insertinto "ГРУППА ТОВАРА" values ('ПОСУДА', 'Набор предметов для еды');

insertinto "ГРУППА ТОВАРА" values ('ЧАСЫ', 'Швейцарские часы');

insertinto "ГРУППА ТОВАРА" values ('КНИГИ', 'Литература и рукописи');

 

18. Заполнение данными таблицы «Поставщик»:

insertinto "ПОСТАВЩИК" values (244, 'ООО "ТЕРЕЛКИНО"', 'КОМСОМОЛЬСКАЯ 47', '78-74-98');

insertinto "ПОСТАВЩИК" values (245, 'ИП "МИР ШЛЯПОК"', 'САДОВАЯ 8', '18-04-08');

insertinto "ПОСТАВЩИК" values (246, 'ОАО "СУВЕЛАВКА"', 'ФОМИНА 37', '08-64-18');

insertinto "ПОСТАВЩИК" values (247, 'ИП "ЭКСКЛЮЗИ"', 'КОМСОМОЛЬСКАЯ 241', '13-74-38');

insertinto "ПОСТАВЩИК" values (248, 'ООО "МИР ПОСУДЫ"', 'МОПРА 14', '13-15-18');

insertinto "ПОСТАВЩИК" values (249, 'ООО "ПРАЙД"', 'КОМСОМОЛЬСКАЯ 147', '13-74-14');

insertinto "ПОСТАВЩИК" values (250, 'ОАО "РАЗВАЛ"', 'ЛЕНИНО 05', '02-36-56');

 

19. Запросы в соответствии пункта V:

select "ДОГОВОР".* From "ДОГОВОР" where ID_CONTRACT=234;SELECT SUM( "ТОВАР".PRICE ) SUM_OF_PRICE FROM "ТОВАР";

select * from "ТОВАР" order by NAME_PRODUCTA ASC ;

select "ПОКУПАТЕЛЬ".surname from "ПОКУПАТЕЛЬ" where SURNAME like 'С%';

select "ТОВАР".ID_SUPPLIER from "ТОВАР", "ПОКУПАТЕЛЬ" where "ТОВАР".price=20500 AND "ПОКУПАТЕЛЬ".NAME='СВЕТЛАНА';

select distinct "ТОВАР".* FROM "ТОВАР" where "ТОВАР".PRICE between 100 and 10000;

select "СОТРУДНИКИ".* from "ДОГОВОР", "СОТРУДНИКИ" where "СОТРУДНИКИ".ID_EMPLOYEEnotin (select "ДОГОВОР".ID_EMPLOYEEFROM "ДОГОВОР");

ALTER TABLE "ПОКУПАТЕЛЬ" DROP CONTACT_INFORMATION;

select TITLE from "ПОСТАВЩИК" where 1<(select count(*) from "ТОВАР" where "ПОСТАВЩИК".ID_SUPPLIER="ТОВАР".ID_SUPPLIER);

select distinct SURNAME from "СОТРУДНИКИ", "ДОГОВОР" where

5000=( select sum(PRICE) from "ТОВАР" where "СОТРУДНИКИ".ID_EMPLOYEE="ДОГОВОР".ID_EMPLOYEE and "ДОГОВОР".ID_PRODUCT="ТОВАР".ID_PRODUCT group by ID_PRODUCT) ;

select distinct "ПОКУПАТЕЛЬ".surname, "ТОВАР".name_producta from "ТОВАР", "ПОКУПАТЕЛЬ", "ДОГОВОР" where "ДОГОВОР".id_buyer="ПОКУПАТЕЛЬ".id_buyer AND "ТОВАР".id_product="ДОГОВОР".id_product;

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.