На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > Базы данных с нуля , В помощь начинающим
      Я здесь не буду подробно останавливаться на синтаксисе SQL запроса, материал по этой теме вы найдёте здесь:

      http://forum.vingrad.ru/index.php?act=ST&f=12&t=5638

      Однако простейшие приёмы работы я покажу. В нескольких дальнейших примерах мы будем менять свойство "SQL". Перед каждым изменением этого свойства Вы должны закрывать квери (в дизайне устанавливать Active в False). В run-time изменения SQL должны выглядеть примерно так:

      CODE
      Query1.active:=false;
      Query1.sql.text:='Select * from biolife';
      Query1.active:=true;


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

      1) Выбор только тех строк (записей) которые отвечают условию (например тех где в поле category записано 'Snapper')
      SQL
      SELECT * FROM biolife where category='Snapper'



      2) Выбор только нужных столбцов (например нам нужны только столбцы Category и common_name )
      SQL
      SELECT Category, common_name FROM biolife


      3) Выбор записей отсортированных в определённом порядке (например в алфавитном порядке поля Category)
      SQL
      SELECT * FROM biolife Order by Category


      4) Запрос может комбинировать в себе всё перечисленное
      SQL
      SELECT Category, common_name FROM biolife where category='Snapper'
      Order by common_name


      Попробуйте задать каждый из этих запросов и посмотреть как программа будет реагировать на него. На самом деле запросы предоставляют гораздо большии возможности - например суммарные и статистические функции (вычислить сумму всех значений поля), вычисляемые поля (например добавить столбец который отражает не реальное поле в таблице, а сумму 2х других полей), объединение нескольких таблиц в одном запросе (2 таблицы с похожей структурой представляются как одна таблица), запросы на несколько таблиц (например вам надо выбрать всех из одной таблицы которые не встречаются в другой таблице, или для Иванова взять его номер телефона из одной таблицы, а его заказы из другой и т.п.). Всё это вы найдёте здесь: http://forum.vingrad.ru/index.php?act=ST&f=12&t=5638 , а в этой статье я только показываю как с этим можно работать из Дельфи
        А как менять значения в базе данных? Тоже при помощи квери это делать проще и, что важнее, значительно быстрее. Например, меняем в поле Category все "Cod" на "Kod". В квере пишем текст:


        SQL
        Update biolife
        Set Category='Kod'
        Where Category='Cod'


        Ставим на форму кнопку, в обработчике нажания (onClick) пишем код:

        CODE
        Query1.ExecSQL


        Важные примечания:
        1) Обратите внимание, что в данном случае мы не открываем квери делая Active:=true и не используем эквивалентный метод Open, а используем метод ExecSQL. Если открытие квери с оператором Select приводит к возвращению данных в программу (так называемый курсор данных), то все остальные типы кверей никаких данных в программу не возвращают - они выполняют операцию над базой, но не возвращают курсор. Такую кверю НЕЛЬЗЯ соединить с визуальными компонентами, её открытие хоть и будет выполнять операцию, будет приводить к исключительной ситуации.

        2) Перед изменением текста квери, хоть в дизайне, хоть в run-time кверя должна быть закрыта.

        Аналогичным способом можно пользоваться другими операторами SQL:

        Delete - для удаления нескольких/всех строк
        Insert - для вставки одной или нескольких строк
        Create Table - для создания таблицы
        Alter Table - для изменения структуры таблицы
        Drop Table - для удаления таблицы
        и другими. Смотрите руководства по SQL по использованию этих операторов.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0156 ]   [ 16 queries used ]   [ Generated: 19.03.24, 04:16 GMT ]