martes, 21 de mayo de 2019

Recuperar datos de una Tabla

SQL-Lenguaje


DEFINICIÓN

El corazón o poder del  lenguaje SQL es el poder hacer consultas de cualquier tipo a la base de datos en forma no procedural.

La sentencia SELECT 



Empezaremos por la sentencia SELECT, que permite recuperar datos de una o varias tablas. La sentencia SELECT es con mucho la más compleja y potente de las sentencias SQL. 

El resultado de la consulta es una tabla lógica, porque no se guarda en el disco sino que está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular. 

Cuando ejecutamos la consulta se visualiza el resultado en forma de tabla con columnas y filas, pues en la sentencia SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas queremos seleccionar de la tabla origen. 


Sintaxis de la sentencia SELECT 



 
La tabla origen - FROM - 



Con la cláusula FROM indicamos en qué tabla tiene que buscar la información. En este capítulo de consultas simples el resultado se obtiene de una única tabla. La sintaxis de la cláusula es: 


FROM especificación de tabla 



Una especificación de tabla puede ser el nombre de una consulta guardada (las que aparecen en la ventana de base de datos), o el nombre de una tabla que a su vez puede tener el siguiente formato: 


 


Aliastabla es un nombre de alias, es como un segundo nombre que asignamos a la tabla, si en una consulta definimos un alias para la tabla, esta se deberá nombrar utilizando ese nombre y no su nombre real, además ese nombre sólo es válido en la consulta donde se define. El alias se suele emplear en consultas basadas en más de una tabla que veremos en el tema siguiente. La palabra AS que se puede poner delante del nombre de alias es opcional y es el valor por defecto por lo que no tienen ningún efecto. 


Ejemplo: SELECT ......FROM oficinas ofi;

equivalente a SELECT ...... FROM oficinas AS ofi esta sentencia me indica que se van a buscar los datos en la tabla oficinas que queda renombrada en esta consulta con ofi.
En una sentencia SELECT podemos utilizar tablas que no están definidas en la base de datos (siempre que tengamos los permisos adecuados claro), si la tabla no está en la base de datos activa, debemos indicar en qué base de datos se encuentra con la cláusula IN. 

En la cláusula IN el nombre de la base de datos debe incluir el camino completo, la extensión (.mdb), y estar entre comillas simples. 

Supongamos que la tabla empleados estuviese en otra base de datos llamada otra en la carpeta c:\mis documentos\, habría que indicarlo así: 

SELECT * 
FROM empleados IN 'c:\mis documentos\otra.mdb' 

Generalmente tenemos las tablas en la misma base de datos y no hay que utilizar la cláusula IN. 



Selección de columnas 

La lista de columnas que queremos que aparezcan en el resultado es lo que llamamos lista de selección y se especifica delante de la cláusula FROM. 



 
Utilización del * 



Se utiliza el asterisco * en la lista de selección para indicar 'todas las columnas de la tabla'. 



Tiene dos ventajas: 

1. Evitar nombrar las columnas una a una (es más corto). 

2. Si añadimos una columna nueva en la tabla, esta nueva columna saldrá sin tener que modificar la consulta. Se puede combinar el * con el nombre de una tabla (ej. oficinas.*), pero esto se utiliza más cuando el origen de la consulta son dos tablas. 



SELECT * FROM oficinas 


o bien 

SELECT oficinas.* FROM oficinas 

Lista todos los datos de las oficinas 

Columnas de la tabla origen 

Las columnas se pueden especificar mediante su nombre simple (nbcol) o su nombre cualificado (nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene la columna y separados por un punto). 

El nombre cualificado se puede emplear siempre que queramos y es obligatorio en algunos casos que veremos más adelante. 

Cuando el nombre de la columna o de la tabla contiene espacios en blanco, hay que poner el nombre entre corchetes [ ] y además el número de espacios en blanco debe coincidir. Por ejemplo [codigo de cliente] no es lo mismo que [ codigo de cliente] (el segundo lleva un espacio en blanco delante de código) 

Ejemplos : 
SELECT nombre, oficina, contrato 
FROM ofiventas 
Lista el nombre, oficina, y fecha de contrato de todos los empleados. 

SELECT idfab, idproducto, descripcion, precio 
FROM productos 
Lista una tarifa de productos 

Alias de columna. 
Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un alias de columna mediante la cláusula AS será el nombre que aparecerá como título de la columna. 

Ejemplo: 
SELECT idfab AS fabricante, idproducto, descripcion 
FROM productos 
Como título de la primera columna aparecerá fabricante en vez de idfab 

Columnas calculadas. 
Además de las columnas que provienen directamente de la tabla origen, una consulta SQL puede incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos almacenados. 

Para solicitar una columna calculada, se especifica en la lista de selección una expresión en vez de un nombre de columna. La expresión puede contener sumas, restas, multiplicaciones y divisiones, concatenación & , paréntesis y también funciones predefinidas). 

Ejemplos: 
Lista la ciudad, región y el superavit de cada oficina. 
SELECT ciudad, región, (ventas-objetivo) AS superavit 
FROM oficinas 
De cada producto obtiene su fabricante, idproducto, su descripción y el valor del inventario 

SELECT idfab, idproducto, descripcion, (existencias * precio) AS valoracion 
FROM productos 
Lista el nombre, mes y año del contrato de cada vendedor. 

SELECT nombre, MONTH(contrato), YEAR(contrato) 
FROM repventas 
La función MONTH() devuelve el mes de una fecha 
La función YEAR() devuelve el año de una fecha 


Ordenación de las filas - ORDER BY - 


 



Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER BY. 

Con esta cláusula se altera el orden de visualización de las filas de la tabla pero en ningún caso se modifica el orden de las filas dentro de la tabla. La tabla no se modifica. 



Podemos indicar la columna por la que queremos ordenar utilizando su nombre de columna (nbcolumna) o utilizando su número de orden que ocupa en la lista de selección (Nºcolumna). 



Ejemplo: 

SELECT nombre, oficina, contrato 
FROM empleados 
ORDER BY oficina 

es equivalente a 

SELECT nombre, oficina, contrato 
FROM empleados 
ORDER BY 2 

Por defecto el orden será ascendente (ASC) (de menor a mayor si el campo es numérico, por orden alfabético si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora, etc...


En el Siguiente Video se muestra el uso de sentencia simple de Seleccion "Select"



Para acceder a mas información pueden ingresar en la pagina de Microsoft SQL y leer mas sobre 


Material Teórico y Trabajos Prácticos


Trabajo Practico Grupal: Hasta 4 integrantes.

El trabajo debe tener una portada indicando los integrantes del grupo. 

Deberá ser realizado en un archivo en la Nube de Google (Google Docs), (los contenidos que considere interesante destacar), compartido entre los cuatro estudiantes y el profesor (oscar.orrego09@gmail.com), todos los integrantes deben tener permiso de Edición.

Fecha Entrega: 29/05/2019 - 
Saludos.

martes, 14 de mayo de 2019

Insertar y Recuperar Registros - Tipo de Datos

Lenguaje de Manipulación de Datos


Insertar datos.

Para almacenar datos en una base de datos debemos insertar filas en las tablas. Para ellos SQL pone a nuestra disposición la sentencia INSERT.


Inserción de filas

El proceso de inserción de filas consiste en añadir a una tabla una o más filas y en cada fila todos o parte de sus campos.

Podemos distinguir dos formas de insertar filas:
  • Inserción individual de filas.
  • Inserción múltiple de filas.

La sintaxis de la sentencia INSERT es diferente según cual sea nuestro propósito.
Sólo podremos omitir un campo al efectuar una inserción cuando este acepte valores nulos


Inserción individual de filas

Para realizar la inserción individual de filas SQL posee la instrucción INSERT INTO. La inserción individual de filas es la que más comúnmente utilizaremos. Su sintaxis es la siguiente:

INSERT INTO <nombre_tabla>
[(<campo1>[,<campo2>,...])]
values (<valor1>,<valor2>,...);
   
Como se puede observar la sentencia tiene dos partes claramente diferenciadas, por un lado la propia INSERT INTO seguida de la lista de campos en los que queremos insertar los datos, y por otro la lista de valores que queremos insertar en los campos. La mejor forma de ver esto es a través de un ejemplo.


INSERT INTO tCoches
(matricula, marca, modelo, color, numero_kilometros)
values
('AM111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE',
78000);
Nota: Hemos utilizado el color rojo para los datos de tipo texto,
entrecomillados con la comillas simple, y el azul para los numéricos.
    
Con esta sentencia INSERT creamos un registro en la tabla tCoches con los valores especificados, es decir, la matricula tendrá el valor AM111CA, la marca será RENAULT y así sucesivamente.
¿Que ocurriría si ya existiera un coche con la matricula AM111CA? Se producirá un error, porque hemos definido la clave primaria en el campo matricula, y como hemos visto la clave primaria debe ser única.
Si omitimos algún par " campo-valor " en la sentencia INSERT, pueden ocurrir varias cosas:
  • Que se produzca un error, si el campo no acepta valores nulos.
  • Que se grave el registro y se deje nulo el campo, cuando el campo acepte valores nulos.
  • Que se grave el registro y se tome el valor por defecto, cuando el campo tenga definido un valor por defecto.
Que hacer en cada cada momento dependerá del programa.
Por ejemplo, la siguiente sentencia creará un registro en la tabla tCoches con el campo numero kilómetros cero, ya que este es su valor por defecto.


INSERT INTO tCoches 
(matricula,
 marca      ,
 modelo     ,
 color)
values ('AM111CA',
'RENAULT',
'MEGANE TR100',
'NEGRO DIAMANTE'); 



Tipo de Datos

SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos de datos pueden ser numéricos (con o sin decimales), alfanuméricos, de fecha o booleanos (si o no). Según el motor de base de datos que estemos utilizando los tipos de datos varían, pero se reducen básicamente a los expuestos anteriormente, aunque en la actualidad casi todos los motores de bases de datos soportan un nuevo tipo, el BLOB (Binary Large Object), que es un tipo de datos especial destinado a almacenar archivos, imágenes ...

Dependiendo de cada motor de bases de datos el nombre que se da a cada uno de estos tipos puede variar. Básicamente tenemos los siguientes tipos de datos.

Númericos
Alfanúmericos
Fecha
Lógico
BLOB
Intchar(n)DateBitImage
Numeric(n.m)varchar(n,m)DateTimeText
Decimal(n,m)  
Float

Mas detalladamente tenemos:
Tipos de datos númericos
Tipo
Definción
Bytes
Int
Valores enteros con signo.
4
Numeric(n,m)
Números reales de hasta 18 digitos (con decimales), donde n representa el total de dígitos admitidos (normalmente denominado precisión) y m el número de posiciones decimales (escala).
5-17
Decimal(n,m)
Igual que el tipo numeric.
5-17
Float
Número de coma flotante, este tipo de datos se suele utilizar para los valores en notación cientifica.
4-8
Tipos de datos alfanúmericos
Tipo
Definción
Bytes
char(n)
Almacena de 1 a 255 caracteres alfanúmericos. Este valor viene dado por n, y es el tamaño utilizado en disco para almacenar dato. Es decir si defino un campo como char(255), el tamaño real del campo será de 255, aunque el valor solo contenga 100. 
0-255
varchar(n)
Igual que el tipo char, con la salvedad que varchar almacena únicamente los bytes que contenga el valor del campo.
0-255
Nota:El tamaño del campo varia en función de cada base de datos, siendo 255 el valor standart. En realidad el tamaño viene delimitado por el tamaño de las páginas de datos, para SQL Server el límite esta en 8000 bytes (8000 caracteres), siempre y cuando tengamos definido el tamaño de la página de datos a 8K
Tipos de datos fecha
Tipo
Definción
Bytes
Date
Almacena fechas, con día, mes y año.
8
Datetime
Almacena fechas con fecha y hora
4
Nota:La aparición de los tipos de datos de fecha supuso una atentica revolución el mundo de la bases de datos, en realidad, la base de datos almacena internamente números enteros, de hay que el tamaño sea de 4 bytes y 8 bytes (2 enteros), pero aporta la validación del dato introducido.
Tipos de datos lógicos
Tipo
Definición
Bytes
Bit
Tipo bit. Almacena un 0 ó no cero, según las bases de datos será 1 ó -1. Se aplica la lógica booleana, 0 es falso y no cero verdadero.
1 bit
Tipos de datos BLOB
Tipo
Definición
Bytes
Image
Almacena imágenes en formato binario, hasta un máximo de 2 Gb de tamaño.
0-2Gb
Text
Almacena texto en formato binario, hasta un máximo de 2 Gb de tamaño.
0-2Gb

Material Teórico y Trabajos Prácticos




Trabajo Practico Grupal: Hasta 4 integrantes.

El trabajo debe tener una portada indicando los integrantes del grupo. 

Deberá ser realizado en un archivo en la Nube de Google (Google Docs), (los contenidos que considere interesante destacar), compartido entre los cuatro estudiantes y el profesor (oscar.orrego09@gmail.com), todos los integrantes deben tener permiso de Edición.

Fecha Entrega: 21/05/2019 - 
Saludos.

martes, 7 de mayo de 2019

Crear y Borrar una Tabla

Crear y Borrar Tablas

Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un dato específico, un solo valor.

Para crear una tabla, debe proporcionar un nombre para ésta además de los nombres y los tipos de datos de cada columna de la tabla. También es recomendable indicar si se permiten valores NULL en cada columna. Para crear una tabla, debe tener el permiso CREATE TABLE y el permiso ALTER SCHEMA en el esquema que contiene la tabla. El rol fijo de base de datos db_ddladmin tiene dichos permisos.

La mayoría de las tablas tienen una clave principal, que se compone de una o varias columnas de la tabla. Una clave principal siempre es única. Motor de base de datos exigirá la restricción de que el valor de la clave principal no se puede repetir en la tabla.

Para obtener una lista de tipos de datos y vínculos para una descripción de cada uno, consulte Tipos de datos (Transact-SQL).

Nota: 
Motor de base de datos se puede instalar para distinguir mayúsculas de minúsculas o no distinguir mayúsculas de minúsculas. Si se instala Motor de base de datos para distinguir mayúsculas de minúsculas, los nombres de objetos siempre deben tener las mismas mayúsculas y minúsculas. Por ejemplo, una tabla denominada OrderData es diferente de la denominada ORDERDATA. Si se instala Motor de base de datos para no distinguir mayúsculas de minúsculas, esos dos nombres de tablas se consideran la misma tabla y ese nombre solo se puede utilizar una vez.


En el siguiente video se muestra como crear y eliminar Tablas en SQL Server.





En el siguiente enlace encontraras diapositivas donde muestra como crear y borrar tablas


Realizar el siguiente Trabajo Práctico Taller donde encontrarás aspectos teóricos mínimos, ejercicios resueltos y problemas propuestos.



Trabajo Practico Grupal: Hasta 4 integrantes.

El trabajo debe tener una portada indicando los integrantes del grupo. 

Deberá ser realizado en un archivo en la Nube de Google (Google Docs), (los contenidos que considere interesante destacar), compartido entre los cuatro estudiantes y el profesor (oscar.orrego09@gmail.com), todos los integrantes deben tener permiso de Edición.

Fecha Entrega: 14/05/2019 - 
Saludos.