Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Запрос update и условие where↑ Стр 1 из 10Следующая ⇒ Содержание книги
Поиск на нашем сайте
UPDATE используется для того, чтобы изменить существующие значения или освободить поле в строке, поэтому новые значения должны соответствовать существующему типу данных и обеспечивать приемлемые значения. Если вы не хотите изменить значения во всех строках, то нужно использовать условие WHERE. UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’;Вы можете использовать WHERE для любого столбца, включая тот, который хотите изменить. Это используется когда необходимо заменить одно определенное значение на другое. UPDATE table_name SET FirstName = ‘Василий’ WHERE FirstName = ‘Василий’ AND LastName = ‘Пупкин’;Будьте осторожны! Запрос DELETE удаляет целые строки Запрос DELETE полность удаляет строку из базы данных. Если вы хотите удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL в вашей программе. Будьте внимательны, и ограничивайте ваш запрос DELETE условием WHERE, иначе вы можете потерять все содержимое таблицы. DELETE FROM table_name WHERE column1 = ‘data1’;Как только строка была удалена из вашей базы данных, она не подлежит восстановлению, поэтому желательно иметь столбец по имени «IsActive», или что-то типа того, который вы можете изменить на ноль, что будет указывать на блокировку представления данных из этой строки.
3.1.2 Сложные критерии отбора. Группировка записей
При отборе можно использовать несколько операций, задавая тем самым сложные критерии отбора записей. Сложный критерий (логическое выражение) состоит из: 1. Простых условий; 2. Логических операций:
· and — логическое и; · or — логическое или; · not — логическое не; 3. Круглых скобок. В языке SQL приоритет операций сравнения выше приоритета логических операций. Для изменения порядка выполнения операций используются круглые скобки. Пример запроса со сложным критерием отбора:
Здесь происходит отбор всех записей о движении товара в течение заданного периода, количество которого на складе превышает 250 единиц. В данном логическом выражении простые условия заключены в скобки, что не обязательно, т. к. приоритет операций сравнения выше приоритета логических операций. Набор данных, полученный при таком отборе записей, может иметь вид: С_Number C_Code С_Move C_Date 5 3 270 25.05.08 6 4 200 26.05.08 5 3 270 27.05.08 6 4 200 27.05.08
Отметим, что рассмотренные выше операции between и in также реализуют логические операции:between — логическое и, a in — логическое или. Записи набора данных могут быть сгруппированы по некоторому признаку. Группу образуют записи с одинаковыми значениями в полях, перечисленных в списке операнда group by. При группировании записей их проще анализировать и обрабатывать, например, с помощью статистических функций.
Группирование записей автоматически исключает повтор значений в полях, заданных для группирования, т. к. записи с совпадающими значениями этих полей объединяются в одну группу. Пример запроса с группированием записей: FROM Cards WHERE C_Date BETWEEN "01.06.2008" AND "03.06.2008" GROUP BY C_Date
Для каждой даты из указанного периода выводится количество записей, в которых она встречается. Если не выполнить группирование, то в набор данных попадут все записи, а при использовании группирования все даты для полученного набора данных уникальны. Функция count выводит для каждой группы (сформированной по полю даты) число записей в группе. Полученный набор данных может иметь следующий вид: С_Date COUNT(С_Date) 01.06.08 20 02.06.08 17 03.06.08 8 Совместно с операндом group by можно использовать операнд having, с помощью которого задаются дополнительные условия группирования записей. Рассмотрим пример запроса: ^ SELECT C_Date, COUNT(C_Date) FROM Cards GROUP BY C_Date HAVING.COUNT(C_Date) > 50 Здесь отбираются данные для дат, когда движение товара было интенсивным – общее число записей в соответствующей группе превышало 50. Так как не указан ограничивающий период времени, то при отборе в набор данных будут учитываться записи таблицы Cards с любыми датами.
3.1.3 Последовательная навигация по записям
Для выполнения действий по последовательному перебору записей, начиная от некоторой стартовой записи и до конца набора данных, используют цикл while...do или repeat...until: with Tablel do begin First; while not EOF do begin {Какие-либо действия над очередной записью} Next; end; {while} end; {with} with Tablel do begin First; repeat {Какие-либо действия над очередной записью} until not FindNext; end; {with} Точно так же можно перемещаться от конца НД к его началу: with Tablel do begin Last; while not BOF do begin {Какие-либо действия над очередной записью} Prior; end; {while} end; {with} with Tablel do begin Last; repeat {Какие-либо действия над очередной записью} until not FindPrior; end; {with} Если НД допускает вызов записи по ее номеру (его свойство IsSequenced в этом случае должно содержать значение True), можно использовать цикл for. Например, следующий обработчик события TForm. On Act ivate поместит все значения строкового поля BName НД Books в многострочное текстовое поле Memol: procedure TForml.FormActivate(Sender: TObject); var RecNo: Integer; begin if Books.IsSequenced then for RecNo:= 1 to Books.RecordCount do begin Books.RecNo:= RecNo; Memol.Lines.Add(Tablel['BName1]) end; end; Замечу, что для компонентов TTable и TQuery, связанных с файл-серверными таблицами БД, свойство IsSequenced всегда содержит значение True. В клиент-серверной архитектуре оно зависит от используемого сервера БД. Свойство RecNo набора данных определяет порядковый номер обрабатываемой записи (нумерация начинается с 1), а его свойство RecordCount — количество записей. Во всех случаях следует помнить, что если в ходе выполнения цикла последовательного перебора записей изменится ключевое поле записи или в НД будет вставлена новая (удалена старая) запись, курсор НД может изменить свое положение и правильная работа цикла будет нарушена. Если, например, мы хотим удалить все записи из таблицы, следующий фрагмент программы будет неверным: with Tablel do while not EOF do begin Delete; Next; end; После удаления очередной записи курсор НД перейдет на следующую, но вызов Next заставит его сместиться еще раз, и очередная запись будет пропущена. Правильный вариант: with Tablel do while not EOF do Delete;
3.2 Запросы на изменение данных в БД 3.2.1 Обеспечение целостности, достоверности и непротиворечивости данных
Целостность данных – система правил, используемых для поддержания связей между записями в связанных таблицах, обеспечивающих защиту от случайного удаления или изменения данных. Обеспечение целостности БД – система мер, направленных на поддержание правильности данных в БД в любой момент времени. Целостность данных обеспечивается набором специальных предложений, называющихся ограничениями целостности. Ограничения целостности – это набор определенных правил, которые устанавливают допустимость данных и связей между ними. Ограничения целостности могут относиться к разным объектам БД: атрибутам (полям), записям, отношениям, связям между ними. Для полей могут быть использованы следующие виды ограничений: 1. Тип и формат поля автоматически допускают ввод только данных определенного типа. 2. Задание диапазона значений, как правило, используется для числовых полей. Диапазон значений может быть ограничен с двух сторон (закрытый диапазон), а может с какой-то одной: верхней или нижней (открытый диапазон). 3. Недопустимость пустого поля. Позволяет избежать появления в БД недописанных записей, в которых пропущены какие-либо обязательные атрибуты. 4. Задание списка значений, позволяет избежать излишнего разнообразия данных, если его можно ограничить. 5. Проверка на уникальность значения какого-либо поля, позволяет избежать появления записей-дубликатов. Ограничения для связей Пусть имеются отношение между двумя таблицами. Одна из таблиц будет являться главной (родительской), а вторая подчиненной (дочерней или связанной). При отношениях "один ко многим" или "многие к одному" таблица с отношением "один" всегда будет родительской. Поле, по которому происходит связь в дочерней таблице, называется внешним ключом.
1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле родительской таблицы. Пример В таблицу "Заказы" невозможно ввести "Код товара", которого нет в таблице "Товары" (код несуществующего товара). 2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. 3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной.
|
||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 45; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.68.228 (0.008 с.) |