FAQ de SQL/MySQL/SQLite.
Como insertar un registro en una tabla si dicho registro no existe.
Supongamos una tabla T con un campo C y queremos insertar un
valor R en dicha tabla si este valor no está en dicha tabla, ya que no
queremos repetir ese valor.
Para ello usaremos la siguiente sentencia SQL:
insert into T ( C )
select R
where not exists ( select * from tags where nombre=R );
Recuerda que R es un valor, si fuera una cadena o una fecha debemos ponerle
comillas.
¿Cómo mostrar las columnas de una tabla en SQLite?
Lo que llamas se busca diccionario de datos. En SQLite una lista de todas
las tabla se puede encontrar consultanto la tabla SQLite_master:
select * from sqlite_master;
Otra forma de hacerlo es usando la función pragma table_info():
pragma table_info(tabla);
¿Cómo mostrar los campos de una tabla en mySQL?
Evitar el error "NOT NULL constraint failed: TABLA.ID" en SQLite
Cuando creamos una tabla por ejemplo:
CREATE TABLE post (
id INT AUTO_INCREMET PRIMARY KEY NOT NULL ,
fecha DATE NOT NULL,
titulo TEXT NOT NULL,
tags TEXT NOT NULL,
desc TEXT NOT NULL,
fichero TEXT NOT NULL
);
E insertamos un valor con una sentencia insert sin especificar el ID
obtenemos un error "NOT NULL constraint failed: post.id".
Para solucionar esto debemos crear el id con un tipo INTEGER y eliminar la
sentencia AUTO_INCREMENT. Ya no nos dará error y el valor id se comportará como
si fuera un AUTO_INCREMENT automáticamente.
CREATE TABLE post (
id INTEGER PRIMARY KEY NOT NULL ,
fecha DATE NOT NULL,
titulo TEXT NOT NULL,
tags TEXT NOT NULL,
desc TEXT NOT NULL,
fichero TEXT NOT NULL
);
Eliminar los registros de una tabla.
Algunas veces, sobre todo cuando estamos jugando con la base de datos
necesitamos eliminar todos los registros y hacer que el id numérico empiece de
cero. La mayor tentación siempre es borrar la tabla y crearla de nuevo, pero
existe otra alternativa: "truncar" la tabla, que es mucho más fácil:
TRUNCATE TABLE tabla;
Recorrer un array asociativo en PHP
foreach ($array as $clave=>$valor) {
echo $clave." - ".$valor."<br>";
}
Realizar una conexión a una bdd usando objetos.
El sistema procedural está en declive y se está empezando a usar objetos,
así que conviene tener algunas nociones.
$db = new msqli("localhost", "root", "password", "database");
if ( ( $db->connect_errno ) {
header("Location : url");
die();
}
El esqueleto básico de una consulta es como el siguiente:
$result = $db->query("sql query");
if ( $result->numrows > 0 ) {
while ( $row = $result->fetch_assoc() ) {
echo $row["campo"];
}
}