SQL (por sus siglas en inglés Structured Query Language; en español lenguaje de consulta estructurada)
Definiciones básicas
Este tutorial de SQL brinda un aprendizaje único sobre el lenguaje de consulta estructurado y ayuda a practicar los comandos SQL, lo que proporciona resultados inmediatos. SQL es un lenguaje de base de datos, incluye la creación de bases de datos, la eliminación, la búsqueda de filas y la modificación de filas, etc. 1970. El lenguaje SQL se basó en el modelo relacional propuesto por Edgar Frank Codd en su artículo de investigación de 1970 “El modelo relacional de datos para grandes bancos de datos compartidos”, “Ted” Codd de IBM es conocido como el padre de las bases de datos relacionales. 1974 — Aparece el lenguaje de consulta estructurado, fue desarrollado por Donald D. Chamberlin y Raymond F. Boyce en los laboratorios de IBM1978 — IBM trabajó para desarrollar las ideas de Codd y lanzó un producto llamado System/R.1986 — IBM desarrolló el primer prototipo de base de datos relacional y estandarizado por ANSI. La primera base de datos relacional fue lanzada por Relational Software y luego se convirtió en Oracle ¿Que es una base de datos? Una base de datos es una recopilación organizada de información o datos estructurados, que normalmente se almacena de forma electrónica en un sistema informático. Normalmente, una base de datos está controlada por un sistema de gestión de bases de datos (DBMS). En conjunto, los datos y el DBMS, junto con las aplicaciones asociadas a ellos, reciben el nombre de sistema de bases de datos, abreviado normalmente a simplemente base de datos¹. Las bases de datos han evolucionado drásticamente desde su inicio a principios de la década de 1960. Las bases de datos de navegación, como la base de datos jerárquica (que se basaba en un modelo de árbol y permitía una relación de uno a muchos) y la base de datos de red (un modelo más flexible que permitía relaciones múltiples), eran los sistemas originales que se utilizaban para almacenar y manipular datos. Aunque eran sencillos, estos primeros sistemas eran inflexibles. En la década de 1980, se hicieron populares las bases de datos relacionales, seguidas de las bases de datos orientadas a objetos en la década de 1990. Más recientemente, las bases de datos NoSQL surgieron como respuesta al crecimiento de Internet y la necesidad de acelerar la velocidad y el procesamiento de los datos no estructurados. Hoy en día, las bases de datos en la nube y las bases de datos autogestionadas están abriendo nuevos horizontes en lo que respecta a la forma en la que se recopilan, se almacenan, se gestionan y se utilizan los datos¹. Origen: (1) Qué es una base de datos | Oracle México. https://www.oracle.com/mx/database/what-is-database/.(2) Base de Datos – Concepto, tipos y ejemplos. https://concepto.de/base-de-datos/. ¿Qué es RDBMS?RDBMS significa Sistema de gestión de bases de datos relacionales. RDBMS es la base para SQL y para todos los modernos sistemas de bases de datos como MS SQL Server, IBM DB2, Oracle, MySQL y Microsoft Access. Un sistema de gestión de base de datos relacional (RDBMS) es un sistema de gestión de base de datos (DBMS) que se basa sobre el modelo relacional introducido por E. F. Codd. ¿Qué es TABLE?Los datos en RDBMS se almacenan en objetos de base de datos llamados tablas. La tabla es una colección de entradas de datos relacionados y consta de columnas y filas. IMPORTANTE, una tabla es la forma más común y simple de almacenamiento de datos en una base de datos relacional. ¿Qué es el campo?Cada tabla se divide en entidades más pequeñas llamadas campos. Los campos en la tabla CLIENTES consisten en ID,NOMBRE, EDAD, DOMICILIO y SALARIO. Un campo es una columna en una tabla que está diseñada para mantener información específica sobre cada registro en la tabla. ¿Qué es registro o fila o Tupla?Un registro, también llamado fila de datos, es cada entrada individual que existe en una tabla. Por ejemplo, hay 33 registros en la tabla CLIENTES. El registro es una entidad horizontal en una tabla. ¿Qué es la columna?Una columna es una entidad vertical en una tabla que contiene toda la información asociada con un campo específico en una tabla. ¿Qué es el valor NULL?Un valor NULL en una tabla es un valor en un campo que parece estar en blanco, lo que significa que un campo con un valor NULL es uncampo sin valor. Es muy importante comprender que un valor NULL es diferente a un valor cero o un campo que contiene espacios.Un campo con un valor NULL es uno que se ha dejado en blanco durante la creación del registro.
¿Qué es SQL y por qué es importante?
SQL es lenguaje de consulta estructurado, comúnmente usado en bases de datos relacionales, es un lenguaje de programación que se utiliza para administrar y manipular datos en un sistema de administración de bases de datos relacionales (RDBMS). Con el crecimiento de las organizaciones basadas en datos, SQL es un herramienta esencial para los analistas de datos, los desarrolladores y las personas que manejan datos en cualquier organización.
SQL es un estándar ANSI (Instituto Nacional Estadounidense de Estándares) utiliza un lenguaje natural para realizar varias operaciones en bases de datos, como crear estructuras en donde se almacenara información como datos.
Es Importante que las organizaciones utilicen bases de datos en lugar de archivos, seré concreto pero déjenme saber sus comentarios y profundizo en el tema , desde mi perspectiva deben almacenar lo mas importante que en este caso son LOS DATOS DE LOS CLIENTES ya que SON el nuevo dinero de la organización desde los datos comenzarán hacer sus campañas, dicho lo anterior estas son las 4 principales razones:
1) Acceso rápido a los datos, 2) Evita datos repetidos o duplicados, 3) Aumenta la productividad y 4) Portabilidad
Existen 5 categorías para comunicarse con el sistema (RDBMS) que gestiona los datos :
Diferencia de PL/SQL vs SQL
PL/SQL (Procedural Language/Structured Query Language), lanzado en 1992 es un lenguaje de programación incrustado en Oracle. Fue desarrollado por Oracle Corporation. PL/SQL soporta todas las consultas, ya que la manipulación de datos que se usa es la misma que en SQL, pero incluye nuevas características como el manejo de variables, estructuras modulares, estructuras de control de flujo y toma de decisiones, y control de excepciones. En resumen, PL/SQL es una combinación de SQL junto con las características de procedimiento de los lenguajes de programación.
Una pequeña consideración en 1989 fue lanzan al mercado el ERP de Oracle, conocido como Oracle Financials®, junto a la versión 6 del motor y ya tenia una versión del Lenguaje procedural (Pl/Sql).
PL/SQL es la forma de utilizar un lenguaje de programar en 3ra generación “secuencial” usando la 4ta generación para ORACLE, pero tambien existe T-SQL utilizando en MS SQL o JET SQL para MS Access
Restricciones SQL:
Las restricciones son las reglas aplicadas en las columnas de datos de la tabla. Se utilizan para limitar el tipo de datos que pueden ir en una tabla. Esto asegura la precisión y confiabilidad de los datos en la base de datos. Las restricciones pueden ser de nivel de columna o de tabla. Las restricciones de nivel de columna se aplican solo a una columna donde ya que las restricciones de nivel de tabla se aplican a toda la tabla.
Reglas para SQL:
Punto y Coma “;” se utiliza para finalizar la declaración sqlEl query se puede dividir en líneas, pero las palabras clave noLos identificadores, nombres de operadores, literales están separados por uno o más espacios u otros delimitadoresLa Coma “,” separa parámetros sin cláusulaUn espacio separa una cláusulaLas palabra reservada no se puede usar como identificador a menos que se incluya entre comillas doblesLos identificadores pueden contener hasta 30 caracteresLos identificadores deben comenzar con caracteres alfabéticosLos valores numéricos se pueden representar mediante valores simplesLos comentarios pueden cerrarse entre los símbolos /* y */ si son varias líneas o pueden usar “–” comentar todo a la derecha
Operadores Lógicos SQL:
Aquí hay una lista de operadores lógicos disponibles en SQL. ALL o * Se utiliza para comparar un valor con todos los valores de otro conjunto de valores.AND Permite la existencia de múltiples condiciones en una sentencia SQL.ANY Se utiliza para comparar un valor con cualquier valor aplicable en la lista según la condición.BETWEEN se utiliza para buscar valores que están dentro de un conjunto de valores, dado el valor mínimo y el valor máximo.EXISTS se utiliza para buscar la presencia de una fila en una tabla específica que cumple con ciertos criterios.IN se utiliza para comparar un valor con una lista de valores literales que se han especificado.LIKE se usa para comparar un valor con valores similares usando comodines operadores.NOT invierte el significado del operador lógico con el que se utiliza. (Este es un operador de negación)Por ejemplo: NOT EXISTS, NOT BETWEEN, NOT IN, etc.OR se usa para combinar varias condiciones en el WHERE de una instrucción SQL. IS NULL se utiliza para comparar un valor con un valor NULL.UNIQUE busca la unicidad en cada fila de una tabla específica (no duplicados)
Sintaxis SQL:
SQL es seguido por un conjunto único de reglas y pautas llamado Sintaxis. Aqui te brindo un inicio rápido con SQL enumerando toda la sintaxis SQL básica:
Todas las declaraciones SQL comienzan con cualquiera de las palabras clave como SELECT, INSERT , UPDATE ,DELETE, ALTER, DROP, CREATE, USE, SHOW y todas las declaraciones terminan con un punto y coma (;).
Un punto importante a tener en cuenta es que SQL no distingue entre mayúsculas y minúsculas, lo que significa que SELECT y select tienen el mismo significado en las declaraciones de SQL, pero MySQL marca la diferencia en los nombres de las tablas. Entonces, si está trabajando con MySQL, entonces necesita dar nombres de tabla tal como existen en la base de datos.
SQL SELECT Statement:
SELECT column1, column2….columnN FROM table_name;
SQL DISTINCT Clause:
SELECT DISTINCT column1, column2….columnN FROM table_name;
SQL WHERE Clause:
SELECT column1, column2….columnN FROM table_name WHERE CONDITION;
SQL AND/OR Clause:
SELECT column1, column2….columnN FROM table_name WHERE CONDITION-1 {AND|OR} CONDITION-2;
SQL IN Clause:
SELECT column1, column2….columnN FROM table_name WHERE column_name IN (val-1, val-2,…val-N);
SQL BETWEEN Clause:
SELECT column1, column2….columnN FROM table_name WHERE column_name BETWEEN val-1 AND val-2;
SQL Like Clause:
SELECT column1, column2….columnN FROM table_name WHERE column_name LIKE { PATTERN };
SQL ORDER BY Clause:
SELECT column1, column2….columnN FROM table_name WHERE CONDITION ORDER BY column_name {ASC|DESC};
SQL GROUP BY Clause:
SELECT SUM(column_name) FROM table_name WHERE CONDITION GROUP BY column_name;
SQL COUNT Clause:
SELECT COUNT(column_name) FROM table_name WHERE CONDITION;
SQL HAVING Clause:
SELECT SUM(column_name) FROM table_name WHERE CONDITION GROUP BY column_name HAVING (arithematic function condition);
SQL CREATE TABLE Statement:
CREATE TABLE table_name(column1 datatype, column2 datatype, column3 datatype, PRIMARY KEY( one or more columns ) );
SQL DROP TABLE Statement:
DROP TABLE table_name;
SQL CREATE INDEX Statement :
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,…columnN);
SQL DROP INDEX Statement :
ALTER TABLE table_name DROP INDEX index_name;
SQL DESC Statement :
DESC table_name;
SQL TRUNCATE TABLE Statement:
TRUNCATE TABLE table_name;
SQL ALTER TABLE Statement:
ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_ype};
SQL ALTER TABLE Statement (Rename) :
ALTER TABLE table_name RENAME TO new_table_name;
SQL INSERT INTO Statement:
INSERT INTO table_name( column1, column2….columnN) VALUES ( value1, value2….valueN);
SQL UPDATE Statement:
UPDATE table_name SET column1 = value1, column2 = value2….columnN=valueN [ WHERE CONDITION ];
SQL DELETE Statement:
DELETE FROM table_name WHERE {CONDITION};
SQL CREATE DATABASE Statement:
CREATE DATABASE database_name;
SQL DROP DATABASE Statement:
DROP DATABASE database_name;
SQL USE Statement:
USE DATABASE database_name;
SQL COMMIT Statement:
COMMIT;
SQL ROLLBACK Statement:
ROLLBACK;
Tipos de Datos
SQL JOINS
SQL Joins es una forma de combinar datos de varias tablas en una sola consulta, basándose en la teoría de conjuntos. Esto es muy útil para los científicos de datos, ya que les permite recuperar y manipular datos de forma eficiente y flexible.
SQL Joins tiene diferentes tipos, dependiendo de cómo se relacionan las tablas entre sí, en la tabla encontraras la explicación de cada unión de conjunto y en el dibujo encontraras los datos que necesitas de cada conjunto. Considera ORACLE tiene una forma un poco diferente o fácil pero espero te sea útil.
Tipos de Joins
| from table A Inner join table B on A.key= B.key | Selecciona los elementos del conjunto A y B que tienen el mismo valor en sus campos llave |
| from table A left join table B on A.key= B.key | Selecciona TODOS los elementos del conjunto A y los elementos del conjunto B que tenga la misma llave que el conjunto A |
| from table A right join table B on A.key= B.key | Selecciona TODOS los elementos del conjunto B y los elementos del conjunto A que tenga la misma llave que el conjunto B |
| from table A left join table B on A.key= B.key Where B.key is null | Selecciona TODOS los elementos del conjunto A y excluye todos los elementos del conjunto B que coinciden en la misma llave |
| from table A rigth join table B on A.key= B.key Where A.key is null | Selecciona TODOS los elementos del conjunto B y excluye todos los elementos del conjunto A que coinciden en la misma llave |
| from table A full outer join table B on A.key= B.key | Selecciona TODOS los elementos del conjunto A y B |
| from table A full outer join table B on A.key= B.key Where A.key is null or B.key is null | Selecciona TODOS los elementos del conjunto A y B y excluye los registros que estan en ambos conjuntos |
MERGE
MERGE es una función que me gusta mucho, te permite seleccionar datos de una tabla o la union de tablas como origen y los actualiza o inserta en una tabla de destino. La clave es determinar que campos llave te permite evaluar si se deben actualizar o insertar datos en la tabla de destino.
NOTA: el conjunto origen no debe tener duplicados los campos llave.
Espero y la uses mucho y te pueda ayudar:
MERGE
| MERGE INTO TABLE_X target_table USING (SELECT {fields} from table a inner join table b on a.key = b.key ) source_table ON (target_table.key = target_table.key) WHEN MATCHED THEN UPDATE SET col1 = value1, col2 = value2,… WHERE [DELETE WHERE WHEN NOT MATCHED THEN INSERT (col1,col2,…) values(value1,value2,…) WHERE |
Ejemplo en vivo y en directo, con la famosa tabla de Empleados
MERGE INTO bonos b |
– Tipos de Objetos
– indices
– Sinonimos
– privilegios
Explain Plan
Un plan de explicación es una herramienta que puede ayudar a los desarrolladores de bases de datos a entender cómo el motor de base de datos ejecutará una consulta. La salida del plan de consulta que genera el comando EXPLAIN es una vista general simplificada de la ejecución de consultas.
Esto puede ser útil para identificar problemas de rendimiento y optimizar las consultas para un mejor desempeño.
EXPLAIN PLAN FOR select {Columns} from {table};
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Un ejemplo de cómo usar índices para optimizar las consultas es el siguiente: “TABLE ACCESS FULL” indica que la consulta no usa ningún índice y tiene que leer toda la tabla para hacer el join con la tabla C. Esto puede ser muy lento y consumir muchos recursos. Por el contrario, “TABLE ACCESS BY INDEX ROWID” indica que la consulta usa un índice y accede directamente al registro que necesita para hacer el join. Esto puede ser mucho más rápido y eficiente.
Normalización y Desnormalización
La normalización es un proceso que se utiliza para organizar una base de datos de manera eficiente. El objetivo de la normalización es reducir la redundancia y la inconsistencia de los datos, y lograr la integridad de los mismos. Esto se logra dividiendo los datos en varias tablas y estableciendo relaciones entre ellas. Hay varias reglas o formas normales que se utilizan para normalizar una base de datos, siendo las tres primeras las más conocidas y utilizadas¹.
Por otro lado, la desnormalización es el proceso opuesto a la normalización. En lugar de dividir los datos en varias tablas, la desnormalización combina los datos en una sola tabla. El objetivo de la desnormalización es mejorar el rendimiento de las consultas al reducir el número de combinaciones necesarias para recuperar los datos. Sin embargo, esto puede aumentar la redundancia y la inconsistencia de los datos³.
En resumen, la normalización y la desnormalización son técnicas utilizadas para organizar una base de datos. La normalización se enfoca en reducir la redundancia y mejorar la integridad de los datos, mientras que la desnormalización se enfoca en mejorar el rendimiento de las consultas al reducir el número de combinaciones necesarias para recuperar los datos.
Origen:
(1) Normalización de Bases de Datos – UNAM. https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/872/mod_resource/content/7/Contenido/index.html.
(2) Diferencia entre normalización y desnormalización. https://es.gadget-info.com/difference-between-normalization.
(3) ¿Sabes qué es la normalización? | Secretaría de Economía – gob.mx. https://www.gob.mx/se/articulos/sabes-que-es-la-normalizacion-192107?idiom=es.
(4) undefined. http://rhythmvs.herokuapp.com/articles/AnthroponymicalLexicon.
Reglas Formales de Normalización
Para generar un modelo de datos, es necesario seguir un proceso que comienza con la recopilación de información sobre los requisitos comerciales de los stakeholders y los usuarios finales. Estas normas empresariales luego se traducen en estructuras de datos para formular un diseño de base de datos concreto⁴. Un modelo de datos se puede comparar con una hoja de ruta, un plan de arquitecto o cualquier diagrama formal que facilite una comprensión más profunda de lo que se está diseñando⁴.
El modelado de datos emplea esquemas estandarizados y técnicas formales. Esto proporciona una forma común, consistente y predecible de definir y gestionar los recursos de datos en una organización, o incluso más allá. Idealmente, los modelos de datos son documentos vivos que evolucionan junto con las necesidades comerciales cambiantes. Desempeñan un papel importante en el apoyo a los procesos de negocio y en la planificación de la arquitectura y la estrategia de TI⁴.
Los modelos de datos generalmente se pueden dividir en tres categorías, que varían según su grado de abstracción. El proceso comenzará con un modelo conceptual, avanzará a un modelo lógico y concluirá con un modelo físico⁴.
1NF
La Primera Forma Normal (1NF) es una forma normal utilizada en la normalización de bases de datos. Una tabla de base de datos relacional que cumple con la 1NF es aquella que satisface un conjunto mínimo de criterios. Si una relación contiene un atributo compuesto o multi valorado, viola la primera forma normal, o la relación está en primera forma normal si no contiene ningún atributo compuesto o multi valorado.
2NF
La Segunda Forma Normal (2NF) es una forma normal utilizada en la normalización de bases de datos. La 2NF fue definida originalmente por E.F. Codd en 1971¹. Una tabla que está en la Primera Forma Normal (1NF) debe cumplir con criterios adicionales para calificar para la Segunda Forma Normal. Específicamente, una tabla 1NF está en 2NF si y solo si, dada una clave primaria y cualquier atributo que no sea un constituyente de la clave primaria, el atributo no clave depende de toda la clave primaria en lugar de solo una parte de ella.
En términos más formales, una tabla 1NF está en 2NF si y solo si ninguno de sus atributos no principales son funcionalmente dependientes de una parte (subconjunto propio) de una clave candidata. Un atributo no principal es uno que no pertenece a ninguna clave candidata¹. Observe que cuando una tabla 1NF no tiene ninguna clave candidata compuesta (claves candidatas que consisten en más de un atributo), la tabla está automáticamente en 2NF¹. ¿Hay algo más en lo que pueda ayudarte? 😊
3NF
La Tercera Forma Normal (3NF) es una forma normal utilizada en la normalización de bases de datos. La 3NF fue definida originalmente por E.F. Codd en 1971¹. La definición de Codd indica que una tabla está en 3NF si y solo si se cumplen las dos condiciones siguientes:
– La tabla está en la Segunda Forma Normal (2NF)
– Ningún atributo no principal de la tabla es dependiente transitivamente de una clave primaria.
Un atributo no principal es un atributo que no pertenece a ninguna clave candidata. Una dependencia transitiva es una dependencia funcional X → Z en la cual Z no es inmediatamente dependiente de X, sino de un tercer conjunto de atributos Y, que a su vez depende de X (y siempre que no ocurra que X sea también dependiente de Y). Es decir, X → Z por virtud de X → Y e Y → Z (y no ocurre que Y → X).
4NF
La Cuarta Forma Normal (4NF) es una forma normal utilizada en la normalización de bases de datos. Fue introducida por Ronald Fagin en 1977 y es el siguiente nivel de normalización después de la Forma Normal de Boyce-Codd (BCNF)³. La 4NF, también conocida como “teoría de la dependencia multivaluada”, se basa en el concepto de “dependencias multivaluadas”. Una dependencia multivaluada es una relación entre dos o más atributos en una tabla de base de datos que permite que cada atributo tenga más de un valor para una entidad determinada¹.
Para estar en 4NF, una tabla de base de datos debe cumplir con los siguientes criterios:
1. La tabla debe estar en 3NF.
2. La tabla no debe tener ninguna dependencia multivaluada.
3. La tabla no debe tener ninguna dependencia parcial.
4. La tabla no debe tener ninguna dependencia transitiva.
La 4NF está diseñada para eliminar los datos redundantes de una tabla de base de datos. Los datos redundantes pueden causar problemas cuando se actualiza una base de datos, ya que los mismos datos pueden estar almacenados en varios lugares. Esto puede conducir a inconsistencias en los datos y hacer más difícil la consulta de los datos.
5NF
La Quinta Forma Normal (5FN), también conocida como forma normal de proyección-unión (PJ/NF), es un nivel de normalización de bases de datos diseñado para reducir la redundancia en las bases de datos relacionales que guardan hechos multi-valores aislando semánticamente relaciones múltiples relacionadas³. Una tabla se dice que está en la 5FN si y solo si cada dependencia de unión no trivial en esa tabla está implícita por las claves candidatas¹. Es la forma normal final en lo que respecta a la eliminación de redundancia. También existe una 6FN, pero su propósito no es eliminar la redundancia y, por lo tanto, solo es adoptada por algunos almacenes de datos, donde puede ser útil para hacer que las tablas sean irreducibles.
6NF
La Sexta Forma Normal (6NF) es un término en la teoría de bases de datos relacionales, utilizado de dos maneras diferentes. Christopher J. Date y otros han definido la sexta forma normal como una forma normal, basada en una extensión del álgebra relacional¹. Los operadores relacionales, como el join, se generalizan para admitir un tratamiento natural de los datos de intervalo, como secuencias de fechas o momentos en el tiempo, por ejemplo en bases de datos temporales¹. La sexta forma normal se basa entonces en este join generalizado, como sigue: Una variable relacional R [tabla] está en sexta forma normal (abreviada 6NF) si y solo si no satisface ninguna dependencia de join no trivial en absoluto, donde, como antes, una dependencia de join es trivial si y solo si al menos una de las proyecciones (posiblemente U_projections) involucradas se toma sobre el conjunto de todos los atributos de la variable relacional [tabla] en cuestión.
también han dado la siguiente definición: La variable relacional R está en sexta forma normal (6NF) si y solo si cada JD [Dependencia de Join] de R es trivial, donde una JD es trivial si y solo si uno de sus componentes es igual al encabezado pertinente en su totalidad¹. Cualquier relación en 6NF también está en 5NF. La sexta forma normal está diseñada para descomponer las variables relacionales en componentes irreducibles. Aunque esto puede ser relativamente poco importante para las variables relacionales no temporales, puede ser importante cuando se trata con variables temporales u otros datos de intervalo.




