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 la tecnología RDBMS se generalizara, 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 han ido ganando popularidad, se ha dotado a las bases de datos no relacionales de acceso mediante SQL para facilitar su consulta a las personas con conocimientos de este lenguaje. Algunos ejemplos son IDMS-R, una base de datos de red, y Actian Analytics Engine, 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.
What is 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.
The following are the types of joins where left and right are the order of the tables named in the SELECT statement:
INNER JOIN: This join returns those records which have matching values in both the tables.
FULL JOIN: This join returns all those records which either have a match in the left or the right table.
LEFT JOIN: This type of join returns records from the left table, along with those records which satisfy the condition from the right table.
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.
What is SQL Used For?
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 – is used to create a table of data
- INSERT – is used to insert new rows into a table
- UPDATE – is used to make changes to data contained in a database table
- DELETE – is used to remove rows of data
- GRANT – is used to give users the permission to view or modify database objects such as tables
- REVOKE – is used to remove permissions from users or groups of users
- ALTER – allows the user to add or remove columns from an object to update permissions
- DROP TABLE – deletes a table
- CREATE INDEX – will create an INDEX to allow for efficient access to data using a key-value
- TRUNCATE TABLE – allows the user to empty the contents of a table
La sentencia SELECT puede contener funciones de agregación, entre las que se incluyen:
- COUNT() – returns the total number of rows that satisfy the criteria in the statement
- MIN() – returns the smallest value in the result set
- MAX() – returns the largest value in the result set
- AVG() – returns the average of the values in the result set
- GROUP BY – will group the results by a given column value
- ORDER BY – will sort the results by the specified column
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.
Example:
SELECT Columna1 , Columna2 .... FROM NombreTabla WHERE Condición INTERSECT SELECT Columna1 , Columna2 .... FROM NombreTabla WHERE Condición
EXCEPT – This operator returns those rows that are returned by the first SELECT operation and are not returned by the second SELECT operation.
Example:
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.
- W3 Schools es un gran lugar para aprender y practicar SQL. La URL es https://www.w3schools.com/sql/default.asp
- Codeacademy ofrece una clase certificada de SQL en https://www.codecademy.com/learn/learn-sql
- Actian proporciona una referencia SQL en https://docs.actian.com/avalanche/index.html#page/SQLLanguage/SQL_Statements.htm.