-- Creamos la tabla "Libros" con los campos ID, Titulo, Autor, Genero y Cantidad_Stock
-- ID es la llave primaria de la tabla la defininimos con PRIMARY KEY
-- PRIMARY KEY nos indica que el campo ID es único y no puede repetirse
-- Titulo, Autor, Genero y Cantidad_Stock son campos de la tabla
-- NOT NULL nos indica que el campo no puede ser nulo
-- varchar(100) nos indica que el campo es de tipo texto y puede tener hasta 100 caracteres
-- int unsigned nos indica que el campo es de tipo entero y solo puede tener valores positivos
-- Este SQL puede variar dependiendo del motor de base de datos que estemos utilizando
-- En este caso estamos utilizando MySQL
-- Para otros motores de base de datos como PostgreSQL, SQL Server, Oracle, etc
-- La sintaxis puede variar
CREATE TABLE Libros (
  ID INTEGER PRIMARY KEY,
  Titulo varchar(100) NOT NULL,
  Autor varchar(100) NOT NULL,
  Genero varchar(100),
  Cantidad_Stock int unsigned
);

-- Insertamos algunos datos de ejemplo
-- INSERT INTO es la acción de SQL, "Libros" nos indica de que tabla
-- (ID, Titulo, Autor, Genero, Cantidad_Stock) nos indica los campos que vamos a insertar
-- VALUES nos indica los valores que vamos a insertar
-- (1, "Cien años de Soledad", "Gabriel Garcia Marquez", "Ficción", 12) es el primer registro
-- (2, "La sombra del viento", "Carlos Ruiz", "Misterio", 8) es el segundo registro
-- (3, "Don Quijote de la Mancha", "Miguel de Cervantes", "Clasicos", 6) es el tercer registro
INSERT INTO Libros (ID, Titulo, Autor, Genero, Cantidad_Stock) VALUES 
(1, "Cien años de Soledad", "Gabriel Garcia Marquez", "Ficción", 12),
(2, "La sombra del viento", "Carlos Ruiz", "Misterio", 8),
(3, "Don Quijote de la Mancha", "Miguel de Cervantes", "Clasicos", 6);

-- Hacemos un select para ver todos los datos
-- El * indica que nos muestre todos los campos de la tabla
SELECT * FROM Libros;



-- Actualizamos la cantidad de stock del libro "La sombra del viento" a 0
-- UPDATE es la acción de SQL, "Libros" nos indica de que tabla
-- SET definimos que campo queremos actualizar y su nuevo valor
-- Cantidad_Stock = 0 es el nuevo valor que le asignamos
-- WHERE es el condicional.
-- En este caso actualizara cantidad de stock a 0
-- De todos los registros que coincidan con el Titulo = "La sombra del viento"
UPDATE Libros
SET Cantidad_Stock = 0
WHERE Titulo = "La sombra del viento";

-- Hacemos un nuevo select para ver todos los datos datos actualizados
SELECT * FROM Libros;

-- Hacemos un SELECT para mostrar los libros que tienen más o igual a 5 unidades en stock
-- SELECT ID, Titulo, Cantidad_Stock nos indica que campos especificos queremos mostrar.
-- FROM Libros nos indica de que tabla queremos obtener los datos
-- WHERE Cantidad_Stock >= 6 es el condicional que nos indica que solo queremos los registros que tengan 6 o más unidades en stock
SELECT ID, Titulo, Cantidad_Stock 
FROM Libros 
WHERE Cantidad_Stock >= 6;


-- Caso: Nos pidieron agregar un nuevo campo a la tabla Libros, para la Editorial
-- ALTER TABLE es la acción de SQL, "Libros" nos indica de que tabla
-- ADD COLUMN Editorial varchar(50) es la acción que agrega un nuevo campo a la tabla
-- varchar(50) nos indica que el campo es de tipo texto y puede tener hasta 50 caracteres
-- AFTER Autor nos indica que el campo Editorial se agregara después del campo Autor
ALTER TABLE Libros
ADD COLUMN Editorial varchar(50) AFTER Autor;

-- Hacemos un nuevo select para ver que se agrego el campo Editorial
-- Ya que no insertamos datos en el campo Editorial, este aparecerá como NULL
SELECT * FROM Libros;

-- Actualizamos todos los registros de la tabla Libros
-- SET Editorial = "Sin Editorial" es el nuevo valor que le asignamos al campo Editorial
-- No utilizamos WHERE por lo que se actualizara todos los registros de la tabla
-- SIEMPRE tener cuidado con el UPDATE ya que no se puede deshacer
-- Siempre es recomendable hacer un SELECT antes de hacer un UPDATE
-- Para asegurarnos que estamos actualizando los registros correctos
-- SIEMPRE utilizar WHERE con el condicional correcto
-- Si no se utiliza WHERE se actualizara todos los registros de la tabla
UPDATE Libros SET Editorial = "Sin Editorial";

-- Hacemos un nuevo select para ver que se actualizaron todos los registros
SELECT * FROM Libros;

-- Actualizamos el libro con ID = 1
-- SET Editorial = "Planeta" es el nuevo valor que le asignamos al campo Editorial
-- WHERE ID = 1 es el condicional que nos indica que solo queremos actualizar el registro con ID = 1
-- En este caso actualizara el registro con ID = 1
UPDATE Libros 
SET Editorial = "Planeta" 
WHERE ID = 1;

-- Hacemos un nuevo select para ver que se actualizo el registro con ID = 1
SELECT * FROM Libros
WHERE ID = 1;


-- Queremos Eliminar el libro con ID = 2
-- Hacemos un SELECT para ver que datos nos regresa
SELECT * FROM Libros
WHERE ID = 2;

-- Eliminamos el libro con ID = 2
-- DELETE es la acción de SQL, "Libros" nos indica de que tabla
-- WHERE es el condicional.
-- En este caso eliminara el registro con ID = 2
-- SIEMPRE tener cuidado con el DELETE ya que no se puede deshacer
-- Siempre es recomendable hacer un SELECT antes de hacer un DELETE
-- Para asegurarnos que estamos eliminando el registro correcto
-- SIEMPRE utilizar WHERE con el condicional correcto
-- Si no se utiliza WHERE se eliminaran todos los registros de la tabla
DELETE FROM Libros WHERE ID = 2;

-- Hacemos un nuevo select para verificar que el libro con ID = 2 fue eliminado
SELECT * FROM Libros
WHERE ID = 2;

-- Hacemos un nuevo select para ver todos los datos y vemos que el ID = 2 fue eliminado

SELECT * FROM Libros;

-- Haremos un DELETE sin condicional
DELETE FROM Libros;

-- En el nuevo select vemos que no hay registros en la tabla
-- No hay forma de recuperar los registros eliminados
-- SIEMPRE tener cuidado con el DELETE
-- Solo podemos recuperar los registros eliminados si tenemos un respaldo de la base de datos
SELECT * FROM Libros; 

MySQL online editor

Write, Run & Share MySQL queries online using OneCompiler's MySQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for MySQL. Getting started with the OneCompiler's MySQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'MySQL' and start writing queries to learn and test online without worrying about tedious process of installation.

About MySQL

MySQL is a open-source, free and very popular relational database management system which is developed, distributed and supported by Oracle corporation.

Key Features:

  • Open-source relational database management systems.
  • Reliable, very fast and easy to use database server.
  • Works on client-server model.
  • Highly Secure and Scalable
  • High Performance
  • High productivity as it uses stored procedures, triggers, views to write a highly productive code.
  • Supports large databases efficiently.
  • Supports many operating systems like Linux*,CentOS*, Solaris*,Ubuntu*,Windows*, MacOS*,FreeBSD* and others.

Syntax help

Commands

1. CREATE

CREATE TABLE table_name (
                column1 datatype,
                column2 datatype,
                ....);

Example

CREATE TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  dept TEXT NOT NULL
);

2. ALTER

ALTER TABLE Table_name ADD column_name datatype;

Example

INSERT INTO EMPLOYEE VALUES (0001, 'Dave', 'Sales');

3. TRUNCATE

TRUNCATE table table_name;

4. DROP

DROP TABLE table_name;

5. RENAME

RENAME TABLE table_name1 to new_table_name1; 

6. COMMENT

Single-Line Comments:

 --Line1;

Multi-Line comments:

   /* Line1,
   Line2 */

DML Commands

1. INSERT

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Note: Column names are optional.

Example

INSERT INTO EMPLOYEE VALUES (0001, 'Ava', 'Sales');

2. SELECT

SELECT column1, column2, ...
FROM table_name
[where condition]; 

Example

SELECT * FROM EMPLOYEE where dept ='sales';

3. UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition; 

Example

UPDATE EMPLOYEE SET dept = 'Sales' WHERE empId='0001'; 

4. DELETE

DELETE FROM table_name where condition;

Example

DELETE from EMPLOYEE where empId='0001'; 

Indexes

1. CREATE INDEX

  CREATE INDEX index_name on table_name(column_name);
  • To Create Unique index:
  CREATE UNIQUE INDEX index_name on table_name(column_name);

2. DROP INDEX

DROP INDEX index_name ON table_name;

Views

1. Create a View

Creating a View:
CREATE VIEW View_name AS 
Query;

2. How to call view

SELECT * FROM View_name;

3. Altering a View

ALTER View View_name AS 
Query;

4. Deleting a View

DROP VIEW View_name;

Triggers

1. Create a Trigger

CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW [trigger_order] trigger_body
/* where
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
trigger_order: { FOLLOWS | PRECEDES } */

2. Drop a Trigger

DROP TRIGGER [IF EXISTS] trigger_name;

Stored Procedures

1. Create a Stored Procedure

CREATE PROCEDURE sp_name(p1 datatype)
BEGIN
/*Stored procedure code*/
END;

2. How to call Stored procedure

CALL sp_name;

3. How to delete stored procedure

DROP PROCEDURE sp_name;

Joins

1. INNER JOIN

SELECT * FROM TABLE1 INNER JOIN TABLE2 where condition;

2. LEFT JOIN

SELECT * FROM TABLE1 LEFT JOIN TABLE2 ON condition;

3. RIGHT JOIN

SELECT * FROM TABLE1 RIGHT JOIN TABLE2 ON condition;

4. CROSS JOIN

SELECT select_list from TABLE1 CROSS JOIN TABLE2;