{"id":527,"date":"2023-10-20T10:23:24","date_gmt":"2023-10-20T08:23:24","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=527"},"modified":"2025-02-11T20:48:07","modified_gmt":"2025-02-11T18:48:07","slug":"1-7-consultes-basiques-a-les-taules","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/1-7-consultes-basiques-a-les-taules\/","title":{"rendered":"1.7. Consultes b\u00e0siques a les taules"},"content":{"rendered":"<p>Les bases de dades s\u00f3n eines excepcionalment \u00fatils per consultar informaci\u00f3 i extreure nou coneixement. En aquest sentit, els esquemes entitat-relaci\u00f3 no s\u00f3n una excepci\u00f3. M\u00e9s aviat al contrari, utilitzant l\u2019\u00e0lgebra relacional \u00e9s possible consultar el contingut de les taules de m\u00faltiples formes. B\u00e0sicament, les consultes SQL (en angl\u00e8s, <em>queries<\/em>) consisteixen en filtres que delimiten el segment del conjunt complet dels registres d\u2019una o m\u00e9s taules en el qual estem interessats, per mostrar despr\u00e9s el valor dels seus atributs.<\/p>\n<p>La instrucci\u00f3 <strong>SELECT <\/strong>implementa el proc\u00e9s de consulta sobre les taules, mostrant els atributs indicats per a aquells registres que compleixen una determinada condici\u00f3.<\/p>\n<div class=\"featured featured-blue\"><p>Podeu trobar informaci\u00f3 sobre l\u2019\u00fas del terminal per dur a terme operacions similars sobre fitxers de text al m\u00f2dul \u00ab<a href=\"https:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/\" target=\"_blank\" rel=\"noopener\">L\u2019entorn de treball UNIX<\/a>\u00bb<em>.<\/em><\/p>\n<\/div>\n<p>Anem a explorar en els pr\u00f2xims anys com enriquir les nostres consultes, utilitzant per a aix\u00f2 el nostre cat\u00e0leg de gens, que est\u00e0 emmagatzemat en la base de dades <strong>cataleg<\/strong>. Abans de fer consultes m\u00e9s elaborades, mostrem a continuaci\u00f3 la forma m\u00e9s senzilla de realitzar una consulta.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">SELECT camp1, camp2, ..., campon FROM taula;\r\n<\/pre>\n<p>La consulta m\u00e9s habitual consisteix a mostrar el contingut complet d\u2019una taula. El car\u00e0cter *, precisament, indica que desitgem visualitzar el llistat \u00edntegre dels valors de tots els atributs per al subconjunt de registres seleccionats. Per posar en pr\u00e0ctica aquesta ordre sobre el nostre cat\u00e0leg, seleccionem tots els valors de cada inst\u00e0ncia guardada a la taula <em>gens<\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT * FROM gens;\r\n\r\n+--------+-----------+---------+-----------+-----------+-----------+-----------------+\r\n| nom    | cromosoma | cadena  | inici     | final     | proteina  | especie         |\r\n+--------+-----------+---------+-----------+-----------+-----------+-----------------+\r\n| ash2   | cbr3B     |   +     |  20477248 |  20479098 | NP_733023 | C. melanogaster |\r\n| cbt    | chr2L     |   -     |    476437 |    479046 | NP_722636 | C. melanogaster |\r\n| HNF 1A | chr12     |   +     | 121416548 | 121440312 | NP_000536 | H. sapiens      |\r\n| MYC    | chr8      |   +     | 128748314 | 128753678 | NP_002458 | H. sapiens      |\r\n+--------+-----------+---------+-----------+-----------+-----------+-----------------+\r\n4 rows in set (0.00 sec)\r\n\r\n<\/pre>\n<p>Per evitar l\u2019exc\u00e9s d\u2019informaci\u00f3, l\u2019usuari pot seleccionar els atributs o camps dels registres d\u2019una taula que desitja veure per pantalla. Simplement substituint en la pregunta el s\u00edmbol * per un llistat d\u2019atributs, separats per comes, podem delimitar la vista dels registres, en aquest cas gens que obtenim com a resultat:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT nom, especie FROM gens;\r\n\r\n+-------+------------------+\r\n| nom   | especie          |\r\n+-------+------------------+\r\n| ash2  | D. melanogaster  |\r\n| cbt   | D. melanogaster  |\r\n| HNF1A | H. sapiens       |\r\n| MYC   | H. sapiens       |\r\n+-------+------------------+\r\n4 rows in set (0.00 sec)\r\n<\/pre>\n<p>El recompte del nombre de registres que compleix una condici\u00f3 concreta \u00e9s una de les consultes m\u00e9s freq\u00fcents en SQL. En aquest cas \u00e9s suficient amb afegir la funci\u00f3 <strong><code>COUNT<\/code><\/strong> a la consulta que estem realitzant per comptabilitzar el nombre de l\u00ednies de la sortida:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(*) FROM gens;\r\n\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n|        4 |\r\n+----------+\r\n1 row in set (0.00 sec)\r\n\r\n<\/pre>\n<p>La funci\u00f3 <code>DISTINCT<\/code> elimina els resultats duplicats. Per exemple, si desitgem comptar el nombre d\u2019organismes a la nostra taula <em>gens<\/em>, podem combinar les funcions <code>COUNT<\/code> i <code>DISTINCT<\/code> sobre l\u2019atribut <em>especie<\/em> de la manera seg\u00fcent:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT especie FROM gens;\r\n\r\n+------------------+\r\n| especie          |\r\n+------------------+\r\n| D. melanogaster  |\r\n| D. melanogaster  |\r\n| H. sapiens       |\r\n| H. sapiens       |\r\n+------------------+\r\n4 rows in set (0.00 sec)\r\n\r\nmysql&gt; SELECT DISTINCT especie FROM gens;\r\n\r\n+------------------+\r\n| especie          |\r\n+------------------+\r\n| D. melanogaster  |\r\n| H. sapiens       |\r\n+------------------+\r\n2 rows in set (0.07 sec)\r\n\r\nmysql&gt; SELECT COUNT(DISTINCT especie) FROM gens;\r\n\r\n+-------------------------+\r\n| COUNT(DISTINCT especie) |\r\n+-------------------------+\r\n|                       2 |\r\n+-------------------------+\r\n1 row in set (0.07 sec)\r\n\r\n\r\n\r\n<\/pre>\n<p>L\u2019ordre <code>ORDER BY<\/code> ordena la llista de resultats produ\u00efda per una ordre <code>SELECT<\/code>, de forma ascendent o descendent (segons si hi afegim la cl\u00e0usula <code>ASC<\/code> o <code>DESC<\/code>, respectivament). En la propera ordre ordenem els gens per la seva posici\u00f3 en cada cromosoma o pel seu nom, de diferents maneres:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT nom, cromosoma, inici FROM gens ORDER BY inici;\r\n\r\n+-------+-----------+-----------+\r\n|  nom  | cromosoma |   inici   |\r\n+-------+-----------+-----------+\r\n| cbt   | chr2L     |    476437 |\r\n| ash2  | chr3R     |  20477248 |\r\n| HNF1A | chr12     | 121416548 |\r\n| MYC   | chr8      | 128748314 |\r\n+-------+-----------+-----------+\r\n4 rows in set (0.00 sec)\r\n\r\nsql&gt; SELECT nom, cromosoma, inici FROM gens ORDER BY nom;\r\n\r\n+-------+-----------+-----------+\r\n|  nom  | cromosoma |   inici   |\r\n+-------+-----------+-----------+\r\n| ash2  | chr3R     |  20477248 |\r\n| cbt   | chr2L     |    476437 |\r\n| HNF1A | chr12     | 121416548 |\r\n| MYC   | chr8      | 128748314 |\r\n+-------+-----------+-----------+\r\n4 rows in set (0.00 sec)\r\n\r\nsql&gt; SELECT nom, cromosoma, inici FROM gens \r\n   -&gt; ORDER BY nom DESC;\r\n\r\n+-------+-----------+-----------+\r\n|  nom  | cromosoma |   inici   |\r\n+-------+-----------+-----------+\r\n| MYC   | chr8      | 128748314 |\r\n| HNF1A | chr12     | 121416548 |\r\n| cbt   | chr2L     |    476437 |\r\n| ash2  | chr3R     |  20477248 |\r\n+-------+-----------+-----------+\r\n4 rows in set (0.01 sec)<\/pre>\n<p>Quan es treballa amb taules que contenen milers d\u2019elements, resulta convenient mostrar inicialment nom\u00e9s els primers registres per comprovar el correcte funcionament de la consulta. La funci\u00f3 <code>LIMIT<\/code> permet mostrar exclusivament els primers <em>n<\/em> registres de la consulta en execuci\u00f3:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT * FROM gens LIMIT 1;\r\n\r\n+------+-----------+--------+----------+----------+-----------+-----------------+\r\n| nom  | cromosoma | cadena |  inici   |   final  | proteina  |     especie     |\r\n+------+-----------+--------+----------+----------+-----------+-----------------+\r\n| ash2 | chr3R     | +      | 20477248 | 20479098 | NP_733023 | D. melanogaster |\r\n+------+-----------+--------+----------+----------+-----------+-----------------+\r\n1 row in set (0.00 sec)\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Les bases de dades s\u00f3n eines excepcionalment \u00fatils per consultar informaci\u00f3 i extreure nou coneixement. En aquest sentit, els esquemes entitat-relaci\u00f3 no s\u00f3n una excepci\u00f3. M\u00e9s aviat al contrari, utilitzant l\u2019\u00e0lgebra relacional \u00e9s possible consultar el contingut de les taules de m\u00faltiples formes. B\u00e0sicament, les consultes SQL (en angl\u00e8s, queries) consisteixen en filtres que delimiten [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/527"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=527"}],"version-history":[{"count":11,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/527\/revisions"}],"predecessor-version":[{"id":944,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/527\/revisions\/944"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}