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

Alberto Alcocer

Comando on duplicate key

12/24
Recursos

Aportes 117

Preguntas 31

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

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 馃槂

/*

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);```

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

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 鈥渁鈥 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>

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

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

Es mala costumbre de los profesores de Platzi de ense帽ar lo que no es buena pr谩ctica! As铆 me pas贸 con @Freddier y su curso de GIT! Y para colmo, los comandos que m谩s me gustan son lo que no se deben usar.

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);```


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

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

NUNCA USAR IGNORE ALL

驴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?

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 鈥淎LL鈥 no funciona, esto para no estar haciendo algo como

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

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

INSERT INTO clients (client_id,name,email,gender,active) VALUES
(1, 鈥楳aria Dolores Gomez鈥, 鈥[email protected]鈥,鈥1971-06-06鈥,鈥楩鈥,鈥1鈥),
(2, 鈥楢drian Fernandez鈥, 鈥榓drian,[email protected]鈥, 鈥1970-04-09鈥,鈥楳鈥,鈥1鈥),
(3, 鈥楳aria Luisa Marin鈥, 鈥[email protected]鈥,鈥1957-07-30鈥,鈥楩鈥,鈥1鈥),
(4, 鈥楶edro Sanchez鈥, 鈥[email protected]鈥, 鈥1992-01-31鈥,鈥楳鈥,鈥1鈥);

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鈥

鈥 -- 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.    

Excelente curso, la verdad!

evitar usar IGNORE ALL y aprender de los errores

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

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?

INSERT INTO clients(name, email, birthdate, gender, active)
VALUES (鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,0)
ON DUPLICATE KEY UPDATE active = VALUES (active);

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,鈥楳aria Dolores Gomez鈥,鈥楳aria [email protected]鈥,鈥1971-06-06鈥,鈥楩鈥,1),
(0,鈥楢drian Fernandez鈥,鈥[email protected]鈥,鈥1970-04-09鈥,鈥楳鈥,1),
(0,鈥楳aria Luisa Marin鈥,鈥楳aria [email protected]鈥,鈥1957-07-30鈥,鈥楩鈥,1),
(0,鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,1);

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

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;	```

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

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,鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,0)
ON DUPLICATE KEY UPDATE active = VALUES (active); ```

Insert realizado.

No conoc铆a el TIP 鈥淺G鈥 luego de la consulta para ver los resultados en vertical

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

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

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'),
    -> (5,'Pablo Saavedra','[email protected]','1960-07-21','M',1,'2018-04-09 16:51:30'),
    -> (6,'Marta Carrillo','[email protected]','1981-06-15','F',1,'2018-04-09 16:51:30'),
    -> (7,'Javier Barrio','[email protected]','1971-04-24','M',1,'2018-04-09 16:51:30'),
    -> (8,'Milagros Garcia','[email protected]','1964-12-05','F',1,'2018-04-09 16:51:30'),
    -> (9,'Carlos Quiros','[email protected]','1954-08-28','M',1,'2018-04-09 16:51:30'),
    -> (10,'Carmen De la Torre','[email protected]','1966-05-14','F',1,'2018-04-09 16:51:30'),
    -> (11,'Laura Moron','[email protected]','1954-03-02','F',1,'2018-04-09 16:51:30'),
    -> (12,'Maria Dolores Larrea','Maria [email protected]','1990-09-04','F',1,'2018-04-09 16:51:30'),
    -> (13,'Maria Dolores Sanz','Maria [email protected]','2001-08-30','F',1,'2018-04-09 16:51:30'),
    -> (14,'Jose Maria Bermudez','Jose [email protected]','1998-05-23','M',1,'2018-04-09 16:51:30'),
    -> (15,'Carlos Blanco','[email protected]','1952-08-07','M',1,'2018-04-09 16:51:30'),
    -> (16,'Juan Carlos Jurado','Juan [email protected]','1990-12-12','M',1,'2018-04-09 16:51:30'),
    -> (17,'David Gonzalez','[email protected]','1976-05-03','M',1,'2018-04-09 16:51:30'),
    -> (18,'Antonia Aranda','[email protected]','1979-10-25','F',1,'2018-04-09 16:51:30'),
    -> (19,'Maria Moreno','[email protected]','1997-01-12','F',1,'2018-04-09 16:51:30'),
    -> (20,'David Casals','[email protected]','1999-07-13','M',1,'2018-04-09 16:51:30'),
    -> (21,'Mario Romero','[email protected]','1985-03-29','M',1,'2018-04-09 16:51:30'),
    -> (22,'Maria angeles Alba','Maria [email protected]','1959-09-14','F',1,'2018-04-09 16:51:30'),
    -> (23,'Rafael Espinola','[email protected]','1998-10-11','M',1,'2018-04-09 16:51:30'),
    -> (24,'Montserrat alvarez','[email protected]','1994-11-06','F',1,'2018-04-09 16:51:30'),
    -> (25,'Maria Carmen Gomez','Maria [email protected]','1968-06-30','F',1,'2018-04-09 16:51:30'),
    -> (26,'Maria Cruz Morillas','Maria [email protected]','1978-10-29','F',1,'2018-04-09 16:51:30'),
    -> (27,'Josefa Roldan','[email protected]','1993-08-09','F',1,'2018-04-09 16:51:30'),
    -> (28,'Monica Pla','[email protected]','1972-06-08','F',1,'2018-04-09 16:51:30'),
    -> (29,'Juana Maria Lopez','Juana [email protected]','1990-07-15','F',1,'2018-04-09 16:51:30'),
    -> (30,'Maria Carmen Ponce','Maria [email protected]','1984-07-26','F',1,'2018-04-09 16:51:30'),
    -> (31,'Juan Carlos Rios','Juan [email protected]','1967-05-04','M',1,'2018-04-09 16:51:30'),
    -> (32,'Isabel Alfaro','[email protected]','1980-07-25','F',1,'2018-04-09 16:51:30'),
    -> (33,'Maria Isabel Armas','Maria [email protected]','1950-11-21','F',1,'2018-04-09 16:51:30'),
    -> (34,'Maria Teresa Castillo','Maria [email protected]','2002-11-08','F',1,'2018-04-09 16:51:30'),
    -> (35,'Andres Planells','[email protected]','1992-06-19','M',1,'2018-04-09 16:51:30'),
    -> (36,'Silvia Perez','[email protected]','1969-02-15','F',1,'2018-04-09 16:51:30'),
    -> (37,'Pablo Gonzalez','[email protected]','2000-10-11','M',1,'2018-04-09 16:51:30'),
    -> (38,'Maria Antonia Jimenez','Maria [email protected]','1998-06-23','F',1,'2018-04-09 16:51:31'),
    -> (39,'Jesus Rodriguez','[email protected]','1961-01-17','M',1,'2018-04-09 16:51:31'),
    -> (40,'Carmen Rodriguez','[email protected]','1973-02-17','F',1,'2018-04-09 16:51:31'),
    -> (41,'Maria Dolores Rodriguez','Maria [email protected]','1962-08-14','F',1,'2018-04-09 16:51:31'),
    -> (42,'Jordi Campos','[email protected]','1956-09-23','M',1,'2018-04-09 16:51:31'),
    -> (43,'Carlos Caceres','[email protected]','1993-05-16','M',1,'2018-04-09 16:51:31'),
    -> (44,'Carmen Robles','[email protected]','1955-06-19','F',1,'2018-04-09 16:51:31'),
    -> (45,'Sara Rodriguez','[email protected]','2001-06-07','F',1,'2018-04-09 16:51:31'),
    -> (46,'Maria Carmen Rivera','Maria [email protected]','2000-05-27','F',1,'2018-04-09 16:51:31'),
    -> (47,'Alberto Cabanas','[email protected]','1991-10-27','M',1,'2018-04-09 16:51:31'),
    -> (48,'Jose Sanchez','[email protected]','1976-12-06','M',1,'2018-04-09 16:51:31'),
    -> (49,'Isabel Martinez','[email protected]','1962-07-01','F',1,'2018-04-09 16:51:31'),
    -> (50,'David Sanchez','[email protected]','1975-05-18','M',1,'2018-04-09 16:51:31'),
    -> (51,'Sergio Sebastian','[email protected]','1959-08-30','M',1,'2018-04-09 16:51:31'),
    -> (52,'Manuel Cabrera','[email protected]','1993-08-23','M',1,'2018-04-09 16:51:31'),
    -> (53,'Marina Gabaldon','[email protected]','1959-03-25','F',1,'2018-04-09 16:51:31'),
    -> (54,'Rafael Galvez','[email protected]','1988-09-02','M',1,'2018-04-09 16:51:31'),
    -> (55,'Francisco Villar','[email protected]','1952-04-25','M',1,'2018-04-09 16:51:31'),
    -> (56,'Francisco Garcia','[email protected]','1989-01-22','M',1,'2018-04-09 16:51:31'),
    -> (57,'Esther Pina','[email protected]','1977-11-07','F',1,'2018-04-09 16:51:31'),
    -> (58,'Maria Jesus Noya','Maria [email protected]','1996-08-07','F',1,'2018-04-09 16:51:31'),
    -> (59,'Paula Ropero','[email protected]','1998-09-04','F',1,'2018-04-09 16:51:31'),
    -> (60,'Maria Carmen Iglesias','Maria [email protected]','1977-06-12','F',1,'2018-04-09 16:51:31'),
    -> (61,'Albert Galvez','[email protected]','1971-05-17','M',1,'2018-04-09 16:51:31'),
    -> (62,'Carmen Lopez','[email protected]','1987-03-07','F',1,'2018-04-09 16:51:31'),
    -> (63,'Francisco Jose Leon','Francisco [email protected]','1965-12-11','M',1,'2018-04-09 16:51:31'),
    -> (64,'Francisca Gonzalez','[email protected]','1957-12-23','F',1,'2018-04-09 16:51:31'),
    -> (65,'Daniel Garcia','[email protected]','1979-05-29','M',1,'2018-04-09 16:51:31'),
    -> (66,'Ana Maria Martinez','Ana [email protected]','1980-09-14','F',1,'2018-04-09 16:51:31'),
    -> (67,'Maria Aguilar','[email protected]','2000-07-31','F',1,'2018-04-09 16:51:31'),
    -> (68,'oscar Penas','[email protected]','1981-10-02','M',1,'2018-04-09 16:51:31'),
    -> (69,'Adrian Vela','[email protected]','1978-12-10','M',1,'2018-04-09 16:51:31'),
    -> (70,'Francisco Alcalde','[email protected]','1967-03-11','M',1,'2018-04-09 16:51:31'),
    -> (71,'Maria Dolores Perez','Maria [email protected]','2003-11-10','F',1,'2018-04-09 16:51:31'),
    -> (72,'Juan Jose Tejada','Juan [email protected]','1990-06-15','M',1,'2018-04-09 16:51:31'),
    -> (73,'Cristobal Nogues','[email protected]','2003-10-01','M',1,'2018-04-09 16:51:31'),
    -> (74,'Maria Luisa Sanchez','Maria [email protected]','2000-02-03','F',1,'2018-04-09 16:51:31'),
    -> (75,'Adrian Orta','[email protected]','1952-03-20','M',1,'2018-04-09 16:51:31'),
    -> (76,'Maria Pilar Martin','Maria [email protected]','1996-08-29','F',1,'2018-04-09 16:51:31'),
    -> (77,'Jesus Perez','[email protected]','1954-06-01','M',1,'2018-04-09 16:51:31'),
    -> (78,'Jesus Perez','[email protected]','1956-08-29','M',1,'2018-04-09 16:51:31'),
    -> (79,'Esther Capdevila','[email protected]','1970-10-12','F',1,'2018-04-09 16:51:31'),
    -> (80,'David Nieves','[email protected]','1965-04-02','M',1,'2018-04-09 16:51:31'),
    -> (81,'Antonia Giron','[email protected]','1983-01-22','F',1,'2018-04-09 16:51:31'),
    -> (82,'Juan Casero','[email protected]','1974-06-29','M',1,'2018-04-09 16:51:31'),
    -> (83,'Manuel De Pablo','[email protected]','1973-03-23','M',1,'2018-04-09 16:51:31'),
    -> (84,'angel Palomo','[email protected]','1991-07-04','M',1,'2018-04-09 16:51:31'),
    -> (85,'Laura Herrera','[email protected]','1966-12-12','F',1,'2018-04-09 16:51:31'),
    -> (86,'Maria Josefa Benitez','Maria [email protected]','1987-04-17','F',1,'2018-04-09 16:51:31'),
    -> (87,'Luis Saez','[email protected]','1983-03-28','M',1,'2018-04-09 16:51:31'),
    -> (88,'Susana Nevado','[email protected]','1961-12-26','F',1,'2018-04-09 16:51:31'),
    -> (89,'Miguel Gomez','[email protected]','1965-05-16','M',1,'2018-04-09 16:51:31'),
    -> (90,'Julio Mayordomo','[email protected]','1968-06-05','M',1,'2018-04-09 16:51:31'),
    -> (91,'Sonia Mari','[email protected]','1994-10-13','F',1,'2018-04-09 16:51:31'),
    -> (92,'Antonia Beltran','[email protected]','1967-11-17','F',1,'2018-04-09 16:51:31'),
    -> (93,'Mercedes Perez','[email protected]','1958-11-05','F',1,'2018-04-09 16:51:31'),
    -> (94,'Concepcion Velez','[email protected]','1964-04-05','F',1,'2018-04-09 16:51:31'),
    -> (95,'Diego Correa','[email protected]','1999-09-15','M',1,'2018-04-09 16:51:31'),
    -> (96,'Juan Antonio Galan','Juan [email protected]','1982-11-20','M',1,'2018-04-09 16:51:31'),
    -> (97,'Manuel Cerezo','[email protected]','1991-03-12','M',1,'2018-04-09 16:51:31'),
    -> (98,'Rosa Maria Singh','Rosa [email protected]','1956-12-31','F',1,'2018-04-09 16:51:31'),
    -> (99,'angeles Mena','[email protected]','1987-09-22','F',1,'2018-04-09 16:51:31'),
    -> (100,'Jose Hidalgo','[email protected]','1973-08-13','M',1,'2018-04-09 16:51:31');```

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

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

Muy interesante

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

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

sigamos aprendiendo

excelente curso ya casi terminamos

Alguien sabe por que me dice 2 filas afectadas cuando en realidad solo es una?

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;> 

En particular este comando no me funcionaba a mi.
No cambia nada cuando hago el query .
Cambio hasta actualice la sintaxis:

INSERT INTO clients(name, email, birthdate, gender, active)
VALUES (鈥楶edro Sanchez鈥,鈥楶edro.78522059[email protected]random.names鈥,鈥1992-01-31鈥,鈥楳鈥,1)
AS new ON DUPLICATE KEY UPDATE email =鈥[email protected]鈥;

Como pueden notar, los datos en VALUES con iguales y donde hago la actualizaci贸n de la informaci贸n es directamente en el 鈥渋gual que鈥.

Tambi茅n puede revisar esta pagina esta pagina:
https://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/

En particular este comando no me funcionaba a mi.
No cambia nada cuando hago el query .
Cambio hasta actualice la sintaxis:
INSERT INTO clients(name, email, birthdate, gender, active)
VALUES (鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,1)
AS new ON DUPLICATE KEY UPDATE email =鈥[email protected]鈥;

Como pueden notar, los datos en VALUES con iguales y donde hago la actualizaci贸n de la informaci贸n es directamente en el 鈥渋gual que鈥.

Tambi茅n puede revisar esta pagina esta pagina:
https://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/

Lo entiendo as铆: al crear un nuevo registro con un e-mail ya existente, el 鈥淥N 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 鈥渉istorial鈥 que sea un clon de una tabla 鈥減rospectos鈥 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.

INSERT INTO 鈥榗lients鈥 (client_id, name, email, birthdate, gender, active)
VALUES(1, 鈥楳aria Dolores Gomez鈥, 鈥楳aria [email protected]鈥, 鈥1971-06-06鈥, 鈥楩鈥, 1),
(2, 鈥楢drian Fernadez鈥, 鈥[email protected]鈥, 鈥1970-04-09鈥, 鈥楳鈥, 1),
(3, 鈥楳aria Luisa Marin鈥, 鈥榤aria [email protected]鈥, 鈥1957-07-30鈥, 鈥楩鈥, 1),
(4, 鈥楶edro Sanchez鈥, 鈥[email protected]鈥, 鈥1992-01-31鈥, 鈥楳鈥, 1);

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

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
(鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,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
(鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,0)
ON DUPLICATE KEY UPDATE active = VALUES(active)
;

Como siempre explica de manera precisa

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 pones AUTO_INCREMENT no de redundes poniendo a manos en el el insert (1,2,3,5 鈥) a mi me provoca un error

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

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;```

"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]

NUNCA USARLA!!!
No saben los problemas que ocasiona, yo fui testigo de lo que pasa cuando metes la pata con ese comando, pobre compa帽ero caido en batalla鈥︷煒

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.

IGNORE ALL <鈥 nunca usar

Muy bien!

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

ausgezeichnet!

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

Ok.

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.

buenas clases

super tipzaso!

Interesante.

Muy interesante!

Muy buena claseee

great

ignore all

listoooo

INSERT INTO clients (client_id, name, email, birthdate, gender, active) VALUES(1, 鈥楳aria dolores Gomez鈥, 鈥楳aria [email protected]鈥, 鈥1971-06-06鈥, 鈥楩鈥, 1),(2,鈥楢drian Fernandez鈥, 鈥楢drian.5581885[email protected]鈥, 鈥1970-04-09鈥, 鈥楳鈥, 1),(3,鈥楳aria Luisa Marin鈥, 鈥楳aria [email protected]鈥, 鈥1957-07-30鈥, 鈥楩鈥, 1),(4,鈥楶edro Sanchez鈥, 鈥[email protected]鈥, 鈥1992-01-31鈥, 鈥楳鈥, 1);
Query OK, 4 rows affected (0.18 sec)
Records: 4 Duplicates: 0 Warnings: 0

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

on duplicate key

馃毇Nunca usa ON DUPLICATE KEY IGNORE ALL鉀
PROHIBIDISIMOOOOOOOOOOOOOOOOOOOO

insert into clients(name,email,birthdate,created_at,gender,active,update_at) 
values
('Jose Fernandez','[email protected]','1970-04-09','1970-04-09','M',1,'2018-04-09 16:51:30'),
('Arismendy Fernandez','[email protected]','1970-04-09','1970-04-09','M',1,'2018-04-09 16:51:30'),
('Rocio Fernandez','[email protected]','1970-04-09','1970-04-09','M',1,'2018-04-09 16:51:30'),
('Juana Fernandez','[email protected]','1970-04-09','1970-04-09','M',1,'2018-04-09 16:51:30')
;```

Creo que esta es la clase que menos ve las personas鈥 De todas maneras es algo complejo llevar el ritmo del profesor

Una pregunta, se que est谩 fuera del tema, pero me gustar铆a saber, 驴C贸mo puedo subir una imagen mediante 鈥淐贸digo鈥 o 鈥淓nlace鈥. Si pudieran dejarme un ejemplo os agradecer铆a mucho.
Nota: Ya s茅 que se puede subir arrastrando, pero me interesan las otras opciones.

Para evitar errores elimin茅 mi tabla de clients, sustituy茅ndola por del profesor que esta en el apartado de 鈥淎rchivos鈥 all.sql para evitar errores.

Hola, Que significa este error al insertar los datos en clients?
ERROR 1136 (21S01): Column count doesn鈥檛 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);

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 鈥淚GNORE 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

Excelente informci贸n.

Una clase muy Buena

Muy bueno, Gracias!!

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鈥檛 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 (鈥楳aria Dolores Gomez鈥,鈥楳aria [email protected]鈥,鈥1971-06-06鈥,鈥楩鈥,1,CURRENT_TIMESTAMP),
(鈥楢drian Fernandez鈥,鈥[email protected]鈥,鈥1970-04-09鈥,鈥楳鈥,1,CURRENT_TIMESTAMP),
(鈥楳aria Luisa Marin鈥,鈥楳aria [email protected]鈥,鈥1957-07-30鈥,鈥楩鈥,1,CURRENT_TIMESTAMP),
(鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,1,CURRENT_TIMESTAMP);

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

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


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.

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);```

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

Si especifica una ON DUPLICATE KEY UPDATE cl谩usula y se inserta una fila, se generar谩 un valor duplicado en un UNIQUE铆ndice o PRIMARY KEY, se producir谩 una UPDATEde las filas anteriores.

INSERT INTO clients (client_id, name, email, birthdate,gender, active)
VALUES
(null,鈥楶edro Sanchez鈥,鈥[email protected]鈥,鈥1992-01-31鈥,鈥楳鈥,0)
on duplicate key update active = values(active);

\G - muestra la consulta de una manera mas ordenada