sql basico.docx

Upload: eduardo-ortiz-de-landazury

Post on 18-Oct-2015

47 views

Category:

Documents


0 download

TRANSCRIPT

INTRODUCCIN

El lenguaje SQL (Structured Query Language) es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos relacional, por tanto, permite la comunicacin con el sistema de gestin de base de datos, para ello hace uso de una combinacin del algebra relacional y construcciones del calculo relacional. Entre las principales caractersticas del SQL podemos destacar las siguientes:

Es un lenguaje para todo tipo de usuarios (administradores, desarrolladores y usuarios normales). El usuario que emplea SQL especifica qu quiere, no donde ni cmo, siguiendo la sintaxis de las instrucciones. Permite hacer distintas consulta de datos. Es posible manejarlo para consultas, actualizaciones, definicin de datos y control (especificacin de restricciones de seguridad).

Se puede usar de forma interactiva (el usuario escribe las rdenes desde el teclado de un terminal y al instante obtiene los resultados en la pantalla) y de forma embebida (mezclando las instrucciones SQL con las instrucciones propias del lenguaje, tal es el caso del lenguaje PL/SQL), SQL se puede utilizar en la mayora de los sistemas manejadores de bases de datos comerciales y libres, claro con las variantes que cada fabricante le puede agregar al estandart de SQL.

El funcionamiento es bien simple. Por un lado, se dispone de una mquina servidora con una base de datos que contiene los datos. Por otro lado, tenemos una mquina cliente con un usuario que ejecuta queries (sentencias) y el motor acta en funcin de la peticin del usuario.

HISTORIA

El lenguaje SQL fue desarrollado sobre un prototipo de gestor de bases de datos relacionales denominado SYSTEM R y diseado por IBM a mediados de los aos setenta. Inclua lenguajes de consultas, entre ellos SEQUEL (Structured English Query Language). Ms tarde se renombr como SQL.

En 1979 Oracle Corporation present la primera implementacin comercial de SQL, que estuvo disponible antes que otros productos de IBM. Por su parte, IBM desarroll productos herederos del prototipo SYSTEM R, como DB2 y SQL/DS.

El instituto ANSI (American National Standard Institute) adopt el lenguaje SQL como estndar para la gestin de bases de datos relacionales en octubre de 1986.

En 1987 lo adopta ISO (International Standarization Organization).En 1989 el estndar ANSI/ISO, revisado y ampliado, se llam SQL-89 o estndar SQL1. Tres aos ms tarde se aprueba el estndar ANSI SQL2 o SQL-92. En 1999 se aprueba el estndar SQL:1999 que introduce mejoras respecto al anterior. SQL:2003 revisa todos los apartados de SQL:1999 y aade uno nuevo, el apartado 14: SQL/XML.

En fin como pequeo final, algunos estndares y novedades que se incorporaron: SQL 86-87: Interseccin de implementaciones existentes 1986 ANSI SQL y 1987 ISO SQL ANSI/ISO. SQL 89 SQL1: Aade integridad referencial bsica (modificacin y borrado restringidos, no proporciona borrado en cascada). SQL 92 SQL2: Nuevos tipos de datos. Funciones internas. Nuevas constantes simblicas. Combinacin externa. SQL dinmico. Eliminacin de vistas. Definiciones de dominio. ALTER y DROP. Mejor tratamiento de las restricciones. SQL 1999 SQL3: Orientacin a objetos. Tipos definidos por el usuario. Roles. Disparadores. Procedimientos, funciones y mtodos definidos por el usuario. SQL 2003: Nuevos tipos de datos. Introduce algunas caractersticas de XML. Funciones SQL que devuelven tablas. Nuevas extensiones de CREATE TABLE. Sentencia MERGE. Generador de secuencias. Tipos nuevos de columnas. SQL 2006: ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras importar y guardar datos XML en una base de datos SQL, manipulndolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML. Adems, proporciona facilidades que permiten a las aplicaciones integrar dentro de su cdigo SQL el uso de XQuery, lenguaje de consulta XML publicado por el W3C (World Wide Web Consortium) para acceso concurrente a datos ordinarios SQL y documentos XML.

SISTEMAS DE GESTIN DE BASE DE DATOSLos sistemas de gestin de base de datos con soporte SQL ms utilizados son, por orden alfabtico: DB2 Firebird Informix Interbase MySQL Oracle PostgreSQL Pervasive SQLite SQL Server Sybase ASE

TIPOS DE SENTENCIAS SQL

El Lenguaje SQL proporciona un gran conjunto de sentencias que se utilizan en varias tareas: como consultar datos de la base de datos, crear, actualizar y eliminar objetos de la base de datos, crear, actualizar y eliminar datos de los objetos, controlar el acceso a la base de datos y a los objetos. Dependiendo de las tareas, podemos clasificar las sentencias SQL en varios tipos.Se dividen en tres partes:

DDL (Definicin de datos)CREATE TABLE -> Aade una nueva tabla a la base de datos.DROP TABLE -> Suprime una tabla de la base de datos.ALTER TABLE -> Modifica la estructura de una tabla existente.CREATE VIEW -> Aade una nueva vista a la base de datos.DROP VIEW -> Suprime una vista a la base de datos.CREATE INDEX -> Construye un ndice para una columna.DROP INDEX -> Suprime un ndice para una columna.CREATE SYNONYM -> Define un alias para un nombre de tabla.DROP SYNONYM -> Suprime un alias para un nombre de tabla.

DML (Manipulacin de datos)SELECT -> Recupera datos de la base de datos.INSERT -> Aade nuevas filas de datos a la base de datos.DELETE -> Suprime filas de datos en la base de datos.UPDATE -> Modifica datos existentes en la base de datos.

DCL (Control de acceso, Transacciones y SQL Programtico)GRANT -> Concede privilegios de acceso a usuarios.REVOKE -> Suprime privilegios de acceso a usuarios.COMMIT -> Finaliza la transaccin actual.ROLLBACK -> Aborta la transaccin actual.DECLARE -> Define un cursor para una consulta.OPEN -> Abre un cursos para recuperar resultados de una consulta.FETCH -> Recupera una fila de resultados de consulta.CLOSE -> Cierra un cursor.

DML (LENGUAJE DE DEFINICIN DE DATOS)

Permite la especificacin no slo de un conjunto de relaciones e informacin relativa a esas relaciones. El esquema de cada relacin El dominio de valores asociado a cada atributo Las restricciones de integridad El conjunto de ndices que se deben mantener por cada relacin Informacin de seguridad y autorizacin para cada relacin La estructura de almacenamiento fsico de cada relacin en disco

CREATE DATABASELa sentencia CREATE DATABASE sirve para crear la estructura que contendr a todos los objetos de la base de datos, como son las tablas, las vistas, las interrelaciones.

La sintaxis es la siguiente:CREATE DATABASE nombre_de_la_base_datos

Posteriormente para poder empezar a crear los objetos que contendr, se debe de especificar que se va a hacer uso de ella, a travs de la siguiente sintaxis.

USE nombre_de_la_base_datos

Ahora si, a empezar a trabajar sobre la base de datos..

Si deseara borrar la base de datos utilice, DROP DATABASE nombre_de_la_base_de_datos

CREATE TABLE

La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos, nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas columnas.

La sintaxis es como se muestra a continuacin:

nbtabla: nombre de la tablanbcol: nombre de la columnatipo: tipo de dato de la columna, todos los datos almacenados en la columna debern ser de ese tipo, los cuales se muestran a continuacin.

TIPOS DE DATOS DE SQL

Tipo de datoSinnimosTamaoDescripcin

BINARYVARBINARYBINARY VARYINGBIT VARYING1 byte por carcterSe puede almacenar cualquier tipo de datos en un campo de este tipo. Los datos no se traducen (por ejemplo, a texto). La forma en que se introducen los datos en un campo binario indica cmo aparecern al mostrarlos.

BITBOOLEANLOGICALLOGICAL1YESNO1 byteValores S y No, y campos que contienen solamente uno de dos valores.

TINYINTINTEGER1BYTE1 byteUn nmero entero entre 0 y 255.

COUNTERAUTOINCREMENTSe utiliza para campos contadores cuyo valor se incrementa automticamente al crear un nuevo registro.

MONEYCURRENCY8 bytesUn nmero entero comprendido entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.

DATETIMEDATETIME 8 bytesUna valor de fecha u hora entre los aos 100 y 9999

UNIQUEIDENTIFIERGUID128 bitsUn nmero de identificacin nico utilizado con llamadas a procedimientos remotos.

DECIMALNUMERICDEC17 bytesUn tipo de datos numrico exacto con valores comprendidos entre 1028 - 1 y - 1028 - 1. Puede definir la precisin (1 - 28) y la escala (0 - precisin definida). La precisin y la escala predeterminadas son 18 y 0, respectivamente.

REALSINGLEFLOAT4IEEESINGLE4 bytesUn valor de coma flotante de precisin simple con un intervalo comprendido entre 3,402823E38 y 1,401298E-45 para valores negativos, y desde 1,401298E-45 a 3,402823E38 para valores positivos, y 0.

FLOATDOUBLEFLOAT8IEEEDOUBLENUMBER 8 bytesUn valor de coma flotante de precisin doble con un intervalo comprendido entre 1,79769313486232E308 y 4,94065645841247E-324 para valores negativos, y desde 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos, y 0.

SMALLINTSHORTINTEGER22 bytesUn entero corto entre 32.768 y 32.767.

INTEGERLONGINTINTEGER44 bytesUn entero largo entre 2.147.483.648 y 2.147.483.647.

IMAGELONGBINARYGENERALOLEOBJECTLo que se requieraDesde cero hasta un mximo de 2.14 gigabytes.Se utiliza para objetos OLE.

TEXTLONGTEXTLONGCHARMEMONOTENTEXT 2 bytes por carcter. (Consulte las notas).Desde cero hasta un mximo de 2.14 gigabytes.

CHARTEXT(n)ALPHANUMERICCHARACTERSTRINGVARCHARCHARACTER VARYINGNCHARNATIONAL CHARACTERNATIONAL CHARNATIONAL CHARACTER VARYINGNATIONAL CHAR VARYING 2 bytes por carcter. (Consulte las notas).Desde cero a 255 caracteres.

Una restriccin es una caracterstica adicional que tiene una columna o una combinacin de columnas, por ejemplo: valores no nulos (campo requerido), definicin de ndice sin duplicados, definicin de clave principal y definicin de clave fornea (clave ajena o externa, campo que sirve para relacionar dos tablas entre s). restriccin1: una restriccin de tipo 1 aparece dentro de la definicin de la columna.

restriccin2: una restriccin de tipo 2 es una restriccin que se define despus de definir todas las columnas de la tabla y afecta a una columna o a una combinacin de columnas.

Para escribir una sentencia CREATE TABLE se empieza por indicar el nombre de la tabla que queremos crear y a continuacin entre parntesis indicamos separadas por comas las definiciones de cada columna de la tabla, la definicin de una columna consta de su nombre, el tipo de dato que tiene y podemos aadir si queremos una serie de especificaciones que debern cumplir los datos almacenados en la columna, despus de definir cada una de las columnas que compone la tabla se pueden aadir una serie de restricciones, esas restricciones son las mismas que se pueden indicar para cada columna pero ahora pueden afectar a ms de una columna por eso tienen una sintaxis ligeramente diferente.

Una restriccin de tipo 1 se utiliza para indicar una caracterstica de la columna que estamos definiendo, tiene la siguiente sintaxis:

La clusula NOT NULL indica que la columna no podr contener un valor nulo, es decir que se deber rellenar obligatoriamente y con un valor vlido (equivale a la propiedad requerido S de las propiedades del campo).

La clusula CONSTRAINT sirve para definir una restriccin que se podr eliminar cuando queramos sin tener que borrar la columna. A cada restriccin se le asigna un nombre que se utiliza para identificarla y para poder eliminarla cuando se quiera.

Como restricciones tenemos la de clave primaria (clave principal), la de ndice nico (sin duplicados), la de valor no nulo, y la de clave fornea.

La clusula PRIMARY KEY se utiliza para definir la columna como clave principal de la tabla. Esto supone que la columna no puede contener valores nulos ni pueden haber valores duplicados en esa columna, es decir que dos filas no pueden tener el mismo valor en esa columna.

En una tabla no puede haber varias claves principales, por lo que no podemos incluir la clusula PRIMARY KEY ms de una vez, en caso contrario la sentencia da un error. No hay que confundir la definicin de varias claves principales con la definicin de una clave principal compuesta por varias columnas, esto ltimo s est permitido y se define con una restriccin de tipo 2.

La clusula UNIQUE sirve para definir un ndice nico sobre la columna. Un ndice nico es un ndice que no permite valores duplicados, es decir que si una columna tiene definida un restriccin de UNIQUE no podrn haber dos filas con el mismo valor en esa columna. Se suele emplear para que el sistema compruebe el mismo que no se aaden valores que ya existen, por ejemplo si en una tabla de clientes queremos asegurarnos que dos clientes no puedan tener el mismo D.N.I. y la tabla tiene como clave principal un cdigo de cliente, definiremos la columna dni con la restriccin de UNIQUE.

La clusula NOT NULL indica que la columna no puede contener valores nulos, cuando queremos indicar que una columna no puede contener el valor nulo lo podemos hacer sin poner la clusula CONSTRAINT, o utilizando una clusula CONSTRAINT.

La ltima restriccin que podemos definir sobre una columna es la de clave fornea, una clave fornea es una columna o conjunto de columnas que contiene un valor que hace referencia a una fila de otra tabla, en una restriccin de tipo 1 se puede definir con la clusula REFERENCES, despus de la palabra reservada indicamos a qu tabla hace referencia, opcionalmente podemos indicar entre parntesis el nombre de la columna donde tiene que buscar el valor de referencia, por defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se encuentra en otra columna de tabla2, entonces debemos indicar el nombre de esta columna entre parntesis, adems slo podemos utilizar una columna que est definida con una restriccin de UNIQUE, si la columna2 que indicamos no est definida sin duplicados, la sentencia CREATE nos dar un error.

Ejemplo:CREATE TABLE tab1 (col1 INTEGER CONSTRAINT pk PRIMARY KEY,col2 CHAR(25) NOT NULL,col3 CHAR(10) CONSTRAINT uni1 UNIQUE,col4 INTEGER,col5 INT CONSTRAINT fk5 REFERENCES tab2 );

Con este ejemplo estamos creando la tabla tab1 compuesta por: una columna llamada col1 de tipo entero definida como clave principal, una columna col2 que puede almacenar hasta 25 caracteres alfanumricos y no puede contener valores nulos, una columna col3 de hasta 10 caracteres que no podr contener valores repetidos, una columna col4 de tipo entero sin ninguna restriccin, y una columna col5 de tipo entero clave fornea que hace referencia a valores de la clave principal de la tabla tab2

Una restriccin de tipo 2 se utiliza para definir una caracterstica que afecta a una columna o a una combinacin de columnas de la tabla que estamos definiendo, se escribe despus de haber definido todas las columnas de la tabla.Tiene la siguiente sintaxis:

La sintaxis de una restriccin de tipo 2 es muy similar a la CONSTRAINT de una restriccin 1 la diferencia es que ahora tenemos que indicar sobre qu columnas queremos definir la restriccin. Se utilizan obligatoriamente las restricciones de tipo 2 cuando la restriccin afecta a un grupo de columnas o cuando queremos definir ms de una CONSTRAINT para una columna (slo se puede definir una restriccin1 en cada columna).

La clusula PRIMARY KEY se utiliza para definir la clave principal de la tabla. Despus de las palabras PRIMARY KEY se indica entre parntesis el nombre de la columna o las columnas que forman la clave principal. Las columnas que forman la clave principal no pueden contener valores nulos ni pueden haber valores duplicados de la combinacin de columnas, por ejemplo la tabla pedidos de nuestros ejemplos tiene una clave principal formada por idfab e idproducto, pues no pueden haber dos filas con la misma combinacin de idfab con idproducto (aci,0001 por ejemplo) pero s pueden haber dos filas con el valor aci en la columna idfab si tienen valores diferentes en la columna idproducto, y pueden haber dos filas con el mismo idproducto pero distinto idfab.

En una tabla no pueden haber varias claves principales, por lo que no podemos indicar la clusula PRIMARY KEY ms de una vez, en caso contrario la sentencia da un error.La clusula UNIQUE sirve para definir un ndice nico sobre una columna o sobre una combinacin de columnas. Un ndice nico es un ndice que no permite valores duplicados. Si el ndice es sobre varias columnas no se puede repetir la misma combinacin de valores en dos o ms filas. Se suele emplear para que el sistema compruebe el mismo que no se aaden valores que ya existen.

La clusula FOREIGN KEY sirve para definir una clave fornea sobre una columna o una combinacin de columnas. Una clave fornea es una columna o conjunto de columnas que contiene un valor que hace referencia a una fila de otra tabla, en una restriccin 1 se puede definir con la clusula REFERENCES. Para definir una clave fornea en una restriccin de tipo 2 debemos empezar por las palabras FOREIGN KEY despus indicamos entre parntesis la/s columna/s que es clave fornea, a continuacin la palabra reservada REFERENCES seguida del nombre de la tabla a la que hace referencia, opcionalmente podemos indicar entre parntesis el nombre de la/s columna/s donde tiene que buscar el valor de referencia, por defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se encuentra en otra/s columna/s de tabla2, entonces debemos escribir el nombre de esta/s columna/s entre parntesis, adems slo podemos utilizar una columna (o combinacin de columnas) que est definida con una restriccin de UNIQUE, de lo contrario la sentencia CREATE TABLE nos dar un error.

Ejemplo:CREATE TABLE tab1 (col1 INTEGER,col2 CHAR(25) NOT NULL,col3 CHAR(10),col4 INTEGER,col5 INT,CONSTRAINT pk PRIMARY KEY (col1),CONSTRAINT uni1 UNIQUE (col3),CONSTRAINT fk5 FOREIGN KEY (col5) REFERENCES tab2 );

ALTER TABLE

La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe. Mediante esta instruccin podemos aadir columnas nuevas, eliminar columnas. Ten cuenta que cuando eliminamos una columna se pierden todos los datos almacenados en ella.

Tambin nos permite crear nuevas restricciones o borrar algunas existentes. La sintaxis puede parecer algo complicada pero sabiendo el significado de las palabras reservadas la sentencia se aclara bastante; ADD (aade), ALTER (modifica), DROP (elimina), COLUMN (columna), CONSTRAINT (restriccin).

La sintaxis es la siguiente:

La sintaxis de restriccion1 es idntica a la restriccin1 de la sentencia CREATE TABLE, te la describimos a continuacin.

La sintaxis de restriccion2 es idntica a la restriccin2 de la sentencia CREATE TABLE.

La clusula ADD COLUMN (la palabra COLUMN es opcional) permite aadir una columna nueva a la tabla. Como en la creacin de tabla, hay que definir la columna indicando su nombre, tipo de datos que puede contener, y si lo queremos alguna restriccin de valor no nulo, clave primario, clave fornea, e ndice nico, restriccion1 es opcional e indica una restriccin de tipo 1 que afecta a la columna que estamos definiendo.

Ejemplo:ALTER TABLE tab1 ADD COLUMN col3 integer NOT NULL CONSTRAINT c1 UNIQUE

Con este ejemplo estamos aadiendo a la tabla tab1 una columna llamada col3 de tipo entero, requerida (no admite nulos) y con un ndice sin duplicados llamado c1.

Cuando aadimos una columna lo mnimo que se puede poner sera:

ALTER TABLE tab1 ADD col3 integer

En este caso la nueva columna admite valores nulos y duplicados.

Para aadir una nueva restriccin en la tabla podemos utilizar la clusula ADD restriccion2 (ADD CONSTRAINT...).

Ejemplo:ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col3)

Con este ejemplo estamos aadiendo a la tabla tab1 un ndice nico (sin duplicados) llamado c1 sobre la columna col3.

Para borrar una columna basta con utilizar la clusula DROP COLUMN (COLUMN es opcional) y el nombre de la columna que queremos borrar, se perdern todos los datos almacenados en la columna.

Ejemplo:ALTER TABLE tab1 DROP COLUMN col3

Tambin podemos escribir:ALTER TABLE tab1 DROP col3

El resultado es el mismo, la columna col3 desaparece de la tabla tab1.

Para borrar una restriccin basta con utilizar la clusula DROP CONSTRAINT y el nombre de la restriccin que queremos borrar, en este caso slo se elimina la definicin de la restriccin pero los datos almacenados no se modifican ni se pierden.

Ejemplo:ALTER TABLE tab1 DROP CONSTRAINT c1

Con esta sentencia borramos el ndice c1 creado anteriormente pero los datos de la columna col3 no se ven afectados por el cambio.

DROP TABLE

La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si est abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relacin y tiene registros relacionados, La integridad referencial es un sistema de reglas que utilizan la mayora de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son vlidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad).

La sintaxis es la siguiente:

Ejemplo:DROP TABLE tab1 Elimina de la base de datos la tabla tab1.

CREATE INDEX

La sentencia CREATE INDEX sirve para crear un ndice sobre una o varias columnas de una tabla.

La sintaxis es la siguiente:

nbindi: nombre del ndice que estamos definiendo. En una tabla no pueden haber dos ndices con el mismo nombre de lo contrario da error.

nbtabla: nombre de la tabla donde definimos el ndice. A continuacin entre parntesis se indica la composicin del ndice (las columnas que lo forman).nbcol: nombre de la columna que indexamos. Despus del nombre de la columna podemos indicar cmo queremos que se ordenen las filas segn el ndice mediante las clusulas ASC/DESC.

ASC: la clusula ASC es la que se asume por defecto e indica que el orden elegido para el ndice es ascendente (en orden alfabtico si la columna es de tipo texto, de menor a mayor si es de tipo numrico, en orden cronolgico si es de tipo fecha).

DESC: indica orden descendente, es decir el orden inverso al ascendente.Podemos formar un ndice basado en varias columnas, en este caso despus de indicar la primera columna con su orden, se escribe una coma y la segunda columna tambin con su orden, as sucesivamente hasta indicar todas las columnas que forman el ndice.

Opcionalmente se pueden indicar las clusulas:

WITH PRIMARY indica que el ndice define la clave principal de la tabla, si la tabla ya tiene una clave principal, la sentencia CREATE INDEX dar error.

WITH DISALLOW NULL indica que no permite valores nulos en las columnas que forman el ndice.

WITH IGNORE NULL indica que las filas que tengan valores nulos en las columnas que forman el ndice se ignoran, no aparecen cuando recuperamos las filas de la tabla utilizando ese ndice.Ejemplo:CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento ASC)

Crea un ndice llamado ind1 sobre la tabla clientes formado por las columnas provincia, poblacin y fecha_nacimiento. Este ndice permite tener ordenadas las filas de la tabla clientes de forma que aparezcan los clientes ordenados por provincia, dentro de la misma provincia por poblacin y dentro de la misma poblacin por edad y del ms joven al ms mayor.

Al aadir la clusula UNIQUE el ndice no permitir duplicados por lo que no podra tener dos clientes con la misma fecha de nacimiento en la misma poblacin y misma provincia, para evitar el poblema sera mejor utilizar:

CREATE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)

DROP INDEX

La sentencia DROP INDEX sirve para eliminar un ndice de una tabla. Se elimina el ndice pero no las columnas que lo forman.La sintaxis es la siguiente:

Ejemplo:DROP INDEX ind1 ON clientesElimina el ndice que habamos creado en el ejemplo anterior.

DML (LENGUAJE DE MANIPULACION DE DATOS)

Veamos como utilizar las principales acciones para insertar, borrar y actualizar registros en una base de datos utilizando consultas SQL.INSERT. Para insertar datos en una relacin, o bien se especifica la tupla que se desea insertar o se formula una consulta cuyo resultado sea el conjunto de tuplas que se desean insertarDELETE. Un borrado se expresa de igual modo que una consulta. Solo se pueden borrar tuplas completas.UPDATE. En determinadas situaciones puede ser deseable cambiar un valor dentro de una tupla, sin cambiar todos los valores de la misma. INSERTAR REGISTROS MEDIANTE INSERTPara realizar esta operacin se debe tener en cuenta dos puntos importantes. El primero es que el dato que se inserte debe ser del mismo tipo que el campo, y el segundo punto a tener en cuenta que este dato a insertar no debe ser ms grande que el campo. Ejemplos de uso...Tabla profesor34345ABELMORENOBASILIO 459FDRTERT

45456JAZMINJIMENEZRIVERA 4235ERWE

457012MAUROCASTRORODRIGUEZ MAURID123

720117OMARBELLOCAMACHO 1738DFDFSDS

12345BLANCA INESVALENCIAVAZQUEZ 1234UFG

Ej. Inserta en la tabla profesor la tupla siguiente

use tres;insert into profesor values(5555,'alejandro','bello','camacho','eeee3444');

La tabla resultante ser:

5555alejandrobellocamacho eeee3444

34345ABELMORENOBASILIO 459FDRTERT

45456JAZMINJIMENEZRIVERA 4235ERWE

457012MAUROCASTRORODRIGUEZ MAURID123

720117OMARBELLOCAMACHO 1738DFDFSDS

Use tres;Insert into alumno values(4444,daniel,bello,camacho,11111,historia,90);

Tabla alumno4343CARLOSAMADONADA3434345INGLES100

3456MARIAOLMOSECO5423565INGLES95

1234JOSEENCARNAHUESO5467779MATE100

4444danielbellocamacho11111historia90

INSERT INTO clientes(nombre, direccion, ciudad, telefono, codempresa) VALUES ('Omar Bello', 'Mina 86', 'Tlapa, Gro.', '48485825', 23)

Tambin se podra haber evitado poner los nombres de los campos. Cabe aclarar que va a tomar SQL la primera columna como inicio.

INSERT INTO clientes VALUES ('Omar Bello', 'Mina 86', 'Tlapa, Gro.', '48485825', 23)INSERT INTO NombreTabla (Id, Nombre, Fecha, Descripcin) VALUES (1, Juan, 2006/05/02, 10)INSERT INTO NombreTabla VALUES (1, Juan, 2006/05/02, 10)

INSERT INTO NombreTabla (Id, Nombre, Fecha, Descripcin)SELECT Id, Nombre, Fecha, DescripcinFROM NombreTabla2

Inserta el resultado dentro de una tabla siempre y cuando tenga los mismos campos..MODIFICAR O ACTUALIZA REGISTROS MEDIANTE UPDATE SQL al encontrar un UPDATE checa la condicin WHERE, si esta es verdadera se realiza la actualizacin. Un ejemplo de UPDATE, donde se corregir un nombre que se insert de manera incorrecta: Ejemplo 4343 CARLOS AMADONADA 3434345INGLES 100

4444 daniel bellocamacho 11111 historia90

Ejemplo.Use tres;Update alumno set nombre=daniela where nombre=danielLa tabla resultante ser.

4343 CARLOS AMADONADA 3434345INGLES 100

4444 danielabellocamacho 11111historia 90

Ejemplouse tres;update alumno set calficacion = calficacion * 1.05 where calficacion=90;

la tabla resultante sera:

4343 CARLOS AMADO NADA 3434345INGLES 100

4444 daniela bellocamacho 11111 historia 94,5

UPDATE clientes SET nombre= 'Carlos Rios' WHERE nombre= 'Carlos Rioso' UPDATE NombreTabla SET nombre=Jess, Fecha=2006/05/02 WHERE Id=21BORRAR REGISTROS MEDIANTE DELETELa sentencia DELETE puede borrar un solo registro como tambin puede borrar varios registros a la vez, como tambin puede borrar todos los registros de la base de datos. Tabla profesor34345ABELMORENOBASILIO 459FDRTERT

45456JAZMINJIMENEZRIVERA 4235ERWE

457012MAUROCASTRORODRIGUEZ MAURID123

720117OMARBELLOCAMACHO 1738DFDFSDS

12345BLANCA INESVALENCIAVAZQUEZ 1234UFG

use tres;DELETE FROM profesor where nombre='BLANCA INES';

La tabla resultante ser.34345ABELMORENOBASILIO 459FDRTERT

45456JAZMINJIMENEZRIVERA 4235ERWE

457012MAUROCASTRORODRIGUEZ MAURID123

720117OMARBELLOCAMACHO 1738DFDFSDS

Tabla alumno4343 CARLOS AMADONADA 3434345INGLES100

3456 MARIAOLMO SECO 5423565INGLES95

1234 JOSEENCARNA HUESO5467779MATE100

use tres;DELETE FROM alumno where id_alumno between 1234 and 3456;

La tabla resultante sera: 4343 CARLOSAMADO NADA 3434345INGLES 100

Si quiero borrar todos los clientes que son de la ciudad de Chilpancingo: DELETE FROM clientes WHERE ciudad= 'Chilpancingo' DELETE FROM clientes WHERE Id=21Si quiero borrar un registro en especial podra utilizar el campo clave de la tabla, seria de la siguiente manera.DELETE FROM clientes WHERE id_cliente = 501 SENTENCIA SELECTLa sentencia select es la ms importante dentro del SQL, por el potencial que tiene ya que en realidad en una base de datos las operaciones que ms se realizan son las consultas.

SELECT: Corresponde a la operacin de Proyeccin Permite listar los atributos que se desean en el resultado de la consulta FROM: Especifica los nombres de la(s) tabla(s) de donde los datos sern seleccionados Cuando son varias tablas las que aparecen en el FROM el sistema ejecuta una operacin de Producto Cartesiano o de join WHERE: Corresponde a la operacin de Seleccin La condicin se hace sobre los atributos de las tablas del FROM

Ejemplo: Realizar una consulta que muestre el nombre y la fecha de nacimiento de todos los clientes que tengan como nombre Raul.select nombre, fecha_registrofrom CLIENTEwhere nombre= Raulnombrefecha_registro

Raul28/04/09

Raul30/04/09

Raul03/05/09

Raul14/05/09

Usar un alias en los atributos nos permite cambiar el nombre de los atributos de la respuesta a la consulta.

Cuando asociamos un alias con una relacin decimos que creamos una variable de tupla. Estas variables de tuplas se definen en la clusula FROM despus del nombre de la relacin.select P.titulo from PELICULA Pwhere titulo = Arrncame la vidatitulo

Arrncame la vida

Operadores lgicosANDEvala dos condiciones y devuelve un valor de verdad solo si ambas son ciertas.

OREvala dos condiciones y devuelve un valor de si alguna de las dos es cierta.

NOTDevuelve el valor contrario de la expresin.

Ejemplo: Realizar una consulta que enliste el nombre y la calle de los clientes cuyo nombre es Ral y que vivan en la calle San francisco

select nombre, calle from CLIENTEwhere. nombre=Ral AND calle=San francisco

nombrecalle

RalSan francisco

Ejemplo: Mostrar el nombre del cliente y la calle en donde vive, de la relacin cliente cuyo nombre sea Ral o que la calle sea San Francisco'.

select nombre, calle from CLIENTEwhere. nombre=Ral OR calle=San francisco

nombrecalle

RalSan francisco

RalGaleana

RalAllende

RalHidalgo

La consulta mostrar todos los nombres de los clientes y calle cuyos valores sean Raul, que no vivan en la calle San francisco

select nombre, calle from CLIENTEwhere nombre=Raul and NOT (calle=San francisco)

nombrecalle

RaulGaleana

RaulAllende

RaulHidalgo

Operadores de comparacin , =,= Y En la consulta se mostraran los ttulos de las pelculas que se estrenaron en el 2008 y cuyo pas de produccin es diferente de Espaa.select titulo, pais_produccionfrom PELICULA where ao_estreno = 2008 AND pais_produccion Espaa

Titulopais_produccion

Piratas del Caribe el fin del mundoEstados unidos

Soy leyendaEstados unidos

Batman El caballero de la nocheEstados unidos

Arrncame la vidaMxico

Las crnicas de narniaEstados unidos y reino unido

Quieres ser millonarioReino unido

El juego del miedoEstados unidos

La consulta muestra el id_cliente, su nombre del cliente y su apellido, pero que el id del cliente sea mayor que 15.

select id_cliente, nombre, a_paternofrom CLIENTE where id_cliente > 15

id_clienteNombrea_paterno

16ManuelRamirez

17OscarRivera

18ShaniaOrtiz

19JorgeRuiz

20AdalidMancilla

21LourdesPonce

22VivianaNavarrete

23IsraelRosas

La consulta muestra el id_cliente, su nombre del cliente y su apellido, pero que el id del cliente sea menor que 15.

select id_cliente, nombre, a_paternofrom CLIENTE where id_cliente < 15

id_clienteNombrea_paterno

1AbelCantu

2MauricioIslas

3SocratesOrtiz

4DhamarVazquez

5RogelioJuarez

6LuisaRomero

7YuriMelchor

8OsmarMartinez

9JulioZaragoza

10IgnacioNarvaes

11EugenioLarios

12RosarioHuerta

13RoseliaPereda

14PiedadManzano

La consulta muestra el nombre del cliente, pero que el id del cliente sea mayor o igual que 10 y menor o igual que 20.

id_clienteNombrea_paterno

10IgnacioNarvaes

11EugenioLarios

12RosarioHuerta

13RoseliaPereda

14PiedadManzano

15CelinaChavez

20AdalidMancilla

select id_cliente, nombre, a_paternofrom CLIENTE where id_cliente >= 10 AND id_cliente 500 Solo tomamos los valores mayores a 500, y calculamos el promedio con la funcin AVG.

Resultado: 700

Funcin COUNT Calcula el nmero de registros devueltos por una consulta. Su sintaxis es la siguiente:

Count(expr)

En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos, incluso texto. Aunque expr puede realizar un clculo sobre un campo, Count simplemente cuenta el nmero de registros sin tener en cuenta qu valores se almacenan cuenta los registros que tienen campos null a menos que expr sea el carcter comodn asterisco (*). Si utiliza un asterisco, Count calcula el nmero total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente ms rpida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). Ejemplo:Se desea saber la cantidad de pelculas registradas.

TABLA peliculaidpeliculatituloclasificacionprecio_rentaprecio_venta

001AKing KongB703 registros215

5000ABarnyeA55199

1800AMatrixB88250

Respuesta:SELECT Count(*) AS Total FROM pelicula

Resultado: 3Si expr identifica a mltiples campos, la funcin Count cuenta un registro slo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con ampersand (&).

Ejemplo:Se desea conocer la cantidad de clientes que tienen al menos un nmero telefnico de casa o de celularTABLA clientes

id_clientenombreciudadtel_casatel_cel

001AABELTLAPA59900023573390222

002AJUANPUEBLA89922543NULL

003AKAINALPOYECANULLNULL

001 y 002 si se cuentan por que existe ms de un valor diferente a NULL en las columnas referidas en la siguiente consulta.

Respuesta:SELECT Count(tel_casa & tel_cel) AS Total FROM clientes

Resultado: 2

Funciones MAX, MIN

Devuelven el mnimo o el mximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es:

Min(expr) Y Max(expr) En donde expr es el campo sobre el que se desea realizar el clculo. Expr puede incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL).

Ejemplo: Se desea obtener la pelcula con mayor y con menor costo en su precio de renta de la tabla pelculas.

TABLA peliculaIdpeliculatituloclasificacionprecio_rentaprecio_venta

0010AKing KongB70215

0500ABarnyeA55199

0100AMatrixB88250

Respuesta:Para la pelcula que tiene el costo ms bajo.

SELECT Min(precio_renta) AS ElMin FROM peliculas

Resultado: 55

Para la pelcula que tiene el costo ms alto.

SELECT Max(precio_renta) AS ElMax FROM peliculas

Resultado: 70

La clusula GROUP BYLa clusula GROUP BY en SQL permite realizar agrupaciones de registros de una tabla. Examinemos la siguiente tabla que contiene datos de los empleados de una empresa.

Si en esta tabla deseramos calcular el salario medio de los empleados agrupados por oficio, deberamos escribir una sentencia SQL que agrupara las filas con un mismo nombre de oficio. De cada uno de los grupos que se formen se aplicara la funcin AVG sobre el campo salario.De la misma forma, si quisiramos contar el nmero de empleados de cada departamento deberamos realizar un agrupamiento de los empleados por el campo departamento. De cada uno de los grupos formados se aplicara la funcin COUNT.La sintaxis bsica de la clusula GROUP BY en una sentencia SELECT es la siguiente:SELECT camposFROM tablasWHERE condicionesGROUP BY campo1, campo2, campo3...ORDER BY campo1, campo2, campo3...La clusula GROUP BY siempre va detrs de la clusula WHERE (si es que la hay), y delante siempre de ORDER BY (si es que realizamos la ordenacin de acuerdo un campo determinado).select oficio,avg(salario)from emplegroup by oficio;

Se quiere calcular a continuacin el nmero de empleados de cada departamento. En esta ocasin debemos realizar un agrupamiento de registros por el campo dept_no. De cada grupo que se forme debemos contar el nmero de registros que forman cada grupo. La sentencia SQL quedara:select dept_no, count(*)from emplegroup by dept_noorder by dept_no;

Hemos empleado la clusula ORDER BY para mostrar el resultado ordenado por nmero de departamento. La clusula GROUP BY DEPT_NO obliga a COUNT a contar las filas que se han agrupado por cada departamento.Veamos otro ejemplo ms. Queremos obtener por cada agrupamiento de departamento y oficio el salario medio. Es decir, por cada departamento queremos calcular el salario medio agrupado por oficio. En este caso debemos agrupar los registros por nmero de departamento, y dentro de cada departamento por oficio.select dept_no,oficio,avg(salario)from emplegroup by dept_no,oficio;

En una sentencia SELECT pueden aparecer juntos tanto la clusula WHERE como la clusula GROUP BY. Si quisiramos calcular, por ejemplo, el salario medio de cada departamento sin tener en cuenta aquellos empleados que cobren menos de 1000 euros, la sentencia correcta en SQL sera:select dept_no,avg(salario)from emplewhere salario>=1000group by dept_no;En este caso no se tiene en cuenta el empleado 1005 para realizar la media de salarios.

La clusula HAVINGLa clusula HAVING permite especificar condiciones a los agrupamientos realizados con GROUP BY. Del mismo modo que existe la clusula WHERE para filas individuales en la sentencia SELECT, tambin se puede especificar una condicin para grupos de registros. Al utilizar la clusula HAVING no se incluyen aquellos grupos que no cumplan una determinada condicin.La clusula HAVING siempre va detrs de la clusula GROUP BY y no puede existir sin sta.Si queremos visualizar, por ejemplo, el salario medio de cada departamento pero slo de aquellos cuyo salario medio sea mayor de 1200, la sentencia en SQL sera:select dept_no,avg(salario)from emplegroup by dept_nohaving avg(salario)>1200;

Si, por ejemplo, queremos obtener el nmero de empleados de cada departamento pero slo de aquellos que tengan ms de 2 empleados, la manera correcta sera:select dept_no,count(*)from emplegroup by dept_nohaving count(*)>2;Si queremos ordenar la salida ordenada descendentemente por nmero de empleados emplearamos la clusula ORDER BY.select dept_no,count(*)from emplegroup by dept_nohaving count(*)>2order by count(*) desc;La clusula WHERE y la clusula HAVING pueden aparecer juntas en la misma sentencia SQL. La clusula HAVING es similar a la clusula WHERE, pero trabaja con grupos de filas en vez que con filas individuales de una tabla. Si quisiramos calcular, por ejemplo, el salario medio de cada departamento sin tener en cuenta aquellos empleados que cobren menos de 1000 euros, y adems no queremos que en resultado se visualicen aquellos departamentos cuyo salario sea menor que 1200, la sentencia correcta en SQL sera:select dept_no,avg(salario)from emplewhere salario>1000group by dept_nohaving avg(salario)>1200;

SUBCONSULTASUna subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT que llamaremos consulta principal.Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la clusula HAVING de la consulta principal. Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre parntesis, no puede contener la clusula ORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems tiene algunas restricciones en cuanto a nmero de columnas segn el lugar donde aparece en la consulta principal. Estas restricciones las iremos describiendo en cada caso.Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal. Se aconseja no utilizar campos calculados en las subconsultas, ya que ralentizan la consulta.Las consultas que utilizan subconsultas suelen ser ms fciles de interpretar por el usuario.Referencias externas A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al valor de una columna en la fila actual de la consulta principal, ese nombre de columna se denomina referencia externa.Una referencia externa es un nombre de columna que estando en la subconsulta, no se refiere a ninguna columna de las tablas designadas en la FROM de la subconsulta sino a una columna de las tablas designadas en la FROM de la consulta principal. Como la subconsulta se ejecuta por cada fila de la consulta principal, el valor de la referencia externa ir cambiando.Ejemplo:

SELECT idejemplar, disponibilidad, (SELECT MIN(precio_renta) FROM pelicula WHERE precio_renta > 60) FROM ejemplar WHERE disponibilidad=true;En este ejemplo la consulta principal es SELECT... FROM ejemplar.La subconsulta es ( SELECT MIN(precio_renta) FROM pelicula WHERE precio_renta >60 ).En esta subconsulta tenemos una referencia externa (disponibilidad) es un campo de la tabla ejemplar (origen de la consulta principal).

Anidar subconsultas Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la clusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta principal. En la prctica, una consulta consume mucho ms tiempo y memoria cuando se incrementa el nmero de niveles de anidamiento. La consulta resulta tambin ms difcil de leer, comprender y mantener cuando contiene ms de uno o dos niveles de subconsultas.Ejemplo:

SELECT numemp, nombre FROM empleados WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie FROM clientes WHERE nombre = 'Julia Antequera'))

En este ejemplo, por cada lnea de pedido se calcula la subconsulta de clientes, y esto se repite por cada empleado, en el caso de tener 10 filas de empleados y 200 filas de pedidos (tablas realmente pequeas), la subconsulta ms interna se ejecutara 2000 veces (10 x 200).

Subconsulta en la lista de seleccin

Cuando la subconsulta aparece en la lista de seleccin de la consulta principal, en este caso la subconsulta, no puede devolver varias filas ni varias columnas, de lo contrario se da un mensaje de error.Muchos SQLs no permiten que una subconsulta aparezca en la lista de seleccin de la consulta principal pero eso no es ningn problema ya que normalmente se puede obtener lo mismo utilizando como origen de datos las dos tablas. El ejemplo anterior se puede obtener de la siguiente forma:SELECT numemp, nombre, MIN(fechapedido)FROM empleados LEFT JOIN pedidos ON empleados.numemp = pedidos.rep GROUP BY numemp, nombre

En la clusula FROM

En la clusula FROM se puede encontrar una sentencia SELECT encerrada entre parntesis pero ms que subconsulta sera una consulta ya que no se ejecuta para cada fila de la tabla origen sino que se ejecuta una sola vez al principio, su resultado se combina con las filas de la otra tabla para formar las filas origen de la SELECT primera y no admite referencias externas. En la clusula FROM vimos que se poda poner un nombre de tabla o un nombre de consulta, pues en vez de poner un nombre de consulta se puede poner directamente la sentencia SELECT correspondiente a esa consulta encerrada entre parntesis.

FUNCIONES DE CADENAS DE CARACTERES Funcin Cometido Ejemplo Resultado

CHR(n) Devuelve el carcter cuyo valor codificado es n. select chr(65) from dual; A

ASCII(cad) Devuelve el valor ascii de cad. select ascii('A') from dual; 65

CONCAT(cad1,cad2) Devuelve cad1 concatenada con cad2. Esta funcin es esquivalente al operador ||. select concat(concat(nombre,' es '),oficio) from emp; Cano es Presidente, etc.

LOWER(cad) Devuelve la cadena cad con todas sus letras convertidas a minsculas. select lower('MinUsCulAs') from dual; minusculas

UPPER(cad) Devuelve la cadena cad con todas sus letras convertidas a maysculas. select upper('maYuSCulAs') from dual; MAYUSCULAS

INITCAP(cad) Devuelve cad con el primer caracter en maysculas. select initcap('isabel') from dual; Isabel

LPAD(cad1,n,cad2) Devuelve cad1 con longitud n, y ajustada a la derecha, rellenando por la izquierda con cad2. select lpad('P',5,'*') from dual; ****P

RPAD(cad1,n,cad2) Devuelve cad1 con longitud n, y ajustada a la izquierda, rellenando por la derecha con cad2. select rpad('P',5,'*') from dual; P****

REPLACE(cad,ant,nue) Devuelve cad en la que cada ocurrencia de la cadena ant ha sido sustituida por la cadena nue. select replace('digo','i','ie') from dual; diego

SUBSTR(cad,m,n) Devuelve la sudcadena de cad compuesta por n caracteres a partir de la posicion m. select substr('ABCDEFG',3,2) from dual; CD

LENGTH(cad) Devuelve la longitud de cad. select length('cadena') from dual; 6

REUNIN DE RELACIONES

Las consultas multitabla o JOINS, tambin denominadas combinaciones o composiciones, permiten recuperar datos de dos o mas tablas segn las relaciones lgicas entre ellas. Las combinaciones indican como deber utilizar SQL Server los datos de una tabla para seleccionar las filas de otra tabla.

Una condicin de combinacin define la forma en la que dos tablas se relacionan en una consulta al:

a) Especificar la columna de cada tabla que debe usarse para la combinacin. Una condicin de combinacin tpica especifica una clave externa de una tabla y su clave asociada en otra tabla.b) Especificar un operador lgico (=, , etc.) para usarlo en los valores de comparacin de las columnas.

Por ejemplo la siguiente consulta combina dos tablas cliente y cuenta que se separan por comas en la clausula FROM.

Select nomcli, nrocuenta, monto from cliente,cuenta where codcli=codcliente;

Tambin la siguiente expresin genera lo mismo.Select clientes.nomcli, cuenta.nrocuenta, cuenta.monto from cliente, cuenta where codcli=codcliente;

Tabla clientecodcliNomcliDirclitelclisexo

1Juan Penas RosasCalle Mina # 27574715203Masculino

2Pepe Lpez CasteCalle Revolucin S/N7574715203Masculino

3Luz Mara y JosCalle Cuauhtmoc S/N7574715203Femenino

nrocuentacodclienteCodigocuentaFecharegmontocodigomoneda

1234567801X12008-01-151500dlar

1234567822X22008-03-1515250Pesos

1234567833 x3 2008-03-01100euros

Tabla cuenta

Tabla resultantenomclinrocuentamonto

Juan Penas Rosas1234567801500

Pepe Lpez Caste12345678215250

Luz Mara y Jos123456783100

Join de tres o ms tablasUn JOIN de tres o ms tablas es una composicin entre las mismas basada en la coincidencia exacta de tres o ms columnas relacionadas.

Por ejemplo, en la siguiente consulta se relacionan las tablas PEDIDOS, CLIENTES y VENTAS, para obtener los pedidos superiores a los 25000, incluyendo el nombre del vendedor que tomo el pedido incluyendo el nombre del cliente que lo solicito.

Select numpedido,importe, empresa, nombre from pedidos, clientes, ventas Where clie=numclie and rep=numempreado and importe >25000;

Inner joinCombina registros de dos tablas siempre que existan valores coincidentes en un campo comn.

Su sintaxis es:

SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 comp tabla2.campo2

En donde:

Tabla1 y tabla2. Son los nombres de las tablas desde las que se combinan los registros.

Campo1 y campo2. Son los nombres de los campos que se combinan. Si no son numricos, los campos deben ser del mismo tipo de datos y contener el mismo tipo de datos, pero no tienen que tener el mismo nombre.

Comp. Es cualquier operando de comparacin relacional: =,>,,=,2000 UNION select distinct fab, producto from pedidos where importe >3000;

VISTAS (VIEW)Definicin: Una vista (VIEW) es una tabla lgica (no fsica) que se basa en otras tablas o vistas, cuyo contenido est definido por una consulta.

Funciona como una ventana a travs de la cual pueden visualizarse o modificarse datos de las tablas.Una vista no contiene datos en si misma. Las tablas sobre las que se define una vista se llaman tablas base.Al igual que una tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. La nica diferencia es que slo se almacena de ellas la definicin, no los datos.Las vistas son una especie de tablas virtuales; es decir, no existen fsicamente sino que se forman mediante la seleccin y/o filtrado de los componentes de otras tablas, una vista puede ser definida en base a una lista previa. Esto significa que pueden crearse dependencia entre las vistas.Los datos que se recuperan mediante una consulta a una vista se presentarn igual que los de una tabla. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.Una vista se especifica a travs de una expresin de consulta (una sentencia SELECT) que la calcula y que puede realizarse sobre una o ms tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un nmero cualquiera de vistas.

Ventajas: Conseguir un acceso restringido a la base de datos, ya que la vista puede mostrar slo una porcin especfica. Sustituir consultas complejas por varias consultas ms simples que emplean vistas. Por ejemplo, una seleccin sobre una vista definida sobre varias tablas ser ms fcil de realizar que si tuviramos que utilizar la combinacin (JOIN) de esas tablas para realizarla. Proveer independencia de datos. Proveer distintas maneras de ver los mismos datos, adaptados a cada usuario o aplicacin. Permitir el acceso a grupos de usuarios de acuerdo con unos criterios concretos.

Desventajas: Slo puede crear vistas en la base de datos actual. Si se elimina la tabla base, se alteran las vistas. No puede asociar con las vistas reglas ni definiciones DEFAULT. Los desencadenadores AFTER no se pueden asociar con las vistas; slo se pueden asociar los desencadenadores INSTEAD OF. La consulta que define la vista no puede incluir las clusulas COMPUTE ni COMPUTE BY, y tampoco puede incluir la palabra clave INTO. La consulta que define la vista no puede incluir la clusula ORDER BY, a menos que tambin haya una clusula TOP en la lista de seleccin de la instruccin SELECT. La consulta que define la vista no puede incluir la clusula OPTION que especifica una sugerencia de consulta. La consulta que define la vista no puede incluir la clusula TABLESAMPLE. No se pueden definir definiciones de ndice de texto completo en las vistas. No se pueden crear vistas temporales, ni vistas dentro de tablas temporales.

Vistas simples y complejasEn funcin de las operaciones de manipulacin de datos (DML), es decir, INSERT, UPDATE y DELETE, que se pueden realizar a travs de ellas, existen dos categoras de vistas:Simples: Extraen los datos de una sola tabla. No contienen funciones ni grupos de datos (GROUP BY). Siempre pueden realizarse operaciones DML a travs de ellas.Complejas: Extraen los datos de mltiples tablas. Contienen funciones o grupos de datos (GROUP BY). Es frecuente que no permitan operaciones DML.

CREAR UNA VISTASe emplea la sentencia CREATE VIEW, que incluye una subconsulta (subquery) para determinar los datos a ser mostrados a travs de la vista.Sintaxis:CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW [([, ] )] AS [WITH CHECK OPTION [CONSTRAINT ]][WITH READ ONLY [CONSTRAINT ]];OR REPLACE Se utiliza por si la vista ya estuviera creada anteriormente. En ese caso, la sustituye por la nueva definicin.

FORCE Crea la vista sin comprobar si las tablas base existen.

NO FORCE Crea la vista slo si las tablas base de donde se extraen los datos existen realmente (es la opcin por defecto).

Es el nombre de la vista (debe ser diferente al de la tabla base).

Especifica alias para las expresiones/columnas seleccionadas por la subconsulta. El nmero de alias debe coincidir con el nmero de expresiones seleccionadas por la vista.

Es una sentencia SELECT completa. Se pueden emplear alias para las columnas en la lista que sigue al SELECT.

WITH CHECKOPTION Especifica que solo las filas accesibles para la vista pueden ser insertadas o modificadas.

Nombre asignado a la restriccin CHECK OPTION o a la restriccin READ ONLY.

WITH READONLY Asegura que no podrn ejecutarse operaciones de DML a travs de la vista. La vista slo permite consultas.

Ejemplo: Crear una vista que contiene los apellidos y nombre de los clientes del departamento Ventas. Asegurarse que a travs de ella slo pueden modificarse, eliminarse o aadirse los ms clientes de dicho departamento.apellidosnombre

Gaspar GarcaMartha

Lpez CasteMario

Gonzalez MoralesMara

CREATE VIEW ClientesDepVentasAS SELECT apellidos, nombreFROM clientesWHERE dep=Ventas

Tabla resultante de la vistaWITH CHECK OPTION;

Visualizar la estructura de una vistaDESCRIBE ;Donde: Es el nombre de la vista.

Listar las vistas existentes:SELECT * FROM USER_VIEWS;Indicaciones y restricciones de uso: La subconsulta puede contener una sentencia SELECT de sintaxis compleja, incluyendo combinaciones (JOIN), agrupamientos (GROUP BY), y subconsultas internas. Pero no puede incluir una clusula ORDER BY. Si se desea ordenar, esto deber hacerse mediante una consulta posterior que utilice la vista.

Empleo de AliasLos alias se pueden definir dentro de la subconsulta o fuera de ella, justo despus del nombre la vista.

Ejemplo:Crear una vista que contiene los apellidos y nombre de los clientes del departamento Ventas renombrando dichas propiedades como Last_name y First_name.

Opcin a) Alias dentro de la subconsultaLast_NameFirst_name

Gaspar GarcaMartha

Lpez CasteMario

Gonzalez MoralesMara

CREATE VIEW ClientesDepVentasAS SELECT apellidos Last_name, nombre First_nameFROM clientesWHERE dep=Ventas;

Tabla resultante opcin a).Last_nameFirst_name

Gaspar GarcaMartha

Lpez CasteMario

Gonzalez MoralesMara

Opcin b) Alias fuera de la subconsultaCREATE VIEW clientesDepVentas (Last_name, First_name)AS SELECT apellidos, nombreFROM clientes

Tabla resultante opcin b).WHERE dep=Ventas;

RECUPERANDO DATOS DESDE UNA VISTA

Una Vista se puede emplear exactamente igual que una tabla base para recuperar datos de ella mediante consultas SELECT.Ejemplo:Listar los apellidos y nombre de los empleados del departamento Ventas ordenados alfabticamente.SELECT apellidos, nombre FROM clientesDepVentas ORDER BY apellidos, nombre;

Creando Vistas en varias tablas baseAl igual que las consultas normales, el las vistas se pueden recuperar datos de ms de una tabla base.Ejemplo: Crear una vista que recupere datos de las tablas clientes y cuenta. De la tabla base clientes recuperar nombre del cliente y de la tabla cuenta numero de cuenta, fecha de registro y monto que tiene.create view ClientesCuentaas(select nomcli, nrocuenta, fechareg, montofrom clientes, cuentawhere clientes.codcli=cuenta.codcli);

El resultado queda como a continuacin se muestra:Tabla clientescodclinomclidirclitelclisexocoddis

1Juan Penas RosasCalle Mina # 27574715203Masculino12

2Pepe Lpez CasteCalle Revolucin S/N7574715203Masculino13

3Luz Mara y JosCalle Cuauhtmoc S/N7574715203Femenino 21

nomclinrocuentafecharegmonto

Juan Penas Rosas1234567802008-01-151500

Pepe Lpez Caste1234567822008-03-1515250

Luz Mara y Jos1234567832008-03-01100

Tabla cuentanrocuentacodclicodigocuentaFecharegmontocodigomoneda

1234567801X12008-01-151500dolar

1234567822X22008-03-1515250Pesos

1234567833 x3 2008-03-01100euros

Alterar vistasAl igual que una tabla, una vista tambin se puede alterar:Ejemplo:Alter view prueba as select nomcli,nrocuenta,fechareg from clientes,cuenta where clientes.codcli=cuenta.codcli;NomcliNrocuentafechareg

Juan Penas Rosas1234567802008-01-15

Pepe Lpez Caste1234567822008-03-15

Luz Mara y Jos1234567832008-03-01

CREANDO VISTAS COMPLEJASEn las vistas complejas es necesario emplear alias cuando alguna columna de la vista se deriva de una funcin o una expresin.Ejemplo:Crear una vista que muestre los montos mnimo, mximo y medio de las cuentas de cada cliente.CREATE VIEW montos(nrocuenta, Minimo, Maximo, Medio)AS SELECT cli.nomcli, MIN(cue.monto), MAX(cue.monto), AVG(cue.monto)FROM clientes cli, cuenta cueWHERE cli.nomcli=cue.nrocuentaOrder by cli.nomcli;

Operaciones DML sobre una VistaLas vistas son una especie de ventanas que permiten ver los datos almacenados en las tablas base, pero estructurados, organizados o formateados de otra manera.Para poder modificar datos (de las tablas base) a travs de una vista es necesario que cada dato individual obtenido mediante la vista corresponda a un nico dato real de una tabla base y que dicha correspondencia no se haya perdido a travs de la definicin de la subconsulta de la vista.Las reglas que resumen esta situacin son:1. Las vistas simples siempre permiten operaciones DML (INSERT, UPDATE y DELETE).2. No es posible eliminar filas de una vista (sentencia DELETE) si su subconsulta tiene alguna de las siguientes caractersticas: Funciones de agrupamiento (SUM, AVG, etc.). Clusula GROUP BY. La palabra clave DISTINCT. La pseudocolumna ROWNUM.3. No es posible modificar datos en una vista (sentencia UPDATE) si su subconsulta contiene: Alguna de las opciones indicadas antes para restringir la operacin DELETE, o Columnas formadas por expresiones (ej: salario*12).4. No es posible aadir datos a travs de una vista (sentencia INSERT) si su subconsulta contiene: Alguna de las opciones indicadas antes para restringir las operaciones DELETE y UPDATE, o Columnas con la restriccin NOT NULL en su tabla base, y sin valor por defecto, que no son seleccionadas por la vista.

Empleo de la clusula WITH CHECK OPTIONA travs de las vistas es posible realizar controles de la integridad referencial. Por tanto, una vista puede servir de mecanismo para proteger la integridad de los datos.La clusula WITH CHECK OPTION garantiza que las operaciones INSERT y UPDATE realizadas a travs de una vista no pueden crear filas que no seran seleccionadas por la propia vista.Ejemplo:Empleando la siguiente vista:CREATE OR REPLACE VIEW clientesDepVentasAS SELECT *FROM Empleados WHERE dep=VentasWITH CHECK OPTION CONSTRAINT control_depVentas;

Se generar un error si se intenta una operacin INSERT o UPDATE a travs de ella con un departamento que no sea Ventas, por ejemplo, la siguiente:

UPDATE EmpDepVentasSET dep=ComprasWHERE id=123;

ELIMINANDO UNA VISTACuando ya no se va a emplear ms, una vista puede ser eliminada del esquema de la base de datos mediante la siguiente orden:DROP VIEW ;donde: Es el nombre de la vista.Ejemplo:DROP VIEW clientesDepVentas;Restricciones de uso:Solo el creador o un usuario con el privilegio DROP ANY VIEW puede eliminar una vista.

CONCLUSIN

SQL en espaol es algo como Lenguaje estructurado de consultas, un nombre no apto para lo que es capaz de hacer, pues realiza mucho ms que consultas, tal vez porque en sus inicios esa era la necesidad y su desarrollo ha sido tan exponencial que puede proporcionar herramientas a los usuarios de los diferentes DBMS para realizar operaciones como definicin, recuperacin, manipulacin, comparticin e integridad de datos as como control de acceso.

Cada una de las partes en las que se divide tiene funciones especificas, en el caso del lenguaje de definicin de datos, se encarga de crear todos los objetos que contendr la base de datos; el lenguaje de manipulacin de datos, trabajar con los datos que se pueden almacenar o que ya estn almacenados en la estructura ya creada; finalmente, el lenguaje de control de datos se encarga de las cuestiones de seguridad como es el control de acceso a y sobre los objetos de la base de datos.

Dentro del DML se encuentran las instrucciones INSERT que permita ingresar datos, UPDATE modificar o actualizar datos, DELETE borrar datos y la instruccinSELECT la ms poderosa de este lenguaje debido a las muy diversas formas de uso por ejemplo con las consultas con funciones de agregacin que utilizamos para ejemplificar la obtencin resultados generalmente estadsticos, con funciones de cadena, subconsultas. SQL proporciona mecanismos para reunir relaciones, incluyendo reuniones condicionales, reuniones naturales, as como varias formas de reunin externa.Las consultas multitabla o JOINS, tambin denominadas combinaciones o composiciones, permiten recuperar datos de dos o ms tablas segn las relaciones lgicas entre ellas. Con inner join obtenemos una reunin externa. Con el operador natural join obtenemos una reunin natural y con la clausula unin tambin podemos reunir dos relaciones.Al igual que una tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. La nica diferencia es que slo se almacena de ellas la definicin, no los datos.Una vista es una tabla lgica que se basa en otras tablas o vistas, cuyo contenido est definido por una consulta, que funciona como una ventana a travs de la cual pueden visualizarse o modificarse datos de las tablas. Las tablas sobre las que se define una vista se llaman tablas base.

BIBLIOGRAFA

1. E. Codd, A Relational Model of Data for Large Shared Databanks, 1970

2. F. Pascal, The Dangerous Illusion: Denormalization, Performance and Integrity, June 2002

3. J. H. Orallo, La disciplina de los sistemas de bases de datos. Historia, situacin actual y perspectivas; mayo 2002

4. Silberschatz, Abraham. Fundamentos de bases de datos. Cuarta edicin. Editorial: McGraw Hill.2002.

5. Shapiro R.,Jeffrey. Microsoft SQL Server 2005: The Complete Reference. McGraw-Hill/Osborne 2007.6. Daniel Jueri, Mariano. Consultas de Accion: INSERT, DELETE, UPDATE fecha de consulta: 14 de mayo del 2009. http://www.elguruprogramador.com.ar/articulos/consultas-de-accion-insert-delete-update.html7. Mendoza, Alberto. Programacin con SQL Aspecto terico prctico bsico, fecha de consulta: 12 de mayo del 2009. http://www.monografias.com/trabajos11/prosq/prosq.shtml

8. Free Computer tutorials, curso de SQL, fecha de consulta: 12 de mayo del 2009. http://www.aulaclic.es/sql/

9. Microsoft Corporation , SELECT - SQL (Comando), fecha consulta: 14 de mayo 2009 http://msdn.microsoft.com/es-es/library/cc467240(VS.71).aspx

10. Casares, Claudio, Agrupamiento de Registros. Fecha de consulta: 12 de mayo del 2009.http://www.maestrosdelweb.com/editorial/tutsql4/

ANEXOS30