Syntax 1 válassza

SELECT szerkezete a következő:
SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]






[DISTINCT | DISTINCTROW | ALL]
select_expression.
[INTO 'file_name' export_options]
[AZ table_references
[Hol where_definition]
[GROUP BY [ASC | DESC]. ]
[HAVING where_definition]
[ORDER BY [ASC | DESC]. ]
[LIMIT [offset] sor | sorok OFFSET offset]
[ELJÁRÁS eljárás_neve (argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]
SELECT lehívására használjuk sorok közül kiválasztott egy vagy több táblából. Select_expression kifejezése a kijelölt oszlop kívánt mintát. Továbbá SELECT lehet használni letölteni sorok számítjuk való hivatkozás nélkül asztalra. Például:
mysql> SELECT 1 + 1;
-> 2
Amikor megadja a kulcsszavakat pontosan kell betartani a fenti eljárást. Például a RENDELKEZŐ kifejezést úgy kell elhelyezni, miután az összes GROUP BY záradék és az egész kifejezést ORDER BY.

  1. Az AS kulcsszó, kifejezés a SELECT, hozzá lehet rendelni egy álnév. Az alias használják oszlop neve a kifejezést, és fel lehet használni az ORDER BY vagy korábban. Például:
  2. Más nevek oszlopokat nem lehet használni a WHERE kifejezést olyan értékek oszlopokban idején végrehajtás WHERE nem lehet tovább azonosítani.
  3. Expresszió table_references meghatározza az asztalra, ahonnan a sorokat kell bontania. Ha a név több mint egy asztal, meg kell egyesíteni. megadhat egy fedőnevet minden asztalnál adott kérésre.
  1. Linkek az asztalra adható tbl_name (az aktuális adatbázis), vagy dbname.tbl_name érdekében egyértelműen meghatározza az adatbázisban.
  1. Link a táblázat helyébe egy álnév, a tbl_name [AS] ALIAS_NAME:
  1. Az ORDER BY és GROUP BY terjeszti a kiválasztott oszlopokat a kimenetet, akkor bármelyik oszlopában nevek vagy felvett nevek, vagy a helyzetüket (helye). A számozás kezdődik oszlopon pozíciók 1:
  1. A WHERE kifejezés használja a funkciót, amely támogatja a MySQL.
  1. Options (opció) az önálló, DISTINCTROW és ALL megadja, hogy visszatérjen ismétlődő rekordokat. Az alapértelmezett beállítás (ALL), azaz vissza az összes előfordulását a húr. Elkülönülő és DISTINCTROW szinonimák, és adja meg, hogy az ismétlődő sorok az eredmény adathalmazt kell hagyni.
  2. Minden paraméter, kezdve SQL_, STRAIGHT_JOIN és HIGH_PRIORITY képviselnek MySQL kiterjesztés az ANSI SQL.
  3. Ha meg paraméter tartalmazó HIGH_PRIORITY a SELECT lesz magasabb a prioritása, mint egy parancsot, amely frissíti a táblázatot. Csak akkor kell használni ezt az opciót lekérdezéseket végezni nagyon gyorsan és azonnal. Ha a tábla le van zárva az olvasás, a SELECT HIGH_PRIORITY vizsgálatot kell elvégezni, ha van egy frissítés parancs, várjon, amíg egy asztal felszabadul.
  4. SQL_BIG_RESULT paraméter lehet használni, vagy GROUP BY KÜLÖNÁLLÓ, hogy elmondja az optimalizáló, hogy az eredmény tartalmazni fog egy nagy sorok számát. Ha ez az opció meg van adva, MySQL, ha szükséges, akkor azonnal használhatja ideiglenes táblák lemezen, de előnyben kell részesíteni, hogy ne hozzon létre egy ideiglenes táblát egy billentyűt elemeinek GROUP BY, és az adatok válogatás.
  5. Amikor megadja SQL_BUFFER_RESULT MySQL paraméter adja meg az eredményt egy ideiglenes tábla. Így MySQL képes, hogy a zárat, mielőtt az asztalra; ez is hasznos, ha küldeni az eredményt a kliens hosszú időt vesz igénybe.
  6. SQL_SMALL_RESULT lehetőség is van lehetőség külön MySQL. Ez az opció használható GROUP BY vagy KÜLÖNÁLLÓ, hogy elmondja az optimalizáló, hogy az eredmény meg kicsi lesz. Ebben az esetben a MySQL tárolni az így kapott táblázat használata helyett válogatás fogja használni a gyors ideiglenes táblák. A MySQL 3.23, adja meg ezt a beállítást általában nem szükséges.
  7. Paraméter SQL_CALC_FOUND_ROWS (MySQL 4.0.0 és újabb) visszaadja a sorok számát vissza kell juttatni a SELECT, ha nem meghatározott értéket. A kívánt sorok száma lehet beszerezni a SELECT FOUND_ROWS ().
  1. Paraméter SQL_CACHE utasítja MySQL tárolja a lekérdezés eredménye a lekérdezés cache segítségével query_cache_type = 2 (kereslet).
  2. Paraméter SQL_NO_CACHE tiltja MySQL tárolja a lekérdezés eredménye a lekérdezés cache.
  3. Ha GROUP BY, kiadási sorok véleménynyilvánítás lesz rendezve eljárásnak megfelelően meghatározott GROUP BY, - mintha az ORDER BY záradékot alkalmaztuk az összes meghatározott területeken a GROUP BY. A MySQL GROUP BY tagmondat hosszabbítani, hogy akkor is meg ASC és DESC opciók számára:






  1. Részletes szereplő GROUP BY MySQL előírja többek között, a választás a mezők nem szerepel a GROUP BY kifejezés.
  2. Ha megad STRAIGHT_JOIN optimalizáló, hogy csatlakozzon a táblákat a sorrendben, amelyben szerepel a FROM záradék. Az ezzel a paraméter lehetővé teszi, hogy növelje a sebességet a megkeresés esetén az optimalizáló termel egyesület asztalok szuboptimális módon.
  3. LIMIT kifejezést lehet használni, hogy korlátozza a sorok számát SELECT parancs. LIMIT vesz egy vagy két numerikus érveket. Ezek az érvek kell lennie egész konstansokat. Ha a két érv, az első pont a kezdete az első sorban, hogy visszatérjen, és a második megadja a maximális sorok számát. Az elmozdulás a kezdeti sor 0 (1):
  1. SELECT lehet bemutatni formájában SELECT. INTO OUTFILE 'fájlnév'. Ez a fajta csapat írja a kijelölt sorokat a fájl által meghatározott fájlnév. Ez a fájl jön létre a szerveren, és azt megelőzően nem létezik (így többek között megakadályozza a megsemmisítése a táblázatok és fájlokat, mint például a / etc / passwd). Ahhoz, hogy használni ezt a fajta SELECT parancs szükséges jogosultságokat FILE. SELECT formában. INTO OUTFILE célja elsősorban, hogy végre nagyon gyors billenő asztalt a szerver számítógépen. SELECT parancs. INTO OUTFILE nem lehet használni, ha azt szeretné, hogy megteremtse a kapott fájlt egy másik gazda, mint a szerver. Ebben az esetben, hogy a kívánt fájlt, hanem a parancs használja néhány kliens programot, mint mysqldump --tab vagy mysql -e „SELECT.”> Outfile. A SELECT parancs. INTO OUTFILE a kiegészítője a LOAD DATA INFILE; export_options része parancs szintaxisa azonos expressziós mezők és formákat, amelyek használják a parancs LOAD DATA INFILE. Figyeljük meg, hogy a kapott szöveges fájl megmenekült szereplő képernyők, csak a következő karaktereket:
    1. A szimbólum megmenekült
    2. Az első jel az üzemeltető TERÜLETEK leállítottuk
    3. Az első jel az üzemeltető VONALAK leállítottuk
  1. Ha ahelyett, hogy INTO OUTFILE használni INTO DumpFile, akkor a MySQL rögzíti a fájl csak egy sor karakter, oszlopok vagy sorok teljes és nincs semmilyen árnyékolás. Ez akkor hasznos, tárolására BLOB adattípus egy fájlban.
  2. Vegye figyelembe, hogy bármilyen fájl által létrehozott INTO OUTFILE és INTO DumpFile elérhető lesz rögzíteni minden felhasználó! Ennek az az oka a következő: a MySQL szerver nem tud létrehozni egy fájlt, csak az tartozik, hogy minden aktuális felhasználó (sosem lehet futtatni mysqld root), illetve a fájlt kell írható minden felhasználó.

mysql> SELECT CONCAT (last_name, '', first_name) AS full_name
AZ mytable ORDER BY full_name;

table_name [[AS] alias] [[USE INDEX (KEY_LIST)] | [IGNORE INDEX (KEY_LIST)] | FORCE INDEX (KEY_LIST)]]
A MySQL 3.23.12 verzió, megadhatja, hogy mely indexet (billentyűk) MySQL kell használni, hogy információt a táblázatban. Ez akkor hasznos, ha MAGYARÁZZA (kimenetre szerkezetére vonatkozó információkat és a rend a SELECT lekérdezés), azt mutatja, hogy a MySQL a listát a lehetséges indexek döntött rosszul. Ha szükséges. keresni a rekordok a táblát csak az egyik az indexek, meg kell adnia az index értéke a USE INDEX (KEY_LIST). Alternatív expressziós IGNORE INDEX (KEY_LIST) megtiltja a MySQL ebben az adott index.
A MySQL 4.0.9 is megadhatja FORCE INDEX. Úgy működik, ugyanúgy, mint a USE INDEX (KEY_LIST), de emellett egyértelművé teszi, hogy a szerver teljes táblázat vizsgálat lesz nagyon költséges művelet. Más szóval, ebben az esetben a táblázat vizsgálat csak akkor lesz használva, ha megállapítást nyer, egy másik módja, hogy az egyik ezek közül az indexek keresni rekordok a táblázatban.
Kifejezések által használt / ignore KEY szinonimái USE / ignore INDEX.

Oszlop hivatkozásokat adható formában COL_NAME, tbl_name.col_name vagy db_name.tbl_name.col_name. Ami tbl_name vagy db_name.tbl_name nem kell megadni egy előtagot oszlop hivatkozás egy SELECT, ha ezek a hivatkozások nem értelmezhető kétértelműen.

mysql> SELECT t1.name, t2.salary a munkavállalói AS t1, t2 info AS
AHOL t1.name = t2.name;
mysql> SELECT t1.name, t2.salary a munkavállalói t1, t2 info
AHOL t1.name = t2.name;

mysql> SELECT főiskola, régió, vetőmag versenyről
ORDER BY régió, vetőmag;
mysql> SELECT főiskola, régió r, vetőmag s versenyről
ORDER BY r, s;
mysql> SELECT főiskola, régió, vetőmag versenyről
ORDER BY 2, 3;
Rendezéséhez fordított sorrendben, egy nyilatkozatában ORDER BY neve a megadott oszlop, amelyben rendezni, adja meg a kulcsszót DESC (csökkenő). Alapértelmezett elfogadott rendezési emelkedő sorrendben, amely megadható explicit módon, az ASC kulcsszó.

RENDELKEZŐ expressziós utalhat bármely oszlop vagy alias említett select_expression expresszió. Miután dolgozott a múlt, csak mielőtt az adatok az ügyfél, és minden megkülönböztetés nélkül optimalizálás. Ne használja ezt a kifejezést, hogy meghatározzák, mit kell meghatározni a WHERE. Például, ha nem adja meg a következő nyilatkozatot teszi:
mysql> SELECT FROM COL_NAME tbl_name RENDELKEZŐ COL_NAME> 0;
Ehelyett meg kell kérdezni:
mysql> SELECT FROM COL_NAME tbl_name WHERE COL_NAME> 0;
A MySQL verzió 3.22.5 vagy újabb, akkor is lekérdezéseket írni, mint ez:
mysql> SELECT felhasználó, MAX (fizetés) FROM felhasználók
GROUP BY rendelkező felhasználó MAX (fizetés)> 10;
A régebbi verziói MySQL helyett megadhatja:
mysql> SELECT felhasználó, MAX (fizetés) AS összeget felhasználók
GROUP BY rendelkező felhasználó összeg> 10;

Vegye figyelembe, hogy a MySQL 4.1.0 előtti verziókban nem működik LIMIT 0, optimalizált, hogy visszatérjen a null eredmény azonnal.

SELECT a, COUNT (b) test_table GROUP BY egy DESC

Kompatibilitás PostgreSQL MySQL is támogatja a LIMIT # OFFSET # szintaxis.
mysql> SELECT * FROM tábla LIMIT 5,10; # Garancia sorok 6-15
Jelölje ki az összes sort egy bizonyos eltolás legfeljebb a végeredmény, akkor értéke -1, mint a második paraméter:
mysql> SELECT * FROM tábla LIMIT 95, 1; # Lekérése sorok 96 utoljára.
Ha az egyik érv, hogy azt a maximális sorok számát:
mysql> SELECT * FROM tábla LIMIT 5; # Visszaadja az első 5 sorban
Más szóval, LIMIT n egyenértékű LIMIT 0, n.

Ha FOR UPDATE felvezető táblák támogatása zár oldalak / vonalak, a kiválasztott sor lesz zárva az íráshoz.




Kapcsolódó cikkek