You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
12 Hrs
39 Min
34 Seg
Curso de SQL y MySQL 2018

Curso de SQL y MySQL 2018

Alberto Alcocer (Beco)

Alberto Alcocer (Beco)

Comando INSERT

11/24
Resources

How to design and structure an efficient database?

Planning a database is a crucial step that can save space and time, as well as optimize data processing. The key is to avoid duplication of unnecessary information by using efficient tables and referencing IDs instead of repeating data. This approach not only reduces the size of the database, but also improves its performance.

How to use the INSERT command in SQL?

The INSERT command in SQL is essential for adding data to tables in a database. There are several ways to use it:

  • Basic syntax: INSERT INTO table (column1, column2) VALUES (value1, value2);
  • Use without specifying columns: If some columns (such as an autonumeric ID) do not require input values, you can omit specifying them in the INSERT statement, letting the database assign values automatically.

Example:

INSERT INTO authors (name, nationality) VALUES ('Juan Rulfo', 'MEX');

What are the different ways to insert data in SQL?

There are several methods to insert data, and by choosing the right one you can optimize the operations significantly:

  1. Specifying columns and values: this is the most common way and allows you to specify exactly which values go in which columns.
  INSERT INTO authors (name, nationality) VALUES ('Gabriel García Márquez', 'COL');
  1. No columns specified: Only the values are listed, useful when entering values for all columns in the correct order.
  INSERT INTO authors VALUES (DEFAULT, 'Juan Gabriel Vázquez', 'COL');
  1. Multiple Insert: Allows inserting multiple records in a single statement, which is more efficient than executing multiple separate INSERT statements.
  INSERT INTO authors (name, nationality) VALUES ('Julio Cortázar', 'ARG'), ('Isabel Allende', 'CHI');

What happens with auto-incremental and custom IDs?

In databases, IDs are usually auto-incremental primary keys, but they can also be customized:

  • Manual ID assignment: a specific value can be assigned to an ID, as long as it is not occupied by another record.
  INSERT INTO authors (authorID, name) VALUES (16, 'Pablo Neruda');

It is crucial to remember that primary keys must be unique, and any attempt at duplication will result in an error if not handled properly.

How to insert large amounts of data securely?

To handle the insertion of large amounts of data, it is recommended to do it in blocks or "chunks":

  • Insertions in blocks: performing insertions in blocks of up to 50 records can prevent interrupt and connection problems. This distributes the load and minimizes the risk of data loss.

  • Limit settings: Consider system configuration to adjust the maximum number of inserts per batch as needed.

This methodology ensures that connections maintain their integrity and that the database continues to operate efficiently even under heavy loads.

Contributions 151

Questions 32

Sort by:

Want to see more contributions, questions and answers from the community?

Si en el 1er y 3er ejemplo de INSERT les marca el error:

ERROR 1366 (HY000): Incorrect integer value: ‘’ for column ‘author_id’ at row 1

Esto puede solucionarse usando NULL, el ejemplo de clase hace mención que sea ‘’ (Únicamente comillas simples) donde se insertan los datos en vez de NULL , si las comillas simples se agregan marcara un error ya que está tomando ese apartado como STRING y en la tabla authors especificamos que sea INTEGER, también puede usarse el 1 (pues es un entero), así que sea 1 o NULL en donde se insertan los datos estará correcto, quedaría como:

Ejemplo 1: INSERT INTO authors (author_id, name, nationality)
VALUES (NULL, ‘Juan Rulfo’, ‘MEX’);

Ejemplo 3: INSERT INTO authors
VALUES (NULL, ‘Juan Gabriel Vásquez’, ‘COL’);

Aquí les dejo la inserción de todos los datos en el vídeo;

INSERT INTO authors (name, nationality)
VALUES('Juan Rulfo', 'MEX'),
('Gabriel García Márquez', 'COL'),
('Juan Gabriel Vasquez', 'COL'),
('Julio Cortázar', 'ARG'),
('Isabel Allende', 'MEX'),
('Octavio Paz', 'MEX'),
('Juan Carlos Onelli', 'URU');

A los que le arroja el error:
ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1

Prueben con cambiar el campo de ‘’ por NULL:

INSERT INTO authors(author_id, name, nationality) VALUES(NULL, 'Gabriel García Marquez', 'COL');```

Hay varios videos del curso mal editado, en el cual se esta explicando cierta acción, y luego se corta el video y comienza con la misma explicación, en este video se puede apreciar desde el minuto 3:336 seg al 4:22.
Podrían tomarse la molestia de editar bien los videos, tan reiterativo el error que llega a ser molesto.

Considero que para no repetir paises sería conveniente crear una tabla adicional en la cual estén los países.

9-Comando INSERT

  1. Es buena práctica:Tener una buen modelo de bases de datos y un buen modelo de negocio que evite la duplicidad de información ya que esto nos ahorra el tiempo de procesamiento, ahorra en espacio.

  2. Es buena práctica realizar inserciones de 50 registros máximo. Esto no es necesariamente obligatorio pero funciona muy bien y esto se hace porque sí hay algún problema en la inserción sólo se pierde datos de 50 a 50.

/*Existe varias formas de hacer insert, según las
versiones de mysql que tengamos instalados estas son
algunas de ellas*/
INSERT INTO  `authors` (author_id,name,nationality)
    VALUES ( '','Juan Rulfo','MEX');
INSERT INTO  `authors` (author_id,name,nationality)
    VALUES ('','Gabriel García Máquez','COL');
INSERT INTO  `authors` 
     VALUES ('Juan Gabriel Vasquez','COL');
/*pero la versión que manejamos  esta es una de las que admite*/
INSERT INTO  `authors` (name,nationality)
    VALUES ('Juan Rulfo','MEX');
/*otra forma, que sí funciona*/
INSERT INTO  `authors` (name,nationality) 
    VALUES  
            ('Juan Rulfo','MEX'),
            ('Gabriel García Máquez','COL'),
            ('Juan Gabriel Vasquez','COL'),
            ('Julio Cortázar','COL'),
            ('Isabelle Allende','CHI'),
            ('Octavio Paz','MEX'),
            ('Juan Carlos Onetti','URU');
/*o si sabemos que hay un id que no existe podemos insertarlos juntos con su  id*/
INSERT INTO  `authors` (author_id,name,nationality)
    VALUES ('16','Pablo Neruda','MEX');

Otra forma de insertar puede ser de la siguiente manera:

  • Sin especificar los campos a insertar solo indicando los valores utilizando un SELECT
    INSERT INTO authors
    SELECT ‘’,‘Juan Gabriel Vazques’,‘COL’;

  • Especificando todos los campos de la tabla a insertar utilizando un SELECT.
    INSERT INTO authors (author_id,name,nationality)
    SELECT ‘’,‘Gabriel Garcia Marquez’,‘COL’;

  • **Especificando solo algunos campos de la tabla a insertar **utilizando un SELECT
    INSERT INTO authors (name,nationality)
    SELECT ‘Julio Cortaza’,‘ARG’;

Saludos.

bueno ya sabemos insertar pero ustedes se preguntaran y como eliminamos el contenido que insertamos dentro de la base de datos, pues déjame darte este aporte te servirá 😃 les presento a mi amigo DELETE.

Si mandamos la cadena vacia ’ ', me sacó error, por eso mejor mandamos un null para que el campo exista pero sin informacion

Cuando ejecuto el primer INSERT

<INSERT INTO authors(author_id, name, nationality) VALUES('', 'Juan Rulfo', 'MEX');>

Me marca el siguiente error

<ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1
>
y fue necesaria la siguiente modificación:

<INSERT INTO authors(author_id, name, nationality) VALUES(NULL, ‘Juan Rulfo’, ‘MEX’);>


mysql> CREATE TABLE operations (
-> operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> book_id INTEGER UNSIGNED,
-> client_id INTEGER UNSIGNED,
-> type ENUM(‘PRE’,‘DEV’,‘VEN’) NOT NULL,
-> created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
-> ON UPDATE CURRENT_TIMESTAMP,
-> finished TINYINT(1) NOT NULL);
Query OK, 0 rows affected (0.01 sec)

En las versiones más actuales de Mysql la sisntaxis que utiliza @beco ya no es utilizada ** ’ ’ **.

En su lugar se utiliza NULL y 0

_"An integer or floating-point column can have the additional attribute AUTO_INCREMENT. When you insert a value of NULL (recommended) or 0 into an indexed AUTO_INCREMENT column, the column is set to the next sequence value. "

_

La solucion al problema de ‘’ es poner NULL, ejemplo

INSERT INTO authors(author_id, name, nationality) 
VALUES (NULL, 'Juan Rulfo', 'MEX');

Buenísimo el INSERT INTO para el insert de varios registros a una tabla, la vd que está buenísimo

En mi caso no me permitió:
– 1 NO DEJA, POR EL ID VACIO
INSERT INTO authors(author_id,name, nationality)
VALUES (’’,‘Juan Rulfo’,‘Mex’);

Ok tiene razón al menos en mi caso la base de datos no me dejo ingresar un valor distinto a entero para el campo author_id

excelente clase.

Hola, a mi me funciono así, para ejecutar el autoincremento;
INSERT INTO authors VALUES(null,'Horacio arquez','COL');

Para la configuración de la instalación que manejo, es necesario hacer esto:

INSERT INTO authors(author_id,name,nationality)
VALUES(NULL,‘Juan Rulfo’,‘MEX’);

INSERT INTO authors(name, nationality)
VALUES(‘Gabriel Garcia Marquez’, ‘COL’);

INSERT INTO authors
VALUES(NULL, ‘Juan Gabriel Vazquez’, ‘COL’);

Lo que yo hago es colocar autoincremental y no colocar esa columna a la hora de hacer el insert te evita problemas.

CREATE TABLE IF NOT EXISTS operations(
operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
book_id INTEGER UNSIGNED NOT NULL,
client_id INTEGER UNSIGNED NOT NULL,
type ENUM(‘P’, ‘D’, ‘V’) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
finished TINYINT(1) NOT NULL DEFAULT 0
);
create table IF NOT EXISTS books (
book_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
author INTEGER UNSIGNED,
title VARCHAR(100) NOT NULL,
year INTEGER UNSIGNED NOT NULL DEFAULT 1900,
language VARCHAR(2) NOT NULL DEFAULT ‘es’ COMMENT ‘ISO 639-1 Language’,
cover_url VARCHAR(500),
price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
sellable TINYINT(1) DEFAULT 1,
copies INTEGER NOT NULL DEFAULT 1,
description TEXT
);
CREATE TABLE IF NOT EXISTS author(
author_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
nationality VARCHAR(3)
);
CREATE TABLE clients (
client_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(40) NOT NULL UNIQUE,
birthdate DATETIME,
gender ENUM(‘M’,‘F’,‘ND’) NOT NULL,
active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Me paso que con las querys siguientes no me insertaron el la base de datos por error que el id_authors estaba vació por consiguiente les coloque su id y funciono correctamente como podría evitar eso con dichas querys?

INSERT INTO authors(author_id, name, nationality)
VALUES (‘2’,‘Juan Rulfo’, ‘MEX’);

INSERT INTO authors
VALUES(‘3’,‘Juan Gabriel Vasquez’, ‘COL’);

En mi caso, MaríaDB no me permite entrar con id ‘’

¿Cuales son los IDE que usan para escribir código de MySQL para Mac?

Nota:
Se puede cambiar el orden de los campos en el insert pero consecuentemente se debe respetar ese mismo orden en la lista de VALUES.

INSERT INTO authors(nationality, name, author_id) VALUES ('USA', 'John Doe', 16);

Existen varias manera de insertar datos en las tablas a través del comando INSERT
Especificando todas las columnas y todos los valores

  • INSERT INTO authors (author_id, name, nationality) VALUES (’ ', ‘Juan Rulfo’, ‘MEX’ );
    -Se deja el campo vacío del id por el auto incrementable.
    Especificando solo las columnas a las que se les agregaran valores
  • INSERT INTO authors (name, nationality) VALUES (‘Juan Rulfo’, ‘MEX’ );
    Sin especificar las columnas y solo los valores
  • INSERT INTO authors VALUES (’ ', ‘Juan Rulfo’, ‘MEX’ );
    Aqui se deben agregar todos los valores sin importar si son campos vacios porque se entiende que se llenaran todas las columnas sin excepciones

Que buenos consejos va dejando el profe alberto durante el video !!!
(Y)

En lo años que llevó aprendiendo a programar y manejar bases de datos e usado una práctica para los campos de la tabla de la forma siguiente: Nombre de la tabla siempre en minúscula. Nombre de los campos: Trabajo con prefijos ej. Una tabla de inventario coloco en las columnas INV_ID, INV_DESCRIPTION, INV_DATE ETC ETC. Ventajas hay campos como description que se repite mucho y esté método ayuda bastante en el momento de grabar o leer información. Es complemento un aporte a lo que estamos aprendiendo Espero que les sea útil,
INSERT INTO authors (author_id, name, nationality)
VALUES(NULL, 'Juan Rulfo', 'MEX');

INSERT INTO authors (name, nationality)
VALUES('Gabriel García Márquez', 'COL');

INSERT INTO authors 
VALUES(null, 'Andrés Caicedo', 'COL');

INSERT INTO authors 
VALUES(null, 'Julio Cortazar','ARG');```
 
Asegurarse de que exista un espacio entre authors' y VALUES';  de otra forma, me decía que tenía error de sintaxis.

ALGUIEN DE PERU CON QUIEN PUEDA PODAMOS REUNIRNOS

Excelente curso

En mi caso el primer tipo de insersion me marco error ya que el “” no era un tipo de dato Integer para el author_id, solo me funciono la segunda. pero en la consulta si se ve agregados los id

CREATE TABLE IF NOT EXISTS operations (
`operation_id` INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`book_id` INTEGER,
`client_id` INTEGER,
`type` ENUM('vendido','prestado','devuelto') NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
`finshed` TINYINT(1) NOT NULL
);

Necesta ser más didáctico el profesor!!!

Alguien mas tuvo problemas con los acentos? ¿saben como se puede solucionar?

Si por error escribes mal uno de los imputs no me dejaba meter ni salirme de ahi, tenia que cerrar el bash ¿alguien sabe como solucionarlo sin recurrir a cerrarlo?

Si usan MariaDB, en lugar de poner:

INSERT INTO authors
       VALUES('', 'Juan Gabriel Vasquez', 'COL');

usen null para la columna de id que debería quedar vacía.

INSERT INTO authors
      VALUES(null, 'Juan Gabriel Vasquez', 'COL');

Fomas de realizar un insert:

INSERT INTO authors(author_id, name, nationality)
VALUES(NULL, 'Juan Rulfo', 'MEX');

INSERT INTO authors(name, nationality)
VALUES('Gabrile García Márquez', 'COL');

INSERT INTO authors VALUES('', 'Juan Gabriel Vasquez', 'COL');

INSERT INTO authors(name, nationality) VALUES
('Julio Cortázar','ARG'),
('Isabel Allende','CHI'),
('Octavio Paz','MEX'),
('Juan Carlos Onetti','URU');```

Para solucionar el error en el insert utilicé las siguientes líneas:

INSERT INTO authors(author_id, name, nationality)
VALUES (NULL, 'Juan Rulfo', 'MEX');

INSERT INTO authors(name, nationality)
VALUES ('Gabriel García Márquez', 'COL');

INSERT INTO authors 
VALUES (NULL, 'Juan Gabriel Vasquez', 'COL');

el código de la clase:

insert into authors(`author_id`, `name`, `nationality`)
values(null, 'Juan Rulfo', 'MEX');

insert into authors(`name`, `nationality`)
values('Gabriel García Márquez', 'COL');

insert into authors
values(null, 'Juan Gabriel Vasquez', 'COL');

insert into authors (`name`, `nationality`)
values
('Julio Cortazár', 'ARG'),
('Isabel Allende', 'CHI'),
('Octavio Paz', 'MEX'),
('Juan Carlos Onetti', 'URY');

insert into authors(`author_id`, `name`)
values (16, 'Pablo Neruda'); 
Tambien podemos usar la palabra "DEFAULT" para indicar que un campo tome el valor por defecto ```js INSERT INTO authors (author_id, name, nationality) VALUES (DEFAULT, 'George R.R Martin', 'USA') ; ```

Compañeros buenos días alguien sabe por que me sale este error al insertar múltiples autores?

INSERT INTO author(name, nationality)
-> VALUES(‘Julio Cortazar’, ‘ARG’),
-> (‘Isabel Allende’, ‘CHI’),
-> (‘Octavio Paz’, ‘MEX’),
-> (‘Juan Carlos Onetti’, ’ URU’);
ERROR 1406 (22001): Data too long for column ‘nationality’ at row 4

como se limpia pantalla?

La forma en que soluci9ne el error de insertar un valor con ' lo sustituir por NULL:

El curso está buenísimo. Dejo mi pedazo de like👍🏻.

No me deja insertar de la primera y tercera forma, me pide que le ponga un valor a author_id

Desde Linux Mint (Derivado de Ubuntu) al ejecutar en consola

INSERT INTO authors VALUES ('', 'Juan Gabriel Vasquez', 'COL');

Genera un error Incorrect integer value: ‘’ for column ‘author_id’ at row 1 por la cadena vacia del identificador de author, para solucionarlo se puede escribir el script de la forma

INSERT INTO authors(author_id, name, nationality ) VALUES (NULL, 'Juan Rulfo', 'MEX');

Reemplazando la cadena vacia por un valor NULL

Al realizar el siguiente comando arroja el siguiente error;
mysql> insert into authors values(‘Juan Gabriel Vasquez’,‘COL’);
ERROR 1136 (21S01): Column count doesn’t match value count at row 1.

Se soluciona de la siguiente forma, y el auto incremento funciona si inconvenientes:
mysql> insert into authors values(0,‘Juan Gabriel Vasquez’,‘COL’);
Query OK, 1 row affected (0.01 sec)

super clase

CREATE TABLE IF NOT EXISTS operations(
operation_id INTEGER PRIMARY KEY AUTO_INCREMENT,
book INTEGER UNSIGNED,
client_id INTEGER UNSIGNED,
type ENUM(‘1’, ‘0’) NOT NULL,
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
finished TINYINT(1) NOT NULL,
FOREIGN KEY(book) REFERENCES books(book),
FOREIGN KEY(client_id) REFERENCES clients(client_id)
);

Para hacer un mejor uso de las tablas creadas anteriores para la tabla de operations sería mejor colocarle un FOREIGN KEY para id_book

buena clase!

Me gusa las Clases… Felicitaciones

NO alcance a ver que versión de mysql esta usando beco.

Excelntes clases /o/

Podemos reiniciar la cuenta de la propiedad AUTO_INCREMENT usando el comando ALTER TABLE authors AUTO_INCREMENT = 1;

Uso mysql y la forma 1 y 3 no me arrojan warning, me arrojan error y se aborta el registro.

Resumen de la Clase:

Tips:
Usar grupos de 50 inserciones
Si una columna tiene auto increment al hacer un insert se puede usar NULL, usar ‘’ o no mencionar.

Código con anotaciones sobre lo que se esta haciendo:

- Insert listando todas las columnas y valores:
INSERT INTO authors(author_id, name, nationality)
VALUES (NULL, 'Juan Rulfo', 'MEX');

- Insert ignorando la columna con AUTO_INCREMENT
INSERT INTO authors(name, nationality)
VALUES('Gabriel Garcia Marquez', 'COL');

- Insert sin listar columnas
INSERT INTO authors
VALUES(NULL, 'Juan Gabriel Vasquez', 'COL');

- Insert de varios al tiempo
INSERT INTO authors(name, nationality)
VALUES('Julio Cortazar', 'ARG'),
('Isabel Allende', 'CHI'),
('Octavio Paz', 'MEX');```

En SQL Server 5.6

INSERT INTO authors (author_id, name, nationality)
VALUES (’’,‘Juan Rulfo’, ‘MEX’)
;

INSERT INTO authors
VALUES (’’,‘Juan Gabriel Vasquez’, ‘COL’)
;

La misión principal de las Bases de Datos es evitar la redundancia de información.

Cuando aparece el error 1366 por el motivo de que el valor entero es incorrecto, se puede usar la palabra NULL, tambien se puede colocar el cero directamente ya que tambien representa el null.

Otra forma para solucionarlo y no se siga presentando el error es cambiar el modo estricto de mysql.

INSERT INTO authors
  VALUES('0', 'Juan Gabriel vasquez', 'COL');```

HOLA CHICOS!
A MI NO ME FUNCIONABA EL SIGUIENTE CÓDIGO
INSERT INTO AUTHORS
VALUES(’ ',‘GABRIEL GARCÍA MARQUEZ’,‘COLOMBIANO’);
PERO AQUÍ ESTÁ LA SOLUCIÓN QUE ME FUNCIONÓ!

INSERT INTO AUTHORS
VALUES(default,‘GABRIEL GARCÍA MARQUEZ’,‘COLOMBIANO’);

POR SI ALGUIEN TIENE EL MISMO ERROR

Hola chicos les comparto un codigo más corto para actualizar

    UPDATE CLIENTS
    SET ACTIVE = 0
    WHERE CLIENTS.ID_CLIENT = 3```

Buen tip!

Solo conocia el primer tipo de insert.

Y el tercer insert puede quedar así:

<INSERT INTO authors VALUES(NULL, 'Juan Gabriel Vazquez', 'COL');>

Esto debido a que el campo author_id es NOT NULL

Me paso que en base a mi tabla las sintaxis de

INSERT INTO authors (author_id, name, nationality)
VALUES('','Juan Rulfo','MEX');

INSERT INTO authors
VALUES('', ' Juan Gabriel Velazqez', 'COL');

Me marcaba el siguiente error:
ERROR 1366 (HY000): Incorrect integer value: ‘’ for column ‘author_id’ at row 1
Esto es por que en la tabla existe la condición de NOT NULL, por lo que es importante ponerle un 0 al valor y automaticamente este la cambiara al que es.

mysql> INSERT INTO authors
    -> VALUES('', ' Juan Gabriel Velazqez', 'COL');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1
mysql> INSERT INTO authors (author_id, name, nationality)
    -> VALUES('0','Juan Rulfo','MEX');
Query OK, 1 row affected (0.01 sec)

Mi sentencia de INSERT fue:

INSERT INTO  authors VALUES (null, 'Juan Gabriel', 'COL');

El error:

ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1

Se soluciona colocando ésto:

INSERT INTO authors(author_id, name, nationality)
VALUES('0', 'Juan Rulfo', 'MEX');

Es buena práctica realizar inserciones de 50 registros máximo. Esto no es necesariamente obligatorio pero funciona muy bien y esto se hace porque sí hay algún problema en la inserción sólo se pierde datos de 50 a 50.

INSERT INTO `name_table` (column_1,column_2,column_3) VALUES ( valor_1,valor_2,valor_3);

Es buena práctica:Tener una buen modelo de bases de datos y un buen modelo de negocio que evite la duplicidad de información ya que esto nos ahorra el tiempo de procesamiento, ahorra en espacio.

INSERT INTO `authors` (name,nationality) VALUES ('Juan Rulfo','MEX'), ('Gabriel García Máquez','COL'), ('Juan Gabriel Vasquez','COL'), ('Julio Cortázar','COL');

Que buena clase.

Dejo la consulta porque me los agrego empezando por cualqueir ID
mysql> select * from authors
-> ;
±----------±-----------------------±------------+
| author_id | name | nationality |
±----------±-----------------------±------------+
| 193 | Juan Rulfo | MEX |
| 194 | Gabriel Garcia Marquez | COL |
| 195 | Juan Gabriel Vasquez | COL |
±----------±-----------------------±------------+
3 rows in set (0.00 sec)

Saben porque?

En windows no deja poner el string vacío para el author_id y pide un integer. Por qué es esto?

    -> VALUES('', 'Juan Gabriel Vasquez', 'COL');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1```

a mi me marco error al dejar vacio el campo de author_id =’ ’ , tuve que asignar el = ‘1’ para que me devolviera el ok del Query… que me imagino que es lo que el profe explica al minuto ( 5:20) . si alguien supo otra forma de corregirlo les agradeceria.

Dejo el código con los ejemplos de la clase por si les he de ayuda

INSERT INTO  `authors` (author_id,name,nationality)
    VALUES (NULL,'Juan Rulfo','MEX');
INSERT INTO  `authors` (name,nationality)
    VALUES ('Gabriel García Máquez','COL');
INSERT INTO  `authors` 
     VALUES (NULL,'Juan Gabriel Vasquez','COL');

INSERT INTO  `authors` (name,nationality) 
    VALUES  
            ('Julio Cortázar','COL'),
            ('Isabelle Allende','CHI'),
            ('Octavio Paz','MEX'),
            ('Juan Carlos Onetti','URU');

Hola! Tengo un pequeño problema… No consigo que al hacer Copy-Paste desde el editor de textos hacía la consola se pegue bien y me genera errores. He probado usando el Bloc de Notas de Windows y Visual Studio Code… ¿Alguna sugerencia?

INSERT INTO authors(name, nationality)
    -> VALUES('Julio Cortázar', 'ARG'),
    -> ('Isabel Allende', 'CHI'),
    -> ('Octavio Paz', 'MEX'),
    -> ('Juan Carlos Onetti', 'URU')
    -> ;

– -- INSERT INTO tabla(COLUMNAS*) VALUES(VALORES)
– Tres formas distintas:

INSERT INTO authors(author_id, name, nationality)
VALUES(’’,‘Juan Rulfo’,‘MEX’); – podemos trabajarlo uno debaje de otro. Posiblemente nos de error por el AUTO INCREMENT ya que les estamos dando un valor vacío tipo STRING con las comillas ‘’. Mejor seguimos con el siguiente método. También podemos asignarle un número o NULL.

INSERT INTO authors (name, nationality) – Todo lo que vaya entre estas columans debe tener sus valores
VALUES(‘Gabo Márquez’,‘COL’);

INSERT INTO authors
VALUES (’’, ‘Mario Vargas Llosa’, ‘PER’); – Nuevamente me muestra un INCORRECT INTEGER VALUE

INSERT INTO authors
VALUES (’’,‘Mario Vargas Llosa’, ‘PER’); – Nuevamente me muestra un INCORRECT INTEGER VALUE

INSERT INTO authors (name, nationality) – Todo lo que vaya entre estas columans debe tener sus valores
VALUES(‘Julio Cortázar’,‘ARG’),
(‘Isabel Allende’,‘CHI’),
(‘Julio Ramón Ribeyro’,‘PER’),
(‘César Vallejo’,‘PER’),
(‘Octavio Paz’,‘MEX’);

realizando el INSERT siguiendo el video me daba un error con lo siguiente:

INSERT INTO authors(author_id, author_name, author_nationality)
VALUES ('','Juan Rulfo','MEX');```
_______________________________
ERROR 1366 (HY000): Incorrect integer value: '' for column 'author_id' at row 1

Mi hipotesis es que en VALUES no me permite dejar ese campo en blanco ya que es NOT NULL, ya que al ingresar el munero 1, se ejecuto exitosamente.
?

Alberto me a parecido un excelente maestro.

excelente curso

excelente curso.

buenas clases

realizando Insert de una sola fila

INSERT INTO authors(author_id, name, nationality)
VALUES('','Juan Rulfo','MEX');

INSERT INTO authors(name, nationality)
VALUES('Gabriel García Márquez','COL');

INSERT INTO authors
VALUES('','Juan Gabriel Vasquez','COL');

Realizando Insert de varias filas

INSERT INTO authors(name, nationality ) 
VALUES 
('Julios Cortázar', 'ARG'), 
('Isabel Allende', 'CHI'), 
('Octavio Paz', 'MEX'),
('Juan Carlos Onetti', 'URU');```
 

realizando Insert de una sola fila

INSERT INTO authors(author_id, name, nationality)
VALUES('','Juan Rulfo','MEX');

INSERT INTO authors(name, nationality)
VALUES('Gabriel García Márquez','COL');

INSERT INTO authors
VALUES('','Juan Gabriel Vasquez','COL');

Realizando Insert de varias filas

INSERT INTO authors(name, nationality ) 
VALUES 
('Julios Cortázar', 'ARG'), 
('Isabel Allende', 'CHI'), 
('Octavio Paz', 'MEX'),
('Juan Carlos Onetti', 'URU');```
 

INSERT INTO authors(author_id, name, nationality)
VALUES(’’, ‘Juan Rulfo’, ‘MEX’);

INSERT INTO authors(name, nationality)
VALUES(‘Julio Cortázar’, ‘ARG’),
(‘Isabel Allende’, ‘CHI’),
(‘Octavio Paz’, ‘MEX’),
(‘Juan Carlos Onetti’, ‘URU’);

CREATE TABLE IF NOT EXISTS operations(
operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
book_id INTEGER UNSIGNED,
client_id INTEGER UNSIGNED,
type ENUM (‘V’, ‘P’, ‘D’),
active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP,
finished TINYINT(1) NOT NULL
);

en la tabla operations, por que no se usa foreign keys?

Aquí algo mas avanzado:

Insert into desde un archivo delimitado por pipes ( | ) a una tabla (puede ser tabla física o temporal):

USE PD;
GO
IF OBJECT_ID(‘TEMPDB…##TMP_AFILDB_AFM16_20191102’)
IS NOT NULL
BEGIN
DROP TABLE ##TMP_AFILDB_AFM16_20191102;
END;
CREATE TABLE ##TMP_AFILDB_AFM16_20191102
([CDATTAB] DECIMAL NULL,
[CINDVAR] VARCHAR COLLATE DATABASE_DEFAULT
NULL,
[CMNT] VARCHAR COLLATE DATABASE_DEFAULT
NULL,
[CODEPS] DECIMAL NULL,
[CUSUNEW] DECIMAL NULL,
[FPRO] DECIMAL NULL,
[FULTNOV] DECIMAL NULL,
[NVALOR] DECIMAL NULL,
[TDATO] VARCHAR COLLATE DATABASE_DEFAULT
NULL,
[XDATTAB] VARCHAR COLLATE DATABASE_DEFAULT
NULL,
[XDES] VARCHAR COLLATE DATABASE_DEFAULT
NULL
);
BULK INSERT ##TMP_AFILDB_AFM16_20191102 FROM
’E:\INTERSOFT\QUERYS\CLONACION\Archivos_Planos\AFM16_20191102.txt’
WITH(FIELDTERMINATOR = ‘|’,ROWTERMINATOR = ‘\n’);

En mi instalación de MySQL no me permitió insertar datos con esta formas:

INSERT INTO authors
VALUES('Julio Cortazar','ARG');

Solo me funcionó el INSERT into de en medio con la versión de beco jejeje

increible clase

como se borra pantalla en la consola utilizando windows?
gracias…

Apuntes de clase

-- Creacion de base de datos
CREATE DATABASE platzi_operation;
-- Creacion de base de datos usando un condicional
CREATE DATABASE IF NOT EXISTS platzi_operation;
-- Mostar Warnings
SHOW warnings;
-- Mostar bases de datos
SHOW DATABASES
-- Utilizar una base de datos
USE platzi_operation;
-- Mostrar tablas
SHOW TABLES;
-- Como saber que base de datos estoy usando, RTA:
SELECT DATABASE();
-- Borrar tabla
DROP TABLE books
-- Mostar tablas
SHOW TABLES;
-- Describe los campos de la base de datos
DESCRIBE books
DESC authors
-- Mostar todo el esquema de la tabla (Incluyendo los comentarios)
SHOW FULL COLUMNS FROM books;

-- CREACION DEL PROYECTO [LIBRERIA]

-- Buena practica: Usar el nombre de la tabla en plural
-- Tabla de libros
CREATE TABLE IF NOT EXISTS books(
  book_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  author_id INT UNSIGNED ,
  title VARCHAR(100) NOT NULL,
  `year` INT UNSIGNED NOT NULL DEFAULT 1900,
  language VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Lenguage',
  cover_url VARCHAR(500),
  price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
  sellable TINYINT(1) DEFAULT 1,
  copies INT NOT NULL DEFAULT 1,
  description TEXT
);

-- Tabla de autores
CREATE TABLE IF NOT EXISTS authors (
  author_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  nationality VARCHAR(3)
);

-- Tabla de clientes
CREATE TABLE IF NOT EXISTS clients(
  client_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL,
  email VARCHAR(100) NOT NULL UNIQUE,
  birthdate DATETIME,
  gender ENUM('M', 'F', 'ND') NOT NULL,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP
);

-- Tabla de operaciones
CREATE TABLE IF NOT EXISTS operations(
  operation_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  book_id INT UNSIGNED,
  client_id INT UNSIGNED,
  `type` ENUM('prestado', 'devuelto', 'vendido'),
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    ON UPDATE CURRENT_TIMESTAMP,
  finshed TINYINT(1) NOT NULL
);

-- Inserccion de datos

-- Relleno de autores
INSERT INTO authors(author_id, name, nationality) 
VALUES (NULL, 'Juan Rulfo', 'MEX');

INSERT INTO authors(name, nationality) 
VALUES('Gabriel Garcia Marquez', 'COL');

INSERT INTO authors 
VALUES(NULL, 'Juan Gabriel Vazquez', 'COL'); 

-- Relleno con TRUCASOOOOOOO : CHUNCKS 50 Num Magic
INSERT INTO authors(name, nationality)
VALUES ('Julio Cortázar', 'ARG'),
       ('Isabel Allende', 'CHI'),
       ('Octavio Paz', 'MEX'),
       ('Juan Carlos Onetti', 'URY');

-- Llave Perdida
INSERT INTO authors(author_id, name) 
VALUES(16, 'Pablo Neruda');

😲Aún no lo creo desde hace un año que estoy en el instituto he llenado múltiples bases de datos usando un insert into tras otro hasta ahora me entero que hay un truco para llenarlo un poco más rápido, ese trucasoooo me viene genial

INSERT INTO authors (name, nationality)
VALUES (“Julio Cortázar”, “ARG”),
(“Isabel Allende”, “CHI”),
(“Octavio Paz”, “MEX”),
(“Juan Carlos Onetti”, “URU”);

INSERT INTO authors (autor_id, name) VALUES (16,”Pablo Neruda”);

mysql> SELECT * from authors;
±----------±-------------------------±------------+
| author_id | name | nationality |
±----------±-------------------------±------------+
| 1 | Juan Rulfo | MEX |
| 2 | Gabriel Garcia Marquez | COL |
| 3 | Cabririel Garcia Marquez | COL |
| 4 | Horacio arquez | COL |
| 5 | Horacio Marquez | COL |
| 6 | Julio Cortazar | ARG |
| 7 | Isable Allende | CHI |
| 16 | Pablo Neruda | CHI |
±----------±-------------------------±------------+
8 rows in set (0.00 sec)

INSERT INTO tabla(columnas) VALUES(valores)