Digamos que tenemos una base de datos con las siguientes dos tablas: libros y autores.
La tabla de autores tiene columnas: id, nombre. La tabla de libros tiene columnas: id, title, author_id (se refiere a la tabla de autores).
Agrego libros nuevos a la base de datos manualmente, pero me gustaría escribir un script sql simple para automatizar esta tarea. ¿Puedo evitar buscar author_id por nombre de autor en la tabla de autores (puede realizar este paso una base de datos)? Lo que quiero es ingresar el título del libro y el nombre del autor (es decir, no quiero buscar el author_id primero), algo como esto:
//script.sql
INSERT "A quick guide to SQL", "Philip Collins"
2 respuestas
Puede usar una instrucción SELECT junto con una inserción:
insert into books (title, author_id)
select 'A quick guide to SQL', a.id
from author a
where a.name = 'Philip Collins';
Esto supone que el nombre del autor es único, de lo contrario, insertará varias filas en la tabla books
.
Tenga en cuenta que en SQL, las constantes de cadena se incluyen entre comillas simples ('
), las comillas dobles ("
) son para identificadores.
Puede crear una vista:
create view v_books as
select b.*, a.name
from books b join
authors a
on b.author_id = a.id;
Esta es una consulta almacenada y se puede utilizar como una tabla.
Preguntas relacionadas
Nuevas preguntas
sql
El lenguaje de consulta estructurado (SQL) es un lenguaje para consultar bases de datos. Las preguntas deben incluir ejemplos de código, estructura de tabla, datos de muestra y una etiqueta para la implementación de DBMS (por ejemplo, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) que se utiliza. Si su pregunta se relaciona únicamente con un DBMS específico (usa extensiones / características específicas), use la etiqueta de ese DBMS en su lugar. Las respuestas a las preguntas etiquetadas con SQL deben usar SQL estándar ISO / IEC.