Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33,34,35.docx
Скачиваний:
16
Добавлен:
04.05.2019
Размер:
57 Кб
Скачать
☆

2. Составные части языка sql.

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

язык DDL (Data Definition Language) - предназначенный для определения БД:

CREATE – создание таблицы;

CREATE TABLE [<имя базы данных>.[<имя владельца>] <имя таблицы>

({<имя столбца> <тип данных> (<размер>) [<ограничение для столбца>]}

[,…n])

[,<ограничение для таблицы>];

CREATE VIEW <имя представления>

[(<имя столбца> [,…n ])

[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}]

AS

< команда SELECT>

[WITH CHECK OPTION];

DROP – удаление таблицы;

ALTER – внесение изменений в описание таблицы, в т.ч.: добавление и изменение столбцов; добавление, разрешение, запрет и удаление ограничений.

ALTER TABLE <имя таблицы>

[WITH CHECK| WITH NOCHECK]

ALTER| ADD| DROP {CONSTRAINT <имя ограничения>}

FOREIGN KEY [REFERENCES<имя таблицы> (<имя столбца> [,…n])] | PRIMARY KEY | UNIQUE | CHECK (<имя столбца> [,…n])}

[ON DELETE CASCADE]

язык DML (Data Manipulation Language) - для выборки и обновления данных:

INSERT – ввод новых строк в таблицу;

INSERT INTO {<имя таблицы>[(<имя столбца> [псевдоним] [, …n]] |[<подзапрос>]}

VALUES (<значение>[,…n]);

DELETE – удаление строк из таблицы;

DELETE FROM{<имя таблицы>

WHERE <условие>};

UPDATE – редактирование данных в таблице;

UPDATE {<имя таблицы>

[SET (<имя столбца>)] = <выражение> [,…n]|<подзапрос>]

WHERE <условие>};

SELECT – оператор выбора - спорный оператор (можно выделить в отдельную группу).

3. Параметрический полиморфизм. Параметризованные классы (template) и функции в языке C++ как средство статического полиморфизма.

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

Статический полиморфизм – выражается в перегрузке операторов, функций.

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

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

Шаблоны: template <class имя переменной>

Далее может следовать либо определение класса, либо определение функции, либо определение структуры, либо объединения. Имя переменной – обычное имя, которое обозначает тип данных.

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

template <class T> <возвращаемый тип> <имя функции> (список входных параметров)

где class T – имя типа, для которого будет создаваться функция. Пример:

Template <class T> void sort (T a[], int n) {}

// sort - функция сортировки, параметры которой будут определены позже,

// н-р, sort <int> (a, 10); // если необходимо отсортировать массив целых чисел

// или sort <student>(a, 10); // сортировка массива студентов из 10 человек

Основные «свойства» шаблонов:

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

  • Чтобы использовать шаблоны функций, программист должен написать всего одно описание шаблона функции. Основываясь на типах аргументов, использованных при вызове этой функции, компилятор будет автоматически генерировать объектные коды функций, обрабатывающих каждый тип данных.

  • Все описания шаблонов функций начинаются с ключевого слова template, за которым следует список формальных параметров шаблона, заключаемый в угловые скобки (< и >); каждому формальному параметру должно предшествовать ключевое слово class. Ключевое слово class, используемое при определении типов параметров шаблона функции означает: «любой встроенный тип или тип, определяемый пользователем». Формальные параметры в описании шаблона используются для определения типов параметров функции, типа возвращаемого функцией.

  • Сам шаблон функций может быть перегружен несколькими способами. Можно определить другие шаблоны, имеющие то же самое имя функции, но различные наборы параметров. Шаблон функции может также быть перегружен.

  • Описание шаблона класса выглядит как традиционное описание класса, за исключением заголовка template <class T>, указывающего на то, что это описание является шаблоном класса с параметром типа Т, обозначающим тип классов, которые будут создаваться на основе этого шаблона.

  • Каждое описания функции-элемента вне заголовка шаблона класса начинается с заголовка template <class T>, за которым следует описание функции, подобное стандартному описанию, но как тип элемента класса всегда указывается параметр типа Т.