Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

sintaxis correcta para INSERT

Estas en el tema de sintaxis correcta para INSERT en el foro de Mysql en Foros del Web. Dos preguntas: 1.- Por que funciona el WHERE en esta consulta? Tengo mysql 5.1 "INSERT INTO $table ('backup') VALUES('$backup') WHERE id='$id'" 2.- Como hago para ...
  #1 (permalink)  
Antiguo 16/04/2010, 15:36
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
sintaxis correcta para INSERT

Dos preguntas:

1.- Por que funciona el WHERE en esta consulta? Tengo mysql 5.1
"INSERT INTO $table ('backup') VALUES('$backup') WHERE id='$id'"

2.- Como hago para ingresar un registro en el anteúltimo lugar, en vez de en el último?
  #2 (permalink)  
Antiguo 16/04/2010, 15:51
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: sintaxis correcta para INSERT

Saludos.

Primero que todo no puedes hacer un WHERE dentro de un INSERT a no ser que lo manejes con un SELECT.. y por otro lado puedes explicar mejor que es eso de anteúltimo lugar como es la estructura de la tabla para poderte dar una mejor ayuda..

Hasta Pronto
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 16/04/2010, 15:56
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Gracias. A lo primero, tengo que buscarle la vuelta. Aun no me llevo bien con el manual, que por cierto dice esto:
With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables. For

Mh... por qué no funciona where? Sencillamente quiero insertar algo en el renglon 4, digamos.

En cuanto a lo segundo, mi tabla es de 3 columnas:
id sections backup

Y tiene unos 30 renglones. Yo necesito insertar algo en la fila anterior al 30. Para eso debería contar los renglones? Creo que esto puede servir. Luego le restaría uno. Pero aún no lo pruebo:
Select count(*) from `tabla`
  #4 (permalink)  
Antiguo 16/04/2010, 16:02
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Ah! Ya entendí lo primero. No hay que hacer un insert sino un update, porque el renglon ya existe!

UPDATE $table SET backup='$data[0]' WHERE id='$id'
  #5 (permalink)  
Antiguo 16/04/2010, 16:05
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: sintaxis correcta para INSERT

Saludos..

Si exacto No entiendia para que lo requerias de la forma que decias ya que no se puede eejejeje... las filas se insertan en mysql segun el orden llegan los registros ....
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 16/04/2010, 16:13
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Ok. Resuelto el primer punto. Pero y el segundo? Se puede insertar un campo nuevo entre los campos ya existentes? No quiero poner algo al final sino justo antes del final.
  #7 (permalink)  
Antiguo 17/04/2010, 12:35
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Hay solución? Se puede insertar un nuevo renglon entre los renglones ya existentes?
  #8 (permalink)  
Antiguo 17/04/2010, 12:44
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: sintaxis correcta para INSERT

Planteas mal tu pregunta, tienes que pensar que no tiene importancia el lugar donde se inserte un registro, sino que haya un campo por el que puedas ordenar una tabla y obtener cada registro en la posicion que deseas.

Un ejemplo de tabla con campos ID, NOMBRE

1-Alberto
2-Jorge
3-Luis
8-Andrea


Sacariamos el resultado tal que
Código PHP:
Select from tabla order by ID ASC 
¿Y ahora como insertamos un nuevo nombre entre Luis y Andrea para que con la misma instruccion aparezca en medio de ambos?

Pues insertariamos el nuevo tal que

4-Marta

Y al hacer la misma instruccion
Código PHP:
Select from tabla order by ID ASC 
obtendremos

1-Alberto
2-Jorge
3-Luis
4-Marta
8-Andrea


Espero que hayas entendido mi explicacion aunque no sea lo que buscabas jejej
  #9 (permalink)  
Antiguo 17/04/2010, 12:47
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Ok. Quiero aclarar que yo tengo un campo autoimcrementable, pero que no me importa conservar ese campo como clave para mis renglones.

Entonces, teniendo esto (sin numeros salteados):

1.auto
2.casa
3.coche
4.carrito
5.Elena
6.Sencillo

Quiero poner algo entre 5 y 6. Consecuentemente , lo que era 6 ahora será 7.

Como lo hago?
  #10 (permalink)  
Antiguo 17/04/2010, 23:31
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: sintaxis correcta para INSERT

USando el campo autonumerico IMPOSIBLE, tendras que crear un campo nuevo para ello
  #11 (permalink)  
Antiguo 18/04/2010, 07:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sintaxis correcta para INSERT

Perdón que intervenga, pero tengo la impresión, Mayd, que no comprendes el concepto de clave primaria y menos la aplicación en tu caso.
Cuando dices:
Cita:
Quiero aclarar que yo tengo un campo autoimcrementable, pero que no me importa conservar ese campo como clave para mis renglones.
eso es simplemente absurdo.
En MySQL un campo auto_increment es por default la clave primaria de la tabla, y por ende no puede ser descartado así nomás. Una tabla siempre debe tener una clave primaria, numérica o no, autoincremental o no, pero es parte de los requerimientos del modelo relacional en que se basan los DBMS. Además, en tu caso un campo de nombre de persona no sirve para establecer una clave primaria porque no cumple con la unicidad de valores, ni siquiera combinado con un apellido.
Lo que te trata de explicar Vun es que tanto la numeración del auto_increment, como el orden físico de los registros son totalmente irrelevantes para tu caso, porque lo único que necesitas es tener un campo que pueda ordenarse de acuerdo a lo que necesitas.

En otras palabras: No es en cómo insertar los datos en lo que tienes que fijarte, sino en cómo leer los datos que quieres obtener.

Para el caso, en las FAQs de MySQL encontrarás dos posts que hablan de los temas referidos a las claves primarias (PK), y uno de ellos en especial, te muestra que, si tu interés es obtener un listado numerado en forma secuencial, ordenado en base a un campo no PK, eso se puede hacer en la consulta, sin por ello estar jugueteando con las inserciones o creando campos innecesarios en la tabla (Numerar registros en base a salida de consulta).

Lee ese post fíjate si te sirve.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 18/04/2010, 12:09
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Si, creo que eso es lo que busco. Me sirve. Voy a ver como lo encaro porque de buenas a primera no lo entiendo.

Voy a reestructurar la tabla, quitando la columna autoincrementable.

Cuando necesite insertar algo en penúltimo lugar, voy a consultar cuantos registros hay ... y luego ya no se. Pero necesito insertar valores siempre en el anteúltimo lugar.

En cuanto a la clave primaria: no, no tengo en claro el concepto. Cuando me expresé dije "clave" me refería a pares clave->valor, pero no en la jerga de mysql.
  #13 (permalink)  
Antiguo 18/04/2010, 18:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sintaxis correcta para INSERT

Cita:
Cuando necesite insertar algo en penúltimo lugar, voy a consultar cuantos registros hay ... y luego ya no se. Pero necesito insertar valores siempre en el anteúltimo lugar
Estás perdiendo la perspectiva nuevamente:
1) Define cuál es la clave primaria.
2) Renumera en las consultas de forna dinámica.
3) Por sobre todas las cosas: Olvídate de preocuparte dónde mete el nuevo registro MySQL. Eso no existe. Es dominio del DBMS en sí y a tí no tiene que interesarte. Lo único que debe interesarte es que la respuesta del DBMS a una consulta dada tenga los registros correctos y en el orden que tu le digas, numerados de la forma que tu mismo definas.

No te olvides que MySQL, Oracle, DB2, SQL Server, Postgre, etc., no son Excel ni dBase IV. El concepto de tablas como lo estás planteando no existe en estos sistemas
No es el usuario el que define dónde se inserta un registro, sino el DBMS en base a un conjunto de algoritmos de optimización que no necesitas conocer.

Precisamente por eso se dice que el uso de los DBMS es "transparente al usuario": Porque es en esencia invisible al usuario. El cómo hace las cosas, en el 95% de las ocasiones es irrelevante. El otro 5% son los DBA...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 18/04/2010, 20:14
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: sintaxis correcta para INSERT

No te lo tomes a mal @mayid, pero deberias dedicar unos días a leer desde inicio que es una base de dato, tablas, campos, claves y relaciones, buscar algun tutorial con unos ejemplos. Un esfuerzo de unos dias, te va a ahorrar muchas horas el resto de tu vida :)
  #15 (permalink)  
Antiguo 19/04/2010, 00:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: sintaxis correcta para INSERT

mayid,
¿por qué necesitas insertar registros en el penúltimo lugar? Explica algo más lo que dices en tu post número 3, cuando hablas de tres columnas y 30 renglones, que imagino que son registros. Esa parece tu necesidad, pero, al menos con la información que tengo, no yo soy capaz de comprenderla del todo.
  #16 (permalink)  
Antiguo 19/04/2010, 06:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

@gnzsoloyo: Gracias. Segun leo en tu punto 2, se puede manejar una columna numerica en forma dinámica. Eso es lo que quiero aprender a hacer. A esa columna le pondría la clave primaria. Pero no encuentro material de lectura.

@Vun: Ya usé tablas mil veces. Voy a seguir buscando tutoriales pero tendrías que saber ponerte en el lugar del otro: en estos días estuve concentrado en temas de PHP y a la par intentando avanzar puntualmente en esto de mysql que planteo. No es tan facil para mi hasta que lo entienda, pero no necesito ser un gran conocedor para desarrollar proyectos.

@jurena: Tengo un manual en base de datos. El manual está seccionado en diferentes parrafos (cada párrafo corresponde a un subcapitulo). Pero el último párrafo no es de contenidos del manual sino de controles de usuario. Por eso necesito insertar nuevos párrafos justo antes que el ultimo lugar.

Este es el link a las paginas que genero con mysql: http://www.aoi-castellano.com.ar/AoIManual/layout.php .

Si se loguean como admin/admin veran que hay un editor de texto a pie de pagina, justo como el que tienen este foro. Y lo que permitiría sería colocar un texto en último lugar, pero antes de los controles "atras" y "adelante".
  #17 (permalink)  
Antiguo 19/04/2010, 08:05
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Ok. Ya entendí. No se puede hacer lo que necesito solo con mysql.

Voy a sacar mi listado con php, en un array, lo voy a organizar como quiero, y voy a volver a insertarlo, previo borrar los contenidos que había.

Al principio el estupor de ustedes y la falta de documentación en la web me perdían. Pero siendo que leí una especie de manual básico y no encontré solución, voy a pasar a php.

Gracias!

  #18 (permalink)  
Antiguo 19/04/2010, 08:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sintaxis correcta para INSERT

Cita:
Ok. Ya entendí. No se puede hacer lo que necesito solo con mysql.
No. Equivocado. Se puede hacer perfectamente, pero debes conocer más de bases de datos.

Cita:
Tengo un manual en base de datos. El manual está seccionado en diferentes parrafos (cada párrafo corresponde a un subcapitulo). Pero el último párrafo no es de contenidos del manual sino de controles de usuario. Por eso necesito insertar nuevos párrafos justo antes que el ultimo lugar.
Aquí es donde falla lo que tu mismo dices:
Cita:
pero no necesito ser un gran conocedor para desarrollar proyectos.
En realidad, si hace falta que seas un buen conocedor de bases de datos para resolver esto. De serlo sabrías que esto significa que hay al menos tres tablas implicadas:

Capitulos(Capitulo_id, TituloCap)
Temas(Capitulo_id, Tema_id, descripcionTema,
Contenido(Capitulo_id, Tema_id, Contenido_id, TestoContenido)

Con eso se solucionaría (en una forma simplificada, hay esquemas más complejos según el manual), el problema que te aqueja...
Pero para esto hay que conocer un poco más que lo básico de bases de datos y tener en claro el modelo relacional.

Finalmente: No estábamos estupefactos, sino desconcertados ante descripciones que difícilmente encajan con el modelo de datos que un DBMS usa, y la tarea final (el manual) es algo que no habías mencionado desde el principio. De haberlo hecho, este post habría tenido como mucho tres o cuatro respuestas, y no tantas...

Siempre es conveniente explicar bien el escenario y no hacer preguntas demasiado genéricas, porque estas no conducen a explicaciones adecuadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 19/04/2010 a las 08:12
  #19 (permalink)  
Antiguo 19/04/2010, 08:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: sintaxis correcta para INSERT

Esta buena esa estructura.

Mira: mi manual ya estaba estructurado. En html viejo. Yo lo que hice esta semana es migrar el html obsoleto a una base de datos sencilla, con un script automatizado.

Voy a ver si puedo escribir un script para estructurar las tablas de manera diferente, pero también me conformo con haber avanzado mucho con la migración.

Gracias otra vez!

Etiquetas: insert, sintaxis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:01.