Está en la página 1de 21

1. Que es un SGBD?

Los sistemas de gestin de bases de datos (en ingls database management system, abreviado DBMS) son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan 2. Para que sirven los disparadores en las BD? Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condicin establecida al realizar una operacin. Dependiendo de la base de datos, los triggers pueden ser de insercin (INSERT), actualizacin (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos. 3. Que es informtica? Procesamiento automtico de la informacin 4. Menciona el ciclo de vida de un proyecto (SW)?

5. Menciona algunos estndares en la seguridad informtica? ISO COBBIT ITIL

6. Que es un algoritmo? es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad 7. Que es un sistema operativo y menciona algunos?

Un Sistema Operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicacin y los diferentes usuarios. Es un administrador de los recursos de hardware del sistema.
8. Menciona cuales son los operadores lgicos y aritmticos en las BD? And, Or + - * / 9. Describe los acrnimos DML y UML? Lenguaje de Manipulacin de Datos Lenguaje Unificado de Modelado 10. Genera un cdigo con estructuras MySQL para crear una base de nombre Conalep que contenga 2 tablas con cuatro campos cada una de ellas?

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Que es informtica? Menciona 3 dispositivos de entrada y 3 de salida? Que es un procesador de texto y un editor de texto? Que es un lenguaje de programacin? Menciona los tipos de mantenimiento para un equipo de cmputo? Cual es la unidad mnima de medida dentro de la informtica? Que es un compilador? Que es un virus y menciona 5 tipos? Que es el CPU? Crea un algoritmo de un da de clases?

7.1 Seleccin de Columnas


Las columnas a seleccionar se enumeran sin ms en la clusula SELECT. Si se desea seleccionar todas las columnas de una tabla se puede hacer enumerando a todas las columnas o colocando un asterisco, *, en su lugar. Cuando se consulta una base de datos, los nombres de las columnas se usan como cabeceras de presentacin. Si ste resulta demasiado largo, corto o crptico, puede cambiarse con la misma sentencia SQL de consulta, creando un alias de columna.

SQL> select nombre "Departamento", loc "Est en" from dep; Departamento Esta en --------------- ---------Administracion Valladolid I+D Boecillo Produccion Cigales

7.2 Clusula FROM


La clusula FROM define las tablas de las que se van a seleccionar las columnas. Se puede aadir al nombre de las tablas el usuario propietario de las mismas de la forma usuario.tabla. De esta manera podemos distinguir entre las tablas de un usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de las tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios pueden tener tablas que se llamen igual sin que surjan conflictos. Si quisiramos acceder a las filas de la tabla dep del usuario jperez, (ademas de tener privilegios de lectura sobre esa tabla) deberamos escribir la siguiente sentencia SQL:

SQL> select * from jperez.dep;

Tambin se puede asociar un alias a las tablas para abreviar los nombres de las tablas. Un ejemplo se puede ver en la sentencia SQL siguiente:

SQL> select d.nombre from dep d;

7.3 Clusula WHERE


Hasta ahora hemos visto como puede utilizarse la sentencia SELECT para recuperar todas las columnas o un subconjunto de ellas de una tabla. Pero este efecto afecta a todas las filas de la tabla, a menos que especifiquemos algo ms en la clusula WHERE. Es aqu donde debemos proponer la condicin que han de cumplir todas las filas para salir en el resultado de la consulta. La complejidad del criterio de bsqueda es prcticamente ilimitada, y en l se pueden conjugar operadores de diversos tipos con funciones de columnas, componiendo expresiones ms o menos complejas. Operadores de Comparacin Operador Operacin = Igualdad Ejemplo
select * from emp where cod_dep = 100; select * from emp where cod_dep != 100; select * from emp where cod_dep < 200; select * from emp where cod_dep > 200; select * from emp where cod_dep <= 200; select * from emp where cod_dep >= 200; select * from emp where cod_dep in (100, 300); select * from emp where cod_dep not in (200); select * from emp where cod_emp between 100 and 199; select * from emp where cod_emp not between 100 and 199; select * from emp where nombre like 'Ma%';

!=, <>, ^= Desigualdad < > <= >= in not in between not between like '_abc%' Menor que Mayor que Menor o igual que Mayor o igual que Igual a cualquiera de los miembros entre parntesis Distinto a cualquiera de los miembros entre parntesis Contenido en el rango Fuera del rango Contiene la cadena 'abc' a partir del segundo carcter y luego cualquier cadena de caracteres

Operadores de Aritmticos Operador Operacin Ejemplo + * / Suma Resta Producto Divisin


select nombre, salario+comision from emp where oficio='VENDEDOR'; select nombre from emp where sysdate-fecha_alta > 365; select nombre, salario*12 from emp; select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres Operador || Operacin Concatenacin Ejemplo


select nombre||oficio from emp;

7.4 Clusula ORDER

BY

Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta. Por defecto la ordenacin es ascendente, aunque se puede especificar un orden descendente. La ordenacin se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. A continuacin se puede ver un ejemplo de uso de la clusula ORDER BY en la que quiere obtener un listado de los empleados ordenado de manera descendente por su salario y en caso de igualdad de salario, ordenado ascendentemente por su nombre.

SQL> select nombre, salario from emp order by salario desc, nombre; NOMBRE SALARIO ---------- ---------Cano 450000 Perez 350000 Roncal 350000 Yuste 350000 Recio 300000 Sastre 300000 Martin 235000 Garcia 225000 Garcia 210000 Mateo 200000 Santana 200000 Rueda 175000 Lopez 150000

Sanz

150000

14 rows selected.

7.5 Clusula DISTINCT


Cuando se realiza una consulta sobre una tabla en la que se extrae informacin de varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la clave principal, obtengamos filas repetidas en la respuesta. Si este comportamiento no nos resulta satisfactorio podemos utilizar la clusula DISTINCT para eliminar las filas duplicadas obtenidas como respuesta a una consulta. Podemos ver como funciona en el siguiente ejemplo, en el que preguntamos por los distintos oficios de nuestros empleados.

SQL> select oficio from emp;


Sin utilizar la clusula DISTINCT obtendremos la siguiente respuesta

OFICIO ----------Presidente Director Secretario Contable Comercial Comercial Director Analista Programador Programador Director Analista Programador Programador 14 rows selected.
Pero si incluimos la clusula DISTINCT la respuesta vara para adecuarse ms a nuestras espectativas.

SQL> select distinct oficio from emp; OFICIO ----------Analista Comercial Contable Director Presidente Programador Secretario 7 rows selected.

7.6 Funciones
Existen en SQL muchas funciones que pueden complementar el manejo de los datos en las consultas. Se utilizan dentro de las expresiones y actuan con los valores de las columnas, variables o constantes. Se pueden incluir en las clsulas SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos:

aritmticas, de cadenas de caracteres, de manejo de fechas, de conversin, otras, de grupo.

Funciones Aritmticas Funcin ABS(n) CEIL(n) FLOOR(n) Cometido Ejemplo


select abs(-15)

Resultado 15 16 15

Calcula el valor absoluto de n. from dual; Calcula el valor entero inmediatamente superior o igual a n. Calcula el valor entero inmediatamante inferior o

select ceil(15.7) from dual; select floor(15.7) from dual;

igual a n. MOD(m,n) POWER(m,n) Calcula el resto resultante de dividir m entre n.


select mod(11,4) from dual;

3 9

Calcula la potencia n-esima de select power(3,2) from dual; m.

Calcula el redondeo de m a n decimales. Si n<0 el redondeo select round(123.456,1) ROUND(m,n) se efectua a por la izquierda from dual; del punto decimal. SQRT(n) Calcula la raz cuadrada de n.
select sqrt(4) from dual; select trunc(123.456,1) from dual;

123.5

2 123.4

Calcula m truncado a n TRUNC(m,n) decimales (n puede ser negativo). SIGN(n)

Calcula el signo de n, select sign(-12) devolviendo -1 si n<0, 0 si n=0 from dual; y 1 si n>0.

-1

Funciones de Cadenas de Caracteres Funcin Cometido Ejemplo Devuelve el carcter select chr(65) from cuyo valor dual; codificado es n. Devuelve el select ascii('A') from valor ascii dual; de cad. Resultado

CHR(n)

ASCII(cad)

65

CONCAT(cad1,cad2)

Devuelve cad1 concatenada con cad2. select Cano es concat(concat(nombre,' Esta Presidente, etc. funcin es es '),oficio) from emp; esquivalente al operador ||. Devuelve la cadena cad select lower('MinUsCulAs') from minusculas con todas dual; sus letras convertidas

LOWER(cad)

a minsculas. Devuelve la cadena cad con todas select upper('maYuSCulAs') from MAYUSCULAS sus letras convertidas dual; a maysculas. Devuelve cad con el select initcap('isabel') primer Isabel from dual; caracter en maysculas. Devuelve cad1 con longitud n, y ajustada a select lpad('P',5,'*') la derecha, from dual; rellenando por la izquierda con cad2. Devuelve cad1 con longitud n, y ajustada a select rpad('P',5,'*') la izquierda, from dual; rellenando por la derecha con cad2.

UPPER(cad)

INITCAP(cad)

LPAD(cad1,n,cad2)

****P

RPAD(cad1,n,cad2)

P****

Devuelve cad en la que cada ocurrencia select REPLACE(cad,ant,nue) de la cadena replace('digo','i','ie') diego ant ha sido from dual; sustituida por la cadena nue. SUBSTR(cad,m,n) Devuelve la select sudcadena substr('ABCDEFG',3,2) from dual; de cad CD

compuesta por n caracteres a partir de la posicion m. LENGTH(cad) Devuelve la select length('cadena') longitud de from dual; 6 cad.

Funciones de Manejo de Fechas Funcin SYSDATE Cometido Ejemplo Resultado 14-MAR97

Devuelve la fecha y hora select sysdate from dual; actuales.

ADD_MONTHS(d,n)

Devuelve la select fecha d add_months(sysdate,4) from 14-JUL-97 incrementada dual; en n meses. Devuelve la fecha del select last_day(sysdate) from dual; ltimo da del mes de d. 31-MAR97

LAST_DAY(d)

Devuelve la diferencia en select MONTHS_BETWEEN(d1, meses entre months_between(sysdate,'01- 2.43409424 d2) las fechas d1 JAN-97') from dual; y d2. Devuelve la fecha del primer da de select next_day(sysdate, 'sunday') from dual; la semana cad despus de la fecha d.

NEXT_DAY(d,cad)

16-MAR97

Funciones de Conversin de Tipos Funcin Cometido Convierte la cadena cad a un TO_NUMBER(cad,fmto) nmero, opcionalmente de acuerdo con el Ejemplo
select to_number('12345') from dual;

Resultado

124345

formato fmto. Convierte la fecha d a una cadena de select caracteres, to_char(sysdate) opcionalmente de from dual; acuerdo con el formato fmto.

TO_CHAR(d, fmto)

'14-MAR97'

TO_DATE(cad,fmto)

Convierte la cadena cad de tipo varchar2 a fecha, select to_date('1- 01-JANopcionalmente de JAN-97') from dual; 97 acuerdo con el formato fmto.

Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la presentacin de una fecha. En la siguiente tabla se presentan algunos formatos de fecha y el resultado que generan. Mscaras de Formato Numricas Formato cc scc y,yyy sy,yyy Cometido Valor del siglo. Ejemplo
select to_char(sysdate,'cc') from dual;

Resultado 20 1,997

Ao con coma, con o select to_char(sysdate,'y,yyy') sin signo. from dual;

Ao sin signo con select yyyy yyy cuatro, tres, dos o un to_char(sysdate,'yyyy') from 1997 yy y dual; dgitos. q ww w mm Trimestre.
select to_char(sysdate,'q') from dual;

Nmero de la select to_char(sysdate,'ww') semana del ao o del from dual; 11 mes. Nmero del mes.
select to_char(sysdate,'mm') from dual; select to_char(sysdate,'ddd') from dual; select to_char(sysdate,'hh') from dual; select to_char(sysdate,'mi') from dual;

03 073 12 15

Nmero del da del ddd dd ao, del mes o de la d semana. hh hh12 La hora en formato hh24 12h. o 24h. mi Los minutos de la hora.

ss sssss

Los segundos dentro select del minuto, o desde to_char(sysdate,'sssss') from dual; las 0 horas.

44159

Mscaras de Formato de Caracteres Formato Cometido syear year month o mon Ao en Ingls Ejemplo
select to_char(sysdate,'syear) from dual;

Resultado nineteen ninety-seven march

Nombre del mes o su select to_char(sysdate,'month') abreviatura de tres from dual; letras.

Nombre del da de la select semana o su to_char(sysdate,'day') from friday day dy abreviatura de tres dual; letras. a.m. p.m. El espacio del da.
select to_char(sysdate,'a.m.') from dual;

p.m.

Indicador del ao select to_char(sysdate,'b.c.') from a.d. b.c. a.d. respecto al del nacimiento de Cristo. dual; Otras Funciones Funcin Cometido Convierte el DECODE(var, val1, valor de var, de cod1, val2, cod2, ..., acuerdo con la defecto) codificacin. GREATEST(exp1, exp2, ...) LEAST(cad,fmto) Ejemplo
select decode(oficio, 'Presidente', 'P', 'Director', 'D', 'X') from emp;

Resultado P, D, X, ...

Devuelve el mayor valor de sin ejemplo. una lista. Devuelve el menor valor de sin ejemplo. una lista. Devuelve la expresin exp select salario+nvl(comision,0) si val es NULL, y val si from emp; en otro caso.

sin ejemplo. sin ejemplo.

NVL(val, exp)

450000, 350000, ...

7.7 Clusula GROUP

BY

SQL nos permite agrupar las filas resultado de una consulta en conjuntos y aplicar funciones sobre esos conjuntos de filas. La sintaxis es la siguiente:

SELECT {* | {columna,}+} FROM {tabla,}+ WHERE condicin GROUP BY {columna ,}+ HAVING condicin ORDER BY {expresinColumna [ASC | DESC],}+;
En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la clusula HAVING se especifica la condicin que han de cumplir los grupos para pasar al resultado. La evaluacin de las diferentes clusulas en tiempo de ejecucin se efecta en el siguiente orden:
WHERE filtra las filas GROUP BY crea una tabla de grupo HAVING filtra los grupos ORDER BY clasifica la salida

nueva

Un ejemplo de utilizacin de la seleccin de grupos puede ser seleccionar los empleados agrupados por su oficio. Un primer intento de consulta es el siguiente:

SQL> select nombre, oficio from emp group by oficio; select nombre, oficio from emp * ERROR at line 1: ORA-00979: not a GROUP BY expression
Se presenta un error debido a que cuando se utiliza GROUP BY, las columnas implicadas en el SELECT y que no aparezcan en la clusula GROUP BY deben tener una funcin de agrupamiento. En otras palabras, la columna nombre debe tener una funcin de agrupamiento que actue sobre ella (max, min, sum, count, avg). Si no puede ser as, deber llevar dicha columna a la clusula GROUP BY.

De nuevo, el ejemplo quedar as:

SQL> select count(nombre), oficio from emp group by oficio; COUNT(NOMBRE) OFICIO ------------- ----------2 Analista 2 Comercial 1 Contable 3 Director 1 Presidente 4 Programador 1 Secretario 7 rows selected.
Las funciones de agrupamiento que se pueden utilizar son las siguientes. Funciones de Agrupamiento Funcin COUNT(col) AVG(col) Cometido Cuenta el nmero de filas agrupadas. Calcula el valor medio de todos los valores de la columna col. Ejemplo
select count(nombre),oficio from emp group by oficio; select avg(salario),oficio from emp group by oficio;

MAX(col)

Calcula el valor mximo de select max(salario),oficio todos los valores de la from emp group by oficio; columna col. Calcula el valor mnimo de select min(salario),oficio todos los valores de la from emp group by oficio; columna col. Calcula la suma de los valores de la columna col.
select sum(salario), oficio from emp group by oficio;

MIN(col) SUM(col)

STDDEV(col)

Calcula la desviacin tpica stddev(salario), de los valores de la columna select oficio from emp group by col sin tener en cuenta los oficio; valores nulos.
select variance(salario), oficio from emp group by oficio;

Calcula la varianza de los VARIANCE(col) valores de la columna col sin tener en cuenta los

valores nulos. Hay que tener en cuenta que los valores nulos no participan en el clculo de las funciones de conjuntos. Estas funciones se pueden utilizar con las clusulas DISTINCT y ALL. Tambin se pueden utilizar aunque no realicemos agrupacin alguna en la consulta, considerando a toda la tabla como un grupo.

SQL> select count(*) from emp; COUNT(*) ---------14

7.8 Expresiones con Sentencias Select


El resultado de cada consulta es un conjunto de filas. Y con conjuntos se pueden realizar tres operaciones tpicas: la unin, la interseccin y la diferencia. Unin, UNION Combina todas las filas del primer conjunto con todas las filas del segundo. Cualquier fila duplicada se reducir a una sla. Interseccin, INTERSECT Examinar las filas de los conjuntos de entrada y devolver aquellas que aparezcan en ambos. Todas las filas duplicadas sern eliminadas antes de la generacin del conjunto resultante. Diferencia, MINUS Devuelve aquellas filas que estn en el primer conjunto pero no en el segundo. Las filas duplicadas del primer conjunto se reducirn a una fila nica antes de empezar la comparacin con el segundo conjunto. Reglas para el Manejo de los Operadores de Conjuntos:

Pueden ser encadenados en cualquier combinacin, siendo evaluados de izquierda a derecha. No existe jerarqua de precedencia en el uso de estos operadores, pero puede ser forzada mediante parntesis. Pueden ser empleados con conjuntos de diferentes tablas siempre que se apliquen las siguientes reglas: o Las columnas son relacionadas en orden, de izquierda a derecha. o Los nombres de las columnas son irrelevantes. o Los tipos de datos deben coincidir.

Como ejemplo podemos consultar sobre todos los nombres de empleado que trabajan para los departamentos 100 o 300. Esto se consigue restando a todos los nombres de empleados, aquellos que estn en el departamento 200.

SQL> select nombre from emp 2 minus 3 select nombre from emp where cod_dep=200; NOMBRE ---------Cano Lopez Martin Recio Roncal Rueda Santana Sanz Yuste 9 rows selected.

7.9 Combinaciones
Hasta ahora hemos construido consultas con una nica tabla, pero esto no debe ser siempre as. De hecho, slo se alcanza la verdadera potencia del SQL cuando combinamos el contenido de ms de una tabla. Supongamos que queremos conseguir una lista con los empleados y los departamentos para los que trabajan. Esta informacin est repartida en las dos tablas que tenemos, emp y dep. As, podramos intentar una consulta que seleccionara el campo nombre de la tabla emp y el nombre del departamento. Y aqu surge el primer problema, cmo distinguimos entre dos columnas que llamndose igual, pertenecen a tablas distintas? Para eso se utiliza como prefijo o el nombre de la tabla (dep.nombre) o un alias de tabla, un nombre que se asocia a cada tabla y se coloca como prefijo a la columna (d.nombre). Realicemos la consulta ...

SQL> select e.nombre, d.nombre from emp e, dep d; NOMBRE NOMBRE

---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez Administracion Sastre Administracion Garcia Administracion Mateo Administracion Yuste Administracion Recio Administracion Garcia Administracion Santana Administracion Cano I+D Roncal I+D Rueda I+D ... 42 rows selected.
El resultado puede sorprender un poco. Lo que obtenemos es el producto cartesiano de todos los empleados por todos los departamentos. SQL ha cogido cada fila de la tabla emp y le ha asociado todos los cod_dep de la tabla dep. Para conseguir lo que queremos tenemos que forzar que se asocie a un empleado con el nombre del departamento para el que trabaja. Y esto se puede hacer si aadimos la condicin de que el cod_dep tenga el mismo valor en la fila de la tabla emp que en la fila escogida de la tabla dep:

SQL> select e.nombre, d.nombre from emp e, dep d 2> where e.cod_dep = d.cod_dep; NOMBRE NOMBRE ---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez I+D

Sastre Garcia Mateo Yuste Recio Garcia Santana

I+D I+D I+D Produccion Produccion Produccion Produccion

14 rows selected.
De la misma manera se pueden combinar ms de dos tablas. Lo importante es emparejar los campos que han de tener valores iguales. Reglas de Combinacin:

Pueden combinarse tantas tablas como se desee. El criterio de combinacin puede estar formado por ms de una pareja de columnas. En la clusula SELECT pueden citarse columnas de ambas tablas, condicionen o no la combinacin. Si hay columnas con el mismo nombre en las distintas tablas, deben identificarse especificando la tabla de procedencia o utilizando un alias de tabla.

Existe un tipo especial de combinacin llamada Combinacin Externa. Suponga que se crea un nuevo departamento, (insert into dep values (400,'Distribucion','Valladolid');) pero todava no hemos asignado personal al mismo. Si realizamos la consulta anterior, el nuevo departamento no aparecer en la respuesta. Pero esto se puede evitar si sealamos en la clusula WHERE la posibilidad de que en la tabla de empleados no exista alguno de los cdigos de departamento que si exista en la tabla de departamentos. Esto se hace colocando un (+) de la siguiente manera:

SQL> select e.nombre, d.nombre 2 from emp e, dep d 3 where e.cod_dep(+)=d.cod_dep; NOMBRE NOMBRE ---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez I+D

Sastre I+D Garcia I+D Mateo I+D Yuste Produccion Recio Produccion Garcia Produccion Santana Produccion Distribucion 15 rows selected.

7.10 Subconsultas
A veces se han de utilizar en una consulta los resultados de otra consulta, llamada subconsulta. Un ejemplo de esto ocurre cuando queremos conocer los nombres de los empleados cuyo salario est por encima de la media:

SQL> select nombre from emp 2 where salario > (select avg(salario) from emp); NOMBRE ---------Cano Roncal Perez Sastre Yuste Recio 6 rows selected.
La consulta ms interna calcula el salario medio, y la consulta ms externa lo utiliza para seleccionar los nombres que ganan ms que la media. El valor de comparacin puede ser un valor simple, como en el ejemplo anterior, o un conjunto de valores. Hay que tener en cuenta este detalle ya que el tipo de operador a utilizar vara. En el primer caso se puede utilizar un operador de comparacin de carcter aritmtico (<, >, etc.). Y en el segundo uno de tipo lgico (IN).

Las subconsultas pueden devolver ms de una columna, y se habrn de comparar de manera consecuente:

Las columnas de la clausula WHERE de la consulta principal deben estr agrupadas por parentesis. Las columnas encerradas entre parntesis deben coincidir en nmero y tipo de datos con los datos que devuelve la subconsulta.

El nivel de anidamiento de subconsultas es ilimitado. Se puede utilizar una subconsulta para insertar valores en una tabla en el momento de la creacin de la misma con la clusula AS. Si quisieramos crear una tabla con los datos de los empleados del departamento 200 lo podramos hacer de la siguiente manera:

SQL> create table dep200 (nombre, oficio) 2 as select nombre,oficio from emp 3 where cod_dep=200; Table created.
No es necesario especificar tipos ni tamaos de las columnas, ya que vienen determinados por los tipos y tamaos de las columnas recuperadas en la subconsulta.

También podría gustarte