SQL nebo Structured Query Language je standardní jazyk pro práci s relačními databázemi. Vzhledem k obrovskému množství přítomných dat je pro nás velmi důležité pochopit, jak používat dotazy k získání požadovaných dat. V tomto článku o SQL Query Interview Questions budu diskutovat o několika dotazech, které musíte procvičit, abyste se stali správcem databáze, a také vám pomohou zvládnout vaše pohovory.
Nejčastější dotazy k pohovoru o dotazech SQL
Pro vaše lepší pochopení budu při psaní dotazů zvažovat následující tabulky.
Tabulka informací o zaměstnancích:
EmpID | EmpFname | Název EmpL | Oddělení | Projekt | Adresa | DOB | Pohlaví |
1 | Sanjay | Mehra | HR | P1 | Hyderabad(HYD) | 01/12/1976 | M |
2 | Ananya | Mishra | Správce | P2 | Dillí (DEL) | 02/05/1968 | F |
3 | Rohan | Diwan | Účet | P3 | Bombaj (BOM) | 01/01/1980 | M |
4 | Sonia | Kulkarni | HR | P1 | Hyderabad(HYD) | 02/05/1992 | F |
5 | Ankit | Kapoor | Správce | P2 | Dillí (DEL) | 03/07/1994 | M |
Tabulka pozic zaměstnanců:
EmpID | EmpPosition | DateOfJoining | Plat |
1 | Správce | 01/05/2022 | 500 000 |
2 | Ředitel | 02/05/2022 | 75 000 |
3 | Správce | 01/05/2022 | 90 000 |
2 | Vedení | 02/05/2022 | 85 000 |
1 | Ředitel | 01/05/2022 | 300 000 |
Začněme tím, že se podíváme na některé z nejčastěji kladených dotazů na SQL Query,
- Napište dotaz pro načtení EmpFname z tabulky EmployeeInfo velkými písmeny a použijte název ALIAS jako EmpName.
- Napište dotaz a zjistěte počet zaměstnanců pracujících v oddělení ‚HR‘.
- Napište dotaz a získejte aktuální datum.
- Napište dotaz pro získání prvních čtyř znaků EmpLname z tabulky EmployeeInfo.
- Napište dotaz pro načtení pouze názvu místa (řetězec před závorkami) ze sloupce Adresa v tabulce EmployeeInfo.
- Napište dotaz pro vytvoření nové tabulky, která se skládá z dat a struktury zkopírované z jiné tabulky.
- Napište dotaz q a vyhledejte všechny zaměstnance, jejichž plat je mezi 50 000 až 100 000.
- Napište dotaz a vyhledejte jména zaměstnanců, která začínají na „S“
- Napište dotaz k načtení prvních N záznamů.
- Napište dotaz pro získání EmpFname a EmpLname do jednoho sloupce jako „FullName“. Jméno a příjmení musí být odděleny mezerou.
1. Napište dotaz pro načtení EmpFname z tabulky EmployeeInfo velkými písmeny a použijte název ALIAS jako EmpName.
SELECT UPPER(EmpFname) AS EmpName FROM EmployeeInfo;
Q2. Napište dotaz a zjistěte počet zaměstnanců pracujících v oddělení ‚HR‘.
SELECT COUNT(*) FROM EmployeeInfo WHERE Department = 'HR';
Q3. Napište dotaz, abyste získali aktuální datum.
V SQL Server můžete napsat dotaz následovně:
SELECT GETDATE();
V MySQL můžete napsat dotaz následovně:
SELECT SYSTDATE();
Q4. Napište dotaz pro získání prvních čtyř znaků EmpLname z tabulky EmployeeInfo.
SELECT SUBSTRING(EmpLname, 1, 4) FROM EmployeeInfo;
O5. Napište dotaz pro načtení pouze názvu místa (řetězec před závorkami) ze sloupce Adresa v tabulce EmployeeInfo.
Použití funkce MID v MySQL
SELECT MID(Address, 0, LOCATE('(',Address)) FROM EmployeeInfo;
Using SUBSTRING
SELECT SUBSTRING(Address, 1, CHARINDEX('(',Address)) FROM EmployeeInfo;
O6. Napište dotaz pro vytvoření nové tabulky, která se skládá z dat a struktury zkopírované z jiné tabulky.
Pomocí příkazu VYBRAT DO:
SELECT * INTO NewTable FROM EmployeeInfo WHERE 1 = 0;
Použití příkazu CREATE v MySQL:
CREATE TABLE NewTable AS SELECT * FROM EmployeeInfo;
O7. Napište q dotaz a najděte všechny zaměstnance, jejichž plat je mezi 50 000 až 100 000.
SELECT * FROM EmployeePosition WHERE Salary BETWEEN '50000' AND '100000';
O8. Napište dotaz a vyhledejte jména zaměstnanců, která začínají na „S“
SELECT * FROM EmployeeInfo WHERE EmpFname LIKE 'S%';
Otázka 9. Napište dotaz pro načtení prvních N záznamů.
Pomocí příkazu TOP v SQL Server:
SELECT TOP N * FROM EmployeePosition ORDER BY Salary DESC;
Pomocí příkazu LIMIT v MySQL:
SELECT * FROM EmpPosition ORDER BY Salary DESC LIMIT N;
O10. Napište dotaz pro získání EmpFname a EmpLname v jednom sloupci jako „FullName“. Jméno a příjmení musí být odděleny mezerou.
SELECT CONCAT(EmpFname, ' ', EmpLname) AS 'FullName' FROM EmployeeInfo;
O11. Napište dotaz zjistěte počet zaměstnanců, jejichž datum narození je mezi 2. 5. 1970 až 31. 12. 1975 a jsou seskupeni podle pohlaví
SELECT COUNT(*), Gender FROM EmployeeInfo WHERE DOB BETWEEN '02/05/1970 ' AND '31/12/1975' GROUP BY Gender;
O12. Napište dotaz pro načtení všech záznamů z tabulky EmployeeInfo seřazených podle EmpLname v sestupném pořadí a oddělení ve vzestupném pořadí.
Chcete-li seřadit záznamy ve vzestupném a sestupném pořadí, musíte v SQL použít příkaz ORDER BY.
SELECT * FROM EmployeeInfo ORDER BY EmpFname desc, Department asc;
O13. Napište dotaz pro získání podrobností o zaměstnancích, jejichž EmpLname končí písmenem „A“ a obsahuje pět abeced.
Chcete-li načíst podrobnosti matematické určité hodnoty, musíte v SQL použít operátor LIKE.
SELECT * FROM EmployeeInfo WHERE EmpLname LIKE '____a';
O14. Napište dotaz pro získání podrobností o všech zaměstnancích kromě zaměstnanců s křestními jmény „Sanjay“ a „Sonia“ z tabulky EmployeeInfo.
SELECT * FROM EmployeeInfo WHERE EmpFname NOT IN ('Sanjay','Sonia');Chcete se zdokonalit, abyste postoupili ve své kariéře? Podívejte se na toto video
10 nejlepších technologií pro rok 2022 | Edureka
O15. Napište dotaz pro získání podrobností o zaměstnancích s adresou „DELHI(DEL)“.
SELECT * FROM EmployeeInfo WHERE Address LIKE 'DELHI(DEL)%';
O16. Napište dotaz pro vyhledání všech zaměstnanců, kteří zároveň zastávají manažerskou pozici.
SELECT E.EmpFname, E.EmpLname, P.EmpPosition FROM EmployeeInfo E INNER JOIN EmployeePosition P ON E.EmpID = P.EmpID AND P.EmpPosition IN ('Manager');
O17. Napište dotaz k načtení oddělení podle počtu zaměstnanců seřazených podle počtu oddělení vzestupně.
SELECT Department, count(EmpID) AS EmpDeptCount FROM EmployeeInfo GROUP BY Department ORDER BY EmpDeptCount ASC;
O18. Napište dotaz pro výpočet sudých a lichých záznamů z tabulky.
Chcete-li načíst sudé záznamy z tabulky, musíte použít funkci MOD() následovně:
SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=0;
Podobně, chcete-li získat liché záznamy z tabulky, můžete napsat dotaz následovně:
SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=1;
O19. Napište SQL dotaz pro získání podrobností o zaměstnancích z tabulky EmployeeInfo, kteří mají datum připojení v tabulce EmployeePosition.
SELECT * FROM EmployeeInfo E WHERE EXISTS (SELECT * FROM EmployeePosition P WHERE E.EmpId = P.EmpId);
O20. Napište dotaz pro získání dvou minimálních a maximálních platů z tabulky EmployeePosition.
Chcete-li získat dva minimální platy, můžete napsat dotaz takto:
SELECT DISTINCT Salary FROM EmployeePosition E1 WHERE 2 >= (SELECTCOUNT(DISTINCT Salary)FROM EmployeePosition E2 WHERE E1.Salary >= E2.Salary) ORDER BY E1.Salary DESC;
To retrieve two maximum salaries, you can write a query as below:
SELECT DISTINCT Salary FROM EmployeePosition E1 WHERE 2 >= (SELECTCOUNT(DISTINCT Salary) FROM EmployeePosition E2 WHERE E1.Salary <= E2.Salary) ORDER BY E1.Salary DESC;
O21. Napište dotaz a najděte N-tý nejvyšší plat z tabulky bez použití klíčového slova TOP/limit.
SELECT Salary FROM EmployeePosition E1 WHERE N-1 = ( SELECT COUNT( DISTINCT ( E2.Salary ) ) FROM EmployeePosition E2 WHERE E2.Salary > E1.Salary );
O22. Napište dotaz pro načtení duplicitních záznamů z tabulky.
SELECT EmpID, EmpFname, Department COUNT(*) FROM EmployeeInfo GROUP BY EmpID, EmpFname, Department HAVING COUNT(*) > 1;
O23. Napište dotaz pro získání seznamu zaměstnanců pracujících ve stejném oddělení.
Select DISTINCT E.EmpID, E.EmpFname, E.Department FROM EmployeeInfo E, Employee E1 WHERE E.Department = E1.Department AND E.EmpID != E1.EmpID;
O24. Napište dotaz pro načtení posledních 3 záznamů z tabulky EmployeeInfo.
SELECT * FROM EmployeeInfo WHERE EmpID <=3 UNION SELECT * FROM (SELECT * FROM EmployeeInfo E ORDER BY E.EmpID DESC) AS E1 WHERE E1.EmpID <=3;
O25. Napište dotaz a najděte třetí nejvyšší plat z tabulky EmpPosition.
SELECT TOP 1 salary FROM( SELECT TOP 3 salary FROM employee_table ORDER BY salary DESC) AS emp ORDER BY salary ASC;
O26. Napište dotaz pro zobrazení prvního a posledního záznamu z tabulky EmployeeInfo.
Chcete-li zobrazit první záznam z tabulky EmployeeInfo, můžete napsat dotaz takto:
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MIN(EmpID) FROM EmployeeInfo);
Chcete-li zobrazit poslední záznam z tabulky EmployeeInfo, můžete napsat dotaz takto:
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MAX(EmpID) FROM EmployeeInfo);
O27. Napište dotaz pro přidání ověření e-mailu do databáze
SELECT Email FROM EmployeeInfo WHERE NOT REGEXP_LIKE(Email, ‘[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}’, ‘i’);
O28. Napište dotaz pro získání oddělení, která mají méně než 2 zaměstnance, kteří v něm pracují.
SELECT DEPARTMENT, COUNT(EmpID) as 'EmpNo' FROM EmployeeInfo GROUP BY DEPARTMENT HAVING COUNT(EmpD) < 2;
O29. Napište dotaz a načtěte EmpPostion spolu s celkovými mzdami zaplacenými za každého z nich.
SELECT EmpPosition, SUM(Salary) from EmployeePosition GROUP BY EmpPosition;
O30. Napište dotaz pro načtení 50 % záznamů z tabulky EmployeeInfo.
SELECT * FROM EmployeeInfo WHERE EmpID <= (SELECT COUNT(EmpID)/2 from EmployeeInfo);
Takže tímto se dostáváme na konec článku s dotazy k dotazu SQL. Doufám, že vám tato sada dotazů SQL Query Interview Questions pomůže zvládnout váš pracovní pohovor. Vše nejlepší k pohovoru!
Podívejte se na toto certifikační školení MySQL DBA od Edureka, důvěryhodné online vzdělávací společnosti se sítí ovíce než 250 000 spokojených studentů po celém světě. Tento kurz vás naučí základní koncepty a pokročilé nástroje a techniky pro správu dat a správu databáze MySQL. Zahrnuje praktické učení pojmů jako MySQL Workbench, MySQL Server, Data Modeling, MySQL Connector, Návrh databáze, Příkazový řádek MySQL, Funkce MySQL atd. Na konci školení budete schopni vytvořit a spravovat vlastní databázi MySQL a spravovat data.
Máte na nás otázku? Zmiňte to prosím v sekci komentářů tohoto „SQL Query Rozhovor Otázky“ a my se vám co nejdříve ozveme.