31
SQL BÁSICO Msc.Ing. JOSE FABIAN DIAZ SILVA @josefabiandiaz

Sql básico - compendio

Embed Size (px)

DESCRIPTION

Un compendio de sentencias SQL, trata desde las sentencias DDL hasta las DML, INSERT, UPDATE, DELETE, CREATE, ALTER,se presentan mediante ejemplos detallando su estructura. Se incluyen la creación de restricciones,el borrado de las mismas y el manejo de las llaves primarias, foraneas e indices. Las subconsultas son incluidas, así como el trabajo con WHERE, el GROUP BY y el HAVING, considerando los operadores de grupo AVG y MAX. Se concibe la presentación como una guía rápida de referencia para SQL. Se baso en el SQL compatible para ORACLE

Citation preview

Page 1: Sql básico  - compendio

SQL BÁSICO

Msc.Ing. JOSE FABIAN DIAZ SILVA

@josefabiandiaz

Page 2: Sql básico  - compendio

SQL - INTRO

SQL : Structure Query Language

Es un lenguaje muy popular para el trabajo con los motores de bases de datos, alcanzo su punto mas alto con los sistemas de almacenamiento relacionales (basado en relación entre tablas).

Existe un estándar definido para trabajar con SQL pero cada motor de base datos implementa algunas sentencias propietarias pensadas en el aprovechamiento de su sistema.

Page 3: Sql básico  - compendio

SENTENCIAS

Sentencias Clasificación

SELECT Recuperación de datos

INSERTUPDATEDELETEMERGE

Lenguaje de manipulación de datos (DML)

CREATEALTERDROPRENAMETRUNCATE

Lenguaje de definición de datos (DDL)

COMMITROLLBACKSAVEPOINT

Control de transacciones

GRANTREVOKE

Lenguaje de control de datos (DCL)

Page 4: Sql básico  - compendio

RECUPERACIÓN DE DATOS

Data Retrieval

Page 5: Sql básico  - compendio

SELECT

SELECT *| { [DISTINCT]columna | expresión[alias], … }FROM table;

El “*” se emplea junto a la palabra reservada SELECT para retornar todas las columnas de la tabla, si no es empleado se tiene que referir explícitamente al campo=columna.

DISTINCT es un comando para asegurar que no se repitan los datos retornados.

Se pueden emplear los denominados Alias para referirse a un campo. Todos los campos se separa

en el FROM se especifica el nombre de la tabla a consultar.

SELECT nombre, apellido FROM persona;

Page 6: Sql básico  - compendio

DEFINIENDO “ALIAS”

SELECT apellido “empleado”, salario * 12 “sueldoTotal” FROM empleados;

Los alias ayudan a darle mas sentido a los datos resultantes de una consulta.

En el ejemplo presentado se aprecia como una expresión “salario * 12” puede ser empleada como retorno de una consulta SELECT.

“Los alias se caracterizan por emplear las comillas dobles en su nombramiento”.

Page 7: Sql básico  - compendio

CONCATENACIÓN & DUPLICACIÓN

SELECT nombre || apellido as “nombres”FROM empleados; Se aprecia que el símbolo “||” se emplea para unir dos campos , así como la palabra

“as” se establece para indicar el alias que llevara estos campos unidos.

SELECT Distinct departamentoFROM empleados;

La palabra “distinct” evita la repetición de campos cuando se recuperanlos datos de una tabla.

Page 8: Sql básico  - compendio

DESCRIBIR ESTRUCTURA

DESCRIBE “NOMBRE TABLA” Por medio de la palabra reservada DESCRIBE o su versión resumida DESC es posible

conocer los campos con su tipo y tamaño que corresponden a un arreglo tipo tabla.

Nombre Restricción Tipo

Id_empleado NOT NULL NUMBER(5)

Nombre NOT NULL VARCHAR2(20)

Apellido NOT NULL VARCHAR2(20)

Page 9: Sql básico  - compendio

WHERE

SELECT *| { [DISTINCT]columna | expresión[alias], … }FROM table[WHERE condicion)(es)];

La palabra “WHERE” se emplea para restringir las filas que se retornan

el empleo de la misma brinda versatilidad al poder incluir diversas condiciones.

SELECT nombre, apellido FROM persona WHERE id_empleado=23;

Page 10: Sql básico  - compendio

BETWEEN

SELECT apellido, salario

FROM empleadosWHERE salario BETWEEN 100 AND 300;

Con la sentencia BETWEEN se restringe un intervalo dentro de los cuales se espera conseguir un resultado.

el empleo de la misma brinda versatilidad al poder incluir diversas condiciones de validación.

Page 11: Sql básico  - compendio

IN

SELECT apellido, salario

FROM empleadosWHERE salario IN (100,200,600);

Con la sentencia IN se restringe los valores retornados únicamente a los que coincidan con los descritos en el conjunto dado por IN.

La posibilidad de realizar una consulta al interior de los paréntesis de IN abre nuevas posibilidades..

Page 12: Sql básico  - compendio

LIKE

SELECT apellido, salario

FROM empleadosWHERE apellido LIKE ‘D%’;

Retorna aquellos empleados cuyo apellido inicie con “D”.

Con LIKE se efectúa una consulta en campos de cadenas de caracteres. El símbolo % se emplea como comodín para representar

cualquier cantidad de cadena de caracteres en la posición que se localice. Es decir si se emplea “%D%” se retornaría cualquier apellido que contenga la

letra D.

Page 13: Sql básico  - compendio

ORDER BY

SELECT apellido, salarioFROM empleadosORDER BY fecha_contrato asc/desc;

La sentencia ORDER BY permite efectuar un ordenamiento de los datos recuperados de la consulta(las columnas), puede ser del tipo

ascendente ASC o descendente DESC, lo cual se indica al finalizar la sentencia.

Page 14: Sql básico  - compendio

GROUP BY

SELECT id_ jefe,avg(salario)FROM empleadosGROUP BY id_jefe;

La sentencia anterior retorna el promedio(avg) del salario de aquellas personas que tienen el mismo jefe.

Algunos datos se desean trabajar como si se tratara de un grupo de los mismos. Con la sentencia GROUP BY se agrupan los datos y permite

efectuar operaciones sobre ellos.

Page 15: Sql básico  - compendio

HAVING

SELECT id_ jefe,max(salario)FROM empleadosGROUP BY id_jefeHAVING MAX(salario)>300;

La sentencia HAVING permite efectuar consultas tipo WHERE sobre las agrupaciones de datos.

En el ejemplo presentado si agrupo por el jefe, pero solo se presentaran los datos de aquellos grupos que el máximo del salario sea

superior a 300.

Page 16: Sql básico  - compendio

SUBQUERY

SELECT nombre, apellidoFROM empleadosWHERE sueldo> (SELECT sueldo FROM empleados WHERE apellido=‘diaz’);

La anterior se denomina “subconsulta” cuando se emplea una consulta SQL como condición a evaluar por una consulta superior.

No todas las implementaciones de SQL admiten subconsultas, así como tampoco todos los gestores de bases de datos las compilan.

Page 17: Sql básico  - compendio

DML: MANIPULACIÓN DE DATOS

DML: Data manipulation laguage

Page 18: Sql básico  - compendio

INSERT

INSERT INTO nombre_tabla (campos separados por coma) VALUES (valores para los campos, separado por comas);

La sentencia INSERT se emplea para añadir campos a una tabla.

Cuando los campos son no numéricos se debe encerrar dentro de comillas simples es valor escrito para que el compilador de SQL no lo

confunda con el valor de una constante.

INSERT INTO empleado (nombre, apellido, sueldo) values(‘fabian’,’diaz’,300);

Page 19: Sql básico  - compendio

INSERT – VALORES NULOS

INSERT INTO empleado(nombre, apellido) VALUES(‘fabian’,’diaz’); Se puede insertar valores nulos por el método implícito de no nombrar el

campo.

INSERT INTO empleado VALUES (‘fabian’,’diaz’,NULL);

Pero también se puede referenciar de forma explicita, indicando que el campo esta vacío o nulo.

Page 20: Sql básico  - compendio

UPDATE

UPDATE empleadoSET salario=100WHERE apellido=‘diaz’;

Se emplea para modificar el contenido de los campos retornados por una consulta WHERE.

Importante: Si la clausula WHERE no se coloca, toda la tabla sufrirá el cambio especificado.

Page 21: Sql básico  - compendio

DELETE

DELETE FROM empleadoWHERE apellido=‘diaz’;

Se emplea para eliminar los registros filtrados por la consulta WHERE.

Importante: Si la clausula WHERE no se coloca, toda la tabla será borrada..

Page 22: Sql básico  - compendio

DDL: DEFINICIÓN DE DATOS

DDL: Data Definition Language

Page 23: Sql básico  - compendio

CREATE

CREATE TABLE nombre_tabla(columna tipo);

Se debe especificar el nombre de la tabla junto con sus campos y el tipo de los mismos.

CREATE TABLE empleado(id_empleado number(2),

nombre varchar2(20),apellido varchar2(20),

salario number(5));

Si es preciso eliminar la tabla solo es necesario escribir:

DROP TABLE nombre_tabla

Page 24: Sql básico  - compendio

ALTER TABLE

Sobre una tabla se pueden realizar 3 tipos de alteraciones,

Adicionar ADD:

Modificar MODIFY:

Eliminar DROP:

ALTER TABLE nombre_tablaADD (nombre_columna tipo_de_dato);

ALTER TABLE nombre_tablaMODIFY (nombre_columna tipo_de_dato);

ALTER TABLE nombre_tablaDROP (nombre_columna);

Page 25: Sql básico  - compendio

RESTRICCIONES : LLAVE PRIMARIA

Las restricciones se emplean para adicionarle a las tablas un control y coherencia.

La llave primaria permite garantizar la identificación única de un registro al interior de la tabla.

CREATE TABLE empleado(id_empleado number(2),nombre varchar2(20),apellido varchar2(20),salario number(5),

CONSTRAINT id_pk_empleado PRIMARY KEY(id_empleado));

Notese que “id_pk_empleado” es el nombre de la llave primaria y puede ser reemplazado por cualquier valor.

Page 26: Sql básico  - compendio

RESTRICCIONES : NOT NULL

Algunos campos serán obligatorios y no podrán ser creados vacíos o nulos, para lo cual se deben declarar de la siguiente forma al interior de la tabla.

CREATE TABLE empleado(id_empleado number(2),nombre varchar2(20) NOT NULL,apellido varchar2(20),salario number(5));

Mas de un campo puede ser declarado con NOT NULL, incluso todos.

Page 27: Sql básico  - compendio

RESTRICCIONES : UNIQUE

La llave primaria permite identificar un campo de manera única al interior de una tabla y se emplea para referenciarlo, pero existen otros campos que se desea no tener duplicados, aunque no se empleen como referencia. Estos campos se crean como únicos.

CREATE TABLE empleado(id_empleado number(2),nombre varchar2(20) NOT NULL,apellido varchar2(20),salario number(5),

email varchar2(20),CONSTRAINT emp_email_unico UNIQUE(email));

“No se emplean para identificación como la llave primaria.”

Page 28: Sql básico  - compendio

RESTRICCIONES : LLAVE FORANEA

La llave foránea hace referencia a un campo que coincide con la llave primaria de otra tabla. Se emplea para crear relaciones de dependencia entre tablas.

CREATE TABLE empleado(id_empleado number(2),nombre varchar2(20),apellido varchar2(20),salario number(5),id_departamento number(2),email varchar2(20),CONSTRAINT emp_dep_fk (id_departamento) REFERENCES departamento (id_departamento));

“El campo id_departamento hace referencia a la tabla departamento que tiene un campo con el mismo nombre.”

Page 29: Sql básico  - compendio

RESTRICCIONES : ADICIONAR/ELIMINAR

ALTER TABLE empleadoADD CONSTRAINT emp_direc FOREIGN KEY(jefe_id) REFERENCES empleado (id_empleado)

ALTER TABLE empleadoDROP CONSTRAINT emp_direc

“Todas las restricciones se pueden agregar o eliminar empleando el mismo método”.

Page 30: Sql básico  - compendio

ÍNDICES

Los índices se emplean para agilizar las consultas sobre los campos , ahorrando tiempo de procesamiento al gestor de base de datos.

CREATE INDEX nombre_índiceON nombre_tabla(nombre_campo);

CREATE INDEX nombre_empON empleado(nombre);

“Se pueden tener tantos índices como campos tenga la tabla, todo depende de las necesidades propias del desarrollador”.

Page 31: Sql básico  - compendio

CONSULTAS

@josefabiandiaz

https://www.youtube.com/user/fabiandiazs

[email protected]