sql >> Base de Datos >  >> RDS >> Mysql

¿Qué es SQL? ¿Que es una base de datos? Sistemas de gestión de bases de datos relacionales (RDBMS) explicados en lenguaje sencillo.

Las bases de datos pueden ser difíciles de entender. Sin embargo, son esenciales para la programación completa y la creación de servicios de back-end que almacenan datos.

En esta publicación, desmitificaré SQL, bases de datos y sistemas de administración de bases de datos relacionales. También usaré algunas analogías con el Mundo Mágico, incluido el propio Harry Potter y algunas de las clases que toma en Hogwarts.

Antes de sumergirnos en los términos clave, definamos qué es una base de datos en sí misma:

Una base de datos es un conjunto estructurado de datos guardados en una computadora, especialmente uno al que se puede acceder de varias maneras. Es esencialmente un conjunto organizado de datos en una computadora, a los que se puede acceder electrónicamente desde un sistema informático.

Términos clave

A continuación se presentan algunos términos clave con los que comenzaremos:

  • RDMS: Sistemas de gestión de bases de datos relacionales. Este marco para bases de datos es la base de MySQL.
  • SQL: Lenguaje de consulta estructurado.
  • Tablas: Objetos de base de datos que transportan datos. Un ejemplo de nombre de tabla es "Estudiantes", "Profesores" o "Cursos".
  • Campos: Los valores de una tabla se conocen como campos. Los campos de ejemplo para los estudiantes serían "Nombre", "Apellido" y "GPA".
  • Registro/Fila: Una entrada individual en la tabla.

Después de agregar Profesores y Cursos a la base de datos, podemos tener tablas para Estudiantes, Profesores y Cursos.

A medida que avancemos en la guía, solo usaremos la Estudiantes ejemplo aquí como referencia. Si tuvo la suerte de ser contratado como ingeniero de software en Hogwarts, su base de datos podría hacer un buen uso de algunos de estos comandos :D

Sentencias SQL

Sintaxis

El punto y coma es la forma estándar de separar una instrucción SQL de otra. Permite que se ejecuten varias sentencias SQL en la misma llamada. En esta guía, tendremos un punto y coma al final de cada declaración.

Los comandos SQL más importantes

Crear :Crea una nueva tabla SQL.

Si estuviéramos creando la base de datos de estudiantes para la Escuela Hogwarts, por ejemplo, usaríamos CREAR hacer una tabla llamada "Estudiantes".

  • Sintaxis
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);
  • Ejemplo
CREATE TABLE Students
                (first_name VARCHAR(255),
                last_name VARCHAR(255),
                login VARCHAR(255),
                age INTEGER,
                gpa REAL,
                house VARCHAR(255));

Soltar :Elimina una tabla. ¡Tenga mucho cuidado al usar este comando ya que borrará todos los datos de la tabla!

Si quisiéramos eliminar toda la base de datos de Estudiantes, usaremos DROP para realizar esa acción.

  • Sintaxis
DROP TABLE table_name;
  • Ejemplo
DROP TABLE Students;

Insertar :agrega nuevas filas de datos a una tabla.

Usaríamos INSERTAR para agregar nuevos estudiantes a medida que se inscriben en Hogwarts.

  • Sintaxis
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • Ejemplo
INSERT 
INTO Students(first_name, last_name, login, age, gpa, house)
VALUES 
('Harry',     'Potter', 'theboywholived', 15, 4.0, 'Gryffindor'),
('Hermionie', 'Granger','granger2',       15, 4.5, 'Gryffindor'),
('Ron',       'Weasley','weasley7',       15, 3.7, 'Gryffindor'),
('Draco',     'Malfoy', 'malfoy999',      15, 4.0, 'Slytherin'),
('Cedric',    'Diggory','diggory123',     15, 4.0, 'Hufflepuff');

Seleccionar :se utiliza para obtener datos en una base de datos para devolverlos en formato de tabla.

Si quisiéramos recuperar todos los Nombres de Estudiantes que están en la Casa Gryffindor, usaríamos el SELECCIONAR dominio. El siguiente ejemplo consulta la tabla Estudiantes por el nombre y apellido de cada estudiante en la base de datos, que para nosotros son solo las cinco filas descritas anteriormente.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name;
  • Ejemplo
SELECT first_name, last_name FROM Students;
nombre apellido
Harry Alfarero
Hermionie Granjero
Ron Weasley
Draco Malfoy
Cedric Diggory

Alternativamente, si queremos seleccionar todos los campos de la tabla, nuestro comando utilizaría la sintaxis "*", lo que significa seleccionar todos los campos:

SELECT * FROM Students;
nombre apellido iniciar sesión edad GPA casa
Harry Alfarero elniñoquevivió 15 4 Gryffindor
Hermionie Granjero granger2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor
Draco Malfoy malfoy999 15 4 Slytherin
Cedric Diggory diggory123 15 4 Hufflepuff

Cláusulas

Una cláusula es un fragmento lógico de una instrucción SQL y es (en teoría) un campo opcional.

En la declaración anterior, simplemente devolvimos todos los campos en la base de datos del Estudiante. No especificamos una condición sobre los valores que se devuelven.

¿Qué pasaría si no quisiéramos consultar a todos los estudiantes, sino solo a aquellos cuya casa es Gryffindor? ¿Qué hay de consultar a los estudiantes cuyo primer nombre comienza con "H", o estudiantes en Hufflepuff y Slytherin? Estos casos más complejos se resuelven mediante cláusulas SQL.

A continuación se muestra una descripción general de las cláusulas más comunes, pero hay varias cláusulas más en el lenguaje SQL. Aquí hay una buena descripción general si desea obtener más información.

Ejemplos de Cláusulas

Dónde: Se utiliza para indicar una condición al obtener datos de una base de datos. Volviendo al ejemplo con Select, tendríamos que usar WHERE para especificar la casa como Gryffindor.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • Ejemplo
SELECT * FROM Students
WHERE house='Gryffindor';
nombre apellido iniciar sesión edad GPA casa
Harry Alfarero elniñoquevivió 15 4 Gryffindor
Hermionie Granjero granger2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Y Se utiliza para combinar varias cláusulas en una instrucción SQL, donde todas las condiciones separadas por AND son verdaderas. Usaríamos AND para obtener estudiantes de Gryffindor que tengan un GPA superior a 3.8.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
  • Ejemplo
SELECT * FROM Students
WHERE house='Gryffindor' AND gpa>3.8;
nombre apellido iniciar sesión edad GPA casa
Harry Alfarero elniñoquevivió 15 4 Gryffindor
Hermionie Granjero granger2 15 4.5 Gryffindor

O :Similar a AND, pero solo devuelve datos en los que solo UNA de las condiciones separadas por OR es verdadera. Si quisiéramos recuperar estudiantes en Hufflepuff y Slytherin, pero no en ambos, usaríamos el comando OR.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
  • Ejemplo
SELECT * FROM Students
WHERE house='Slytherin' OR house='Hufflepuff';
nombre apellido iniciar sesión edad GPA casa
Draco Malfoy malfoy999 15 4 Slytherin
Cedric Diggory diggory123 15 4 Hufflepuff

Me gusta: Se usa con WHERE para buscar un patrón específico. Si solo quisiéramos el nombre y apellido de los magos/brujas con nombres que comienzan con "H", podríamos utilizar el comando Me gusta.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
  • Ejemplo
SELECT first_name, last_name FROM Students
WHERE first_name LIKE 'H%';
nombre apellido
Harry Alfarero
Hermionie Granjero

Recuento: Se utiliza para encontrar el recuento de una columna (o columnas) en una tabla.

  • Sintaxis
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
  • Ejemplo
SELECT COUNT(first_name) FROM Students;
COUNT(nombre)
5

Otros dos comandos que usan la misma sintaxis son AVG y SUM. AVG calculará el promedio de todos los valores y sum calculará la suma de todos los valores.

Seleccionar límite: Se utiliza para cortar las respuestas a solo una cantidad específica. La forma en que se eligen las mejores respuestas es por orden de inserción cronológica en la base de datos.

  • Sintaxis
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
  • Ejemplo
SELECT * FROM Students LIMIT 3;
nombre apellido iniciar sesión edad GPA casa
Harry Alfarero elniñoquevivió 15 4 Gryffindor
Hermionie Granjero granger2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Otros Comandos Utiles

Ordenar por: Ordena los resultados en orden ascendente o descendente.

  • Sintaxis
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • Ejemplo
SELECT * FROM Students ORDER BY first_name;
nombre apellido iniciar sesión edad GPA casa
Cedric Diggory diggory123 15 4 Hufflepuff
Draco Malfoy malfoy999 15 4 Slytherin
Harry Alfarero elniñoquevivió 15 4 Gryffindor
Hermionie Granjero granger2 15 4.5 Gryffindor
Ron Weasley weasley7 15 3.7 Gryffindor

Agrupar por: Agrupa las categorías que tienen los mismos valores en filas. Si desea saber el número de estudiantes en cada casa (3 en Gryffindor, por ejemplo), puede utilizar el comando Agrupar por.

  • Sintaxis
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
  • Ejemplo
SELECT COUNT(first_name), house FROM Students GROUP BY house;
COUNT(nombre) casa
3 Gryffindor
1 Hufflepuff
1 Slytherin

¡Finalmente, aquí hay un DB Fiddle que muestra todos los comandos anteriores en acción!

Bases de datos normalizadas frente a desnormalizadas

Al diseñar una base de datos, existen dos patrones de diseño principales que puede seguir, cada uno con sus propias compensaciones.

Normalizado: Optimiza para minimizar la redundancia no por tiempo de lectura.

Digamos que tenemos una tabla de cursos que tiene una identificación de maestro para el maestro que enseña ese curso. También tenemos una base de datos de maestros que tiene el nombre del maestro.

Cuando queramos obtener los nombres de los profesores que enseñan un curso en particular, tendremos que consultar las tablas de Cursos y Profesores porque la tabla del curso no tiene el nombre del profesor (eficiente pero redundante).

Desnormalizado: Optimiza para tiempo de lectura , no para minimizar la redundancia.

Digamos que tenemos una tabla de cursos que tiene una ID de maestro Y un nombre de maestro. Tenemos una base de datos de maestros que también tiene el nombre del maestro. Cuando queremos obtener los nombres de los profesores en el curso, podemos usar la tabla del curso (redundante pero eficiente).

Integridad de datos

Es vital para los usuarios que los datos con los que interactúan sean seguros, correctos y sensibles. Por ejemplo, asegurarse de que la edad no sea un número negativo o que no haya dos estudiantes que tengan la misma información. Nos referimos a esto como integridad de datos.

La integridad de los datos adopta varias formas y se puede dividir en cuatro categorías:

  • Integridad de la entidad :No existen filas duplicadas en una tabla. Por ejemplo, no podemos insertar a Ron Weasley dos veces en la base de datos.
  • Integridad del dominio :Restringir el tipo de valores que se pueden insertar para hacer cumplir los valores correctos. Por ejemplo, una Casa solo puede ser Gryffindor, Ravenclaw, Slytherin o Hufflepuff.
  • Integridad referencial :Los registros que son utilizados por otros registros no se pueden eliminar. No se puede eliminar a un profesor si actualmente está enseñando un curso.
  • Integridad definida por el usuario: Una categoría "otra" que consta de lógica y reglas relacionadas con el negocio para la base de datos.

Bases de datos SQL comunes

  • Oráculo :Muy estable y maduro pero puede ser costoso
  • MySQL :Ligero y rápido de configurar, pero no tan maduro como Oracle
  • PostgreSQL :Bueno para ciertos casos de uso pero no súper rápido

Recursos

  • SWEPrep:preguntas de la entrevista directamente en su bandeja de entrada
  • SQL y bases de datos de freeCodeCamp
  • Código limpio
  • Java efectivo
  • Documentación de Oracle
  • Documentación MySql
  • Documentación de PostgreSQL

Mantenerse actualizado

  • Hilos de Reddit :Grandes temas sobre bases de datos, SQL y nuevas tecnologías
  • Noticias de piratas informáticos: Realmente un gran recurso para estar al tanto de los últimos desarrollos en la industria de la tecnología
  • CodePen: Un excelente recurso para descubrir buenas prácticas de SQL.