lunes, 23 de octubre de 2017

Que es SQL

SQL (Structured Query Language) es un lenguaje de programación estándar e interactivo para la obtención de información desde una base de datos y para actualizarla. Las consultas toman la forma de un lenguaje de comandos que permite seleccionar, insertar, actualizar, averiguar la ubicación de los datos, etc.


Lenguaje SQL se divide en cuatro tipos de instrucciones de lenguaje primarios: DML, DDL, DCL y TCL. El uso de estas declaraciones, podemos definir la estructura de una base de datos mediante la creación y la modificación de los objetos de base de datos, y podemos manipular los datos de una tabla a través de actualizaciones o supresiones. También podemos controlar qué usuarios pueden leer / escribir datos o es propietario de transacciones para crear una única unidad de trabajo. Las cuatro categorías principales de las sentencias SQL son los siguientes: 

1. DML (Data Manipulation Language)

Son las operaciones básicas que llevamos a cabo en los datos como la selección de un par de registros de una tabla, insertar nuevos registros, eliminar registros innecesarios, y actualizar / modificar los registros existentes. DML incluyen los siguientes:

ü  INSERT - Inserta nuevos registros en la base de datos.
ü  UPDATE - Actualiza registros ya existentes.
ü  DELETE - Borra registros.
ü  SELECT - Recupera filas de la base de datos y habilita la selección de una o varias filas o columnas de una o varias tablas.
ü  MERGE - Realiza una combinación de datos según unas condiciones

2. DDL (Data Definition Language)

Se utilizan para alterar / modificar una estructura y un esquema de base de datos o tabla. Estas declaraciones manejan el diseño y el almacenamiento de objetos de base de datos.


ü  CREATE - Crea estructuras de datos (tablas, vistas, etc).
ü  ALTER - Modifica estructuras de datos
ü  DROP - Borra estructuras de datos.
ü  RENAME - Renombra estructuras de datos.

ü  TRUNCATE - Sirve para vaciar tablas.


Control de Transacciones

ü  COMMIT - Confirma las operaciones DML.
ü  ROLLBACK - Invalida las operaciones DML
ü SAVEPOINT - Introduce un punto de guardado para realizar COMMIT y ROLLBACK localizados.

3. DCL (Lenguaje de control de datos)

Controla el nivel de acceso que tienen los usuarios sobre los objetos de base de datos.
  
ü  GRANT - Otorga permisos a usuarios.

ü  REVOKE - Quita permisos de los usuarios.

4. TCL (Lenguaje de control de transacciones)

Declaraciones le permiten controlar y gestionar transacciones para mantener la integridad de los datos dentro de las sentencias SQL.

ü  COMMIT - Guarda el trabajo realizado.
ü  SAVEPOINT - Identifica un punto en una transacción a la que más tarde sevpuede volver.
ü  ROLLBACK - Restaurar la base de datos a la original, hasta el último commit.

ü  SET TRANSACTION - Cambia las opciones de transacción como nivel de aislamiento y qué segmento de cancelación utiliza.

Ejemplos de algunas Sentencias

Sentencias DDL

CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.

Ejemplo (crear una tabla)

CREATE TABLE 'TABLA_NOMBRE'
'CAMPO_1' INT,
'CAMPO_2' STRING

DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

Ejemplo
ALTER TABLE ''TABLA_NOMBRE''
(
DROP COLUMN ''CAMPO_NOMBRE1''
)

ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

Ejemplo (agregar columna a una tabla)

ALTER TABLE 'TABLA_NOMBRE' (
ADD NUEVO_CAMPO INT UNSIGNED meel
)


ü  Sentencias DML

INSERT
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Ejemplo:

Forma básica
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.

Ejemplo
INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850);

Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:

INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850);

DELETE
Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla,

Forma básica
DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''
Ejemplo
DELETE FROM My_ table WHERE field2 = 'N';


UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.

Forma básica
UPDATE ''tabla''
SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',...
WHERE ''columnaN = ''valorN''

Ejemplo:
UPDATE My_ table SET field1 = 'updated value' WHERE field2 = 'N';

SELECT
Realiza operaciones de selección, ordenación, agrupación y filtrado de registros.

Ejemplo 1:
Puede usarse para recuperar filas calculadas sin referencia a ninguna tabla.

mysql> SELECT 1 + 1;
         -> 2

Ejemplo 2:
Selección del nombre del proyecto (PROJNAME), la fecha de inicio (PRSTDATE) y la fecha de finalización (PRENDATE) de la tabla PROJECT. Ordenación de la tabla resultante por la fecha de finalización con las fechas más recientes primero.

SELECT PROJNAME, PRSTDATE, PRENDATz
FROM PROJECT         

ORDER BY PRENDATE DESC

COMANDOS DE SQL


ü  Distinct
Permite tomar toda la información de una columna (o columnas) en una tabla; lo que significa que necesariamente habrá redundancias.

Todo lo que se necesita es agregar DISTINCT luego de SELECT. La sintaxis es la siguiente:


ü   Where
Podríamos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo, podríamos desear sólo recuperar los negocios con ventas mayores a 1.000€ dólares estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente:



ü  Between
Permite la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente:


Esto seleccionará todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'.

Por ejemplo, podríamos desear seleccionar la visualización de toda la información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information,



ü  Like
Se utiliza en la cláusula WHERE. Permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo que se desea o determinar un rango.


Generalmente consiste en comodines. Aquí hay algunos ejemplos:

v  'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de uno).
v  'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberían satisfacer la condición.
v  '%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberían satisfacer la condición.
v  '%AN%': Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la condición.

Digamos que tenemos la siguiente tabla:



ü  Order By
Permite enumerar los resultados en un orden particular. Esto podría ser en orden ascendente, en orden descendente, o podría basarse en valores numéricos o de texto.


[ ] Significa que la instrucción WHERE es opcional. Sin embargo, si existe una cláusula WHERE, viene antes de la cláusula ORDER BY ASC significa que los resultados se mostrarán en orden ascendente, y DESC significa que los resultados se mostrarán en orden descendente. Si no se especifica ninguno, la configuración predeterminada es ASC.

Es posible ordenar por más de una columna. En este caso, la cláusula ORDER BY anterior se convierte en


Suponiendo que elegimos un orden ascendente para ambas columnas, el resultado se clasificará en orden ascendente según la columna 1. Si hay una relación para el valor de la columna 1, se clasificará en orden ascendente según la columna 2.

Por ejemplo, podríamos desear enumerar los contenidos de la Tabla Store_Information según la suma en dólares, en orden descendente:



Además del nombre de la columna, podríamos utilizar la posición de la columna (según la consulta SQL) para indicar en qué columna deseamos aplicar la cláusula ORDER BY. La primera columna es 1, y la segunda columna es 2, y así sucesivamente. En el ejemplo anterior, alcanzaremos los mismos resultados con el siguiente comando:



ü  Group By
Se utiliza cuando se seleccionan múltiples columnas desde una tabla (o tablas) y aparece al menos un operador aritmético en la instrucción SELECT. Cuando esto sucede, necesitamos GROUP BY todas las otras columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan por un operador aritmético.
Utilizaremos el operador SUM para calcular las ventas totales de todos los negocios y el total de ventas para cada uno de ellos. Para esto necesitamos realizar dos pasos: Primero, requerimos asegurarnos de que hayamos seleccionado el nombre del negocio así como también las ventas totales. Segundo, debemos asegurarnos de que todas las sumas de las ventas estén GROUP BY negocios.

Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaríamos,


ü  Having
Con este comando se puede limitar el resultado según la suma correspondiente (o cualquier otra función de agregado). Por ejemplo, podríamos desear ver sólo los negocios con ventas mayores a 1 500 €, dólares. En vez de utilizar la cláusula WHERE en la instrucción SQL, a pesar de que necesitemos utilizar la cláusula HAVING, que se reserva para funciones de agregados. La cláusula HAVING se coloca generalmente cerca del fin de la instrucción SQL, y la instrucción SQL con la cláusula HAVING. Puede o no incluir la cláusula GROUP BY.




ü  Alias
Existen dos tipos de alias: 1.alias de columna y 2.alias de tabla.

Los alias de columna existen para ayudar en la organización del resultado. En el ejemplo anterior, cualquiera sea el momento en que vemos las ventas totales, se enumeran como SUM(Sales). Mientras esto es comprensible, podemos ver casos donde el título de la columna pueden complicarse (especialmente si incluye varias operaciones aritméticas). El uso de un alias de columna haría el resultado mucho más legible.

Los alias de tabla se alcanzan al colocar un alias directamente luego del nombre de tabla en la cláusula FROM. Esto es conveniente cuando desea obtener información de dos tablas separadas (el término técnico es 'realizar uniones'). La ventaja de utiliza un alias de tablas cuando realizamos uniones es rápidamente aparente cuando hablamos de uniones.



Ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados por un espacio en blanco. Nuevamente utilizamos nuestra tabla, Store_Information,


Ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados por un espacio en blanco. Nuevamente utilizamos nuestra tabla, Store_Information,




Video ¿Qué es SQL?



Curso SQL. Introducción a SQL. Vídeo 2


Referencias

SQL o lenguaje de consultas estructuradas

Las declaraciones dml, ddl, dcl y tcl en sql con ejemplos

1keydata

Ejemplos de consultas sentencia-select

bases de datos MySQL con ClaseMySQL con Clase

COMANDOS DDL Y DML

Tema 8. El DDL, lenguaje de definición de datos (I)
SENTENCIAS SQL (DDL, DML, DCL Y TCL)

Introducción al lenguaje SQL y la herramienta SQL*PLUS


Curso SQL. Introducción a SQL. Vídeo 2

¿Qué es SQL?

Que es SQL

SQL (Structured Query Language) es un lenguaje de programación estándar e interactivo para la obtención de información desde una base de da...