SQL:ssä alikysely voidaan yksinkertaisesti määritellä kyselyksi toisen kyselyn sisällä. Toisin sanoen voimme sanoa, että alikysely on kysely, joka on upotettu toisen SQL-kyselyn WHERE-lauseeseen. Tärkeitä alakyselyitä koskevia sääntöjä:
- Voit sijoittaa alikyselyn useisiin SQL-lauseisiin: MISSÄ lauseke, HAVING lauseke, FROM-lause. Alikyselyitä voidaan käyttää SELECT-, UPDATE-, INSERT-, DELETE-käskyjen sekä lausekeoperaattorin kanssa. Se voi olla yhtäläisyysoperaattori tai vertailuoperaattori, kuten =,>, =, <= ja Like-operaattori.
- Alikysely on toisen kyselyn sisällä oleva kysely. Ulkoista kyselyä kutsutaan nimellä pääkysely ja sisäistä kyselyä kutsutaan nimellä alikysely .
- Alikysely suoritetaan yleensä ensin, kun alikyselyllä ei ole yhtään yhteissuhde kanssa pääkysely , kun on yhteissuhde, jäsentäjä tekee päätöksen lennossa millä kyselyllä suoritetaan etusijalla ja käyttää alikyselyn tulosta vastaavasti.
- Alakysely on suluissa.
- Alikyselyt ovat vertailuoperaattorin oikealla puolella.
- TILAA komento ei voi käyttää alikyselyssä. GROUPBY -komentoa voidaan käyttää suorittamaan sama toiminto kuin ORDER BY -komento.
- Käytä yksirivisiä operaattoreita yksirivisten alikyselyiden kanssa. Käytä usean rivin operaattoreita usean rivin alikyselyissä.
Syntaksi: Alikyselyille ei ole yleistä syntaksia. Alikyselyitä käytetään kuitenkin useimmin SELECT-käskyn kanssa, kuten alla on esitetty:
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>
Esimerkkitaulukko :
TIETOKANTA
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO |
|---|---|---|---|
| RAM | 101 | Chennai | 9988775566 |
| Raj | 102 | Coimbatore | 8877665544 |
| Sasi | 103 | Madurai | 7766553344 |
| Hoito | 104 | Salem | 8989898989 |
| Sumathi | 105 | Kanchipuram | 8989856868 |
OPISKELIJA
| NIMI | ROLL_NO | OSA |
|---|---|---|
| Hoito | 104 | A |
| Sumathi | 105 | B |
| Raj | 102 | A |
Esimerkkikyselyt
:
- Näytä NAME, LOCATION, PHONE_NUMBER oppilaista DATABASE-taulukosta, jonka osio on A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
- Selitys: Ensimmäinen alikysely suorittaa SELECT ROLL_NO opiskelijalta, jossa SECTION='A' palauttaa ROLL_NO OPPILAS-taulukosta, jonka OSA on 'A'. Sitten ulkoinen kysely suorittaa sen ja palauttaa NAME, SIJAINTI, PHONE_NUMBER sen opiskelijan, jonka ROLL_NO TIETOKANTA-taulukosta. palautetaan sisäisestä alikyselystä. Lähtö:
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO |
| Hoito | 104 | Salem | 8989898989 |
| Raj | 102 | Coimbatore | 8877665544 |
- Lisää kyselyesimerkki:
Taulukko 1: Opiskelija1
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO | |
|---|---|---|---|---|
| RAM | 101 | Chennai | 9988773344 | |
| Raju | 102 | koimbatore | 9090909090 | |
| Hoito | 103 | Salem | 8989898989 |
Taulukko2: Opiskelija2
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO | |
|---|---|---|---|---|
| Raj | 111 | Chennai | 8787878787 | |
| Siihen asti kun | 112 | Mumbai | 6565656565 | |
| Sri | 113 | koimbatore | 7878787878 |
- Opiskelija2:n lisääminen Opiskelija1-taulukkoon:
INSERT INTO Student1 SELECT * FROM Student2;>
- Lähtö:
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO | |
|---|---|---|---|---|
| RAM | 101 | Chennai | 9988773344 | |
| Raju | 102 | koimbatore | 9090909090 | |
| Hoito | 103 | Salem | 8989898989 | |
| Raj | 111 | Chennai | 8787878787 | |
| Siihen asti kun | 112 | Mumbai | 6565656565 | |
| Sri | 113 | koimbatore | 7878787878 |
- Poistaa opiskelija2-taulukosta opiskelijoita, joiden rollno on sama kuin Opiskelija1-taulukossa ja jonka sijainti on chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
- Lähtö:
1 row delete successfully.>
- Näytä Student2-taulukko:
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO | |
|---|---|---|---|---|
| Siihen asti kun | 112 | Mumbai | 6565656565 | |
| Sri | 113 | koimbatore | 7878787878 |
- Päivittää opiskelijoiden nimet nörteiksi Student2-taulukossa, jonka sijainti on sama kuin Raju,Ravi Student1-taulukossa
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
- Lähtö:
1 row updated successfully.>
- Näytä Student2-taulukko:
| NIMI | ROLL_NO | SIJAINTI | PUHELINNUMERO | |
|---|---|---|---|---|
| Siihen asti kun | 112 | Mumbai | 6565656565 | |
| nörttiä | 113 | koimbatore | 7878787878 |