Consultes senzilles - DESCRIBE - CONCAT - DISTINCT
DESCRIBE
La comanda DESCRIBE s’usa per a conèixer l’estructura d’una taula de la base de dades.
La seva sintaxis és:
DESCRIBE < nom_de_la_taula > ;
Retorna el nom de la taula, els tipus de dades, les claus primàries, foranes, les columnes que admeten valors NULs i altres dades.
DESCRIBE LOCATIONS;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| LOCATION_ID | int(4) | NO | PRI | NULL | |
| STREET_ADDRESS | varchar(40) | YES | | NULL | |
| POSTAL_CODE | varchar(12) | YES | | NULL | |
| CITY | varchar(30) | NO | | NULL | |
| STATE_PROVINCE | varchar(25) | YES | | NULL | |
| COUNTRY_ID | char(2) | YES | MUL | NULL | |
+----------------+-------------+------+-----+---------+-------+
CONCAT i CONCAT_WS
En mysql i MariaDB, per a concatenar varis strings tenim dues funcions, CONCAT i CONCAT_WS:
-
CONCAT(<str1>, <str2>, <str3>, ...) -
CONCAT_WS(<separador>, <str1>, <str2>, ...)
SELECT CONCAT(first_name, ' ', last_name) CONCAT,
CONCAT_WS(' ', first_name, last_name) CONCAT_WS
FROM EMPLOYEES;
| CONCAT | CONCAT_WS |
|---|---|
| Steven King | Steven King |
| Neena Kochhar | Neena Kochhar |
| Bruce Ernst | Bruce Ernst |
| Peter Vargas | Peter Vargas |
| Kimberely Grant | Kimberely Grant |
Valors literals
Un valor literal és un valor fixe de dades, un string, número o data.
Amb la concatenació de literals i camps podem arribar a formar frases:
SELECT CONCAT_WS(' ',
'El sou de', FIRST_NAME, LAST_NAME,
'és de', SALARY, 'dolars') as "Frase"
FROM EMPLOYEES;
| Frase |
|---|
| El sou de Steven King és de 24000.00 dolars |
| El sou de Neena Kochhar és de 17000.00 dolars |
| El sou de Bruce Ernst és de 6000.00 dolars |
| El sou de Peter Vargas és de 2500.00 dolars |
| El sou de Kimberely Grant és de 7000.00 dolars |
DISTINCT
La clàusula DISTINCT just després de la paraula SELECT elimina les files repetides.
Així, si només volem una ocurrència de cada fila, utilitzarem la clàusula DISTINCT.
Com exemples podem buscar els diferents departaments on hi treballen empleats o els diferents tipus de feina dels empleats, on només voldrem que cadascun d’ells aparegui una sola vegada.
Exemple de DISTINCT
SELECT JOB_ID SELECT DISTINCT JOB_ID
FROM EMPLOYEES; FROM EMPLOYEES;
+------------+ +------------+
| JOB_ID | | JOB_ID |
+------------+ +------------+
| AC_ACCOUNT | | AC_ACCOUNT |
| AC_MGR | | AC_MGR |
| AD_ASST | | AD_ASST |
| AD_PRES | | AD_PRES |
| AD_VP | | AD_VP |
| AD_VP | | IT_PROG |
| IT_PROG | | MK_MAN |
| IT_PROG | | MK_REP |
| IT_PROG | | SA_MAN |
| MK_MAN | | SA_REP |
| MK_REP | | ST_CLERK |
| SA_MAN | | ST_MAN |
| SA_REP | +------------+
| SA_REP |
| SA_REP |
| ST_CLERK |
| ST_CLERK |
| ST_CLERK |
| ST_CLERK |
| ST_MAN |
+------------+