
- •«Современные методы разработки программ». Этапы решения задачи
- •Постановка задачи.
- •Техническое задание
- •Разработка структуры базы данных
- •Написание кодов
- •Отладка и внедрение
- •База данных
- •Поля таблицы
- •Ключи и индексы.
- •Способы доступа к данным.
- •Связь между таблицами.
- •Создание базы данных
- •Псевдонимы базы данных
- •Создание таблицы
- •Задание полей
- •Задание свойств таблицы (Table properties)
- •Свойство Validity Checks – проверка правильности значений.
- •Свойство Table Lookup – таблица просмотра
- •Свойство Table Language – язык таблицы
- •Изменение структуры таблицы с помощью Database Desktop
- •Изменение в реестре для корректного отображения русского языка
- •О бзор компонентов Delphi, используемых для связи с бд.
- •Форма модуль данных Data Module
- •Компонент Database
- •Компонент Table
- •Свойства, которые доступны программным путем
- •Методы компонента tTable
- •События компонента tTable.
- •К омпонент Query
- •Свойство sql
- •Query и Параметры
- •К омпонент DataSource
- •Свойства
- •События
- •Компонент dbNavigator
- •Компоненты визуализации и управления данными со страницы Data Control Компонент dbGrid
- •События
- •Другие компоненты визуализации
- •П ример простейшего приложения с использованием компонента Table
- •Основы языка sql. Общие сведения.
- •Отбор данных из таблиц. Оператор выбора Select
- •Совокупные характеристики
- •Вложенные запросы.
- •Объединение таблиц.
- •Соединение union
- •Модификация записей Вставка записи
- •Values(‘Орлов’,’Александр’,’Иванович’,’м’,’23.04.1981’,’Гродно’)
- •Редактирование записи
- •Удаление записи
- •Операции с таблицами Создание таблицы
- •Изменение структуры таблицы
- •Удаление таблицы
- •Операции с индексами
- •Создание индекса
- •Удаление индекса
Соединение union
Запрос
select fam,im,otch sym_dopl ,0 as sym_opl from osndan a left join dopl b on a.tn=b.tn
union all
select fam,im,otch 0,sym_opl from osndan c left join opl d on c.tn=d.tn
order by fam,im,otch
выведет фамилию, сумму каждого начисления, сумму каждой, произведенной им оплаты оплаты каждого слушателя столько раз, сколько записей у него в таблице начислений Dopl плюс количество записей в таблице Opl.
fam |
im |
otch |
Sym_dopl |
Sym_opl |
Иванов |
Иван |
Иванович |
100 000 |
0 |
Иванов |
Иван |
Иванович |
100 000 |
0 |
Иванов |
Иван |
Иванович |
0 |
100 000 |
Петров |
Петр |
Петрович |
|
|
Петров |
Петр |
Петрович |
|
|
Петрова |
Екатерина |
Павловна |
|
|
Петрова |
Екатерина |
Павловна |
0 |
100 000 |
Сидоров |
Сергей |
Юрьевич |
150 000 |
0 |
Сидоров |
Сергей |
Юрьевич |
|
150 000 |
Примечание: при отсутствии после UNION слова ALL выведутся только все неповторяющиеся записи.
Модификация записей Вставка записи
Вставка новой записи в таблицу осуществляется оператором INSERT, который может иметь вид:
INSERT INTO <имя таблицы>(<список полей>) VALUES (<список значений>)
В списке перечисляются только те поля, значения которых известны. Остальные могут опускаться. Для пропущенных полей значения берутся по умолчанию (если значения по умолчанию заданы) или поля остаются пустыми (NULL). Например
INSERT INTO osndan(fam, im, otch, sex, datar, mestor)
Values(‘Орлов’,’Александр’,’Иванович’,’м’,’23.04.1981’,’Гродно’)
В том примере не указан табельный номер tn, который подставится автоматически, т.к. тип у этого поля Autoincrement, которое наращивается автоматически.
На практике вместо конкретных значений используются параметры, в которые значения передаются программно, например:
INSERT INTO osndan(fam, im, otch, sex, datar, mestor)
VALUES(:fam, :im, :otch, :sex, :datar, :mestor)
Другая форма оператора INSERT использует множество значений, возвращаемых оператором SELECT. Этот оператор может выбирать записи из какой-то другой таблицы и вставлять их в данную. Синтаксис этой формы INSERT:
INSERT INTO <имя таблицы> <оператор SELECT>
Пусть, например, Вы создали таблицу m_osndan, в которую будут входить слушатели мужского пола и хотите заполнить ее соответствующими записями из таблицы osndan. Это можно сделать одним оператором:
INSERT INTO m_osndan SELECT * FROM osndan WHERE sex=’м’
Таблица m_osndan сразу заполнится множеством соответствующих записей из osndan.
Приведенную форму оператора INSERT можно использовать для копирования всех данных одной таблицы в другую, причем эти таблицы могут быть созданы разными СУБД.