viernes, 31 de mayo de 2013

SQL server
¿Qué es el SQL ?

que significa lenguaje de consulta estructurado o en ingles Structured query language.


 Es un lenguaje surgido de un proyecto de investigación por la  IBM para el acceso a bases de datos relacionales.
Actualmente se ha convertido en un estándar  de lenguaje de bases de datos, y la mayoría de los sistemas de bases de datos lo soportan, desde sistemas para ordenadores personales, hasta grandes ordenadores.
SQL nos permite realizar consultas a la base de datos. Pero SQL además realiza funciones de definición, control y gestión de la base de datos.
Las sentencias SQL se clasifican según su finalidad dando origen a tres ‘lenguajes’ o mejor dicho sublenguajes
 y estos son los tipos:
1.-El DDL (Data Description Language), lenguaje de definición de datos, incluye órdenes para definir, modificar o borrar las tablas en las que se almacenan los datos y de las relaciones entre estas. (Es el que más varia de un sistema a otro)
2.-El DCL (Data Control Language), lenguaje de control de datos, contiene elementos útiles para trabajar en un entorno multiusuario, en el que es importante la protección de los datos, la seguridad de las tablas y el establecimiento de restricciones en el acceso, así como elementos para coordinar la compartición de datos por parte de usuarios concurrentes, asegurando que no interfieren unos con otros.
3.-El DML (Data Manipulation Language), lenguaje de manipulación de datos, nos permite recuperar los datos almacenados en la base de datos y también incluye órdenes para permitir al usuario actualizar la base de datos añadiendo nuevos datos, suprimiendo datos antiguos o modificando datos previamente almacenados.

         Instalación de SQL
Para realizar esta instalación la versión gratuita: Express. Puedes descargarla desde la página web de Microsoft, desde el enlace para iniciar descarga. Si quieres ver las diferentes ediciones y sus características principales visita el siguiente avanzado
Si la instalación se realizo a partir del archivo descargado de Internet, la descarga se empaqueta como un único ejecutable mediante una tecnología de instalación de Microsoft llamada SFXCab. Al hacer doble clic en él .exe se inicia automáticamente el proceso de instalación.
Los puntos más importantes a tener en cuenta son:
  • Habilitar el SQL Server Management Studio en la instalación (si no lo está por defecto) cuando nos pregunte qué componentes deseamos instalar.
  • Indicar que se trata de una Instancia predeterminada.

Entrada al SQL Server Management Studio
Aunque trabajemos en modo local, la entrada a la herramienta es la misma. Para empezar entramos a través del acceso directo  o a través de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.
Lo primero que deberemos hacer es establecer la conexión con el servidorcomo lo muestra la imagen:
Seleccionamos el nombre del servidor y pulsamos el botón Conectar. Se abrirá la ventana inicial del SQL Server Management Studio (en adelante SSMS):
En la parte izquierda tenemos abierto el panel Explorador de Objetos en el que aparece debajo del nombre del servidor con el que estamos conectados una serie de carpetas y objetos que forman parte del servidor.
En el panel de la derecha se muestra la zona de trabajo, que varía según lo que tengamos seleccionado en el Explorador de objetos, en este caso vemos el contenido de la carpeta que representa el servidor ord01.
En la parte superior tenemos el menú de opciones y la barra de herramientas Estándar. como muestra en la siduiente imagen:
SSMS - Barra de herramientas
Con las siguientes opciones:
Con las siguientes opciones:
1. Nueva consulta
6. Consulta de SQL Server Mobile
11. Resumen
2. Consulta de motor de Base de datos
7. Abrir archivo
12. Explorador de Objetos
3. Consulta MDX de Analysis Services
8. Guardar
13. Explorador de Plantillas
4. Consulta DMX de Analysis Services
9. Guardar todo
14. Ventana de Propiedades
5. Consulta MXLA de Analysis Services
10. Servidores registrados
Cómo se crea una sentencia SQL en ACCESS

esto es para que los ejemplos y ejercicios se puedan ejecutar y probar. Aunque el curso esté realizado para Access2000, sirve también para Access en sus versiones posteriores Access 2002, Access 2003 y Access 2007
Para crear y después ejecutar una sentencia SQL en Access, lo fácil es utilizar la ventana SQL de las consultas.
Para crear una consulta de selección, tenemos los siguientes pasos:
1.-primero tenemos que abrir la base de datos donde se encuentra la consulta a crear.
2.- luego hacer clic sobre el objeto Consulta que se encuentra a la izquierda de la ventana de la base de datos.
3.-y despues hacer clic sobre el botón Nuevo de la ventana de la base de datos. 
Aparecerá el siguiente cuadro de diálogo:
Seleccionar Vista Diseño.
Hacer clic sobre el botón Aceptar.















 y despues parecerá un cuadro de diálogo:
Como no queremos utilizar el generador de consultas sino escribir nuestras propias sentencias SQL, no agregamos ninguna tabla.
Hacer clic sobre el botón Cerrar.

Aparecerá la ventana de diseño de consultas.
 


luego hacer clic sobre el botón , este botón es el que nos permite elegir la vista de la consulta, puede adoptar una de estas tres formas
 
Al apretar el botón cerrar de la pantalla anterior se abre esta ventana donde introducimos la sentencia SQL.
Una vez escrita sólo nos queda ver si está bien hecha.
Hacer clic sobre el botón de la barra de herramientas para ejecutar la sentencia.
Si se eqivocan  a la hora de escribir la sintaxis,
Access nos saca un mensaje de error y muchas veces el cursor se queda posicionado en la palabra donde ha saltado el error. Ojo, a veces el error está antes o después de donde se ha quedado el cursor.
Si no saca ningún mensaje de error, esto quiere decir que la sentencia respeta la sintaxis definida, pero esto no quiere decir que la sentencia esté bien, puede que no obtenga lo que nosotros queremos, en este caso habrá que rectificar la sentencia.
Guardar la consulta haciendo clic sobre el botón de la barra de herramientas.

 

ejemplos


Nota: Estas tablas están orientadas a la didáctica, no a un diseño óptimo.
  

Tabla empleados con los siguientes campos:
  1. numemp: número del empleado
  2. nombre : nombre y apellidos del empleado
  3. edad : edad del empleado
  4. oficina : número de la oficina donde trabaja el empleado, p.ej. Antonio Viguer trabaja en la oficina 12 de Alicante
  5. titulo : el cargo que desempeña el empleado
  6. contrato : fecha en que se contrató al empleado
  7. jefe : número de su jefe inmediato, p.ej. El jefe de Antonio Viguer es José González. Observar que Luis Antonio no tiene jefe, es el director general.
  8. cuota : cuota del empleado, sería el importe mínimo de ventas que debe alcanzar el empleado en el año
  9. ventas : importe de ventas realizadas durante este año




Tabla oficinas con los siguientes campos:

oficina: código de la oficina
ciudad: ciudad donde está ubicada
region : región a la que pertenece
dir : director de la oficina (su número de empledo) por ejemplo la oficina 12 tiene como director el empleado104 José González.
objetivo : objetivo de ventas que debe alcanzar la oficina
ventas: ventas de la oficina

 




















Tabla clientes con los siguientes campos:

numclie: número de cliente
nombre : nombre y apellidos del cliente
repclie : nº del representante asignado al cliente.
Cada cliente tiene un representante asignado (el que figura en repclie) que será el que generalmente le atienda.

























Tabla productos con los siguientes campos:

idfab: identificativo del fabricante del producto
idproducto : código que utiliza el fabricante para codificar el producto. Observar que aparecen varias líneas con el mismo idproducto (41003), por lo que la clave principal de la tabla deberá ser idfab+idproducto
descripcion: nombre del producto
precio: precio del producto
existencias: nº de unidades del producto que tenemos en almacén.





























Tabla pedidos:

codigo : nº secuencial que sirve de clave principal
numpedido: nº de pedido. Observar que un pedido puede tener varias líneas.
fechapedido : fecha del pedido
clie : cliente que efectua el pedido
rep : representante que tramita el pedido
fab: fabricante del producto que se pide
producto : idproducto del producto que se pide.
cant : cantidad que se pide del producto
importe : importe de la línea de pedido


                                               LAS CONSULTAS SIMPLES


Empezaremos por estudiar 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. Empezaremos por ver las consultas más simples, basadas en una sola tabla.
Esta sentencia forma parte del DML (lenguaje de manipulación de datos), en este tema veremos cómo seleccionar columnas de una tabla, cómo seleccionar filas y cómo obtener las filas ordenadas por el criterio que queramos.
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 SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas queremos seleccionar de la tabla origen.

                                                 SELECCION DE FILAS


A continuación veremos las cláusulas que nos permiten indicar qué filas queremos visualizar.





                                                    LAS CLAUSULAS

Ay tres tipos de clausulas:


 1.- Las cláusulas DISTINCT / ALL


2.-La cláusula TOP


3.-La cláusula WHERE




                                      Las cláusulas DISTINCT / ALL

Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de filas. Si por el contrario queremos que aparezcan todas las filas incluidas las duplicadas, podemos incluir la cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.
Por ejemplo queremos saber los códigos de los directores de oficina.
SELECT dir FROM oficinas
SELECT ALL dir FROM oficinas
Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas, por lo tanto aparecerá cuatro veces en el resultado de la consulta.
SELECT DISTINCT dir FROM oficinas
En este caso el valor 108 aparecerá una sola vez ya que le decimos que liste los distintos valores de directores.


                                                      La cláusula TOP


La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores iguales, si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25, entonces devolverá 26 registros en vez de 25 (o los que sea). Siempre se guia por la columna de ordenación, la que aparece en la cláusula ORDER BY o en su defecto la clave principal de la tabla.
Por ejemplo queremos saber los dos empleados más antiguos de la empresa.
SELECT TOP 2 numemp, nombre
FROM empleado
ORDER BY contrato
Lista el código y nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente los dos primeros (serán los dos más antiguos).
SELECT TOP 3 numemp, nombre
FROM empleado
ORDER BY contrato
En este caso tiene que sacar los tres primeros, pero si nos fijamos en las fechas de contrato tenemos 20/10/86, 10/12/86, 01/03/87, 01/03/87, la tercera fecha es igual que la cuarta, en este caso sacará estas cuatro filas en vez de tres, y sacaría todas las filas que tuviesen el mismo valor que la tercera fecha de contrato.
El número de filas que queremos visualizar se puede expresar con un número entero o como un porcentaje sobre el número total de filas que se recuperarían sin la cláusula TOP. En este último caso utilizaremos la cláusula TOP n PERCENT (porcentaje en inglés).
SELECT TOP 20 PERCENT nombre
FROM empleado
ORDER BY contrato
Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente un 20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si tuviesemos 100 empleados sacaría los 20 primeros


                                                     La cláusula WHERE



La cláusula WHERE selecciona unicamente las filas que cumplan la condición de selección especificada.

En la consulta sólo aparecerán las filas para las cuales la condición es verdadera (TRUE), los valores nulos (NULL) no se incluyen por lo tanto en las filas del resultado. La condición de selección puede ser cualquier condición válida o combinación de condiciones utilizando los operadores NOT (no) AND (y) y OR (ó). En ACCESS2000 una cláusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lógicos AND y OR. Si quieres ver cómo funcionan los operadores lógicos

Para empezar veamos un ejemplo sencillo:
SELECT nombre
FROM empleados
WHERE oficina = 12
Lista el nombre de los empleados de la oficina 12.
SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30
Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual a 12 y edad mayor que 30)



 

                                                                   Condiciones de selección

 Las condiciones de selección son las condiciones que pueden aparecer en la cláusula WHERE.

En SQL tenemos cinco condiciones básicas:

el test de comparaciónel test de rango
el test de pertenencia a un conjuntoel test de valor nuloel test de correspondencia con patrón .

                                              El test de comparación. Compara el valor de una expresión con el valor de otra.
La sintaxis es la siguiente:
= igual que
<> distinto de
< menor que
<= menor o igual
> mayor que
>= mayor o igual
SELECT numemp, nombre
FROM empleados
WHERE ventas > cuota
Lista los empleados cuyas ventas superan su cuota
SELECT numemp, nombre
FROM empleados
WHERE contrato < #01/01/1988#
Lista los empleados contratados antes del año 88 (cuya fecha de contrato sea anterior al 1 de enero de 1988).
¡¡Ojo!!, las fechas entre almohadillas # # deben estar con el formato mes,dia,año aunque tengamos definido otro formato para nuestras fechas.
SELECT numemp, nombre
FROM empleados
WHERE YEAR(contrato) < 1988
Este ejemplo obtiene lo mismo que el anterior pero utiliza la función year(). Obtiene los empleados cuyo año de la fecha de contrato sea menor que 1988.
SELECT oficina
FROM oficinas
WHERE ventas < objetivo * 0.8
Lista las oficinas cuyas ventas estén por debajo del 80% de su objetivo.
Hay que utilizar siempre el punto decimal aunque tengamos definida la coma como separador de decimales.
SELECT oficina
FROM oficinas
WHERE dir = 108
Lista las oficinas dirigidas por el empleado 108.
                                     Test de rango (BETWEEN).

Examina si el valor de la expresión está comprendido entre los dos valores definidos por exp1 y exp2.
Tiene la siguiente sintaxis:

SELECT numemp, nombre
FROM empleados
WHERE ventas BETWEEN 100000 AND 500000
Lista los empleados cuyas ventas estén comprendidas entre 100.000 y 500.00
SELECT numemp, nombre
FROM empleados
WHERE (ventas >= 100000) AND (ventas <= 500000)
Obtenemos lo mismo que en el ejemplo anterior. Los paréntesis son opcionales.
                                       Test de pertenencia a conjunto (IN)


Examina si el valor de la expresión es uno de los valores incluidos en la lista de valores.Tiene la siguiente sintaxis:

SELECT numemp, nombre, oficina
FROM empleados
WHERE oficina IN (12,14,16)
Lista los empleados de las oficinas 12, 14 y 16
SELECT numemp, nombre
FROM empleados
WHERE (oficina = 12) OR (oficina = 14) OR (oficina = 16)



                                    Test de valor nulo (IS NULL)
Una condición de selección puede dar como resultado el valor verdadero TRUE, falso FALSE o nulo NULL.

Cuando una
columna que interviene en una condición de selección contiene el valor nulo, el resultado de la condición no es verdadero ni falso, sino nulo, sea cual sea el test que se haya utilizado. Por eso si queremos listar las filas que tienen valor en una determinada columna, no podemos utilizar el test de comparación, la condición oficina = null devuelve el valor nulo sea cual sea el valor contenido en oficina. Si queremos preguntar si una columna contiene el valor nulo debemos utilizar un test especial, el test de valor nulo.
Tiene la siguiente sintaxis:


Ejemplos:
SELECT oficina, ciudad
FROM oficinas
WHERE dir IS NULL
Lista las oficinas que no tienen director.
SELECT numemp, nombre
FROM empleados
WHERE oficina IS NOT NULL
Lista los empleados asignados a alguna oficina (los que tienen un valor en la columna oficina).
                              Test de correspondencia con patrón (LIKE)
Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el comparar.
Tiene la siguiente sintaxis:



Los comodines más usados son los siguientes:
? representa un carácter cualquiera
* representa cero o más caracteres
# representa un dígito cualquiera (0-9)

Ejemplos:
SELECT numemp, nombre
FROM empleados
WHERE nombre LIKE 'Luis*'
Lista los empleados cuyo nombre empiece por Luis (Luis seguido de cero o más caracteres).
SELECT numemp, nombre
FROM empleados
WHERE nombre LIKE '*Luis*'
Lista los empleados cuyo nombre contiene Luis, en este caso también saldría los empleados José Luis (cero o más caracteres seguidos de LUIS y seguido de cero o más caracteres).
SELECT numemp, nombre
FROM empleados
WHERE nombre LIKE '??a*'
Lista los empleados cuyo nombre contenga una a como tercera letra (dos caracteres, la letra a, y cero o más caracteres.