SQL (Structured Query Language) е стандартизиран език за дефиниране и манипулиране на данни в релационна база данни. В съответствие с релационния модел на данните базата данни се възприема като набор от таблици, взаимоотношенията са представени със стойности в таблици, а данните се извличат чрез посочване на таблица с резултати, която може да бъде получена от една или повече основни таблици. Заявките са под формата на команден език, който ви позволява изберете, вмъкнете, актуализирайте, намерете местоположението на данните и т.н.
В Delphi: TQuery
Ако ще използвате SQL в приложенията си, ще се запознаете много с TQuery компонент. Delphi дава възможност на приложенията ви да използват синтаксиса на SQL директно чрез компонент TQuery за достъп до данни от таблици Paradox и dBase (използвайки локален SQL - подмножество на стандартния SQL за ANSI), бази данни на локалния сървър на междубаловите сървъри и бази данни на отдалечена база данни сървъри.
Delphi също поддържа разнородни заявки срещу повече от един тип сървър или таблица (например данни от таблица Oracle и таблица Paradox) .TQuery има свойство, наречено
TQuery капсулира едно или повече SQL изрази, изпълнява ги и предоставя методи, чрез които можем да манипулираме резултатите. Заявките могат да бъдат разделени на две категории: тези, които създават набори от резултати (като a SELECT изявление) и тези, които не (като например UPDATEили INSERT изявление). Използвайте TQuery. Отворена за изпълнение на заявка, която генерира набор от резултати; използвайте TQuery. ExecSQL за изпълнение на заявки, които не генерират набори от резултати.
SQL изразите могат да бъдат всякакви статичен или динамичен, тоест те могат да бъдат зададени по време на проектиране или да включват параметри (TQuery. Params), които варират по време на изпълнение. Използването на параметризирани заявки е много гъвкаво, защото можете да промените изгледа на потребителя и достъпа до данни в движение по време на изпълнение.
Всички изпълними SQL оператори трябва да бъдат подготвени преди да бъдат изпълнени. Резултатът от подготовката е изпълнима или оперативна форма на изявлението. Методът за подготовка на SQL оператор и постоянството на неговата оперативна форма отличават статичния SQL от динамичния SQL. По време на проектирането заявка се подготвя и изпълнява автоматично, когато зададете запитване компонент Active свойства на True. По време на изпълнение, заявка се подготвя с повикване за подготовка и изпълнение, когато приложението извиква методите Open или ExecSQL на компонента.
TQuery може да върне два вида набори от резултати: "на живо„както при компонента TTable (потребителите могат да редактират данни с контроли на данни, а когато възникне повикване до„ Публикуване “, се изпращат промени в базата данни)“Само за четене„само за показване. За да поискате набор от резултати на живо, задайте свойството RequestLive на заявката на True и бъдете наясно, че SQL операторът трябва да отговаря на някои специфични изисквания (без ORDER BY, SUM, AVG и т.н.)
Една заявка се държи по много начини много като филтър за таблица, а по някакъв начин заявката е дори по-мощна от филтъра, защото ви дава достъп:
- повече от една таблица наведнъж ("присъединяване" в SQL)
- определено подмножество от редове и колони от основната му таблица (и), вместо винаги да се връщат всички от тях
Прост пример
Сега нека видим някои SQL в действие. Въпреки че бихме могли да използваме съветника за формуляри на базата данни за създаване на някои SQL примери за този пример, ще го направим ръчно, стъпка по стъпка:
1. Поставете TQuery, TDataSource, TDBGrid, TEdit и компонент TButton върху основната форма.
2. Задайте свойството DataSet на компонента TDataSource на Query1.
3. Задайте свойството DataSource на компонента TDBGrid на DataSource1.
4. Задайте свойството DatabaseName на компонента TQuery на DBDEMOS.
5. Кликнете два пъти върху SQL свойството на TQuery, за да му присвоите SQL израза.
6. За да направите данните за дисплея на мрежата по време на проектиране, променете активността на компонента TQuery на True.
Решетката показва данни от таблицата Employee.db в три колони (FirstName, LastName, Salary), дори ако Employee.db има 7 полета и наборът от резултати е ограничен до тези записи, където започва FirstName с 'R'.
7. Сега присвойте следния код на събитието OnClick на бутона1.
процедура TForm1.Button1Click (Подател: TObject); започвам Query1.Close;{затворете заявката}// задайте нов SQL израз Query1.SQL.Clear; Query1.SQL.Add („Изберете EmpNo, FirstName, LastName“); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Salary>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {отворена заявка + дисплейни данни}край;
8. Стартирайте приложението си. Когато щракнете върху бутона (стига Edit 1 да има валидна стойност на валутата в него), мрежата ще покаже Полетата EmpNo, FirstName и LastName за всички записи, където заплатата е по-голяма от посочената валута стойност.
В този пример създадохме обикновен статичен SQL оператор с набор от резултати на живо (не сме променили нито един от показаните записи) само за показване.