Sin categoría

SQL: Todo lo que necesita saber

cotejo y SQL

Historia de SQL

En 1970, el IBM Santa Teresa Lab publicó el diseño de un sistema de gestión de bases de datos relacionales (RDBMS) llamado System R, cuyo autor era Edgar Frank Codd. El esquema de la base de datos constaba de varias tablas relacionadas entre sí, formadas por filas y columnas. Inicialmente, las tablas se manipulaban y consultaban utilizando una forma de álgebra relacional. Donald Chamberlin y Raymond Boyce desarrollaron el primer lenguaje procedimental diseñado para el RDBMS, denominado SEQUEL. Más tarde se acortó a SQL, que es la abreviatura de Structured Query Language (Lenguaje de Consulta Estructurado), debido a una disputa de marcas. El lenguaje SQL tiene subconjuntos para modificar y crear objetos de base de datos como tablas y vistas, incluido el Lenguaje de Definición de Datos (DDL). La función principal de SQL es consultar tablas, borrar, actualizar e insertar filas de datos. En 1986, SQL se convirtió en un estándar ANSI e ISO/IEC que múltiples proveedores han implementado. Actian, hasta el día de hoy, es un miembro activo del cuerpo de estándares para mantener su tecnología de bases de datos relacionales, como la Actian Data Platform, alineada con los estándares SQL.

El primer RDBMS comercial de IBM fue SQL/DS, que funcionaba en ordenadores centrales. Más tarde, IBM lanzó una versión de su RDBMS DB2 que funcionaba en mainframes y sistemas basados en Unix. Oracle creó el primer RDBMS comercial que funcionaba en múltiples sistemas operativos, como VM, MVS, VMS, Windows, Linux y Solaris. El equipo de Richard Stonebreaker en los laboratorios Berkeley de California dio lugar a la creación de las bases de datos Ingres, Informix y Sybase, que se utilizaron por primera vez en miniordenadores y sistemas basados en Unix como Sun Solaris. Ingres fue el primer RDBMS en soportar consultas distribuidas. El primer RDBMS en clúster se ejecutó en DEC VMS. Microsoft SQL Server se desarrolló a partir de una base de código con licencia de Sybase.

Antes de que se generalizara la tecnología RDBMS, las bases de datos utilizaban métodos de acceso para recuperar registros almacenados mediante índices, listas enlazadas de registros o jerarquías enlazadas de registros. A medida que las bases de datos relacionales se han ido popularizando, las bases de datos no relacionales se han dotado de acceso SQL para facilitar su consulta a personas con conocimientos de SQL. Algunos ejemplos son IDMS-R, una base de datos en red, y Actian Vector, un almacén de datos en columnas.

La tecnología RDBMS se desplaza cada vez más a las plataformas en nube, donde se concentra la mayor parte del crecimiento del mercado de bases de datos.

¿Qué es SQL?

SQL facilita la extracción de datos de una base de datos utilizando un conjunto estándar de operadores para almacenar, manipular y recuperar datos de bases de datos. Por ejemplo, la sentencia SELECT * FROM CLIENTES obtendrá todas las filas y columnas de la tabla CLIENTES. Los predicados, como la cláusula WHERE, pueden utilizarse para especificar subconjuntos de datos. Si la tabla contiene una columna STATE, la siguiente sentencia SQL recuperará sólo los clientes de California:

SELECT * FROM CLIENTES WHERE ESTADO = 'CA'

Varias tablas pueden relacionarse entre sí diseñándolas con columnas clave comunes. Se utiliza un proceso de diseño de bases de datos para asignar relaciones entre objetos de bases de datos, lo que permite consultar datos de varias tablas mediante una única sentencia SQL. Por ejemplo, puede tener ESTADO como columna común en la tabla CLIENTES y en la tabla PEDIDOS, lo que le permitirá recuperar pedidos relacionados con estados específicos o agrupar resultados por estado en su informe.

Uniones SQL

Cuando se diseña el esquema de una base de datos, tiene sentido organizar las tablas para que las consultas sean lo más flexibles posible. Normalización es el término utilizado para describir el proceso de optimización del número de tablas y su relación, minimizando la duplicación de datos. Se puede hacer referencia a dos o más tablas o vistas en una única sentencia SQL SELECT realizando una unión de tablas. Las tablas deben estar relacionadas entre sí mediante una columna clave común.

A continuación se indican los tipos de uniones en los que izquierda y derecha son el orden de las tablas nombradas en la sentencia SELECT:

INNER JOIN: Esta unión devuelve los registros que tienen valores coincidentes en ambas tablas.

FULL JOIN: Esta unión devuelve todos los registros que coinciden en la tabla izquierda o derecha.

LEFT JOIN: Este tipo de unión devuelve los registros de la tabla izquierda, junto con aquellos registros que satisfacen la condición de la tabla derecha.

RIGHT JOIN: Este tipo de unión devuelve los registros de la tabla derecha y los que cumplen la condición de la tabla izquierda.

Para entender las cláusulas JOIN, debe estar familiarizado con las claves y las claves ajenas y las relaciones entre tablas. Por ejemplo, una tabla de clientes puede tener como clave primaria Customer-ID. Una tabla Pedidos que contenga una columna Cliente-ID se conocerá como clave ajena en esa tabla.

Cada tabla que desee utilizar en las relaciones debe tener una restricción de clave primaria; puede ser una única

o una combinación de campos definida por una expresión. Por ejemplo:

CREAR TABLA cliente (

    Customer-ID int NOT NULL PRIMARY KEY,

    Nombre-Cliente char (60),

    ...

Cada tabla que necesite relacionarse con la tabla de clientes debe tener un campo que corresponda a la clave primaria Customer-ID, y para preservar la integridad relacional ese campo debe tener una restricción de clave foránea. Por ejemplo:

CREAR TABLA Pedidos (

    Cliente-ID int NOT NULL PRIMARY KEY,

    ...

    Customer-ID int FOREIGN KEY REFERENCIAS Cliente(Customer-ID)

);

Las claves primarias siempre están indexadas y son únicas, lo que significa que los valores de las claves no pueden tener duplicados. Los demás campos pueden indexarse opcionalmente. A menudo es útil crear índices para los campos de clave externa y para los campos que aparecen en las cláusulas WHERE y ORDER BY, aunque no siempre, debido a la sobrecarga potencial de las escrituras y actualizaciones que tienen que actualizar los índices.

La siguiente consulta recupera todos los pedidos realizados por Jim Clarks:

SELECT CustomerName, OrderID FROM clientes

INNER JOIN Pedidos ON cliente.ID-Cliente = ID-Cliente-Pedidos

WHERE NombreCliente ="Jim Clarks";

De hecho, existen cuatro tipos de JOIN: INNER, OUTER, LEFT y RIGHT. El INNER JOIN es el predeterminado, por lo que se puede omitir la palabra INNER, y es el que incluye sólo las filas que contienen valores coincidentes en ambas tablas. Si desea listar los clientes tengan o no pedidos, utilizará un LEFT JOIN, por ejemplo:

SELECT CustomerName, OrderID FROM Clientes

LEFT JOIN Pedidos ON Cliente.ID-Cliente = Pedidos.ID-Cliente

ORDER BY NombreCliente;

outils bi más populares facilitan la unión de varias tablas escribiendo el SQL necesario para usted de forma gráfica arrastrando y soltando tablas y campos en un lienzo.

¿Para qué se utiliza SQL?

El uso más común de SQL es obtener o recuperar datos de bases de datos. Los datos pueden leerse de una única tabla o vista, de varias tablas, en una única base de datos o en varias bases de datos distribuidas.

Aparte de la sentencia SELECT que se introduce en la sección anterior, a continuación se muestra un subconjunto de sentencias SQL y para qué se utilizan:

  • CREATE DATABASE - crea una instancia de base de datos para almacenar objetos como tablas e índices.
  • CREATE TABLE - se utiliza para crear una tabla de datos
  • INSERT - se utiliza para insertar nuevas filas en una tabla
  • UPDATE - se utiliza para realizar cambios en los datos contenidos en una tabla de base de datos
  • DELETE - se utiliza para eliminar filas de datos
  • GRANT - se utiliza para dar a los usuarios permiso para ver o modificar objetos de la base de datos como tablas.
  • REVOKE - se utiliza para eliminar permisos de usuarios o grupos de usuarios.
  • ALTER - permite al usuario añadir o eliminar columnas de un objeto para actualizar los permisos.
  • DROP TABLE - elimina una tabla
  • CREATE INDEX - creará un INDEX para permitir un acceso eficiente a los datos utilizando una clave-valor.
  • TRUNCATE TABLE - permite al usuario vaciar el contenido de una tabla

La sentencia SELECT puede contener funciones de agregación, entre las que se incluyen:

  • COUNT() - devuelve el número total de filas que satisfacen los criterios de la sentencia
  • MIN() - devuelve el valor más pequeño del conjunto de resultados
  • MAX() - devuelve el mayor valor del conjunto de resultados
  • AVG() - devuelve la media de los valores del conjunto de resultados
  • GROUP BY - agrupará los resultados por el valor de una columna determinada
  • ORDENAR POR - ordenará los resultados por la columna especificada

Comentarios en SQL

Los comentarios pueden ser de una o varias líneas. Un comentario de una línea comienza con un guión doble, como en el ejemplo siguiente:

-- Este es mi comentario

Un comentario de varias líneas se encierra en un par /* y */ como en el ejemplo siguiente:

/* Esto es
línea múltiple
comentario */

Operaciones de ajuste

Existen principalmente tres operaciones de conjunto: UNIÓN, INTERSECCIÓN y EXCEPCIÓN.

UNION - Este operador combina el conjunto de resultados de dos o más sentencias SELECT.

Ejemplo:

SELECT Columnas FROM Tabla1

UNION

SELECT Columns FROM Tabla2;

INTERSECT - Esta cláusula combina dos sentencias SELECT y devuelve la intersección de los conjuntos de datos de ambas sentencias SELECT.

Ejemplo:

SELECT Columna1 , Columna2 ....

FROM NombreTabla

WHERE Condición

INTERSECT

SELECT Columna1 , Columna2 ....

FROM NombreTabla

WHERE Condición

EXCEPT - Este operador devuelve aquellas filas que son devueltas por la primera operación SELECT y no son devueltas por la segunda operación SELECT.

Ejemplo:

SELECT NombreColumna

FROM NombreTabla

EXCEPT

SELECT NombreColumna

FROM NombreTabla;

¿Qué ocurre con el código de procedimiento?

¿Y el Código Procesal?

SQL es principalmente un lenguaje declarativo. A veces es útil utilizar código procedimental en un RDBMS. Ejemplos de procedimientos ejecutados en la base de datos podrían ser realizar un cálculo complejo o tener un procedimiento almacenado antes o después de una operación como un INSERT o DELETE. Los procedimientos almacenados suelen ser propios utilizando un lenguaje interpretado o compilado 3 GL como una Función Definida por el Usuario (UDF).

¿Cómo se accede a SQL?

Los proveedores de RDBMS suelen proporcionar una interfaz de línea de comandos para su base de datos que se puede utilizar en un shell de comandos o dentro de un script de comandos. Actian proporciona una interfaz de nivel de llamada (CLI). Esto es generalmente útil para Administradores de Bases de Datos y Desarrolladores que están configurando una base de datos o haciendo tareas de mantenimiento como tomar copias de seguridad o crear copias de bases de datos para pruebas.

La interfaz ODBC permite a las aplicaciones existentes, como Microsoft Excel, utilizar Embarqué SQL para obtener datos de SQL Server y otras bases de datos.

Las aplicaciones Java utilizan el controlador JDBC para poder acceder a las bases de datos mediante SQL.

Los desarrolladores de aplicaciones utilizan interfaces de programación de aplicaciones (API) para Embarquer sentencias SQL en sus aplicaciones, que pueden estar escritas en C, Python o COBOL, por ejemplo. Las filas de la base de datos pueden obtenerse de una en una o en lotes o matrices.

Actian Data Platform proporciona un editor de consultas basado en web para facilitar la construcción y ejecución de sentencias SQL.

informatique décisionnelle herramientas como Looker, Tableau, Qlik Sense y Microsoft Power BI proporcionan herramientas visuales para escribir sentencias SQL para crear cuadros de mando que pueden acceder a tecnologías de bases de datos de múltiples proveedores. Todas estas soluciones de BI pueden utilizarse con Actian Data Platform.

¿Cuál es la diferencia entre SQL y MySQL?

SQL es un lenguaje de consulta soportado por estándares diseñado para facilitar la extracción de datos de una base de datos utilizando un conjunto estándar de operadores para almacenar, manipular y recuperar datos de bases de datos. La diferencia entre SQL y MySQL es que MySQL no es un lenguaje de consulta de bases de datos, sino un producto de bases de datos de código abierto.

¿Qué es SQL Server?

Lanzado en 1989, SQL Server es el sistema de gestión de bases de datos relacionales (RDBMS) de Microsoft. Se diseñó como una base de datos completa para competir con Oracle Database (DB) y MySQL.

SQL Server es compatible con ANSI SQL, el lenguaje SQL estándar, y contiene T-SQL, su propia implementación de SQL. SQL Server Management Studio (SSMS) es la principal herramienta de interfaz de SQL Server. A veces se hace referencia a Microsoft SQL Server como MSSQL.

Microsoft SQL Server se ofrece con diferentes conjuntos de características para satisfacer las necesidades de RDBMS de pequeñas y grandes empresas.

¿Es fácil aprender SQL?

Como la mayoría de las habilidades, el SQL básico puede aprenderse en semanas, pero dominarlo puede llevar meses. La clave está en entender cómo está diseñada la base de datos y qué índices existen para saber qué consultas tienen sentido. También es importante apreciar las limitaciones del diseño de una base de datos.

Bases de datos transaccionales frente a bases de datos orientadas a la toma de decisiones

El diseño de una base de datos transaccional optimizada para la entrada de pedidos puede tener muy pocos índices para garantizar que los ressources de calcul disponibles puedan acomodar altas tasas de transacción. Ejecutar consultas SQL complejas directamente en estas bases de datos operativas puede ralentizar las transacciones y afectar a los clientes y a los ingresos. Si se requiere una prise de décision compleja, un almacén de datos es más adecuado. Un almacén de datos se organiza para apoyar la prise de décision, por lo que tendrá más índices y puede tener gran parte de los datos pre-agregados en vistas para acelerar las consultas. El almacén de datos se rellena a partir de instantáneas periódicas de las bases de datos operativas o se actualiza en tiempo real a medida que cambian los registros en el sistema operativo.

¿Dónde puedo aprender SQL?

Hay un montón de recursos y cursos de programación SQL que se pueden encontrar en línea.