Selectarea informațiilor din baza de date

Cele mai multe sisteme de management de baze de date permit să facă o selecție de informații necesare prin efectuarea de interogări. Un utilizator, în conformitate cu anumite norme formulează cererea, arătând modul în care ar trebui să îndeplinească criteriile de interesele informațiilor sale, iar sistemul afișează înregistrările care satisfac interogarea.

Pentru un eșantion de înregistrări de baze de date care îndeplinesc anumite criterii, este o interogare componentă (Fig. 17.17).

Fig. 17.17. Icon componentă de interogare

componentă de interogare este similară cu componenta de masă, dar, spre deosebire de acesta din urmă, nu este întreaga bază de date (toate înregistrările), ci doar o parte din ea - înregistrările care îndeplinesc criteriile de interogare.

Tabel. 17.18 liste unele dintre proprietățile componentei de interogare.

Tabelul 17.18. proprietăți componente Query

Pentru în timpul dezvoltării programului pentru a cere informații ce vor fi extrase din baza de date, ca urmare a interogării, proprietatea SQL trebuie să conțină prezentate în limba de interogare SQL pentru a prelua date.

În termeni generali, o cerere pentru a prelua datele din tabel este după cum urmează:

FieldList SELECT din tabelul unde (criteriu) ORDER BY FieldList

  • SELECT - înregistrările de selecție echipa dintr-un tabel și afișa conținutul câmpurile ale căror nume figurează pe listă;
  • DIN - un parametru de comandă care definește numele tabelei din care doriți să faceți o selecție;
  • UNDE - parametru care definește criteriile de selecție. În cel mai simplu caz, criteriul - o instrucțiune de verificare conținutului din câmp;
  • ORDER BY - parametru ce specifică condiția în care sunt sortate înregistrările care îndeplinesc criteriile de interogare.

SELECT Fam, nume de la ': Scoala: school.db' UNDE

(Class = '10a') ORDER BY Nume, Fam

Acesta oferă o mostră de „școală“ bază de date (din tabelul School.db), înregistrările în cazul în clasa este textul 10a t. F. Generează o listă alfabetică studenții 10a clasă.

Un alt exemplu. anchetă

SELECT Fam, Nume DE LA ": Scoala: school.db" UNDE

(Fam> 'K') și (Fam <'Л') ORDER BY Name, Fam

Acesta oferă o serie de informații despre elevi ale căror nume încep cu litera K.

Cererea poate fi generat și înregistrate în proprietatea SQL la timpul de proiectare sau de forme în timpul rulării.

Fig. 17.18. Exemplu de cerere la „școală“ bază de date

proprietate SQL este o listă de șiruri. Prin urmare, pentru a forma o interogare în timpul rulării, trebuie să utilizați metoda Add pentru a adăuga un rând (SQL-declarație) în lista SQL.

Ceea ce urmează este un fragment de cod care generează o cerere de informații cu privire la o anumită persoană (criteriu de selecție - câmp conținutul Fam trebuie să se potrivească cu valoarea FAM variabilă).

cu forml.Queryl do începe

Închide; // închide fișierul - rezultatul

SQL.Clear; // sterge textul interogare anterioară

// a scrie o nouă interogare în proprietatea SQL

SQL.Add ( „SELECT Fam, Nume, clasa 1);

SQL.Add ( '(Fam =' "+ fam +„") ');

SQL.Add ( 'ORDER BY nume, Fam');

Deschideți; // activa execuție interogare

Următorul program, textul este prezentat in listingul 17.2, o casetă de dialog - în Fig. 17.19, demonstrează abilitatea de a modifica interogarea, mai degrabă, interogare criterii, în timp ce programul. Programul oferă ieșire ca o listă a tuturor elevilor, precum și părțile sale. De exemplu, prin efectuarea unei informații cerere de ieșire numai pentru un anumit elev.

Fig. 17.19. Aplicație Școala formă Baza de date

Listarea 17.2. Baza de date „Școala“

utilizări
Ferestre, Mesaje, SysUtils, clasele,

Grafică, controale, Formulare,

Dialoguri, Grile, DBGrids, Db,

DBTables, ExtCtrls, DBCtrls, StdCtrls;

tip
TForm1 = class (TForm)
Tabelul 1: TTable; // tabel (întreaga bază de date)
Query1: TQuery; // interogare (înregistrări DB care îndeplinesc criteriile de selecție)
DataSource1: TDataSource; // sursă de date - tabel sau o interogare
DBGrid1: TDBGrid; // tabel pentru a afișa baza de date sau rezultatul interogării
DBNavigator1: TDBNavigator;
DBText1: TDBText;
Button1: TButton; // cerere-cheie
Button2: TButton; // butonul Toate intrările
Procedura Button1Click (Expeditor: TObject);
Procedura Button2Click (Expeditor: TObject);
Procedura FormActivate (Expeditor: TObject);
privat

public

se încheie;

var
Form1: TForm1;

// click pe butonul Request
Procedura TForm1.Button1Click (Expeditor: TObject);
var
fam: string [30];
începe
fam: = InputBox ( „informații eșantion din baza de date“
„Introduceți numele și faceți clic pe OK.“, „“);
dacă fam <> „“ // utilizator introduce numele
atunci
începe
cu form1.Query1 nu încep
Închide; // închide fișierul, rezultatul interogării anterioare
SQL.Clear; // sterge textul interogare anterioară
// a scrie o nouă interogare în proprietatea SQL
SQL.Add ( 'SELECT Fam, Nume, clasa');
SQL.Add ( 'DE LA ": Scoala: school.db"');
SQL.Add ( 'WHERE');
SQL.Add ( '(Fam = "' + fam + '")');
SQL.Add ( 'ORDER BY nume, Fam');
Deschideți; // activa execuție interogare
se încheie;

<*** другой вариант изменения критерия запроса
începe
Query1.Close;
Query1.SQL [3]: = '(Fam = "' + fam + '")';
Query1.Open;
DataSource1.DataSet: = Query1;
se încheie;
>
dacă Query1.RecordCount <> 0 atunci
DataSource1.DataSet: = Query1 // afișare cut-t interogare
else begin
ShowMessage ( „In baza de date nu există înregistrări care îndeplinesc criteriile de interogare.“);
DataSource1.DataSet: = Table1;
se încheie;
se încheie;
se încheie;

// click pe butonul Toate intrările
Procedura TForm1.Button2Click (Expeditor: TObject);
începe
DataSource1.DataSet: = Table1; // sursă de date - tabel
se încheie;

// formular de activare
Procedura TForm1.FormActivate (Expeditor: TObject);
începe
DataSource1.DataSet: = Table1;
Table1.Active: = true;
se încheie;

Procedura TForm1.Button1Click este pornit făcând clic pe butoanele Cerere. Este nevoie utilizatorul la un șir de caractere (nume) și înregistrarea (adăugarea) rânduri în proprietatea SQL formează textul interogării. Această procedură este apoi apelarea Open metoda activează executarea cererii.

Trebuie remarcat faptul că, înainte de a schimba proprietățile SQL de interogare trebuie să fie închis folosind aproape (aici trebuie amintit că rezultatul interogării - un fișier de date (tabelul), care este creat de interogare).

În cazul în care cererea este scris în proprietate SQL la formularul de cerere de design-time, apoi în timpul criteriilor de interogare ale programului poate fi modificat prin simpla înlocuire a interogare șir de text corespunzător.

De exemplu, pentru interogarea

SELECT DISTINCT Fam, Nume, Clasă DE LA ": Scoala: school.db" UNDE

(Clasa = și '10 „) ORDER BY Nume, Fam

Criterii manuale de interogare de înlocuire ar putea fi:

forml.Query1.SQL [3]: = '(Fam = "' + fam + '")'

Trebuie remarcat faptul că proprietatea SQL este o structură de tip TStrings, în care rândurile sunt numerotate de la zero.

Știri
Cavalerii Teoria eter

Acest Kornilov a scris pe pagina sa de pe rețeaua socială.

Potrivit lui Kornilov, atunci mesajul său a fost întâmpinată cu neîncredere.

Acum, Vladimir Kornilov a decis să se întoarcă la acest subiect, în legătură cu care se publică în fotografiile mele de pe Facebook misterioase israelienilor care au luat parte la masacrul de la Odessa.

Printre multele întrebări pe care Kornilov, a spus el, ar dori să obțină un răspuns, de exemplu, sunt după cum urmează:

„De ce au intrat accidental în Odesa cu echipament medical, mănuși de cauciuc, în cazul în care au știut dinainte că va fi rănit și ucis? Sau de ce acest luptător uitat brusc limba engleză, atunci când a dat seama că dosarul său?“.

apa lacurilor, mărilor și oceanelor prin lushariya --------- nordice roti spre m Lc - p-in-k-i, iar apa din polushariya sudic - ra - conductive dizolvată -sya- po- h asul săgeată - Obra-zuya- firma -Oral-furnica-ski-e-ovo-apă.

Principalul motiv pentru vârtejuri de rotație sunt vânt locale.
Cu cât viteza vântului este mai mare viteza de rotație a vîrtejuri și ca o consecință, mai mari vârtejuri forței centrifugale, contribuind astfel la creșterea nivelului apei mărilor și oceanelor.
Și cea mai mică forța centrifugă a vârtejuri, este mai scăzut nivelul apei mărilor și oceanelor.

O viteză de curgere pe perimetrul mărilor și oceanelor nu este același lucru peste tot și depinde de adâncimea coastei. În partea superficială a vitezei curenților de mare este crescut, iar în partea adâncă a mării este redusă.
fluctuațiile sezoniere ale nivelului apei ceas-tsya nu în jurul valorii de coasta mărilor și oceanelor-s, dar numai în acele coaste unde -mare viteza unghiulară a fluxurilor și a forței centrifuge, prin urmare, de mare a apei. (Centrifug forța F = v / r).
În zonele de coastă drepte, în cazul în care curenții nu au nici un nivel de apă cu viteză unghiulară nu crește.