No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de SQL y MySQL

Curso de SQL y MySQL

Alberto Alcocer (Beco)

Alberto Alcocer (Beco)

Comando on duplicate key

12/24
Recursos

Aportes 120

Preguntas 33

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Notas 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) 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');

-- Autores

INSERT INTO `authors`(name, nationality) 
VALUES ('Sam Altman','USA'),
('Freddy Vega','COL'),
('Arthur Conan Doyle','GBR'),
('Chuck Palahniuk','USA'),
('Juan Rulfo','MEX'),
('Henning Mankel','SWE'),
('Jaideva Goswami','USA'),
('John Foreman','USA'),
('Stephen Hawking','USA'),
('Stephen Dubner','USA'),
('Edward Said','USA'),
('Vladimir Vapnik','RUS'),
('V P Menon','IND'),
('Leonard Mlodinow','USA'),
('Frank Shih','JAP'),
('Maria Konnikova','RUS'),
('Sebastian Gutierrez','ESP'),
('Kurt Vonnegut','USA'),
('Cedric Villani','FRA'),
('Gerald Sussman','USA'),
('Abraham Eraly','IND'),
('Frank Kafka','AUT'),
('John Pratt','USA'),
('Robert Nisbet','USA'),
('H. G. Wells',"ENG"),
('Werner Heisenberg','DEU'),
('Andy Oram',NULL),
('Terence Tao',"AUS"),
('Drew Conway',"USA"),
('Nate Silver',"USA"),
('Wes McKinney',"USA"),
('Thomas Cormen', "USA"),
('Siddhartha Deb',"IND"),
('Albert Camus',"FRA"),
('Adam Smith',"ENG"),
('Ken Follett',"ENG"),
('Fritjof Capra',"AUT"),
('Richard Feynman',"USA"),
('Ernest Hemingway',"USA"),
('Frederick Forsyth',"ENG"),
('Jeffery Archer',"ENG"),
('Randy Pausch',"USA"),
('Ayn Rand',"RUS"),
('Michael Crichton',"USA"),
('John Steinbeck',"USA"),
('Edgar Allen Poe',"USA"),
('Will Durant',NULL),
('P L Deshpande',NULL),
('John Grisham',"USA"),
('V. S. Naipaul',NULL),
('Joseph Heller',NULL),
('BBC',NULL),
('Bob Dylan',"USA"),
('Madan Gupta',"IND"),
('Alfred Stonier',NULL),
('W. H. Greene',NULL),
('Gary Bradsky',NULL),
('Andrew Tanenbaum',NULL),
('David Forsyth',NULL),
('Schilling Taub',NULL),
('Yashwant Kanetkar',NULL),
('Jonathan Stroud',NULL),
('Fyodor Dostoevsky',"RUS"),
('Dan Brown',"USA"),
('Amartya Sen',NULL),
('Amitav Ghosh',NULL),
('Lorraine Hansberry',NULL),
('Bob Woodward',NULL),
('Kuldip Nayar',NULL),
('Sunita Deshpande',NULL),
('William Dalrymple',NULL),
('Various',NULL),
('Sanjay Garg',NULL),
('V P Kale',NULL),
('Shashi Tharoor',"IND"),
('Dominique Lapierre',NULL),
('Bertrand Russell',"ENG"),
('Sam Harris',NULL),
('Earle Stanley Gardner',NULL),
('Peter Drucker',NULL),
('David Bodanis',NULL),
('Victor Hugo',"FRA"),
('Richard Gordon',NULL),
('George Orwell',NULL),
('Lee Iacoca',"USA"),
('William S Maugham',NULL),
('Robert Pirsig',NULL),
('Robert Fisk',NULL),
('Amir Aczel',NULL),
('Samuel Huntington',NULL),
('Richard Bach',NULL),
('Braithwaite',NULL),
('V S Naipaul',NULL),
('Jawaharlal Nehru',NULL),
('Gerald Durrell',NULL),
('Simon Singh',"ENG"),
('Hart Duda',NULL),
('Thomas Friedman',NULL),
('Keith Devlin',NULL),
('James Gleick',NULL),
('Joy Thomas',NULL),
('Muhammad Rashid',NULL),
('Ned Mohan',NULL),
('Simon Haykin',NULL),
('Alex Rutherford',NULL),
('Michael Baz-Zohar',NULL),
('Jim Corbett',NULL),
('Jules Verne',NULL),
('Deshpande P L',NULL),
('Eric Raymond',NULL),
('Sergio Franco',NULL),
('Allen Downey',NULL),
('Morris West',NULL),
('Phillip Janert',NULL),
('Carl Sagan',"USA"),
('E T Bell',NULL),
('Richard Dawkins',NULL),
('Sudhanshu Ranjan',"IND"),
('Kautiyla',NULL),
('Palkhivala',NULL),
('Sorabjee',NULL),
('Hussain Zaidi',NULL),
('Peter Ackroyd',NULL),
('Nariman',NULL),
('Jean Sassoon',NULL),
('Peter Dickinson',NULL),
('Machiavelli',NULL),
('Aldous Huxley',"ENG"),
('J K Rowling',"ENG"),
('Steig Larsson',"SWE"),
('Steve Eddins', NULL),
('Charles Dickens',"ENG");

-- Insercion de libros

INSERT INTO `books` VALUES (1,1,'The Startup Playbook',2013,'en',NULL,10.00,1,5,'Advice from the experts'),
(2,1,'The Startup Playbook',2014,'es',NULL,10.00,1,5,'Consejo de los expertos, traducido por Platzi'),
(3,3,'Estudio en escarlata',1887,'es',NULL,5.00,1,10,'La primera novela de Sherlock Holmes'),
(4,6,'Wallander: Asesinos sin rostro',1991,'es',NULL,15.00,1,3,''),
(5,6,'Wallander: Los perros de Riga',1992,'es',NULL,15.00,1,3,''),
(6,6,'Wallander: La leona blanca',1993,'es',NULL,15.00,1,3,''),
(7,6,'Wallander: El hombre sonriente',1994,'es',NULL,15.00,1,3,''),
(8,6,'Wallander: La falsa pista',1995,'es',NULL,15.00,1,3,''),
(9,6,'Wallander: La quinta mujer',1996,'es',NULL,15.00,1,3,''),
(10,6,'Wallander: Pisando los talones',1997,'es',NULL,15.00,1,3,''),
(11,6,'Wallander: Cortafuegos',1998,'es',NULL,15.00,1,3,''),
(12,5,'El llano en llamas',1953,'es',NULL,10.00,0,1,'Cuentos mexicanos'),
(13,7,'Fundamentals of Wavelets',1900,'en',NULL,NULL,1,4,NULL),
(14,8,'Data Smart',1900,'en',NULL,NULL,1,4,NULL),
(15,9,'God Created the Integers',1900,'en',NULL,NULL,1,4,NULL),
(16,10,'Superfreakonomics',1900,'en',NULL,NULL,1,4,NULL),
(17,11,'Orientalism',1900,'en',NULL,NULL,1,4,NULL),
(18,12,'The Nature of Statistical Learning Theory',1900,'en',NULL,NULL,1,4,NULL),
(19,13,'Integration of the Indian States',1900,'en',NULL,NULL,1,4,NULL),
(20,14,'The Drunkard's Walk',1900,'en',NULL,NULL,1,4,NULL),
(21,15,'Image Processing & Mathematical Morphology',1900,'en',NULL,NULL,1,4,NULL),
(22,16,'How to Think Like Sherlock Holmes',1900,'en',NULL,NULL,1,4,NULL),
(23,17,'Data Scientists at Work',1900,'en',NULL,NULL,1,4,NULL),
(24,18,'Slaughterhouse Five',1900,'en',NULL,NULL,1,4,NULL),
(25,19,'Birth of a Theorem',1900,'en',NULL,NULL,1,4,NULL),
(26,20,'Structure & Interpretation of Computer Programs',1900,'en',NULL,NULL,1,4,NULL),
(27,21,'The Age of Wrath',1900,'en',NULL,NULL,1,4,NULL),
(28,22,'The Trial',1900,'en',NULL,NULL,1,4,NULL),
(29,23,'Statistical Decision Theory',1900,'en',NULL,NULL,1,4,NULL),
(30,24,'Data Mining Handbook',1900,'en',NULL,NULL,1,4,NULL),
(31,25,'The New Machiavelli',1900,'en',NULL,NULL,1,4,NULL),
(32,26,'Physics & Philosophy',1900,'en',NULL,NULL,1,4,NULL),
(33,27,'Making Software',1900,'en',NULL,NULL,1,4,NULL),
(34,28,'Vol I Analysis',1900,'en',NULL,NULL,1,4,NULL),
(35,29,'Machine Learning for Hackers',1900,'en',NULL,NULL,1,4,NULL),
(36,30,'The Signal and the Noise',1900,'en',NULL,NULL,1,4,NULL),
(37,31,'Python for Data Analysis',1900,'en',NULL,NULL,1,4,NULL),
(38,32,'Introduction to Algorithms',1900,'en',NULL,NULL,1,4,NULL),
(39,33,'The Beautiful and the Damned',1900,'en',NULL,NULL,1,4,NULL),
(40,34,'The Outsider',1900,'en',NULL,NULL,1,4,NULL),
(41,3,'The - Vol I Complete Sherlock Holmes',1900,'en',NULL,NULL,1,4,NULL),
(42,3,'The - Vol II Complete Sherlock Holmes',1900,'en',NULL,NULL,1,4,NULL),
(43,37,'The Wealth of Nations',1900,'en',NULL,NULL,1,4,NULL),
(44,38,'The Pillars of the Earth',1900,'en',NULL,NULL,1,4,NULL),
(45,39,'The Tao of Physics',1900,'en',NULL,NULL,1,4,NULL),
(46,40,'Surely You's re Joking Mr Feynman',1900,'en',NULL,NULL,1,4,NULL),
(47,41,'A Farewell to Arms',1900,'en',NULL,NULL,1,4,NULL),
(48,42,'The Veteran',1900,'en',NULL,NULL,1,4,NULL),
(49,43,'False Impressions',1900,'en',NULL,NULL,1,4,NULL),
(50,44,'The Last Lecture',1900,'en',NULL,NULL,1,4,NULL),
(51,45,'Return of the Primitive',1900,'en',NULL,NULL,1,4,NULL),
(52,46,'Jurassic Park',1900,'en',NULL,NULL,1,4,NULL),
(53,47,'A Russian Journal',1900,'en',NULL,NULL,1,4,NULL),
(54,48,'Tales of Mystery and Imagination',1900,'en',NULL,NULL,1,4,NULL),
(55,10,'Freakonomics',1900,'en',NULL,NULL,1,4,NULL),
(56,39,'The Hidden Connections',1900,'en',NULL,NULL,1,4,NULL),
(57,51,'The Story of Philosophy',1900,'en',NULL,NULL,1,4,NULL),
(58,52,'Asami Asami',1900,'en',NULL,NULL,1,4,NULL),
(59,47,'Journal of a Novel',1900,'en',NULL,NULL,1,4,NULL),
(60,47,'Once There Was a War',1900,'en',NULL,NULL,1,4,NULL),
(61,47,'The Moon is Down',1900,'en',NULL,NULL,1,4,NULL),
(62,56,'The Brethren',1900,'en',NULL,NULL,1,4,NULL),
(63,57,'In a Free State',1900,'en',NULL,NULL,1,4,NULL),
(64,58,'Catch 22',1900,'en',NULL,NULL,1,4,NULL),
(65,59,'The Complete Mastermind',1900,'en',NULL,NULL,1,4,NULL),
(66,60,'Dylan on Dylan',1900,'en',NULL,NULL,1,4,NULL),
(67,61,'Soft Computing & Intelligent Systems',1900,'en',NULL,NULL,1,4,NULL),
(68,62,'Textbook of Economic Theory',1900,'en',NULL,NULL,1,4,NULL),
(69,63,'Econometric Analysis',1900,'en',NULL,NULL,1,4,NULL),
(70,64,'Learning OpenCV',1900,'en',NULL,NULL,1,4,NULL),
(71,65,'Data Structures Using C & C++',1900,'en',NULL,NULL,1,4,NULL),
(72,66,'A Modern Approach Computer Vision',1900,'en',NULL,NULL,1,4,NULL),
(73,67,'Principles of Communication Systems',1900,'en',NULL,NULL,1,4,NULL),
(74,68,'Let Us C',1900,'en',NULL,NULL,1,4,NULL),
(75,69,'The Amulet of Samarkand',1900,'en',NULL,NULL,1,4,NULL),
(76,70,'Crime and Punishment',1900,'en',NULL,NULL,1,4,NULL),
(77,71,'Angels & Demons',1900,'en',NULL,NULL,1,4,NULL),
(78,72,'The Argumentative Indian',1900,'en',NULL,NULL,1,4,NULL),
(79,73,'Sea of Poppies',1900,'en',NULL,NULL,1,4,NULL),
(80,72,'The Idea of Justice',1900,'en',NULL,NULL,1,4,NULL),
(81,75,'A Raisin in the Sun',1900,'en',NULL,NULL,1,4,NULL),
(82,76,'All the President's Men',1900,'en',NULL,NULL,1,4,NULL),
(83,43,'A Prisoner of Birth',1900,'en',NULL,NULL,1,4,NULL),
(84,78,'Scoop!',1900,'en',NULL,NULL,1,4,NULL),
(85,79,'Ahe Manohar Tari',1900,'en',NULL,NULL,1,4,NULL),
(86,80,'The Last Mughal',1900,'en',NULL,NULL,1,4,NULL),
(87,81,'Vol 39 No. 1 Social Choice & Welfare',1900,'en',NULL,NULL,1,4,NULL),
(88,52,'Radiowaril Bhashane & Shrutika',1900,'en',NULL,NULL,1,4,NULL),
(89,52,'Gun Gayin Awadi',1900,'en',NULL,NULL,1,4,NULL),
(90,52,'Aghal Paghal',1900,'en',NULL,NULL,1,4,NULL),
(91,85,'Maqta-e-Ghalib',1900,'en',NULL,NULL,1,4,NULL),
(92,86,'Manasa',1900,'en',NULL,NULL,1,4,NULL),
(93,87,'India from Midnight to Milennium',1900,'en',NULL,NULL,1,4,NULL),
(94,87,'The Great Indian Novel',1900,'en',NULL,NULL,1,4,NULL),
(95,89,'O Jerusalem!',1900,'en',NULL,NULL,1,4,NULL),
(96,89,'The City of Joy',1900,'en',NULL,NULL,1,4,NULL),
(97,89,'Freedom at Midnight',1900,'en',NULL,NULL,1,4,NULL),
(98,47,'The Winter of Our Discontent',1900,'en',NULL,NULL,1,4,NULL),
(99,93,'On Education',1900,'en',NULL,NULL,1,4,NULL),
(100,94,'Free Will',1900,'en',NULL,NULL,1,4,NULL),
(101,87,'Bookless in Baghdad',1900,'en',NULL,NULL,1,4,NULL),
(102,96,'The Case of the Lame Canary',1900,'en',NULL,NULL,1,4,NULL),
(103,9,'The Theory of Everything',1900,'en',NULL,NULL,1,4,NULL),
(104,98,'New Markets & Other Essays',1900,'en',NULL,NULL,1,4,NULL),
(105,99,'Electric Universe',1900,'en',NULL,NULL,1,4,NULL),
(106,100,'The Hunchback of Notre Dame',1900,'en',NULL,NULL,1,4,NULL),
(107,47,'Burning Bright',1900,'en',NULL,NULL,1,4,NULL),
(108,98,'The Age of Discontuinity',1900,'en',NULL,NULL,1,4,NULL),
(109,103,'Doctor in the Nude',1900,'en',NULL,NULL,1,4,NULL),
(110,104,'Down and Out in Paris & London',1900,'en',NULL,NULL,1,4,NULL),
(111,72,'Identity & Violence',1900,'en',NULL,NULL,1,4,NULL),
(112,80,'Beyond the Three Seas',1900,'en',NULL,NULL,1,4,NULL),
(113,107,'Talking Straight',1900,'en',NULL,NULL,1,4,NULL),
(114,108,'Vol 3 Maughams Collected Short Stories',1900,'en',NULL,NULL,1,4,NULL),
(115,42,'The Phantom of Manhattan',1900,'en',NULL,NULL,1,4,NULL),
(116,108,'Ashenden of The British Agent',1900,'en',NULL,NULL,1,4,NULL),
(117,111,'Zen & The Art of Motorcycle Maintenance',1900,'en',NULL,NULL,1,4,NULL),
(118,112,'The Great War for Civilization',1900,'en',NULL,NULL,1,4,NULL),
(119,45,'We the Living',1900,'en',NULL,NULL,1,4,NULL),
(120,114,'The Artist and the Mathematician',1900,'en',NULL,NULL,1,4,NULL),
(121,93,'History of Western Philosophy',1900,'en',NULL,NULL,1,4,NULL),
(122,72,'Rationality & Freedom',1900,'en',NULL,NULL,1,4,NULL),
(123,117,'Clash of Civilizations and Remaking of the World Order',1900,'en',NULL,NULL,1,4,NULL),
(124,39,'Uncommon Wisdom',1900,'en',NULL,NULL,1,4,NULL),
(125,119,'One',1900,'en',NULL,NULL,1,4,NULL),
(126,120,'To Sir With Love',1900,'en',NULL,NULL,1,4,NULL),
(127,121,'Half A Life',1900,'en',NULL,NULL,1,4,NULL),
(128,122,'The Discovery of India',1900,'en',NULL,NULL,1,4,NULL),
(129,52,'Apulki',1900,'en',NULL,NULL,1,4,NULL),
(130,93,'Unpopular Essays',1900,'en',NULL,NULL,1,4,NULL),
(131,42,'The Deceiver',1900,'en',NULL,NULL,1,4,NULL),
(132,76,'Veil: Secret Wars of the CIA',1900,'en',NULL,NULL,1,4,NULL),
(133,52,'Char Shabda',1900,'en',NULL,NULL,1,4,NULL),
(134,128,'Rosy is My Relative',1900,'en',NULL,NULL,1,4,NULL),
(135,108,'The Moon and Sixpence',1900,'en',NULL,NULL,1,4,NULL),
(136,130,'A Short History of the World',1900,'en',NULL,NULL,1,4,NULL),
(137,108,'The Trembling of a Leaf',1900,'en',NULL,NULL,1,4,NULL),
(138,103,'Doctor on the Brain',1900,'en',NULL,NULL,1,4,NULL),
(139,133,'Simpsons & Their Mathematical Secrets',1900,'en',NULL,NULL,1,4,NULL),
(140,134,'Pattern Classification',1900,'en',NULL,NULL,1,4,NULL),
(141,135,'From Beirut to Jerusalem',1900,'en',NULL,NULL,1,4,NULL),
(142,133,'The Code Book',1900,'en',NULL,NULL,1,4,NULL),
(143,112,'The Age of the Warrior',1900,'en',NULL,NULL,1,4,NULL),
(144,138,'The Numbers Behind Numb3rs',1900,'en',NULL,NULL,1,4,NULL),
(145,47,'A Life in Letters',1900,'en',NULL,NULL,1,4,NULL),
(146,140,'The Information',1900,'en',NULL,NULL,1,4,NULL),
(147,141,'Elements of Information Theory',1900,'en',NULL,NULL,1,4,NULL),
(148,142,'Power Electronics - Rashid',1900,'en',NULL,NULL,1,4,NULL),
(149,143,'Power Electronics - Mohan',1900,'en',NULL,NULL,1,4,NULL),
(150,144,'Neural Networks',1900,'en',NULL,NULL,1,4,NULL),
(151,47,'The Grapes of Wrath',1900,'en',NULL,NULL,1,4,NULL),
(152,52,'Vyakti ani Valli',1900,'en',NULL,NULL,1,4,NULL),
(153,12,'Statistical Learning Theory',1900,'en',NULL,NULL,1,4,NULL),
(154,148,'Empire of the Mughal - The Tainted Throne',1900,'en',NULL,NULL,1,4,NULL),
(155,148,'Empire of the Mughal - Brothers at War',1900,'en',NULL,NULL,1,4,NULL),
(156,148,'Empire of the Mughal - Ruler of the World',1900,'en',NULL,NULL,1,4,NULL),
(157,148,'Empire of the Mughal - The Serpent's Tooth',1900,'en',NULL,NULL,1,4,NULL),
(158,148,'Empire of the Mughal - Raiders from the North',1900,'en',NULL,NULL,1,4,NULL),
(159,153,'Mossad',1900,'en',NULL,NULL,1,4,NULL),
(160,154,'Jim Corbett Omnibus',1900,'en',NULL,NULL,1,4,NULL),
(161,155,'20000 Leagues Under the Sea',1900,'en',NULL,NULL,1,4,NULL),
(162,156,'Batatyachi Chal',1900,'en',NULL,NULL,1,4,NULL),
(163,156,'Hafasavnuk',1900,'en',NULL,NULL,1,4,NULL),
(164,156,'Urlasurla',1900,'en',NULL,NULL,1,4,NULL),
(165,68,'Pointers in C',1900,'en',NULL,NULL,1,4,NULL),
(166,160,'The Cathedral and the Bazaar',1900,'en',NULL,NULL,1,4,NULL),
(167,161,'Design with OpAmps',1900,'en',NULL,NULL,1,4,NULL),
(168,162,'Think Complexity',1900,'en',NULL,NULL,1,4,NULL),
(169,163,'The Devil's Advocate',1900,'en',NULL,NULL,1,4,NULL),
(170,45,'Ayn Rand Answers',1900,'en',NULL,NULL,1,4,NULL),
(171,45,'Philosophy: Who Needs It',1900,'en',NULL,NULL,1,4,NULL),
(172,166,'Data Analysis with Open Source Tools',1900,'en',NULL,NULL,1,4,NULL),
(173,167,'Broca's Brain',1900,'en',NULL,NULL,1,4,NULL),
(174,168,'Men of Mathematics',1900,'en',NULL,NULL,1,4,NULL),
(175,169,'Oxford book of Modern Science Writing',1900,'en',NULL,NULL,1,4,NULL),
(176,170,'Judiciary and Democracy Justice',1900,'en',NULL,NULL,1,4,NULL),
(177,171,'The Arthashastra',1900,'en',NULL,NULL,1,4,NULL),
(178,172,'We the People',1900,'en',NULL,NULL,1,4,NULL),
(179,172,'We the Nation',1900,'en',NULL,NULL,1,4,NULL),
(180,174,'The Courtroom Genius',1900,'en',NULL,NULL,1,4,NULL),
(181,175,'Dongri to Dubai',1900,'en',NULL,NULL,1,4,NULL),
(182,176,'Foundation History of England',1900,'en',NULL,NULL,1,4,NULL),
(183,80,'City of Djinns',1900,'en',NULL,NULL,1,4,NULL),
(184,178,'India's Legal System',1900,'en',NULL,NULL,1,4,NULL),
(185,179,'More Tears to Cry',1900,'en',NULL,NULL,1,4,NULL),
(186,180,'The Ropemaker',1900,'en',NULL,NULL,1,4,NULL),
(188,182,'The Prince',1900,'en',NULL,NULL,1,4,NULL),
(189,183,'Eyeless in Gaza',1900,'en',NULL,NULL,1,4,NULL),
(190,184,'Tales of Beedle the Bard',1900,'en',NULL,NULL,1,4,NULL),
(191,185,'Girl with the Dragon Tattoo',1900,'en',NULL,NULL,1,4,NULL),
(192,185,'Girl who kicked the Hornet's Nest',1900,'en',NULL,NULL,1,4,NULL),
(193,185,'Girl who played with Fire',1900,'en',NULL,NULL,1,4,NULL),
(194,28,'Structure and Randomness',1900,'en',NULL,NULL,1,4,NULL),
(195,189,'Image Processing with MATLAB',1900,'en',NULL,NULL,1,4,NULL),
(196,104,'Animal Farm',1900,'en',NULL,NULL,1,4,NULL),
(197,70,'The Idiot',1900,'en',NULL,NULL,1,4,NULL),
(198,192,'A Christmas Carol',1900,'en',NULL,NULL,1,4,NULL);

-- Insercion de clientes

INSERT INTO `clients`(name, email, birthdate, gender, active) VALUES ('Maria Dolores Gomez','Maria Dolores.95983222[email protected]','1971-06-06','F',1),
('Adrian Fernandez','Adrian.55818851[email protected]','1970-04-09','M',1),
('Maria Luisa Marin','Maria Luisa.83726282[email protected]','1957-07-30','F',1),
('Pedro Sanchez','Pedro.78522059[email protected]','1992-01-31','M',1),
('Pablo Saavedra','Pablo.93733268[email protected]','1960-07-21','M',1),
('Marta Carrillo','Marta.55741882[email protected]','1981-06-15','F',1),
('Javier Barrio','Javier.54966248[email protected]','1971-04-24','M',1),
('Milagros Garcia','Milagros.90074144[email protected]','1964-12-05','F',1),
('Carlos Quiros','Carlos.63291957[email protected]','1954-08-28','M',1),
('Carmen De la Torre','Carmen.57408761[email protected]','1966-05-14','F',1),
('Laura Moron','Laura.57774589[email protected]','1954-03-02','F',1),
('Maria Dolores Larrea','Maria Dolores.71788005[email protected]','1990-09-04','F',1),
('Maria Dolores Sanz','Maria Dolores.30948169[email protected]','2001-08-30','F',1),
('Jose Maria Bermudez','Jose Maria.24963969[email protected]','1998-05-23','M',1),
('Carlos Blanco','Carlos.94783133[email protected]','1952-08-07','M',1),
('Juan Carlos Jurado','Juan Carlos.71650477[email protected]','1990-12-12','M',1),
('David Gonzalez','David.54332034[email protected]','1976-05-03','M',1),
('Antonia Aranda','Antonia.91560262[email protected]','1979-10-25','F',1),
('Maria Moreno','Maria.58935447[email protected]','1997-01-12','F',1),
('David Casals','David.06746883[email protected]','1999-07-13','M',1),
('Mario Romero','Mario.46091382[email protected]','1985-03-29','M',1),
('Maria angeles Alba','Maria angeles.91808919[email protected]','1959-09-14','F',1),
('Rafael Espinola','Rafael.67605541[email protected]','1998-10-11','M',1),
('Montserrat alvarez','Montserrat.31114289[email protected]','1994-11-06','F',1),
('Maria Carmen Gomez','Maria Carmen.64351051[email protected]','1968-06-30','F',1),
('Maria Cruz Morillas','Maria Cruz.81385695[email protected]','1978-10-29','F',1),
('Josefa Roldan','Josefa.51417560[email protected]','1993-08-09','F',1),
('Monica Pla','Monica.18992324[email protected]','1972-06-08','F',1),
('Juana Maria Lopez','Juana Maria.51072683[email protected]','1990-07-15','F',1),
('Maria Carmen Ponce','Maria Carmen.41619980[email protected]','1984-07-26','F',1),
('Juan Carlos Rios','Juan Carlos.45673504[email protected]','1967-05-04','M',1),
('Isabel Alfaro','Isabel.77316882[email protected]','1980-07-25','F',1),
('Maria Isabel Armas','Maria Isabel.42010289[email protected]','1950-11-21','F',1),
('Maria Teresa Castillo','Maria Teresa.91228389[email protected]','2002-11-08','F',1),
('Andres Planells','Andres.09981449[email protected]','1992-06-19','M',1),
('Silvia Perez','Silvia.91812407[email protected]','1969-02-15','F',1),
('Pablo Gonzalez','Pablo.11605676[email protected]','2000-10-11','M',1),
('Maria Antonia Jimenez','Maria Antonia.98071058[email protected]','1998-06-23','F',1),
('Jesus Rodriguez','Jesus.86679475[email protected]','1961-01-17','M',1),
('Carmen Rodriguez','Carmen.81799536[email protected]','1973-02-17','F',1),
('Maria Dolores Rodriguez','Maria Dolores.75444599[email protected]','1962-08-14','F',1),
('Jordi Campos','Jordi.76000917[email protected]','1956-09-23','M',1),
('Carlos Caceres','Carlos.97628163[email protected]','1993-05-16','M',1),
('Carmen Robles','Carmen.29258188[email protected]','1955-06-19','F',1),
('Sara Rodriguez','Sara.16181250[email protected]','2001-06-07','F',1),
('Maria Carmen Rivera','Maria Carmen.59955426[email protected]','2000-05-27','F',1),
('Alberto Cabanas','Alberto.40633755[email protected]','1991-10-27','M',1),
('Jose Sanchez','Jose.52243847[email protected]','1976-12-06','M',1),
('Isabel Martinez','Isabel.90843261[email protected]','1962-07-01','F',1),
('David Sanchez','David.14910073[email protected]','1975-05-18','M',1),
('Sergio Sebastian','Sergio.09345984[email protected]','1959-08-30','M',1),
('Manuel Cabrera','Manuel.38738750[email protected]','1993-08-23','M',1),
('Marina Gabaldon','Marina.12101665[email protected]','1959-03-25','F',1),
('Rafael Galvez','Rafael.87947175[email protected]','1988-09-02','M',1),
('Francisco Villar','Francisco.13922268[email protected]','1952-04-25','M',1),
('Francisco Garcia','Francisco.34242509[email protected]','1989-01-22','M',1),
('Esther Pina','Esther.36300729[email protected]','1977-11-07','F',1),
('Maria Jesus Noya','Maria Jesus.95839533[email protected]','1996-08-07','F',1),
('Paula Ropero','Paula.53630073[email protected]','1998-09-04','F',1),
('Maria Carmen Iglesias','Maria Carmen.24044144[email protected]','1977-06-12','F',1),
('Albert Galvez','Albert.10067957[email protected]','1971-05-17','M',1),
('Carmen Lopez','Carmen.09399409[email protected]','1987-03-07','F',1),
('Francisco Jose Leon','Francisco Jose.07598657[email protected]','1965-12-11','M',1),
('Francisca Gonzalez','Francisca.19675393[email protected]','1957-12-23','F',1),
('Daniel Garcia','Daniel.01386486[email protected]','1979-05-29','M',1),
('Ana Maria Martinez','Ana Maria.91340418[email protected]','1980-09-14','F',1),
('Maria Aguilar','Maria.41749884[email protected]','2000-07-31','F',1),
('oscar Penas','oscar.31681177[email protected]','1981-10-02','M',1),
('Adrian Vela','Adrian.66561884[email protected]','1978-12-10','M',1),
('Francisco Alcalde','Francisco.52899588[email protected]','1967-03-11','M',1),
('Maria Dolores Perez','Maria Dolores.47800073[email protected]','2003-11-10','F',1),
('Juan Jose Tejada','Juan Jose.30429668[email protected]','1990-06-15','M',1),
('Cristobal Nogues','Cristobal.01001763[email protected]','2003-10-01','M',1),
('Maria Luisa Sanchez','Maria Luisa.91748033[email protected]','2000-02-03','F',1),
('Adrian Orta','Adrian.11458937[email protected]','1952-03-20','M',1),
('Maria Pilar Martin','Maria Pilar.93607154[email protected]','1996-08-29','F',1),
('Jesus Perez','Jesus.91931655[email protected]','1954-06-01','M',1),
('Jesus Perez','Jesus.15757299[email protected]','1956-08-29','M',1),
('Esther Capdevila','Esther.96440550[email protected]','1970-10-12','F',1),
('David Nieves','David.40697907[email protected]','1965-04-02','M',1),
('Antonia Giron','Antonia.32080105[email protected]','1983-01-22','F',1),
('Juan Casero','Juan.94063877[email protected]','1974-06-29','M',1),
('Manuel De Pablo','Manuel.01279669[email protected]','1973-03-23','M',1),
('angel Palomo','angel.28890315[email protected]','1991-07-04','M',1),
('Laura Herrera','Laura.98555932[email protected]','1966-12-12','F',1),
('Maria Josefa Benitez','Maria Josefa.36743977[email protected]','1987-04-17','F',1),
('Luis Saez','Luis.08103734[email protected]','1983-03-28','M',1),
('Susana Nevado','Susana.09442372[email protected]','1961-12-26','F',1),
('Miguel Gomez','Miguel.01631964[email protected]','1965-05-16','M',1),
('Julio Mayordomo','Julio.77582185[email protected]','1968-06-05','M',1),
('Sonia Mari','Sonia.06246888[email protected]','1994-10-13','F',1),
('Antonia Beltran','Antonia.96371304[email protected]','1967-11-17','F',1),
('Mercedes Perez','Mercedes.80944345[email protected]','1958-11-05','F',1),
('Concepcion Velez','Concepcion.56896097[email protected]','1964-04-05','F',1),
('Diego Correa','Diego.44862413[email protected]','1999-09-15','M',1),
('Juan Antonio Galan','Juan Antonio.95710220[email protected]','1982-11-20','M',1),
('Manuel Cerezo','Manuel.25853412[email protected]','1991-03-12','M',1),
('Rosa Maria Singh','Rosa Maria.41642169[email protected]','1956-12-31','F',1),
('Angeles Mena','angeles.88859550[email protected]','1987-09-22','F',1),
('Jose Hidalgo','Jose.05903641[email protected]','1973-08-13','M',1);

-- Comando on duplicate 
/* 🚫Nunca usa ON DUPLICATE KEY IGNORE ALL⛔
PROHIBIDISIMOOOOOOOOOOOOOOOOOOOO */

INSERT INTO clients(name, email, birthdate, gender, active) 
VALUES('Royer G', 'royjuni3431@gmail.com', '2002-02-16', 'M', 0)
ON DUPLICATE KEY IGNORE All;

INSERT INTO clients(name, email, birthdate, gender, active) 
VALUES('Royer G', 'royjuni3431@gmail.com', '2002-02-16', 'M', 0)
ON DUPLICATE KEY UPDATE active = VALUES(active);

-- Truco para la presentacion de los datos \G (Mas legible)
SELECT * FROM clients WHERE client_id = 101\G
SELECT * FROM clients\G

hola nuevos de platzi aquí les dejo otro aporte por si quieres aprender a actualizar o editar, en ves de utilizar el comando duplicate key mejor utiliza el comando UPDATE es mas fácil para modificar la información de una base de datos, mira la siguiente imagen es un ejemplo de como modifique un nombre desde la tabla authors, pero que sepan que lo pueden utilizar en cualquier tabla de eso no hay complique, espero les haya gustado 😃

los 4 registros:

INSERT INTO `clients` (client_id, name, email, birthdate,gender, active, created_at)
VALUES 
(1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1,'2018-04-09 16:51:30'),
(2,'Adrian Fernandez','[email protected]','1970-04-09','M',1,'2018-04-09 16:51:30'),
(3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1,'2018-04-09 16:51:30'),
(4,'Pedro Sanchez','[email protected]','1992-01-31','M',1,'2018-04-09 16:51:30');
/*

ON DUPLICATE KEY sirve para insertar un dato que ya esta creado pero queremos actualizar un atributo de ese dato por uno nuevo.

1 opcion: ON DUPLICATE KEY IGNORE ALL esto indica que si hay algun error, lo va a ignorar y va a correr la sentencia, NUNCA UTILIZAR, EVITAR A TODA COSTA.

2 opcion: ON DUPLICATE KEY UPDATE active = VALUES(active) para cambiarle el valor de activo, de 1 a 0.
Esta sentencia con la palabra UPDATE nos permite actualizar la información por alguna otra.

Luego indicamos la columna y directamente podemos hacerlo de dos formas:
Ejemplo:
1- ON DUPLICATE KEY UPDATE gender = F;
2- ON DUPLICATE KEY UPDATE gender = VALUES(gender); Esta segunda con el valor que actualizamos previamente como el siguiente ejemplo
*/

INSERT INTO `clients`(name, email, birthdate, gender, active)
VALUES('Pedro Sanchez', '[email protected]', '1992-01-31', 'F',1)
ON DUPLICATE KEY UPDATE gender = VALUES(gender);```

Es importante que para los que estan realizando este curso en 2021 o despues si no se a actualizado que tenga en cuenta que el update se debe hacer ahora haciendo el uso de un alias para los valores nuevos y no de la mano de values ya que esta opcion desaparecera en futuras versiones.
se realizaria de la siguiente forma:

INSERT INTO
  `clients` (
    name,
    email,
    birthday,
    gender,
    active
  )
VALUES
  (
    'Pedro Sanchez',
    '[email protected]',
    '1992-01-31',
    'M',
    1
  ) AS new ON DUPLICATE KEY
UPDATE
  active = new.active

como pueden ver antes del ON DUPLICATE KEY esta un AS new lo que indica esto es que los datos que estan antes de este son accesibles desde new.valore del dato y de esta forma luego se hace el update indicando que el active de la tabla sea ahora igual al new.active que se esta declarando

Insertar o actualizar registros en MySQL

En muchas ocasiones nos puede interesar insertar un registro o actualizarlo si este ya existe. Para hacer esto tenemos varias opciones, como por ejemplo estas dos:

Opción A:

Comprobamos si el registro ya existe.
Si no existe lo insertamos.
Si existe lo actualizamos.
Opción B:

Intentamos insertar el registro.
Si se produce un error lo actualizamos.

Pero MySQL nos da una opción mucho más elegante para realizar esto. Se trata de utilizar la construcción ON DUPLICATE KEY UPDATE. Podemos ver la documentación de esta construcción en el manual de MySQL. Pero vamos a ver un par de ejemplos:

INSERT INTO tabla (a, b, c) VALUES (1, 2, 3)
ON DUPLICATE KEY UPDATE b=2, c=3```

De esta forma si ya existe un registro con el valor del campo “a” igual a 1, suponiendo que el campo a sea la clave, se actualizarán los valores. ¿Y si tenemos varios registros? Entonces podemos usarlo de la forma siguiente:

1
INSERT INTO tabla (a, b, c) VALUES (1, 2, 3), (4, 5, 6)
2
ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES(c)
De esta forma se cogerá los valores b=2 y c=3 para la clave a=1 y b=5 y c=6 para la clave a=4.

`<code>

Tan solo RECALCAR algo que vi en el curso anterior de fundamentos de DB y es que deberíamos anteponer en los nombres de atributos un indicador de a que tabla pertenece ese atributo para evitar complicaciones por ejemplo: name puede llamarse igual en varias tablas por lo cual otra buena practica es llamarla por ejemplo author_name.

Pues me hubiera gustado solo probar la funcion IGNORE ALL, pero parece que ya no es posible usarla, me aparece que se esperaba un UPDATE, como bien he visto en los aportes que lo mencionan, pero me podrian ayudar a confirmar si este se usa así o porque me da error:

Comando on duplicate:

INSERT INTO 'authors'(name,email,gender)
('Pedro Sanchez','[email protected]','m')
ON DUPLICATE KEY IGNORE ALL; 

//*NOTA: NUNCA USARLO PORQUE SI HAY ALGÚN ERROR LO IGNORARÁ
(Una app que descarta errores esta destinada al fracaso -depende del caso de uso-)

INSERT INTO 'authors'(name,email,gender)
('Pedro Sanchez','[email protected]','m')
ON DUPLICATE KEY UPDATE SET active = VALUES(active);
aunque el row esta duplicado, estamos mandando el dato seleccionado para hacer un UPDATE

*tip del select: select * from clients where client_id = 4\G

Aquí dejo la instrucción sql

<INSERT INTO `clients`(client_id, name, email, birthdate, gender, active) VALUES(1, 'Martha Buitrago', '[email protected]', '1970-12-01', 'F', 1), (2, 'Diana vargas', '[email protected]', '1980-02-15', 'F', 1), (3, 'Ricardo Díaz', '[email protected]', '1991-04-09', 'M', 1), (4, 'Harvery Torres', '[email protected]', '1985-08-25', 'M', 1);>

Resumen de la Clase:
Tips:

  • Flecha hacia arriba dentro de la terminal trae comando más reciente
  • Al hacer un select from where cerrar con \G para presentación más legible.

Comandos:

  • ON DUPLICATE KEY: En dato duplicado que debe hacer. Se explican dos opciones
    • IGNORE ALL: si hay error ignore y ejecute el comando. no usar nunca
    • KEY UPDATE: cuando encuentre un duplicado, actualiza con el nuevo valor que envió.

Código de la clase:

/* Clase 10 */

/* Traemos clientes desde archivo de clase */
INSERT INTO clients VALUES 
(1, 'Maria Dolores Gomez', 'Maria [email protected]', '1971-06-06', 'F', 1, '2018-04-09 16:51:30', null),
(2,'Adrian Fernandez','[email protected]','1970-04-09','M',1,'2018-04-09 16:51:30',NULL),
(3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1,'2018-04-09 16:51:30',NULL),
(4,'Pedro Sanchez','[email protected]','1992-01-31','M',1,'2018-04-09 16:51:30',NULL);

/* Prueba insertar duplicado */
INSERT INTO clients(name, email, birthdate, gender, active) VALUES 
('Pedro Sanchez','[email protected]','1992-01-31','M',1);

/* Uso ON DUPLICATE KEY UPDATE */
INSERT INTO clients(name, email, birthdate, gender, active) VALUES 
('Pedro Sanchez','[email protected]','1992-01-31','M',0)
ON DUPLICATE KEY UPDATE active = VALUES(active);```


Buenas Tardes me sale este error:
ERROR 1136 (21S01): Column count doesn’t match value count at row 1
¿alguien sabe porque es o a que se debe?

No tengo muy claro , el uso del ON DUPLICATE KEY UPDATE. Podrian explicarme? Agradezco su ayuda

NUNCA USAR IGNORE ALL

Ejemplo: La siguiente instrucción INSERT inserta una fila en la tabla users y, si la fila ya existe, actualiza el campo name a John Smith:

INSERT INTO users (id, name, email)
VALUES (1, 'Jane Doe', '[email protected]');
ON DUPLICATE KEY UPDATE
name = 'John Smith';

Si la fila con el ID 1 ya existe en la tabla users, el campo name se actualizará a John Smith. Si la fila no existe, se insertará en la tabla con los valores especificados.

La cláusula ON DUPLICATE KEY UPDATE es una herramienta útil para actualizar filas que ya existen en una tabla. Se puede usar para actualizar filas de forma condicional o para actualizar filas que se insertan automáticamente en una tabla.

Nueva versión de actualizar datos On Duplicate ya que en las versiones más recientes dejarán de darle soporte a como se hace en la clase

 INSERT INTO `clients`(name, email, birthdate, gender, active) VALUES
    -> ('Pedro Sanchez','[email protected]','1992-01-31','M',1) as newData
    -> ON DUPLICATE KEY UPDATE active = newData.active;

ON DUPLICATE KEY gracias por el dato está de lujo!

¿Me pueden ayudar con algunos ejemplos de casos reales en los que se empleen ente comando?

No entiendo por qué con los ejemplos del Profe Alberto me sale un error de: Column count doesn´t match value count at row 1
¿Alguien sabría explicarme por favor?

INSERT INTO clients (client_id,name,email,gender,active) VALUES
(1, ‘Maria Dolores Gomez’, ‘[email protected]’,‘1971-06-06’,‘F’,‘1’),
(2, ‘Adrian Fernandez’, ‘adrian,[email protected]’, ‘1970-04-09’,‘M’,‘1’),
(3, ‘Maria Luisa Marin’, ‘[email protected]’,‘1957-07-30’,‘F’,‘1’),
(4, ‘Pedro Sanchez’, ‘[email protected]’, ‘1992-01-31’,‘M’,‘1’);

Usando CURRENT_TIMESTAMP en algunos atributos, para no tener que colocar la fecha manualmente.

INSERT INTO `clients` VALUES (1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1,'2018-04-09 16:51:30',CURRENT_TIMESTAMP),
(2,'Adrian Fernandez','[email protected]','1970-04-09','M',1,'2018-04-09 16:51:30',CURRENT_TIMESTAMP),
(3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1,'2018-04-09 16:51:30',CURRENT_TIMESTAMP),
(4,'Pedro Sanchez','[email protected]','1992-01-31','M',1,'2018-04-09 16:51:30',CURRENT_TIMESTAMP)
ON DUPLICATE KEY UPDATE active = VALUES(active), update_at = CURRENT_TIMESTAMP;	```

Hay una manera de usar
algo como

ON DUPLICATE KEY ALL

Es decir de decirle a SQL "si está duplicado actualiza todo"
obviamente el comando “ALL” no funciona, esto para no estar haciendo algo como

ON DUPLICATE KEY value1=VALUES(value1), value2=VALUES(value2) ... value1000=VALUES(value1000)

Si se presenta el siguiente error:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

El query a introducir debe ser el siguiente:

INSERT INTO `clients`(client_id, name, email, birthdate, gender, active, created_at) VALUES
(1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1,'2018-04-09 16:51:30'),
(2,'Adrian Fernandez','[email protected]','1970-04-09','M',1,'2018-04-09 16:51:30'),
(3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1,'2018-04-09 16:51:30'),
(4,'Pedro Sanchez','[email protected]','1992-01-31','M',1,'2018-04-09 16:51:30');

Truco: \G , lista la salida como una lista.

Excelente curso, la verdad!

***<u>comando</u>*** **para<u> limpia</u>r la terminal en mysql desde *<u>powershell windows</u>*:** `\! cls`

Insert realizado.

En muchas ocasiones nos puede interesar insertar un registro o actualizarlo si este ya existe. Para hacer esto tenemos varias opciones, como por ejemplo:

A)
Comprobamos si el registro ya existe.
Si no existe lo insertamos.
Si existe lo actualizamos.

B)
Intentamos insertar el registro.
Si se produce un error lo actualizamos.

MySQL nos da una opción mucho más elegante para realizar esto. Se trata de utilizar la construcción ON DUPLICATE KEY UPDATE.

La cual indica que si el registro por insertar tiene campos duplicados, actualice los campos indicados con algunos valores (estos pueden ser los mismos que le indicamos dentro de la función VALUES()
Insertamos

INSERT INTO clients VALUES (DEFAULT,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',0,'2018-04-09 16:51:30','2018-04-09 16:51:30');

Lanzará un error por duplicidad en el campo email (se tiene declarado como UNIQUE)

INSERT INTO clients VALUES (DEFAULT,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',0,'2018-04-09 16:51:30','2018-04-09 16:51:30');

Solución ante el error de duplicidad

INSERT INTO clients VALUES (DEFAULT,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',0,'2018-04-09 16:51:30','2018-04-09 16:51:30') ON DUPLICATE KEY UPDATE active=VALUES(active);

Genera dos cunsultas, la inserccion, y la actualización del campo
La primer consulta marca error, pero este es por duplicidad, por lo que mysql procede a actualizar el valor de ese campo en 0

Dejo el script del profesor como texto plano para solo copiar y pegar

INSERT INTO clients (client_id, name, email, birthdate, gender, active)
VALUES
(0,‘Maria Dolores Gomez’,‘Maria [email protected]’,‘1971-06-06’,‘F’,1),
(0,‘Adrian Fernandez’,‘[email protected]’,‘1970-04-09’,‘M’,1),
(0,‘Maria Luisa Marin’,‘Maria [email protected]’,‘1957-07-30’,‘F’,1),
(0,‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,1);

Código de inserción de clientes:

INSERT INTO clients (client_id, name, email, birthdate, gender, active)
VALUES
(1, 'Maria Dolores Gomez', 'MariaDolores.95983222j@random.names', '1971-06-06', 'F', 1),
(2, 'Adrian Fernandez', 'adrian,55818851j@random.names', '1970-04-09', 'M', 1),
(3, 'Maria Luisa Marin', 'marialuisa.83726282a@random.names', '1957-07-30', 'F', 1),
(4, 'Pedro Sanchez', 'pedro.78522059j@random.names', '1992-01-31', 'M', 1);

cordial saludo, suena ridiculo pero tengo una inquietud, como puedo subir una imagen o insertar un codigo en los aportes? le doy la opcion de imagen y me indica que debo poner una url , supongo que el directorio en donde se encuentra ubicada la imagen
=> , ¿como seria la sintaxis?

las columnas unicas no se pueden repetir, la primera es la llave primaria

INSERT INTO clients(client_id, name, email, birthdate, gender, active) 
VALUES
(1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1),
(2,'Adrian Fernandez','[email protected]','1970-04-09','M',1),
(3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1),
(4,'Pedro Sanchez','[email protected]','1992-01-31','M',1);```

**Realizando Insert con DUPLICATE KEY**

INSERT INTO clients(client_id, name, email, birthdate, gender, active)
VALUES (4,‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,0)
ON DUPLICATE KEY UPDATE active = VALUES (active); ```

Hoy tengo una presentación de un software con altos mandos…
Amé la frase con mucha verdad:

  • Una aplicación que no lanza errores, y peor aún, una aplicación que no le hace caso a los errores, está condenada al fracaso…

En mi caso no me funcionó tal cual tiene la sentencia del profesor, yo estoy utilizando cmder como emulador de consola linux en windows, pienso que puede ser por eso.
Tardé varias horas en solucionarlo y la solución era quitarle las comillas simples a clients.
Espero les sirva si les sucede esto.

INSERT INTO clients(name, email, birthdate, gender, active)
VALUES('Pedro Sanchez', '[email protected]', '1992-01-31', 'M', 0)
ON DUPLICATE KEY UPDATE
    active = VALUES(active);

– -- Comando On Duplicate Key – --

INSERT INTO `clients` (client_id, `name`, email, birthday, gender, active) 
VALUES (1,'Maria Dolores Gomez','Maria Dolores.95983222[email protected]','1971-06-06','F',1),
(2,'Adrian Fernandez','Adrian.55818851[email protected]','1970-04-09','M',1),
(3,'Maria Luisa Marin','Maria Luisa.83726282[email protected]','1957-07-30','F',1),
(4,'Pedro Sanchez','Pedro.78522059[email protected]','1992-01-31','M',1);

– Y si duplicamos?

INSERT INTO `clients` (`name`, email, birthday, gender, active) 
VALUES ('Pedro Sanchez','[email protected]','1992-01-31','M',1); -- No nos permite por el email (valor UNIQUE). 

-- Hacemos lo siguiente (y aprovechamos en cambiarle de ejemplo el NO activo) ON DUPLICATE KEY. NUNCA UTILIZAR EL INGORE ALL, SUGIEREN UTILIZAR: UPDATE SET email = '' (vacío) o  VALUES
INSERT INTO `clients` (`name`, email, birthday, gender, active) 
VALUES ('Pedro Sanchez','[email protected]','1992-01-31','M',0) ON DUPLICATE KEY UPDATE active = VALUES(active); -- Utilizamos solo el valor que viene en esta sentencia.    

INSERT INTO clients(name, email, birthdate, gender, active)
VALUES (‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,0)
ON DUPLICATE KEY UPDATE active = VALUES (active);

Comandos

No utilizar ON DUPLICATE KEY IGNORE ALL, existe la opcion pero no es recomendado utilizarla. ON DUPLICATE KEY UPDATE funciona y nos ayuda actualizar informacion de la tupla.

INSERT INTO 'authors'(name,email,gender)
('Pedro Sanchez','[email protected]','m')
ON DUPLICATE KEY IGNORE ALL; 

INSERT INTO 'authors'(name,email,gender, active)
('Pedro Sanchez','[email protected]','m',0)
ON DUPLICATE KEY UPDATE  active = VALUES(active);

No conocía el TIP “\G” luego de la consulta para ver los resultados en vertical

Muy interesante

UPDATE: Para actualizar datos en caso de duplicado en la inserción.

\G: Presenta los datos de una manera más legible.

Como siempre explica de manera precisa

-- Si existe un dato duplicado, 
-- se actualizara con el nuevo valor.
INSERT INTO TABLA (COLUMNNAME) VALUES(COLUMNVALUE)
ON DUPLICATE KEY UPDATE COLUMNNAME= VALUES(COLUMNVALUE);

2023 y este curso está muy desactualizado para ser del 2018

hay algunas limitaciones al usar ON DUPLICATE KEY UPDATE. En general, se recomienda evitar el uso de una cláusula ON DUPLICATE KEY UPDATE en tablas con múltiples índices únicos .
.
Además, el valor de las filas afectadas por fila es 1 si se inserta una nueva fila, 2 si se actualiza una fila existente y 0 si una fila existente se establece en sus valores actuales.
.
Si una tabla contiene una columna AUTO_INCREMENT y INSERT ... ON DUPLICATE KEY UPDATE es mejor insertar o actualizar una fila, la función LAST_INSERT_ID() devuelve el valor AUTO_INCREMENT .

evitar usar IGNORE ALL y aprender de los errores

```js INSERT INTO `platzi_operation`.`clients`(name, email, birthdate, gender, active) VALUES('John Doe', '[email protected]', '1995-11-14', 'M', 0) as `values` ON DUPLICATE KEY UPDATE active=`values`.active; ```INSERT INTO `platzi\_operation`.`clients`(name, email, birthdate, gender, active) VALUES('John Doe', '[email protected]', '1995-11-14', 'M', 0) as `values` ON DUPLICATE KEY UPDATE active=`values`.active;
Al intentar usar el `ON DUPLICATE KEY` como en la clase, aparece el warning: `'VALUES function' is deprecated and will be removed in a future release. Please use an alias (INSERT INTO ... VALUES (...) AS alias) and replace VALUES(col) in the ON DUPLICATE KEY UPDATE clause with alias.col instead` Para evitar ese warning se debe usar como: ```js INSERT INTO `platzi_operation`.`clients`(name, email, birthdate, gender, active) VALUES('John Doe', '[email protected]', '1995-11-14', 'M', 0) as `values` ON DUPLICATE KEY UPDATE active=`values`.active; ```Sin embargo igual funciona de la otra manera a pesar del warning.

Sin duda el comando: on duplicate key. Es una gran herramienta si sabes utilizarle, pero al mismo tiempo es algo confuso de entender la función que este realiza.

Ok.

ausgezeichnet!

SUPER TIP: comando muy útil pero muy peligroso: ON DUPLICATE KEY
Cambiar un dato de un registro, clients.active,
Caso de uso 1: (¡Nunca la utilices!)

ON DUPLICATE KEY IGNORE ALL

Que hace: NO importa si hay WARNINGS o ERRORS siempre va a ejecutar la sentencia.

Caso de uso 2:

ON DUPLICATE KEY UPDATE

Hola, Que significa este error al insertar los datos en clients?
ERROR 1136 (21S01): Column count doesn’t match value count at row 1

Estos son los datos que ingrese-

INSERT INTO clients VALUES (1,'Maria Dolores Gomez','Maria Dolores.95983222J@random.names','1971-06-06','F',1),(2,'Adrian Fernandez','Adrian.55818851J@random.names','1970-04-09','M',1),(3,'Maria Luisa Marin','Maria Luisa.83726282A@random.names','1957-07-30','F',1),(4,'Pedro Sanchez','Pedro.78522059J@random.names','1992-01-31','M',1);

Para evitar errores eliminé mi tabla de clients, sustituyéndola por del profesor que esta en el apartado de “Archivos” all.sql para evitar errores.

Buen día,
Me ayudan con lo siguiente por favor. Al insertar los 4 clientes Esta saliendo el siguiente error: ERROR 1136 (21S01): Column count doesn’t match value count at row 1. No le envié el client_id ya que este es autoincremental. pero por las dudas se lo coloque y también me genera el mismo error.

INSERT INTO clients
VALUES (‘Maria Dolores Gomez’,‘Maria [email protected]’,‘1971-06-06’,‘F’,1,CURRENT_TIMESTAMP),
(‘Adrian Fernandez’,‘[email protected]’,‘1970-04-09’,‘M’,1,CURRENT_TIMESTAMP),
(‘Maria Luisa Marin’,‘Maria [email protected]’,‘1957-07-30’,‘F’,1,CURRENT_TIMESTAMP),
(‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,1,CURRENT_TIMESTAMP);

Esta saliendo el siguiente error: ERROR 1136 (21S01): Column count doesn’t match value count at row 1

super tipzaso!

Una pregunta, se que está fuera del tema, pero me gustaría saber, ¿Cómo puedo subir una imagen mediante “Código” o “Enlace”. Si pudieran dejarme un ejemplo os agradecería mucho.
Nota: Ya sé que se puede subir arrastrando, pero me interesan las otras opciones.

INSERT INTO clients (client_id, name, email, birthdate,gender, active)
VALUES
(null,‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,0)
on duplicate key update active = values(active);

Una clase muy Buena

Puedes cambiar otros atributos tambien

INSERT INTO `clients`(name, email, birthdate, gender, active)
VALUES('Pedro Sanchez', '[email protected]', '1992-01-31', 'F',1)
ON DUPLICATE KEY UPDATE gender = VALUES(gender);```
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE t1 SET c=c+1 WHERE a=1;```

IGNORE ALL <— nunca usar

buenas clases

Muy bien!

Interesante.

ignore all

Imprimir datos de consultas en forma de registros SELECT * FROM `clients` WHERE `client_id` = 4\G; SELECT * FROM `authors`\G

10- comando on duplicate key

  1. ON DUPLICATE KEY IGNORE ALL;

Al realizar un insert y este es rechazado por la bases de datos porque está violando alguno de nuestros constraints UNIQUE podemos aplicar la instrucción ON DUPLICATE KEY IGNORE ALL; esto hará que ignore los warning y error que nos arroja la bases de datos.

 /*      ON DUPLICATE KEY IGNORE ALL;
ignora todos los errores y ejecuta la acción del registro,no se debe usar*/
INSERT INTO `clients`
     VALUES
        (  
            1,
             'Maria Dolores Gomez',
            'Maria [email protected]',
            '1971-06-06',
             'F',
             1,
             '2018-04-09 16:51:30'
          )
             ON DUPLICATE KEY IGNORE ALL;
  1. ON DUPLICATE KEY UPDATE
    Al realizar un insert podemos actualizar los datos de un registro aplicando la instrucción ON DUPLICATE KEY UPDATE campo= VALUES(campo); esto hará que actualice el campo indicado en el registro (tupla).
/*Actualizamos email*/
INSERT INTO `clients` 
            (client_id, name, email, birthdate, gender, active, created_at)
VALUES 
        (1,
          'Maria Dolores Gomez',
          'new mail Maria [email protected]',
           '1971-06-06','F',1,'2018-04-09 16:51:30')
ON DUPLICATE KEY  UPDATE email = VALUES(email);
/*Actualizamos clientes sí está activo o no*/
INSERT INTO `clients` 
(client_id, name, email, birthdate, gender, active, created_at)
 VALUES  
         (1,
            'Maria Dolores Gomez',
            'Maria [email protected]',
            '1971-06-06',
            'F',0,'2018-04-09 16:51:30')
ON DUPLICATE KEY UPDATE  active = VALUES(active);
INSERT INTO `clients` (name, email, birthdate, gender, active) VALUES
('Pedro Sanchez','[email protected]','1992-01-31','M',0)
**ON DUPLICATE KEY UPDATE active = VALUES (active)**

.
El “IGNORE ALL” lo que hace ejecutar el comando de SQL ignorando los errores si los ha de tener.
Una forma de representar una consulta del query en forma de lista en con: [El_query]\G.
.
Ejemplo: select * from clients where client_id = 4\G

ON DUPLICATE KEY IGNORE ALL; Al realizar un insert y este es rechazado por la bases de datos porque está violando alguno de nuestros constraints UNIQUE podemos aplicar la instrucción ON DUPLICATE KEY IGNORE ALL; esto hará que ignore los warning y error que nos arroja la bases

Excelente informción.

🚫Nunca usa ON DUPLICATE KEY IGNORE ALL⛔
PROHIBIDISIMOOOOOOOOOOOOOOOOOOOO

A mi no me funciono el ON DUPLICATE KEY UPDATE SET , tuve que quitar el set para que funcionara.

insert into clients ( name, email, birthdate, gender, active)
VALUES 
( 'Oscar Berganza', '[email protected]','1971-04-24', 'M',3 )
ON DUPLICATE KEY UPDATE  active = VALUES (active), name = values(name);


si pones AUTO_INCREMENT no de redundes poniendo a manos en el el insert (1,2,3,5 …) a mi me provoca un error

Con este comando podemos actualizar el valor de una tabla sin necesidad de sobreescribir todos los campos de esa entrada.

ON DUPLICATE KEY UPDATE active = VALUES(active)

si quisiste que no la usemos NO DEBISTE ENSEÑARLO, nosotros debimos descubrirlo por nuestra cuenta.

sigamos aprendiendo

Buenos dias, no me quedo muy claro lo del on duplicate key. Cuando debo utilizar on duplicate key y no solo el update set?, muchas gracias.

"una aplicacion que no le hace caso a los errores es una aplicacion que esta condenada el fracaso, nos va a quemar el servidor, el negocio, la casa…"
Alberto Alcocer [4:34]

CREATETABLE`clients` (
  `client_id`int(10) unsignedNOTNULL AUTO_INCREMENT,
  `name`varchar(50) DEFAULTNULL,
  `email`varchar(100) NOTNULL,
  `birthdate`dateDEFAULTNULL,
  `gender` enum('M','F') DEFAULTNULL,
  `active` tinyint(1) NOTNULLDEFAULT'1',
  `created_at`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,
  PRIMARY KEY (`client_id`),
  UNIQUEKEY`email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=101DEFAULTCHARSET=utf8;```

excelente curso

BUEN APORTE LAS CLASES ESTAN GENIALES AUNQUE CON POCOS ERRORES QUE SE VAN SOLUCIONANDO

listoooo

INSERT INTO clients (client_id, name, email, birthdate, gender, active) VALUES(1, ‘Maria dolores Gomez’, ‘Maria [email protected]’, ‘1971-06-06’, ‘F’, 1),(2,‘Adrian Fernandez’, ‘[email protected]’, ‘1970-04-09’, ‘M’, 1),(3,‘Maria Luisa Marin’, ‘Maria [email protected]’, ‘1957-07-30’, ‘F’, 1),(4,‘Pedro Sanchez’, ‘[email protected]’, ‘1992-01-31’, ‘M’, 1);
Query OK, 4 rows affected (0.18 sec)
Records: 4 Duplicates: 0 Warnings: 0

Me imagino que en \G, la G es por Group, que muestra agrupada la información y no en renglones.

  • Cuando veamos IGNORE ALL, es mejor no usarlo, aunque esta disponible, no es muy buena practica usarlo.

si les sale este error:
ERROR 1136 (21S01): Column count doesn’t match value count at row 1
yo lo solucione así:

INSERT INTO `clients` (client_id,name,email,birthday,gender,active,created_at) VALUES 
(20,'David Casals','[email protected]','1999-07-13','M',1,'2018-04-09 16:51:30');

o también agregando el valor null al campo de update_at

INSERT INTO `clients` VALUES 
(20,'David Casals','[email protected]','1999-07-13','M',1,'2018-04-09 16:51:30',null);

Fujo de trabajo para insertar un registro:

1- Hacer la consulta inicial

2- Verificar que exista

3- Actualizar el registro en vez de insertarlo

4- Revisar que se actualizó correctamente

Insertar datos:

INSERT INTO `clients`(client_id, name, email, birthdate, gender, active) VALUES
 (1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1),
 (2,'Adrian Fernandez','[email protected]','1970-04-09','M',1),
 (3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1),
 (4,'Pedro Sanchez','[email protected]','1992-01-31','M',1);```

Existe, pero nunca lo usen:


INSERT INTO clients(name, email, birthdate, gender, active) VALUES
(‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,0)
ON DUPLICATE KEY IGNORE ALL;

Tips para presentar los datos 


SELECT * FROM clients WHERE client_id = 4\G


Les ayudara mucho:



INSERT INTO clients(name, email, birthdate, gender, active) VALUES
(‘Pedro Sanchez’,‘[email protected]’,‘1992-01-31’,‘M’,0)
ON DUPLICATE KEY UPDATE active = VALUES(active)
;

INSERT INTO ‘clients’ (client_id, name, email, birthdate, gender, active)
VALUES(1, ‘Maria Dolores Gomez’, ‘Maria [email protected]’, ‘1971-06-06’, ‘F’, 1),
(2, ‘Adrian Fernadez’, ‘[email protected]’, ‘1970-04-09’, ‘M’, 1),
(3, ‘Maria Luisa Marin’, ‘maria [email protected]’, ‘1957-07-30’, ‘F’, 1),
(4, ‘Pedro Sanchez’, ‘[email protected]’, ‘1992-01-31’, ‘M’, 1);

ACTIVOS(1)= POR QUE ESTÁN ACTIVOS.

Lo entiendo así: al crear un nuevo registro con un e-mail ya existente, el “ON DUPLICATE KEY UPDATE” actualiza los datos del registro ya creado con algunos nuevos datos del nuevo registro.

Uso práctico: todos los días mi BBDD recibe 100 prospectos (o personas interesadas en mi negocio). Es normal que un usuario registrado en mayo de 2020 se vuelva a registrar en junio de 2021 (digamos, porque ahora sí le interesa mi negocio). En este caso, la información del prospecto se actualiza con la nueva data que el usuario está otorgando. Por ejemplo, la nueva empresa donde trabaja o incluso un nuevo número de teléfono.

Aquí veo un problema: la data antigua del usuario se pierde. A un vendedor le interesa saber si el usuario pasó de la empresa X a la Z, o si cambió de ciudad. Se me ocurre que debería existir una especia de tabla “historial” que sea un clon de una tabla “prospectos” y que contenga datos antiguos a solicitud del vendedor.

Otro problema que resuelve este almacenamiento es que cualquier usuario externo podría registrar data falsa y así eliminar información real de algún prospecto solo con su e-mail. En este caso, la tabla historial permitiría recuperar data del registro de una determinada fecha.

compañeros tambien encontre una forma de modificar un campo en especifico cuando ejemplo: el cliente sea el numero 4.

< update clients set email='[email protected]' WHERE client_id=4;> 

Clientes insertados en la clase

INSERT INTO `clients`(name, email, birthdate, gender, active) VALUES ('Maria Dolores Gomez','Maria Dolores.95983222[email protected]','1971-06-06','F',1),
('Adrian Fernandez','Adrian.55818851[email protected]','1970-04-09','M',1),
('Maria Luisa Marin','Maria Luisa.83726282[email protected]','1957-07-30','F',1),
('Pedro Sanchez','Pedro.78522059[email protected]','1992-01-31','M',1)

Si les genera el ERROR 1136 (21S01): Column count doesn’t match value count at row 1

Insertando los datos de la tabla clients de la siguiente manera

INSERT INTO clients (client_id, name, email, birthdate, gender, active, created_at, updated_at)
-> VALUES (NULL, ‘Karen Diaz’, ‘[email protected]’, ‘1991’, ‘F’, 1 );

Lo que a mi me funciono para solucionar el error, fue insertar lo datos así

INSERT INTO clients (name, email, birthdate, gender) VALUES (‘Karen Diaz’, ‘[email protected]’, ‘1991-03-13’,‘F’);

por defecto del codigo se va a insertar los datos de las columnas active, created_at y updated_at, nos quedaria de la siguiente manera todo el INSERT

--------------±-------±-------±--------------------±--------------------+
| client_id | name | email | birthdate | gender | active | created_at | updated_at |
±----------±-----------±------------------±--------------------±-------+
| 1 | Karen Diaz | [email protected] | 1991-03-13 00:00:00 | F | 1 | 2022-07-20 19:33:14 | 2022-07-20 19:33:14 |
±----------±-----------±------------------±--------------------±-------+

Espero les sirva 😃

1
Para los que estan haciendo el curso en 2022 seguramente la consola les habra generado un warning ‘1287’, encontre otra forma de actualizar datos dentro de un registro en la tabla, les comparto mi codigo:

UPDATE clients set active=0 where name=‘Pedro Sanchez’;

Adicionalmente dejo tambien otra forma de actualizar el dato dentro del registro, ambas funcionan sin warnings:

INSERT INTO clients (name,email,birthdate,gender,active)
VALUES
(‘Pedro Sanchez’, ‘[email protected]’, ‘1992-01-31’, ‘M’, 0)
AS new ON DUPLICATE KEY UPDATE active = new.active;

Cada día aprendo más, gracias Profe

Envio Codigo Corregido ```js INSERT INTO `clients` (client_id, name, email, birthdate, gender, active) VALUES (1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1), (2,'Adrian Fernandez','[email protected]','1970-04-09','M',1), (3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1), (4,'Pedro Sanchez','[email protected]','1992-01-31','M',1); ```INSERT INTO `clients` (client\_id, name, email, birthdate, gender, active) VALUES (1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1), (2,'Adrian Fernandez','[email protected]','1970-04-09','M',1), (3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1), (4,'Pedro Sanchez','[email protected]','1992-01-31','M',1);
```js INSERT INTO `clients` (client_id. name, email, birthdate, gender, active) VALUES (1,'Maria Dolores Gomez','Maria [email protected]','1971-06-06','F',1), (2,'Adrian Fernandez','[email protected]','1970-04-09','M',1), (3,'Maria Luisa Marin','Maria [email protected]','1957-07-30','F',1,), (4,'Pedro Sanchez','[email protected]','1992-01-31','M',1); ```

Formas de usar ON DUPLICATE KEY: - ON DUPLICATE KEY IGNORE ALL --ignora la instruccion ON DUPLICATE KEY UPDATE [CAMPONAME] = VALORCAMPO. --> hace un update en el campo seleccionado con el valor dado en la instruccion.

INSERT INTO clientes (idcliente, nombre, email, fechanacimiento, genero, activo)
VALUES (1,‘Maria Dolores Gomez’,‘Maria [email protected]’,‘1971-06-06’,‘F’,0)
ON DUPLICATE KEY UPDATE activo = VALUES(activo);

excelente curso ya casi terminamos

Muy interesante!