SQL - Base de Datos 1

28

description

Presentacion sobre secuencias de SQL y teoria

Transcript of SQL - Base de Datos 1

  • Comandos DDLComandoDescripcinCREATEUtilizado para crear nuevas tablas, campos e ndicesDROPEmpleado para eliminar tablas e ndicesALTERUtilizado para modificar las tablas agregando campos o cambiando la definicin de los campos.

  • Comandos DMLComandoDescripcinSELECTUtilizado para consultar registros de la base de datos que satisfagan un criterio determinadoINSERTUtilizado para cargar lotes de datos en la base de datos en una nica operacin.UPDATEUtilizado para modificar los valores de los campos y registros especificadosDELETEUtilizado para eliminar registros de una tabla de una base de datos

  • ClusulaDescripcinFROMUtilizada para especificar la tabla de la cual se van a seleccionar los registrosWHEREUtilizada para especificar las condiciones que deben reunir los registros que se van a seleccionarGROUP BYUtilizada para separar los registros seleccionados en grupos especficosHAVINGUtilizada para expresar la condicin que debe satisfacer cada grupoORDER BYUtilizada para ordenar los registros seleccionados de acuerdo con un orden especfico

  • OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin.

  • OperadorUsoMayor queDistinto de=Mayor Igual que=Igual queBETWEENUtilizado para especificar un intervalo de valores.LIKEUtilizado en la comparacin de un modeloInUtilizado para especificar registros de una base de datos

  • FuncinDescripcinAVGUtilizada para calcular el promedio de los valores de un campo determinadoCOUNTUtilizada para devolver el nmero de registros de la seleccinSUMUtilizada para devolver la suma de todos los valores de un campo determinadoMAXUtilizada para devolver el valor ms alto de un campo especificadoMINUtilizada para devolver el valor ms bajo de un campo especificado

  • Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva informacin de las bases de datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

  • La sintaxis bsica de una consulta de seleccin es la siguiente: SELECT Campos FROM Tabla En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:

    SELECT Nombre, Telfono FROM Clientes Esta consulta devuelve un recordset con el campo nombre y telfono de la tabla clientes.

  • Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clusula se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:

    SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre; Esta consulta devuelve los campos CodigoPostal, Nombre, Telfono de la tabla Clientes ordenados por el campo Nombre.

  • Se pueden ordenar los registros por mas de un campo, como por ejemplo: SELECT CodigoPostal, Nombre, Telfono FROM Clientes ORDER BY CodigoPostal, Nombre Incluso se puede especificar el orden de los registros: ascendente mediante la clasula (ASC -se toma este valor por defecto) descendente (DESC) SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC

  • PredicadoDescripcinALLDevuelve todos los campos de la tablaTOPDevuelve un determinado nmero de registros de la tablaDISTINCTOmite los registros cuyos campos seleccionados coincidan totalmenteDISTINCTROWOmite los registros duplicados basandose en la totalidad del registro y no slo en los campos seleccionados.

  • Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instruccin SQL. No es conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido indicar el listado de campos deseados. SELECT ALL FROM Empleados SELECT * FROM Empleados

  • Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC

  • Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25 registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la clusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso: SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESCEl valor que va a continuacin de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualizacin de la consulta.

  • Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser nicos. Si dos registros contienen Lpez en el campo Apellido, la siguiente instruccin SQL devuelve un nico registro:

    SELECT DISTINCT Apellido FROM Empleados

    Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la clusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.

  • Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que slo se fijaba en el contenido de los campos seleccionados, ste lo hace en el contenido del registro completo independientemente de los campo indicados en la clusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados

    Si la tabla empleados contiene dos registros: Antonio Lpez y Marta Lpez el ejemplo del predicado DISTINCT devuleve un nico registro con el valor Lpez en el campo Apellido ya que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el valor Lpez en el apellido ya que se buscan no duplicados en el registro completo.

  • En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederamos de la siguiente forma:

    SELECT DISTINCTROW Apellido AS Empleado FROM Empleados

  • La recuperacin de registros de bases de datos externa. Es ocasiones es necesario la recuperacin de informacin que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutar la consulta o que en ese momento no se encuentra abierta, esta situacin la podemos salvar con la palabra reservada IN de la siguiente forma:

    SELECT DISTINCTROW Apellido AS Empleado FROM EmpleadosIN 'c:\databases\gestion.mdb' En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados.

  • Los operadores lgicos soportados por SQL son: AND, OR, XOR, Is y Not. A excepcin de los dos ltimos todos poseen la siguiente sintaxis: operador En donde expresin1 y expresin2 son las condiciones a evaluar, el resultado de la operacin vara en funcin del operador lgico.

    SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50 SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100 SELECT * FROM Empleados WHERE NOT Estado = 'Soltero SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado')

  • Para indicar que deseamos recuperar los registros segn el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: campo [Not] Between valor1 And valor2 (la condicin Not es opcional) En este caso la consulta devolvera los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condicin Not devolver aquellos valores no incluidos en el intervalo.

    SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999

    (Devuelve los pedidos realizados en las provincias cuyo cdigo postal esta entre 28000 y 28999)

  • Se utiliza para comparar una expresin de cadena con un modelo en una expresin SQL. Su sintaxis es: expresin Like modelo En donde expresin es una cadena modelo o campo contra el que se compara expresin. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana Mara), o se pueden utilizar caracteres comodn como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*).

  • El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de cualquier letra entre A y F y de tres dgitos: Like 'P[A-F]###' Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la D seguidas de cualquier cadena. Like '[A-D]*'

  • Tipo de coincidenciaModelo PlanteadoCoincideNo coincideVarios caracteres'a*a''aa', 'aBa', 'aBBBa''aBC'Carcter especial'a[*]a''a*a''aaa'Varios caracteres'ab*''abcdefg', 'abc''cab', 'aab'Un solo carcter'a?a''aaa', 'a3a', 'aBa''aBBBa'Un solo dgito'a#a''a0a', 'a1a', 'a2a''aaa', 'a10a'Rango de caracteres'[a-z]''f', 'p', 'j''2', '&'Fuera de un rango'[!a-z]''9', '&', '%''b', 'a'Distinto de un dgito'[!0-9]''A', 'a', '&', '~''0', '1', '9'

  • Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los en una lista. Su sintaxis es: expresin [Not] In(valor1, valor2, . . .) SELECT * FROM Pedidos WHERE Provincia In ('Madrid', Barcelona', 'Sevilla')

  • La clusula WHERE puede usarse para determinar qu registros de las tablas enumeradas en la clusula FROM aparecern en los resultados de la instruccin SELECT. Si no se emplea esta clusula, la consulta devolver todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuacin de FROM. SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000 SELECT Id_Producto, Existencias FROM Productos WHERE Existencias
  • PACIENTE (CdigoPaciente, nombre, apellidos, direccin, poblacin, provincia, cdigopostal).INGRESO (cdigo, nmero_habitacin, nmero_cama, fecha_ingreso, cdigo_paciente, cdigo_mdico).MEDICO (Cdigo_Mdico, nombre, apellidos, telfono, especialidad)

  • Traer A pantalla Nombre y Apellidos en un campo llamado Nom_Completo, Telfono de todos los pacientes atendidos en la especialidad CardiologaTraer a pantalla Nombre del paciente, cdigo del paciente, cdigo del mdico y habitacin de todos aquellos pacientes que estn entre las camas 300 y 550 y adems el paciente de la cama 605.Traer a pantalla No _ ingreso, Habitacin y Fecha _ ingreso de los pacientes cuyo nombre inicie con las letras de la F a la I.Traer a pantalla el Nombre y Edad aproximada de cada uno de los pacientes del centro mdico. Traer a pantalla el nmero de pacientes atendidos por el Mdico Rodolfo Reyes.Traer el paciente cuyo ingreso al hospital es el ms recienteTraer a impresin un listado de los pacientes cuyo cdigo postal esta en 64000 y 64460 y su apellido paterno incluye por lo menos una RTraer a pantalla todos los mdicos cuyo apellido paterno inicie con la letra S y termine con la letra SDeterminar cuantos das han transcurrido entre el da de ingreso al hospital y el da de hoy de la paciente Mariana Snchez Ruiz.Determinar cuantos das han transcurrido al da de ayer desde que ingresaron al hospital todos los pacientes cuya cama inicia con un 3 o con un 5. Traer a pantalla todos los pacientes que cumplen aos al da de hoy.Traer a pantalla los mdicos cuya especialidad sea Pediatra, Cardiologa o Ginecologa.Traer a pantalla los pacientes cuyo ingreso este entre el 100 y el 200 inclusive y que su medico sea Pedro Ortiz Mellado. Determinar el numero de pacientes hospitalizados Determinar el numero de mdicos por especialidadInsertar un nuevo paciente llamado Luis Reta Nez cuya direccin es Roma 2203, Guadalupe, 64400, su telfono es 83300456 y su fecha de nacimiento es 23 de Febrero de 1983 (suponer que se le asignar el no. 234)Numero de pacientes que son atendidos por la especialidad CardiologaMostrar los nombres completos de los pacientes cuya fecha de ingreso es 03 de Febrero del 2006.Todos los pacientes cuya poblacin sea Santa CatarinaNombre de los pacientes con el nombre del medico que le atiende y la especialidad del mismo.

    *OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoANDEs el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.OREs el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.NOTNegacin lgica. Devuelve el valor contrario de la expresin. OperadorUsoMayor queDistinto de=Mayor Igual que=Igual queBETWEENUtilizado para especificar un intervalo de valores.LIKEUtilizado en la comparacin de un modeloInUtilizado para especificar registros de una base de datos