Вы находитесь на странице: 1из 13

Fundamentos de SQL (Structured Query

Language)
Introducción a SQL
SQL (Structured Query Language) o en
español Lenguaje de Consulta Estructurado es un
lenguaje de acceso a bases de datos relacionales
por medio de distintos tipos de operaciones que
permiten recuperar información de ellas de forma
sencilla.

DDL, DML, DCL y TCL


DDL (Data Definition Language):
Permite crear y modificar la estructura de
una base de datos.

 CREATE: Utilizado para crear nuevas tablas,


campos e índices.
 ALTER: Utilizado para modificar las tablas
agregando campos o cambiando la definición de
los campos.
 DROP: Empleado para eliminar tablas e índices.
 TRUNCATE: Empleado para eliminar todos los
registros de una tabla.
 COMMENT: Utilizado para agregar comentarios al
diccionario de datos.
 RENAME: Tal como su nombre lo indica es
utilizado para renombrar objetos.

DML (Data Manipulation Language):


Permite recuperar, almacenar, modificar, eliminar,
insertar y actualizar datos de una base de datos.
 SELECT: Utilizado para consultar registros de
la base de datos que satisfagan un criterio
determinado.
 INSERT: Utilizado para cargar de datos en
la base de datos en una única operación.
 UPDATE: Utilizado para modificar los valores
de los campos y registros especificados
 DELETE: Utilizado para eliminar registros de
una tabla de una base de datos.

DCL (Data Control Language):


Permite crear roles, permisos e integridad
referencial, así como el control al acceso a
la base de datos.

 GRANT: Usado para otorgar privilegios de


acceso de usuario a la base de datos.
 REVOKE: Utilizado para retirar privilegios de
acceso otorgados con el comando GRANT.

TCL (Transactional Control Language):


Permite administrar diferentes transacciones que
ocurren dentro de una base de datos.

 COMMIT: Empleado para guardar el trabajo


hecho.
 ROLLBACK: Utilizado para deshacer la
modificación que hice desde el último COMMIT.

¿Qué es la integridad referencial?


La integridad referencial es un sistema compuesto
por reglas que permiten la garantía de las
relaciones entre las filas de la tabla
relacionadas para que sean válidas y que estas
relaciones no se eliminen ni se modifiquen por
error.

Motores SQL
 DB2
 Firebird
 HSQL
 Informix
 Interbase
 MariaDB
 Microsoft SQL Server
 Oracle
 PostgreSQL
 Progress
 PervasiveSQL
 SQLite
 Sybase ASE
 MySQL

Ventajas y desventajas de SQL


Las ventajas de SQL son:

 Son transaccionales y no se perderá ningún


dato.
 Existe álgebra y cálculo relacional.
 Estándares SQL.
 Fundamentos relacionales.
 Procedimientos almacenados en diferentes
lenguajes.

Las desventajas de SQL son:

 Realizar cambios a una tabla muy grande puede


ser un gran dolor de cabeza.
 Pueden tener problemas
de performance dependiendo de discos duros y
otras operaciones IO.
 No todas tienen integridad referencial.
 No son compatibles entre BDs.

Fundamentos de NoSQL
¿Qué es NoSQL?
NoSQL es la abreviación de Not Only SQL, al hablar
de este tipo de base de datos se hace referencia a
una amplia clase de sistemas de administración de
datos que difieren del modelo "clásico" de
relaciones entre entidades. En otro termino es
cualquier otro motor o base de
datos que NO use SQL.

Tipos de base de datos NoSQL


Bases de datos documentales
Este tipo de base de datos son las más versátiles,
se guarda los datos como un documento por medio
de JSON, BSON o XML, utilizando una clave única
para cada registro. En este tipo de implementación
se permite recuperar datos por medio de busquedas
de clave - valor.

{
"id": "10280",
"city": "NEW YORK",
"state": "NY",
"pop": "5574",
"loc": [
-74.016323,
40.710537
]
}
Este tipo de base de datos es usado
para relacionar datos
representándolos mediante
grafos. Los datos son
almacenados en estructuras de
grafos con nodos (entidades),
con propiedades (información
entre entidades) y líneas
(conexiones entre las entidades).
Bases de datos clave - valor
Este modelo de base de datos es el más sencillo en
cuanto a funcionalidad y el más popular. En este
tipo de sistema cada elemento está identificado
por una clave única, permitiendo así la
recuperación de datos de forma muy rápida. Su
eficiencia de lectura y escritura la caracterizan.
Generación y diseño de una base de datos
con MySQL
Introducción a MySQL: Uso de shell, comandos
básicos y tablas
MySQL es la base de datos de código abierto más
popular del mercado.
¿Como instalar MySQL?
En la página oficial de MySQL puedes consultar
los pasos de instalación.
¿Como acceder a MySQL?
Para acceder a MySQL basta usar el comando mysql -u
root y así de esta forma acceder sin especificar
una contraseña al usuario root de MySQL.
Algunos comandos útiles para la gestión de MySQL
v5.7 son los siguientes:

 SHOW DATABASES; Imprime las base de


datos existentes en MySQL.
 CREATE DATABASE [nombre]; Permite crear una base
de datos.
 USE [database-name]; Permite usar una base de
datos identificándola por su nombre.
 SHOW TABLES; Imprime las tablas existentes de
una base de datos. Se debe estar posicionado
dentro de dicha base de datos.
 DESCRIBE [database-name].[table]; o SHOW COLUMNS
FROM mysql.db; Describe la estructura de una
tabla de una base de datos.
 CREATE TABLES [name] (..., ..., ...) Permite crear
una tabla en una base de datos y especificar
su diseño.

CREATE TABLE books (


book_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCRE
MENT,
title VARCHAR(60) NOT NULL,
description TEXT,
author VARCHAR(100) NOT NULL,
publisher_id INTEGER UNSIGNED NOT NULL,
price DECIMAL(5,2),
copies INT NOT NULL DEFAULT 0
);

 UNSIGNED: Impide usar números negativos en una


columna.
 PRIMARY KEY: Identifica a la llave primaria
(por defecto es única).
 AUTO_INCREMENT: Establece un número que se irá
incrementando automáticamente.
 NOT NULL: Obliga a que el campo no quede
vacío.

CREATE TABLE publishers (


publisher_id INTEGER UNSIGNED PRIMARY KEY AUTO_
INCREMENT,
name VARCHAR(100) NOT NULL,
country VARCHAR(20)
);
CREATE TABLE users (
user_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCRE
MENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);

 UNIQUE: Garantiza que no existan valores


repetidos en una columna, es decir, solo un
email por usuario.

Creación de tablas mediante la arquitectura de


información (buenas prácticas)
CREATE TABLE actions (
action_id INTEGER UNSIGNED PRIMARY KEY AUTO_INC
REMENT,
book_id INTEGER UNSIGNED NOT NULL,
user_id INTEGER UNSIGNED NOT NULL,
action_type ENUM('venta', 'prestamo', 'devoluci
on') NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_T
IMESTAMP
);

 ENUM('...', '...', ...): Especifica los


valores que se almacenaran y los hace
obligatorios.
 DEFAULT 'valor'/variable: Especifica un valor
por defecto.
 TIMESTAMP: Retorna la fecha en la que se crea
el registro. El formato por defecto de
TIMESTAMP es 2017-31-12 24:59:59.

INSERT INTO publishers (name, country)


VALUES ('Platzi', 'USA');
 SELECT [*] FROM [table-name]; Imprime los
registros almacenados en una tabla.
 SELECT [column] FROM [table-name] AS
[alias]; Selecciona e imprime una columna
asignándole un alias.
 SELECT [*] FROM [table-name] WHERE [column] =
['valor'] \G Imprime el (o los) registro(s) que
coincida con la instrucción dada. La \G al
final le indica a MySQL que los datos se debe
mostrar con un "diseño" de tarjeta.
 SELECT count([*]) FROM [table-name]; Imprime la
cardinalidad (número) de un conjunto de
elementos.
 TRUNCATE [table-name]; Elimina todas las filas de
una tabla y reinicia el contador de la clave
primaria (en caso de estar "automático"), en
otras palabras, TRUNCATE borra todo lo que
exista dentro de la tabla menos la definición
de la misma.
 DROP TABLE [table-name]; Elimina una tabla por
completo de la base de datos (en la que se
encuentra posicionado).

Nota: Los asteriscos determinan que se


seleccionarán todas las columnas de una tabla. El
asterisco puede ser reemplazado por una columna en
particular, así se optimizará el tiempo de
respuesta.

Cómo crear relaciones entre tablas y estructurar datos


Una clausura JOIN se usa para combinar filas de
dos o más tablas, basada en una relación de
columnas entre ellas.
Tipos de JOINs
Existen diferentes tipos de JOINs entre las cuales
se destacan principalmente:
 (INNER) JOIN: Retorna sólo los registros que
coincidan entre ambas tablas.
 SELECT
 usuarios.name,
 libros.title
 FROM users AS usuarios
 INNER JOIN books AS libros
 ON usuarios.user_id = libros.book_i
d;

 LEFT JOIN: Retorna todos los registros de la


tabla izquierda (A) junto con los registros
que coinciden con la tabla derecha (B). La
prioridad es de la tabla A.
 SELECT
 usuarios.name,
 libros.title
 FROM users AS usuarios
 LEFT JOIN books AS libros
 ON usuarios.user_id = libros.book_i
d;
 RIGHT JOIN: Retorna todos los registros de la
tabla derecha (B) junto con los registros que
coinciden con la tabla izquierda (A). La
prioridad es de al tabla B.
 SELECT
 usuarios.name,
 libros.title
 FROM users AS usuarios
 RIGHT JOIN books AS libros
 ON usuarios.user_id = libros.book_i
d;

 FULL JOIN: Retorna todos los registros de la


tabla izquierda (A) y derecha (B) siempre y
cuando los registros coincidan. Es la
combinación entre LEFT JOIN y RIGHT JOIN.
Nota importante: En MySQL no existe FULL
JOIN pero con la siguiente sintaxis se puede
"emular".

SELECT
usuarios.name,
libros.title
FROM users AS usuarios
LEFT JOIN books AS libros
ON usuarios.name = libros.title
UNION
SELECT
usuarios.name,
libros.title
FROM users AS usuarios
RIGHT JOIN books AS libros
ON usuarios.name = libros.title;

Continuando con el proyecto y dandole prioridad a


la tabla actions con la siguiente consulta se
relacionarán todas las acciones con las diferentes
tablas.
SELECT
acciones.action_id
libros.title,
acciones.action_type,
usuarios.name
FROM actions AS acciones
LEFT JOIN books AS libros
ON acciones.book_id = libros.book_id
LEFT JOIN users AS usuarios
ON acciones.user_id = usuarios.user_id;

Manipulación avanzada de datos en Mysql


Consultas, Condicionales y Operaciones Matemáticas
en MySQL
 ORDER BY [column]; Permite ordenar tomando una
columna como referencia.
 GROUP BY [olumn]; Permite agrupar tomando una
columna com referencia.
 IF([condition], [then], [else]; Condicional IF, en
caso de que la condición sea verdadera hacer
algo, en cualquier otro caso hacer lo otro.
 WHERE [column] [condition] [valor]; Condición que
indica que si una columna es igual, menor,
mayor, diferente, etc... de un valor.

Вам также может понравиться