Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное_пособие_заочное (брошюра)

.pdf
Скачиваний:
24
Добавлен:
21.03.2016
Размер:
1.92 Mб
Скачать

Рис. 3.5.13. Запрос 5 на выборку всех полей таблицы.

Рис. 3.5.14. Запрос 6 на выборку временного периода.

7. Определить количество товаров, с ценой не превышающей заданное значение.

92

CREATE TABLE Сотрудники (ФИО СНАR(25) PRIMARY KEY, Отдел CHAR(15) NOT NULL, Оклад FLOAT(2) CHECK (Оклад> 0));

Модификация существующей таблицы может быть выполнена с помощью оператора ALTER TABLE, который имеет вид:

ALTER TABLE имя_таблицы

ADD COLUMN определение_атрибута;

или

ALTER TABLE имя_таблицы DROP COLUMN атрибут.

Например, оператор

ALTER TABLE Сотрудники ADD COLUMN Разряд INT;

добавляет в существующую таблицу атрибут Разряд.

Для удаления таблицы используется оператор

DROP TABLE имя_таблицы;

2.8.6. Внесение данных в таблицы.

Данные заносятся в таблицу с помощью оператора INSERT, который имеет вид:

INSERT INTO имя_таблицы VALUES (список значений атрибутов);

Если данные присваиваются определённым атрибутам, то за именем таблицы в круглых скобках указываются имена соответствующих атрибутов:

INSERT INTO

имя_таблицы

(список

атрибутов)

VALUES (список значений атрибутов);

 

 

Например,

INSERT INTO Сотрудники VALUES (‘Иванов‘, ‘АСУ‘, ‘инженер‘, 4500);

61

или

INSERT INTO Сотрудники (ФИО, Отдел, Должность) VALUES (‘Петров‘, ‘АСУ‘, ‘ст.инженер‘);

2.8.7. Выборка данных.

Для выборки данных из БД используется оператор SELECT, который может содержать следующие фразы:

SELECT

список атрибутов, выражений или агрегатных

функций

 

AS

список псевдонимов атрибутов

FROM

таблица [список таблиц]

WHERE

условие отбора группы кортежей

GROUP BY

имя атрибута, образующего группу

HAVING

условие отбора кортежей внутри группы

ORDER BY

имя атрибута для сортировки отбираемых

кортежей

 

ASC

для сортировки по возрастанию

DESC для сортировки по убыванию (по умолчанию параметр

ASC)

Например,

1)SELECT ФИО AS Фамилия, Оклад FROM Сотрудники

WHERE Оклад>=3000 ORDER BY ФИО DESC;

2)SELECT Разряд, SUM(Оклад) AS Сумма FROM Сотрудники

GROUP BY Разряд HAVING Разряд>10;

2.8.8. Обновление данных.

Для обновления данных в БД используется оператор UPDATE, который может изменять значения одного или нескольких атрибутов и имеет вид:

UPDATE имя_таблицы SET имя_атрибута = новое значение WHERE условие отбора обновляемых кортежей;

62

Рис. 3.5.11. Запрос на создание таблицы.

Запросы 4, 5, 6 – это запросы на выборку. Используя тип запроса на выборку и формируя те или иные условия выборки, мы получим требуемые выборки (рис. 3.5.12 – 3.5.14).

Рис. 3.5.12. Запрос 4 на выборку значения из определённого интервала.

91

Выполним такие же действия и выберем тип запроса на создание таблицы (рис. 3.5.11).

4.Выбрать коды и наименования товаров с кодами от 3 до

7.

5.Выбрать все сведения о сотрудниках, проживающих в указанном микрорайоне.

6.Выбрать коды, названия и цены товаров, поступивших в заданном месяце.

Рис. 3.5.10. Запрос на обновление.

90

Изменения происходят в кортежах, определяемых фразой WHERE. Если фраза WHERE отсутствует, то изменения происходят во всех кортежах таблицы.

Например,

UPDATE Сотрудники SET Оклад=Оклад*1.5 WHERE ФИО = ’Иванов’;

В результате выполнения запроса оклад Иванова в таблице Сотрудники увеличится в полтора раза.

2.8.9. Удаление записей из таблиц.

Для удаления кортежей из таблицы используется оператор DELETE. Удаляемые кортежи определяются фразой

WHERE.

DELETE FROM имя_таблицы WHERE условие

отбора

удаляемых кортежей;

 

Если фраза WHERE отсутствует, то удаляются все кортежи.

Например,

DELETE FROM Сотрудники WHERE Отдел =’АСУ‘ AND

ФИО = ‘Смирнов’;

2.8.10. Многотабличные запросы.

Многотабличные запросы позволяют связывать данные из двух или более таблиц.

Например, имеются две таблицы:

1) Сотрудники

Код_сотрудника ФИО Отдел Должность

2) Начисления

Код_сотрудника Код_начисления Начислено

63

Между первыми столбцами этих таблиц имеется многозначная зависимость: Код_сотрудника (1) --- >> Код_сотрудника (2)

SELECT Код_сотрудника, ФИО, SUM(Начислено) FROM Сотрудники, Начисления WHERE Сотрудники.Код_сотрудника = Начисления.Код_сотрудника GROUP BY Код_сотрудника;

(в выборке просуммируются все начисления сотрудников).

2.8.11. Подзапросы.

Если внутри одного запроса содержится другой, то последний называется подзапросом. Подзапросы всегда заключаются в круглые скобки и могут использоваться в операторах SELECT, DELETE и UPDATE и, кроме того, могут быть вложенными.

Например,

1)SELECT ФИО FROM Сотрудники WHERE Код_сотрудника IN

(SELECT Код_сотрудника FROM Начисления WHERE

Начислено WHERE >2000);

(Выбираются фамилии сотрудников, у которых начисленная сумма больше 2000)

2) SELECT ФИО, Оклад FROM Сотрудники WHERE Оклад IN

(SELECT Оклад FROM

Сотрудники

WHERE ФИО

=‘Смирнов’);

 

 

(Выбираются фамилии и оклады сотрудников, у которых оклад такой же, как и у Смирнова.)

64

b)Создать запрос в режиме Конструктора.

c)Добавить нужную таблицу, нажать кнопку

(тип запроса) на панели инструментов и выбрать запрос на удаление.

d)Выбрать поля, необходимые для запроса, и написать условие для удаления (рис. 3.5.9).

Рис. 3.5.9. Запрос на удаление.

e)Нажать кнопку (запуск) и выполнить запрос. В результате из таблицы Товары будет удалена одна запись

Замечание: Если в таблице Учетная есть приход по этому виду товара, то удаление может не произойти.

2.Увеличить в два раза оклад сотрудникам с заданной должностью.

Выполним аналогичные действия и выберем тип запроса на обновление (рис. 3.5.10).

3.Создать новую таблицу данных, в которую занести наименования товаров и их цены, превышающие заданное значение.

89

Рис. 3.5.8. Схема данных.

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

Так например, для создания многозначной связи:

Код_сотрудника(1) (один ко многим)

Код_сотрудника

(3)

следует мышкой поле Код_сотрудника из таблицы Сотрудники совместить с полем Код_сотрудника из таблицы Учетная, в открывшемся диалоговом окне установить галочку Обеспечение целостности данных и завершить операцию.

Аналогично устанавливается связь:

Код_товара(2)

(один ко многим) Код_товара(3).

Далее следует внести 10 записей в таблицу Учетная.

Выполним запросы, используя язык QBE (язык запросов по образцу).

1.Удалить из базы данных информацию по заданному наименованию товара.

a)В окне базы данных выбрать объект Запросы.

88

3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ.

Лабораторные работы раздела «Основы алгоритмизации и программирования» выполняются в среде Dev-C++ (см. рис. 3.1.1).

Рис. 3.1.1. Вызов системы программирования.

В открывшемся окне системы программирования следует выполнить команду: Файл->Создать->Новый проект.

Затем в диалоговом окне (см. рис. 3.1.2) выбрать настройку Console Application, установить переключатель C Project и указать имя проекта (на английском языке), например, Project2 и щёлкнуть кнопку Ок.

Затем необходимо сохранить проект на диске.

65

Рис. 3.1.2. Создание файла проекта.

После написания текста программы следует выполнить компиляцию программы, нажав клавишу F9 (скомпилировать и выполнить). В начале процесса компиляции появится запрос на сохранение файла программы, нажав кнопку Ок, нужно сохранить файл на сетевом диске.

Если в процессе компиляции возникают ошибки, сообщения об этих ошибках появляются в нижней части рабочего окна. После исправления ошибок следует снова выполнить процесс компиляции и так далее, пока не появится окно MS DOS, в котором можно будет ввести исходные данные и просмотреть результаты решения задачи.

66

При завершении процесса подстановки СУБД потребует сохранения таблицы, необходимо сохранить её и дать ей название Учетная. Не выходя из режима Конструктора следует выполнить аналогичные действия для создания подстановки значений для столбца Код_товара из таблицы Товары (см. рис. 3.5.7).

И так далее, надо выполнить все шаги для создания столбца подстановки. Не выходя из режима Конструктора, нужно задать все оставшиеся атрибуты и их типы, завершить процесс создания таблицы и сохранить таблицу.

Нажав кнопку (схема данных) на панели инструментов, мы можем просмотреть связи между созданными таблицами, и если мы правильно создали все наши таблицы, то схема будет иметь вид, показанный на рисунке 3.5.8.

Рис. 3.5.7. Создание подстановки для столбца Код_товара.

87

Рис. 3.5.5. Выбор поля, определяющего столбец подстановки.

Рис. 3.5.6. Выбор названия для столбца подстановки.

86

3.1. Лабораторная работа 1.

Функции ввода/вывода. Вычисление выражений.

3.1.1. Цель работы.

Научиться использовать в программах функции ввода/вывода и производить простые вычисления.

3.1.2.Практическое задание.

1.Вычислить и напечатать значение функции y(x) в произвольной точке отрезка [a;b] согласно своему варианту.

2.Составить отчет о выполнении лабораторной работы, в который включить:

a.Название и цель работы;

b.Индивидуальное задание;

c.Текст программы;

d.Результат решения задачи;

e.Блок-схему алгоритма решения задачи.

3.1.3.Пример выполнения работы.

Пусть y(x) = sin2(x) cos2(x), x [0;π].

Для вычисления значения функции y(x) в точке x заданного отрезка считаем со стандартного устройства ввода с помощью функции ввода scanf() значение аргумента x.

Используя условный оператор if, логические операции и операции отношения, проверим принадлежность введенного значения отрезку [a;b]. В случае попадания х в заданный отрезок, вычислим значение y(x) и выведем его на печать с помощью стандартной функции вывода printf(), в противном случае выведем на экран сообщение об ошибке и завершим выполнение программы.

/*Лабораторная работа 1*/

67

#include <stdio.h> #include <math.h> #include <stdlib.h> int main()

{

float x, y, a = 0, b = 3.14; printf(”\nInput x”);

scanf(”%f”, &x);

if(x<a || x>b) { printf(”\nError”);

system(“PAUSE”); return 0;

}

y = pow(sin(x),2.) pow(cos(x),2.); printf(”\ny(%f) = %f”, x, y); system(“PAUSE”);

return 1;

Рис. 3.5.3. Выбор полей, содержащих значения для столбца подстановки.

}

3.1.4. Варианты заданий.

Отрезок

f(x)

варианта

[a;b]

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

2

 

1

[0.1,0.8]

 

 

 

 

 

ln 1 2xcos

 

 

x

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

0,

1

 

 

2

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

x

 

3

arcsin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

[0.2,1]

 

 

 

 

 

 

 

 

 

sin x cos

x

 

4

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

[0.1,1]

 

 

 

 

 

 

 

1 x2

 

arctgx

x

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.5.4. Выбор ширины столбцов для подстановки.

 

 

68

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

85

Отрезок

f(x)

варианта

[a;b]

 

 

 

 

0.3,2.7

 

 

 

 

 

 

x cos

 

 

 

x2

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2x cos

 

3 x x2

 

 

 

6

[0.1,1]

 

 

 

 

ex

 

e x

 

 

 

tg

2

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

sin3 x

 

 

 

7

[0.1,0.8]

 

 

 

 

 

 

 

x

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

x | ctg2 x

 

 

 

8

[0.1,1]

 

 

 

 

 

 

 

 

 

 

|

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

9

[0.1,1]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

2

 

 

1 e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

[0.1,0.5]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

x(3 x) 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

arccosx

 

 

 

 

x

Рис. 3.5.1. Выбор типа столбца подстановки.

 

 

 

 

 

(1 x)3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

11

[0.1,1]

1

x

 

 

 

 

cosx

sin x

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

[-2,-0.1]

ln 3

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e6 x2

 

 

2

 

 

2 x x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.5.2. Выбор таблицы, содержащей значения для столбца подстановки.

84

69

3.2. Лабораторная работа 2. Сочетания циклов и разветвлений.

3.2.1. Цель работы.

Научиться сочетать в программах элементы циклов и разветвлений, научиться использовать составные операторы.

3.2.2.Практическое задание.

1.В зависимости от значения некоторого выражения вычислить значения функции y(x), определенной на отрезке [a;b], в узлах разбиения данного отрезка с постоянным шагом h.

2.Составить отчет о выполнении лабораторной работы, в который включить:

a.Название и цель работы;

b.Индивидуальное задание;

c.Текст программы;

d.Результат решения задачи;

e.Блок-схему алгоритма решения задачи.

3.2.3.Пример выполнения работы.

Пусть функция y(x) имеет вид:

 

x2 1,

если sin(x) 0,2

y(x)

 

если sin(x) 0,2

ctan2 (x),

для x [- ; ], h = 0,2.

Для вычисления искомых значений организуется цикл, в котором переменная x принимает значения от - до с шагом h. Для каждого x в зависимости от полученного значения sin(x), в теле цикла вычисляются y(x) = x2+1 или y(x)= ctan2(x).

/* Лабораторная работа 2 */

70

Дом_адрес -

CHAR(30)

Код_товара –

INT

Наименование_товара - CHAR(20)

Цена_приходная -

FLOAT

Приход -

FLOAT

Дата_поступления –

DATE

В 1-ой таблице первичный ключ - Код_сотрудника, во 2-ой таблице - Код_товара, в 3-ей таблице мы имеем составной первичный ключ - Код_сотрудника+Код_товара, каждый атрибут которого является также внешним ключом.

Для обеспечения целостности БД определим связи между

атрибутами таблиц:

 

1)

Код_сотрудника(1)

(один ко многим)

Код_сотрудника (3)

 

2)

Код_товара(2)

(один ко многим) Код_товара(3)

Запустим СУБД MS Access и создадим файл базы данных. Используя режим Конструктора создадим справочные таблицы Сотрудники и Товары и обозначим в них первичные ключи

(кнопка с изображением ключа на панели инструментов).

Далее введем по 10 записей в каждую из справочных таблиц.

Создадим в режиме Конструктора третью таблицу – учетную, используя при этом для столбцов Код_сотрудника и Код_товара тип Мастер подстановок. Процесс создания подстановки значений для столбца Код_сотрудника из таблицы Сотрудники показан на рисунках 3.5.1 - 3.5.6.

83