Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Lección SQL

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

Lección 1 - Bases de datos relacionales

 ¿Que son las bases de  Datos?


Se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales son
recolectados y explotados por los sistemas de información de una empresa o negocio en particular.

Características
Entre las principales características de los sistemas de base de datos podemos mencionar:

  ◘Independencia lógica y física de los datos.


 ◘Redundancia mínima.
 ◘Acceso concurrente por parte de múltiples usuarios.
 ◘Integridad de los datos.
 ◘Consultas complejas optimizadas.
 ◘Seguridad de acceso y auditoría.
 ◘Respaldo y recuperación.
 ◘Acceso a través de lenguajes de programación estándar. 

Mayor informacion : http://www.maestrosdelweb.com/que-son-las-bases-de-datos/

  ¿Que son las bases de Datos Relacionales?


Una base de datos relacional es una colección de elementos de datos organizados en un conjunto de
tablas formalmente descritas desde la que se puede acceder a los datos o volver a montarlos de muchas
maneras diferentes sin tener que reorganizar las tablas de la base. La base de datos relacional fue
inventada por E.F. Codd en IBM en 1970.
Definiciones Importantes a tomar en cuenta:
    Tabla:

 Objeto de almacenamiento perteneciente a una BD. Es una estructura en forma de cuadrante donde se
almacenan registros o filas de datos. Cada tabla tiene un nombre único en la BD.

    Registro:

 Cada una de las filas de una tabla, esta compuesto por campos o atributos.

    Campo:

 Cada uno de los “cajoncitos” de un registro donde se guardan los datos. Cada campo tiene un nombre
único para la tabla de la cual forma parte, además es de un tipo (naturaleza) determinado, por tanto no
podemos guardar limones en el cajón de las naranjas, en términos informáticos y a modo de ejemplo, no
encontraremos un dato alfanumérico (letras y números) en un campo diseñado para

 Para la creacion de una Base de datos la sintaxis que se ocupa es la siguiente :

create database nombreBase


 Donde "nombreBase" es el nombre que se le dara a la base de datos. 

Para la creacion de una Tablas la sintaxis que se ocupa es la siguiente : 

create table Trabajador (ID_trabajador int PRIMARY KEY NOT NULL, 


Nombre varchar(50),
ano_nacimiento datetime,
genero varchar(5),
Puesto varchar(30),
Salario int);

Y como resultado tendremos

Como observamos en el ejemplo de la Tabla de Trabajadores  Cada Trabajador tiene respectiva


informacion con el, en este caso el año de nacimiento, asi como el genero  y el puesto.

Los registros o miembros de una tabla tienen en común sus atributos, no el dato en sí, que lo más
probable es que difiera de un registro a otro, pero sí el hecho de que todos ellos poseen esos atributos.

Dato para concluir :

Una BD contendrá tablas que a su vez contendrán registros y en estos se encontrarán los datos
distribuidos en una serie de campos.
Curso Gratis SQL . Lección 2 - Comandos SQL Básicos.

Lección 2 - Comandos SQL Básicos.


En esta lección les explicaremos la sintaxis basica del lenguaje SQL.

SQL (por sus siglas en inglés Structured Query Language; en español lenguaje de consulta estructurada) es
un lenguaje específico del dominio que da acceso a un sistema de gestión de bases de datos relacionales que
permite especificar diversos tipos de operaciones en ellos. 

Definiendo cómo es almacenada la información.


 CREATE DATABASE este comando se utiliza para crear una nueva base de datos vacía.
 DROP DATABASE este comando se utiliza para eliminar completamente una base de datos existente.
 CREATE TABLE este comando  se utiliza para crear una nueva tabla, donde la información se almacena
realmente.
 ALTER TABLE este comando  se utiliza para modificar una tabla ya existente.
 DROP TABLE este comando  se utiliza para eliminar por completo una tabla existente.

Tambien mostraremos comandos para poder manipular los datos de las tablas que se creen.

Manipulando los datos.


 SELECT se utiliza cuando quieres leer (o seleccionar) tus datos.
 INSERT se utiliza cuando quieres añadir (o insertar) nuevos datos.
 UPDATE se utiliza cuando quieres cambiar (o actualizar) datos existentes.
 DELETE se utiliza cuando quieres eliminar (o borrar) datos existentes.
 REPLACE se utiliza cuando quieres añadir o cambiar (o reemplazar) datos nuevos o ya existentes.
 TRUNCATE se utiliza cuando quieres vaciar (o borrar) todos los datos de la plantilla.
Ejemplo Basico:

CREATE DATABASE mydb;

USE mydb;

CREATE TABLE mitabla ( id INT PRIMARY KEY, nombre VARCHAR(20) );

INSERT INTO mitabla VALUES ( 1, 'Will' );

INSERT INTO mitabla VALUES ( 2, 'Marry' );

INSERT INTO mitabla VALUES ( 3, 'Dean' );

SELECT id, nombre FROM mitabla WHERE id = 1;

UPDATE mitabla SET nombre = 'Willy' WHERE id = 1;

Curso Gratis SQL . Lección 3 - Consutas SQL I (Sencillas)

Consultas  SQL sencillas 

Devolver todos los campos de una tabla (SELECT *)

SELECT * FROM CLIENTES

Con el * indicamos que queremos devolver todos los campos. Si CLIENTES dispone de los
campos idCliente, nombre y descripcion,

lo anterior sería equivalente a:

SELECT idCliente, nombre, descripción FROM CLIENTES


Obviamente, al querer todos los campos, esto es innecesario y es por tanto más conveniente emplear el asterisco
(*). También sería equivalente emplear la notación completa:

SELECT CLIENTES.idCliente, CLIENTES.nombre, CLIENTES.descripcion FROM CLIENTES

Al tener únicamente una tabla involucrada, podemos referirnos a los campos sin calificar, dado que no hay duda de
a qué tabla se refiere. Cuando veamos consultas sobre varias tablas comprenderemos la necesidad de incluir esta
notación calificada (TABLA.campo).

Devolver un subconjunto de los campos de una tabla (SELECT DISTINCT)

SELECT cp, ciudad

FROM DIRECCION

Esta consulta devolverá únicamente los campos cp (código postal) y ciudad de la tabla DIRECCION. Al tener
un subconjunto de los campos, éstos no tienen por qué incluir a la clave de la tabla, por lo que no tienen por qué ser
únicos. Así, si tenemos muchos registros referidos a distintas calles y números de ese mismo código postal y ciudad,
nos encontraremos muchos registros repetidos. Esto puede evitarse haciendo:

SELECT DISTINCT cp, ciudad

FROM CLIENTES

Así se eliminan los registros repetidos, devolviendo únicamente una vez cada par cp, ciudad. Esta selección de un
subconjunto de los datos de la tabla y excluyendo repetidos se denomina en álgebra relacional proyección.

Devolver un subconjunto de los registros de una tabla (WHERE)

SELECT numero, calle

FROM DIRECCION

WHERE ciudad = ‘Sevilla’

Esta consulta devolvería el número y la dirección de todas las direcciones pertenecientes a la ciudad de Sevilla.
Como vemos, con WHERE indicamos la condición que deben cumplir los registros de la tabla para ser devueltos en
la consulta. En este caso tenemos una condición simple dada por la comparación de igualdad (=) entre al campo
(ciudad) y un literal de tipo

cadena, entre comillas simples (‘Sevilla’).

SELECT calle, ciudad

FROM DIRECCION

WHERE numero = 12
Esta otra consulta devolvería la calle y ciudad de todos los registros de la tabla con el número 12, en este caso un
literal numérico. Las condiciones empleadas pueden ser mucho más complejas incluyendo otro tipo de operadores
y combinaciones de los mismos. 

Operadores relacionales

Al margen del signo de igualdad empleado anteriormente, se pueden usar n las condiciones simples de las consultas
los operadores relacionales habituales, devolviendo siempre un valor booleano (lógico):

Operador Significado

<   Menor que

> Mayor que

<> Distinto de

<= Menor ó Igual que

>= Mayor ó Igual que

=   Igual que

SELECT nombre

FROM CLIENTES

WHERE edad <= 32

Adicionalmente, disponemos de operadores de comparación adicionales, también devolviendo valores booleanos


(lógicos) True o False según si se cumplen o no las condiciones:

BETWEEN: para indicar un intervalo de valores.

SELECT nombre

FROM CLIENTES

WHERE edad BETWEEN 20 AND 35

LIKE: empleado para comparar patrones de texto pudiendo incluir comodines como los siguientes:

SELECT num, calle, cp

FROM DIRECCION

WHERE ciudad LIKE ‘Val%’
Esta consulta devolvería los datos de las direcciones de toda ciudad que comience por Val y siga por cualquier
número de caracteres, incluyendo cero caracteres. Por ejemplo, Valladolid o Valencia. En el enlace anterior sobre
patrones de texto podemos practicar directamente desde la web.

IN: empleado para comparar con una lista de valores fijados de modo que devuelva True si el campo indicado
pertenece a la lista.

SELECT num, calle, direccion

FROM DIRECCION

WHERE ciudad IN (‘Sevilla’, ’Córdoba’, ‘Huelva’, ‘Cádiz’)

Curso Gratis SQL . Lección 4 - AND, OR, NOT ,ORDER BY,A,GROUP BY


La precedencia y asociatividad es la habitual definida en la Lógica. En cualquier caso, cuando incluya
expresiones que empleen varios de estos operadores es recomendable usar paréntesis para evitar errores. 

Operadores lógicos (AND, OR, NOT)

Los operadores lógicos nos sirven para componer expresiones de filtrado a partir de las anteriores:

Operador Significado

AND -Y lógico

OR -O lógico

NOT - Negación lógica 

Por ejemplo: 

SELECT *

FROM  DIRECCION

WHERE  ciudad = ‘Sevilla’  AND cp = 41009 OR ciudad  =  ‘Córdoba’ AND NOT cp = 14010

Devuelve los registros pertenecientes a direcciones que tengan el código postal 41009 de Sevilla o bien que no
tengan el 14010 de Córdoba. La mayor precedencia la adopta el operador NOT sobre la condición cp = 14010; a
continuación los AND se aplican sobre ciudad = ‘Sevilla’ AND cp = 41009 y ciudad = ‘Córdoba’ AND NOT cp = 14010;
por último se aplica el OR sobre la fórmula completa. La misma consulta se puede expresar de forma más clara con
paréntesis:

SELECT *

FROM  DIRECCION

WHERE  (ciudad  =  ‘Sevilla’ AND  cp  =  41009) OR

(ciudad  =  ‘Córdoba’ AND  (NOT  cp  =  14010))

O bien si el NOT nos parece más evidente, podemos excluir el paréntesis interior, a nuestra gusto siempre
conservando el significado que queríamos dar  la operación.
Ordenación
Ordenar según criterios (ORDER BY)

Podemos ordenar los registros devueltos por una consulta por el campo o campos que estimemos oportunos: 

SELECT *

FROM  CIUDAD

ORDER  BY  provincia  ASC, numhabitantes  DESC

Esta consulta devolvería todas las ciudades ordenadas por provincia en orden ascendente, y dentro de los de la
misma provincia ordenaría las ciudades por orden descendente del número de habitantes. Si no indicamos ASC ni
DESC, el comportamiento por defecto será el orden ascendente (ASC).

Devolución de expresiones
Asignación de un alias a un dato devuelto (AS)

SELECT idCliente AS id, nombre  AS  cliente, descripcion  AS  desc

FROM  CLIENTES

Uso de expresiones empleando operadores y/o funciones

Podemos practicar en SQLzoo a usar expresiones con operadores y funciones. Por ejemplo: 

SELECT MOD(DAY(NOW()),7) AS numSemana,  POW(2,3) AS potencia8

Devuelve el número de semana en la que nos encontramos dentro del mes, ya que NOW() nos devuelve la
fecha/hora actual, de la cual extraemos el día con DAY, y posteriormente calculamos el módulo 7 de dicho día (de
modo que para un día 26 devolvería un 5, por ejemplo). El dato con alias potencia8 devolvería 8 (2 elevado a 3,
POW es power, potencia).

Se puede combinar naturalmente la potencia de este lenguaje de expresiones usando operadores y funciones sobre
los datos de los registros de una tabla:

SELECT DAY(fechaLinea) AS dia, FLOOR(precioLinea  *  0.85) AS precioDtoRedondeado

FROM  LINEAPEDIDO 
Consultas agrupadas (GROUP BY) 
Las consultas anteriores recuperaban, trabajaban con, y mostraban información a nivel de cada registro
individual de la base de datos. Así, si tenemos un producto con un determinado precio, podemos devolver el precio
mediante SELECT precioLinea o bien operar sobre él como en SELECT precioLinea * 0.85.

Ahora bien, podemos querer obtener información que no proviene de un registro individual sino de la
agrupación de información, como es el caso de contar el número de líneas de pedido, sumar el precio de todas las
líneas por cada pedido, etc. Para ello, debemos emplear funciones agregadas y en la mayoría de los casos agrupar
por algún campo.

Así, para ver el número total de registros podemos hacer:

SELECT COUNT(*)

FROM  LINEAPEDIDO 

Si por el contrario deseamos obtener el total de líneas por pedido, debemos indicar queagrupe por idPedido, lo
que contará todos los registros con el mismo idPedido y calculará sucuenta:

SELECT idPedido, COUNT(*)

FROM  LINEAPEDIDO

GROUP BY  idPedido 

Lo mismo se puede aplicar a otras funciones como la suma, indicando en ese caso aparte de la agrupación el
campo que queremos sumar:

SELECT idPedido, SUM(precioLinea)

FROM  LINEAPEDIDO

GROUP BY  idPedido

¿Y si queremos hallar la media de los precios por cada pedido? En ese caso necesitamos de nuevo agrupar
(GROUP BY) por pedido.

SELECT idPedido, AVG(precioLinea)

FROM  LINEAPEDIDO

GROUP BY  idPedido 


Igualmente, podríamos aplicar un redondeo (ROUND) sobre la media, para dejar 4 decimales, y aplicarle un alias
(AS) para el nombre del dato de salida.

SELECT idPedido, ROUND(AVG(precioLinea),4)  AS  media

FROM  LINEAPEDIDO

GROUP BY  idPedido 

O podríamos establecer una condición sobre el dato agrupado (HAVING), de forma que solamente se muestren


las medias menores o iguales que 10. Existe una gran cantidad de funciones de agregación definidas en SQL, pero
hay que tener precaución porque pueden diferir de un SGBD a otro. 

SELECT idPedido, ROUND(AVG(precioLinea),4)

FROM  LINEAPEDIDO

GROUP BY  idPedido

HAVING AVG(precioLinea) < 10 

Para practicar un poco con las más comunes es muy recomendable este tutorial interactivo. En MySQL tendríamos
las que aparecen en este enlace. Este es el desglose completo de las funciones de agregación estándar:

También podría gustarte