După ce ai învățat bazele sistemului MySQL urmează pregătirea pentru interviu. Este foarte important să te prezinți pregătit pentru că vrei să impresionezi, să arăți că ești candidatul potrivit pentru un salar adecvat.
Am pregătit o listă cu cele mai populare întrebări despre MySQL. Majoritatea sunt de nivel junior și restul pentru nivel avansat.
Întrebări MySQL nivel junior
1. Ce este MySQL?
MySQL este un sistem de gestiune a bazelor de date relaționale. Portul standard este 3306.
2. Prin ce librării te poți pot conecta la MySQL din PHP?
PDO sau MySQLi. Prin PDO este compatibil cu alte baze de date cum ar fi MSSQL, etc.
3. Ce clienți MySQL cunoști?
HeidiSQL, MySQL Workbench, Navicat, etc.
4. Ce sunt indecșii?
Rolul indecșilor este să crească performanța SELECT-urilor, se pot crea indecși pentru una sau mai multe coloane.
Este ca și cuprinsul unei cărți, verifici pe ce pagină este un capitol și deschizi cartea exact acolo. Este mult mai rapid decât să cauți pagină cu pagină.
5. Cum se creează o bază de date și o tabelă?
CREATE DATABASE mydbname;
CREATE TABLE users (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
location VARCHAR(255)
);
6. Ce este un primary key?
Primary key este o coloana în care sunt valabile următoarele:
- Valorile sunt unice
- Valorile sunt NOT NULL
- Coloana are index
- O tabelă poate să aibă o singură coloană primary key
- Este recomandat să se seteze tip INT, BIGINT și să se adauge AUTO_INCREMENT.
7. Ce este un foreign key?
Foreign Keys permit referințe cross între mai multe tabele păstrând consistența de date. Aceste keys se definesc în tabele child.
8. Selectează toți utilizatorii din tabela users
SELECT * FROM users;
9. Selectează utilizatorii din tabela users având localitatea Oradea
SELECT * FROM users
WHERE location = 'Oradea'
;
10. Adaugă un utilizator nou în tabela users
INSERT INTO users(email, password, location)
VALUES('john@example.com', 'password','Oradea')
;
11. Adaugă mai mulți utilizatori în tabela users
INSERT INTO users(email, password, location)
VALUES('john@example.com', 'password','Oradea')
VALUES('jane@example.com', 'password','Oradea')
VALUES('ana@example.com', 'password','Arad')
;
12. Actualizează un utilizator după adresă de email
UPDATE users
SET location = 'Brasov'
WHERE email = 'john@example.com'
;
13. Selectează utilizatorul după adresă de email
SELECT * FROM users
WHERE email = 'john@example.com'
;
14. Șterge utilizatorul după adresă email
DELETE FROM users
WHERE email = 'john@example.com'
;
15. Creează un index pentru coloana email în tabela users
CREATE INDEX idx_email
ON users (email)
;
16. Creează 2 tabele: users și user_profiles
CREATE TABLE users (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
location VARCHAR(255)
);
CREATE TABLE user_profiles (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id INT(11) NOT NULL,
data VARCHAR(255)
);
17. Ce tipuri de join-uri există?
LEFT JOIN
RIGHT JOIN
INNER JOIN
LEFT OUTER JOIN
RIGHT INNER JOIN
FULL OUTER JOIN
18. Creeaza un VIEW pentru tabele: users și user_profiles
CREATE VIEW user_profiles_view as
SELECT * FROM users
JOIN user_profiles ON users.id = user_profiles.user_id
;
19. Citește datele din VIEW
SELECT * FROM user_profiles_view;
20. Selectează utilizatorii creați în ultimele 2 zile
SELECT * FROM users
WHERE created_at > DATE_SUB(NOW(), INTERVAL 2 DAY)
;
21. Creează tabela products și selectează prețul maxim, minim, medie și suma
CREATE TABLE products(
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock INT(11)
);
SELECT MAX(price) price_max FROM products;
SELECT MIN(price) price_min FROM products;
SELECT AVG(price) price_avg FROM products;
SELECT SUM(price) price_sum FROM products;
22. Numără câte produse sunt în tabelă
SELECT COUNT(*) as nr FROM products;
23. Numără câți utilizatori sunt per localitate
SELECT location, COUNT(*) as nr FROM users
GROUP BY location
;
24. Selectează primele 5 produse ordonate după preț crescător
SELECT * FROM products
ORDER BY price ASC
;
25. Care este valoarea maximă care se poate stoca în coloana price având tipul decimal(6,2)?
9999.99
26. Cum se șterg toate datele dintr-o tabelă?
TRUNCATE TABLE products;
27. Cum se caută un șir de caractere într-un câmp text?
SELECT * FROM products
WHERE title LIKE '%laptop%'
;
28. Care sunt cele mai folosite tipuri de date in MySQL?
INT(11), BIGINT
VARCHAR
TEXT
DATE,TIME, DATETIME
29. Care este rolul AUTO_INCREMENT-ului?
Crește valoare câmpului cu 1 la fiecare insert, asigurându-se că valorile coloanei sunt unice.
30. Ce se întâmplă cu AUTO_INCREMENT după ce se șterge un record din tabelă?
AUTO_INCREMENT-ul rămâne neschimbat.
31. Selectează produsele care sunt în stoc și au prețuri între 50-200.
SELECT * FROM products
WHERE price >=50
AND price <=200
;
SELECT * FROM products
WHERE price BETWEEN 50 AND 200
;
32. Selectează utilizatorii fără profil, adică să nu aibă corespondent în tabela user_profiles.
SELECT * FROM users
LEFT JOIN user_profiles ON users.id = user_profiles.user_id
WHERE user_profiles.id IS NULL
;