Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ^Tifa^

#471
Si es al nivel de un lenguaje de programacion como php, perl, python, java o C etc, etc... Aca existen funciones para manejar el retorno de un fetchrow.  Pero puestos que no especificas si quieres averiguar esto a nivel de un lenguaje de programacion o a nivel del motor de la DB como tal, asumire que quieres obtener esto dentro del motor MySQL y no a traves de un lenguaje de programacion.

Por ende, te expongo un ejemplo, yo tengo una simple tabla con los siguientes datos:

Código (sql) [Seleccionar]

mysql> select * from ejemplo;
+--------+---------+
| codigo | nombres |
+--------+---------+
|      1 | Juan    |
|      2 | Maritza |
|      3 | Pepe    |
+--------+---------+
3 rows in set (0.00 sec)



Y quiero saber cuando existen valores y cuando no existen valores en dicha tabla, entonces me ayudo de un procedimiento almacenado:

Código (sql) [Seleccionar]


mysql> delimiter /
mysql> create procedure ejemplo1(in numero integer)
    -> begin                                       
    -> select count(*) into @contador from ejemplo where codigo = numero;
    -> if ( select @contador = 0 ) then                                 
    -> select concat('El valor es cero');                               
    -> else                                                             
    -> select concat('El valor no es cero');
    -> end if;                             
    -> end;                                 
    -> /                                   
Query OK, 0 rows affected (0.00 sec)       



Ahora que mi procedimiento anterior esta hecho, procedo a llamarlo pasandole 1 valor que sera el valor con el cual igualara el WHERE cosa = algo

Código (sql) [Seleccionar]


mysql> call ejemplo1(1);
+-------------------------------+
| concat('El valor no es cero') |
+-------------------------------+
| El valor no es cero           |
+-------------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> call ejemplo1(19);
+----------------------------+
| concat('El valor es cero') |
+----------------------------+
| El valor es cero           |
+----------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)



Espero que mas o menos se entienda la idea  :P  aunque si esto lo piensas realizar a traves de un lenguaje de programacion que trabaje con la DB, es preferible utilizar las funciones del modulo o API de MySQL en el lenguaje para validar si retorno o no registros una consulta.
#472
Si se puede hacer, yo particularmente no puedo confirmaterlo porque lo desconozco  ;)
Pero, hasta lo que me concierne.

CREATE TABLE <tabla> LIKE....
No copia ni porta ninguno de los registros (data) ni indices de la tabla padre (digase de la tabla a la cual le estas haciendo la copia) en su lugar se te crea una tabla con la misma estructura logica de la tabla padre (nombre de los campos) pero vacia.

CREATE TABLE <tabla> AS SELECT...
Esta te hace una copia de la tabla padre con todos los registros(data) que esta contenga asi como la estructura logica de la tabla padre (nombre de los campos). Pero como la anterior no respeta los indices ni llaves primarias ni foraneas nada nada...

Que he solido hacer en estos casos? Utilizar CREATE TABLE <tabla> ... AS SELECT ...  y una vez creada la tabla copia, proceder a alterarla para especificarle cual es el foreign key y a que campo hara referencia como clave padre:

ALTER TABLE <tabla> ADD FOREIGN KEY(campo de la tabla clonada que es primary) REFERENCES <tabla_padre>(campo primary de la tabla padre) ON DELETE CASCADE;

Con lo anterior y si el motor es transaccional que asumo que si, pues comienza a respetarse las leyes de las llaves foraneas he indices de padre a hijo. Al menos esto es asi en MySQL y Oracle, si existe una manera fija de hacerlo con CREATE TABLE... bien, pero yo particularmente no la conozco, si alguien conoce una via mas sencilla bienvenida sea. Yo utilizo ALTER por ser un estandar SQL y por servirme en cualquier Base de Datos relacional compatible con el ANSI SQL, y pues no utilizar un estandar fijo de un motor para este tipo de cosas.

Un saludo.
#473
Scripting / Re: practica perl
25 Enero 2010, 21:47 PM
CitarSuponiendo que tenemos una secuencia de bases en una string:
$a="ATTCCTGATGCGACCCCT";
Puede ser útil utilizar la función length(), que devuelve el tamaño de un string.

1.- Decir cuántas veces aparece la tripleta CCT (estas 3 bases o letras) (en este caso, 2).

Algo mas o menos asi te podria servir...

Código (perl) [Seleccionar]


my $arreglo = "ATTCCTGATGCGACCCCT";

my @a = split(//, $arreglo);
my $contador = 0;

for ( my $numero = 0 ; $numero < length(@a); $numero++ ) {

    if ( $a[$numero] . $a[$numero] . $a[$numero] =~ /CCT/ ) {

$contador = $contador+1;
    }
}

print "Existen  " . $contador . " Juegos de CCT\n";


Citar2.- Contar cuántas bases hay de cada tipo. Utilizar un hash. Al final debéis mostrar cada base y su número de apariciones (en este caso A:3 T:5 C:7 G:3).

Conste que no utilizo 'hash' en el siguiente ejemplo, sino un arreglo...

Código (perl) [Seleccionar]


my @a = split(//, $arreglo);
my ($contador1, $contador2, $contador3, $contador4);

  for (my $numero = 0; $numero < length($arreglo); $numero++) {

if ( $a[$numero] =~ /A/ ) {
    $contador1 = $contador1+1;
} elsif ( $a[$numero] =~ /T/ ) {
    $contador2 = $contador2+1;
} elsif ( $a[$numero] =~ /C/ ) {
    $contador3 = $contador3+1;
}
     
}

  printf("Existe %i:A\n", $contador1);
  printf("Existe %i:T\n", $contador2);
  printf("Existe %i:C\n", $contador3);



Son ejemplos funcionales, si quieres usar hash deberas crear primero el indice de referencia al valor o sea:

my %variable = 'a' => 5

Asi cuando llames a $variable{a} obtendras el valor 5.... (Lo hice en un arreglo a proposito... ya que te piden hash en el segundo ejercicio, lo posteado por mi es un ejemplo que te serviria de guia).
#474
Sugerencias y dudas sobre el Foro / Re: karma
25 Enero 2010, 21:01 PM
Napk sabes el lio de quejas que se armaria en el foro si hacen eso que sugieres????? Comenzaran porque ellos si y nosotr@s no...

Lo mas recomendable es que dejen la estructura justamente como esta actualmente, porque si comienzan a considerar que si estrellitas, que si colores, que si karma.. volveran muchos usuarios a quejarse y preguntar como obtener esas cosas y llenaran el foro de sugerencias de este tipo.

La verdad para mi al menos, los colores, el karma, las estrellas, etc. Es algo sumamente irrelevante.
#475
Sugerencias y dudas sobre el Foro / Re: karma
25 Enero 2010, 02:39 AM
Taringa es una pagina de internet constant.

Y por politicas del foro, no se implementa el uso de karma ni estrellitas sobre los nicks, hay foros que lo tienen hay otros que no, eso ya depende mucho de las politicas asignadas al foro como tal. Anteriormente la existencia de estrellitas genero muchos problemas entre usuarios en el foro, por ende se decidio descartar todo tipo de estas cosas que a la larga genera mas y mas problemas.
#476
ssccaaann43 admirable tu firma, espero que el icono mareado no sea a causa de mirar mi avatar.
#477
Jajajaja que gracioso  ;D

La razon por la que te paso lo anterior podia haberse debido a muchisimas cosas... como que el listener para esa instancia no estaba corriendo, o que tu no tenias el SID de XE en tu registro, o que dicha instancia XE estaba apagada.... un sinumero de situaciones que con un reinicio se solucionaba lol.

Pero me alegro que no te este volviendo a ocurrir, solo asegurate si vuelve a pasarte que la instancia XE este arriba, que el listener tenga una entrada para XE y que tu sistema lleve el perfil XE en el registro...

Oracle puede ser un poco complicado cuando se lo propone

Un saludito  :-*
#478
Entiendo perfectamente tu condicion N4X, y yo tampoco lo veo muy fiable pero... tambien reconozco que MySQL desde un inicio le dieron mas importancia en su desempeno bajo sistemas Unix/Linux que Windows como tal.

A lo mejor (Que conste que yo nunca lo he intentado) pero a lo mejor, en Windows con gcc exista la posibilidad de compilar los fuentes de MySQL y colocarle que opciones quieres y cuales no dentro del motor... pero repito no se si sea posible hacerlo ya que habria que editar posiblemente muchos headers de las fuentes para hacer eso compatible con este sistema operativo, yo siempre me he descargado el instalador.exe de MySQL para Windows y se que por defecto esta opcion viene habilitada.

Te aseguro que los motores transacionales tienen pasos similares para recuperar contrasenas del admin del motor. Asumo que la seguridad de controlar esto ellos se lo dejan al Sysadmin como tal, ya que si un usuario de Windows no tiene permisos de Administrador, no podra detener el proceso Mysql ni iniciarlo con skip-grant-tables ni mucho menos, por ende no podra recuperar ni robarse la contraseña de root. Esto es un juego de 2 del DBA y del Sysadmin de dicho sistema, si todo se hace de manera correcta no hay manera que un usuario pueda de antemano resetear la contraseña de un motor relacional sea MySQL, como sea Oracle, como sea Postgresql u otro.

PD: Recuerda que existen varias maneras de recuperar la contraseña de 'root' de MySQL , yo solamente dije una manera de hacerlo que es con 'skip-grant-tables' pero si esto esta desabilitado hay otras maneras de recuperar la contraseña como tal... siempre habra maneras de recuperar tanto en MySQL como otro motor. La tarea de seguridad de quien puede y quien no depende del Sysadmin.
#479
Me alegro que hayas podido resolver tu pequeno inconveniente freedert ...

Y de antemano espero, que esto lo tomen como algo positivo y lo usen para buenas causas y no para hacerle nada a nadie.

Un saludo  :-*
#480
Ahhhh por eso no queria decir como se hacia ..... no quiero que otro usuario haga lo anterior para violar cosas que no debe, en algun servidor fisico donde tenga acceso con algun usuario que tenga permisos de Administrador.

Citar
eso que explicas no es una opción un tanto permisiva?

o funciona bajo ciertas restricciones?

Lo anterior funciona siempre y cuando la opcion 'skip-grant-tables' este compilada como 'SI' dentro del motor MySQL. Ahora como hablamos de un MySQL instalado en Windows, como aca no se compila sino que se instala, por defecto en MySQL la opcion 'skip-grant-tables' viene activada  ;)  por lo que bajo sistemas Windows... me temo que si, lo anterior aplica siempre. Ahora bajo sistemas Unix o Linux donde tienes la posibilidad de compilar el fuente de MySQL y tu lo compilas con las opciones que quieres y no quieres, podria lo anterior variar. Ya que puedo compilar mi motor con dicha opcion desactivada por lo cual no aplicaria intentar iniciar el motor con la opcion skip-grant-tables... y en ese caso entonces tendria yo que hacer otro procedimiento para recuperar la contraseña de root en un sistema Unix/Linux el cual no explayare aqui porque como dije, no me gusta aportar a cosas que se que son negativas y seran utilizadas para hacer danio.