Sei sulla pagina 1di 38

Curso de SQL Bsico.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Temario
INTRODUCCIN 1.-SENTENCIAS Sentencias DDL ( Lenguaje de Definicin de Datos)
CREATE ALTER DROP TRUNCATE

Sentencias DML (Lenguaje de Manipulacin de Datos)


INSERT UPDATE DELETE MERGE SELECT 2. CLUSULAS

Sentencias de Descripcin
FROM WHERE

OPERADORES Operadores De Comparacin


< Menor que > Mayor que < > Distinto de <= Menor Igual que >= Mayor Igual que

Operadores Lgicos
AND OR NOT

BETWEEN Especifica un intervalo de valores. LIKE Comparacin de un modelo GROUP BY HAVING ORDER BY

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

3. FUNCIONES DE AGREGADO AVG COUNT SUM MAX MIN 4. ESTRUCTURAS DE LAS TABLAS 5 Creacin de Tablas 6. NDICES UNIQUE PRIMARY KEY FOREIGN KEY

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

1.-Sentencias DDL (Lenguaje de Definicin de Datos)


Definicin Gral: Por sus siglas en ingles (Data Definition Language), es un lenguaje de programacin para definir estructuras de datos. Definicin para SQL: A diferencia de muchos lenguajes de descripcin de datos, SQL utiliza una coleccin de verbos imperativos, cuyo efecto es modificar el esquema de la base de datos, aadiendo, cambiando o eliminando las definiciones de tablas y otros objetos. Estas declaraciones se pueden mezclar libremente con otras sentencias SQL
DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

CREATE.
Este comando crea un objeto dentro de la base de datos. Puede ser de tablas, funciones, procedimientos almacenados, vistas, usuarios. Etc.

Ejemplo:
CREATE USER VG2TEST IDENTIFIED BY by VG2TEST;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

ALTER.

Este comando permite modificar la estructura de un objeto. Se pueden agregar/eliminar campos de una tabla, modificar la contrasea de un usuario etc. Ejemplo:
ALTER USER VG2TEST IDENTIFIED BY default" ACCOUNT UNLOCK;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

DROP

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice, triger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER. Ejemplo:
DROP USER VG2TEST;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

TRUNCATE.
Este comando permite modificar la estructura de un objeto. Se pueden agregar/eliminar campos de una tabla, modificar la contrasea de un usuario etc. Ejemplo:
TRUNCATE TABLE T_PRUEBA

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

DML (Lenguaje de Manipulacin de Datos)


Definicin Gral: Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. Definicin para SQL: El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

INSERT.
Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional.
Nuevo Registr o

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Agregando un nuevo registro a la Tabla Sintaxis Gral.:


INSERT INTO tabla [ (columna , columna1 . . .) ] VALUES [ (valor, valor1 . . . ) ] ;

Se pueden aadir nuevas filas a una tabla con el uso de la sentencia INSERT. tabla: Es el nombre de la tabla. columna: Es el nombre de la columna de la tabla a ser poblada. valor: Es el valor de la correspondiente columna. Nota: En esta sentencia con la clusula VALUES se agrega solamente una fila a la vez a la tabla. ( Ejercicio 1. )
DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Agregando Nuestro Registro:

INSERT INTO VG2CURSO.USUARIO

(USUARIO_UNIVERSAL, NOMBRE, APELLIDO_PAT, APELLIDO_MAT, RFC, FECHA_DE_INGRESO)

VALUES 2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA' , 'LLLLLLLLTOP' , SYSDATE

);

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Puesto que cuando se inserta un nuevo registro esta contiene valores para cada columna, la lista de columnas no es requerida en una clusula INSERT. Sin embargo, si no se utiliza la lista de columnas, los valores deben ser listados, de acuerdo al orden por defecto de las columnas en la tabla, y los valores deben ser proporcionados para cada columna. Para esto utilizamos la sentencia

describe o desc: Para describir la tabla y as saber en que orden van las columnas.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Agregando Nuestro Registro:

INSERT INTO VG2CURSO.USUARIO VALUES (2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA' , 'LLLLLLLLTOP' , SYSDATE);

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Insertar registros a una tabla con valores nulos


Mtodos para Insertar valores nulos
Implcito: Omite la columna de una lista de columnas Explicito: Especificar la palabra reservada NULL en la lista de valores,
especificar la cadena vaca () en la lista de valores para cadenas de caracteres y datos.

Este seguro de que puede utilizar valores nulos en una columna verificando el estatus con el
comando DESCRIBE.

El servidor de Oracle automticamente hace cumplir los tipos de dato, rangos de datos y reglas de integridad. Ninguna columna que no sea mencionada explcitamente obtiene un valor nulo en una nueva fila.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Agregando Nuestro Registro con valores nulos:


INSERT INTO VG2CURSO.USUARIO

(USUARIO_UNIVERSAL, NOMBRE, APELLIDO_PAT, APELLIDO_MAT)

VALUES 2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA'

);

INSERT INTO VG2CURSO.USUARIO VALUES (2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA' , NULL, NULL);

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Insertar registros a una tabla con valores especiales


Se pueden utilizar funciones para agregar valores especiales a una tabla.

INSERT INTO VG2CURSO.USUARIO

(USUARIO_UNIVERSAL, NOMBRE, APELLIDO_PAT, APELLIDO_MAT, RFC, FECHA_DE_INGRESO)

VALUES 2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA' , 'LLLLLLLLTOP' , SYSDATE

);

En el ejemplo anterior utilizamos la funcin SYSDATE para obtener la fecha actual del sistema, con este valor llenamos la columna FECHA_DE_INGRESO. Tambin podemos utilizar la funcin USER para obtener el usuario actual del sistema.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Insertando valores de fecha y hora especficos El formato DD-MON-YY es usualmente utilizado para insertar fechas. Con este formato, recuerde que el siglo por defecto es el siglo actual. Y puesto que la fecha tambin debe contener informacin de la hora, que por defecto es medianoche (00:00:00). Si una fecha debe ser ingresada en otro formato que no sea el formato por defecto, por ejemplo, con otro siglo, o con una hora especfica, se debe utilizar la funcin TO_DATE. Si el formato RR es usado, el sistema proporciona automticamente el siglo correcto, aun si este no es el actual. INSERT INTO VG2CURSO.USUARIO (USUARIO_UNIVERSAL, NOMBRE, APELLIDO_PAT, APELLIDO_MAT, RFC, FECHA_DE_INGRESO)

( Nota: Ejemplo de Formato YY , RR

VALUES 2515, 'LUIS JAVIER' , 'MARTINEZ' , 'GARCIA' , 'LLLLLLLLTOP' , TO_DATE(03-FEB-99,DD/MM/RR)

);

SELECT TO_DATE('03-FEB-99','DD/MM/YY) FROM dual = 03/02/2099 SELECT TO_DATE('03-FEB-99','DD/MM/RR) FROM dual = 03/02/1999

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Copiando registros a otra tabla


Se puede usar la sentencia INSERT para agregar filas a una tabla donde los valores sean obtenidos de tablas existentes. En lugar de la clusula VALUES, se utiliza una sub consulta. El nmero de columnas y sus tipos de datos en la lista de columnas de la clusula INSERT debe corresponder al nmero de valores y tipos de datos de la sub consulta. Para crear una copia de las filas de una tabla, use SELECT * en la sub consulta.

INSERT INTO USUARIO_TEMP ( USUARIO_UNIVERSAL,NOMBRE,APELLIDO_PAT,APELLIDO_MAT,RFC, FECHA_DE_INGRESO ) SELECT USUARIO_UNIVERSAL NOMBRE,APELLIDO_PAT APELLIDO_MAT,RFC FECHA_DE_INGRESO FROM USUARIO; , , ,

Libro de Ejercicios Ejercicio 1.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

UPDATE.
La sentencia UPDATE modifica los registros indicados, si la clusula WHERE es especificada. Ejemplo:
Column aa Actualiz ar

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Sintaxis:
Update tabla Set columna = [valor] , [columna = valor , ] Where [ condicin ] ;

tabla : Es el nombre de la tabla a que vamos actualizar. columna : La columna a la que vamos a cambiar el valor. valor : Es el valor correspondiente de la columna. condicin :Identifica los registros que sern actualizadas y se compone de nombres de columnas, expresiones,
constantes, sub-consultas y operadores de comparacin. Confirme la operacin de actualizacin consultando en la tabla las filas modificadas.

Nota: En general, utilice llaves primarias para identificar una fila en particular.
Utilizando otras columnas se puede inesperadamente causar la actualizacin de diversas filas. Por ejemplo, identificar una fila determinada en la tabla USUARIO por medio de los apellido es peligroso puesto que ms de un empleado puede tener el mismo apellido.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Actualizando Registro:

UPDATE VG2CURSO.USUARIO SET FECHA_DE_INGRESO = TO_DATE('18-04-82','DD/MM/RR'), NOMBRE = J.PABLO FRANCO PEREZ WHERE USUARIO_UNIVERSAL = 22284;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Actualizando registros con Sub-consultas

Se pueden actualizar mltiples columnas en una clusula SET de una sentencia UPDATE con diversas sub consultas.

Sintaxis:
Update tabla Set columna = ( SELECT columna FROM tabla WHERE [ condicin ] ), columna =( SELECT columna FROM tabla WHERE [ condicin ] ) Where [ condicin ] ;

tabla : Es el nombre de la tabla a que vamos actualizar. columna : La columna a la que vamos a cambiar el valor. valor : Es el valor correspondiente de la columna. condicin :Identifica las filas que sern actualizadas y se compone de nombres de columnas, expresiones,
constantes, sub-consultas y operadores de comparacin.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Actualizando un Registro con sub-consulta:


Update VG2CURSO.USUARIO_TEMP Set FECHA_DE_INGRESO = ( Select FECHA_DE_INGRESO From VG2CURSO.USUARIO Where USUARIO_UNIVERSAL=2516 ) Where USUARIO_UNIVERSAL=22284

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

DELETE.
La sentencia DELETE elimina los registros indicados, si la clusula WHERE es especificada. Ejemplo:
Registr oa Eliminar

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Sintaxis:
DELETE FROM tabla Where [ condicin ] ;

tabla : Es el nombre de la tabla condicin :Identifica los registros que sern eliminados y se compone de nombres de
columnas, expresiones, constantes, sub-consultas y operadores de comparacin. Confirme la operacin consultando en la tabla las los regiros eliminados.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

MERGE.
Un mtodo alternativo es usarlo en ciclos PL/SQL y en mltiples sentencias DML. La sentencia MERGE, sin embargo, es fcil de usar y ms simplemente expresada como una simple sentencia SQL. La sentencia MERGE es adecuada para aplicaciones de almacenes. Por ejemplo, en informacin de aplicaciones de almacn, se puede necesitar trabajar con datos procedentes de diferentes lugares, algunos de los cuales pueden ser duplicados. Con la sentencia MERGE se puede condicionar el aadir o modificar filas

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Sintaxis:
MEREGE INTO tabla_A USING tabla_B ON (condicion join) WHEN MATCHED THEN UPDATE SET col1 = col_val1, col2 = col_val2 WHEN NOT MATCHED THEN INSERT (list_column) VALUES(column_values);

INTO : Especifica la tabla a ser actualizada o Insertada. USING : Identifica el origen de los datos que seran actualizados o insertados; puede ser una tabla

vista o sub-consulta ON :condicin sobre cual la sentencia MERGE operara la actualizacin o insercin join

WHEN MATCHED THEN / WHEN NOT MATCHED THEN :Indica al servidor como responder a los resultados de la condicin

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

SELECT.
La recuperacin de los datos en el lenguaje SQL se realiza mediante la sentencia SELECT, seleccionar. Esta sentencia permite indicar al SGBD la informacin que se quiere recuperar. Esta es la sentencia SQL, con diferencia, ms habitual. La sentencia SELECT consta de cuatro partes bsicas: La clusula SELECT seguida de la descripcin de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria.
La clusula FROM seguida de la especificacin de las tablas de las que se han de obtener los datos. Esta parte es obligatoria. La clusula WHERE seguida por un criterio de seleccin, una condicin. Esta parte es opcional. La clusula ORDER BY seguida por el criterio de ordenacin. Esta parte es opcional.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

2.-Clusulas
FROM :Define las tablas de las que van a seleccionar las columnas.
Se puede aadir al nombre de las tablas el usuario propietario (owner) de las mismas de la forma owner.tabla . De esta manera podemos distinguir entre las tablas de un usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de las tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios pueden tener tablas que se llamen igual sin que surjan conflictos.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Sintaxis:
SELECT columna,[columna ] FROM owner.tabla, [owner.tabla ] columna : La columna que vamos a visualizar, como encabezado. owner : Es el usuario dueo del esquema de la base de datos. tabla :Especifica la tabla, que vamos a consultar. Ejemplo:

SELECT * FROM vg2curso.USUARIO; SELECT u.NOMBRE FROM vg2curso.USUARIO u;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

WHERE :Es a partir de donde definimos las condiciones que deben cumplir todas las filas para salir en el resultado de la consulta.

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Sintaxis:
SELECT columna,[columna ] FROM owner.tabla, [owner.tabla ] WHERE condicin, |AND | OR | NOT [columna ] condicin : la definicin de las condiciones para nuestra consulta.

Ejemplo:

SELECT * FROM vg2curso.USUARIO WHERE ID = 22284; AND NOMBRE=Juan Pablo

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Operadores de comparacin
Operador = !=, <>, ^= < > <= >= IN Operacin Igualdad Desigualdad Menor que Mayor que Menor o igual que Mayor o igual que Igual a cualquiera de los miembros entre parntesis Distinto a cualquiera de los miembros entre parntesis Ejemplo
select * from emp where cod_dep = 100; select * from emp where cod_dep != 100; select * from emp where cod_dep < 200; select * from emp where cod_dep > 200; select * from emp where cod_dep <= 200; select * from emp where cod_dep >= 200; select * from emp where cod_dep in (100, 300);

NOT IN

select * from emp where cod_dep not in (200);

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

BETWEEN NOT BETWEEN LIKE '_abc%'

Contenido en el rango Fuera del rango

select * from emp where cod_emp between 100 and 199; select * from emp where cod_emp not between 100 and 199;

Contiene la cadena 'abc' a select * from emp where nombre like 'Ma%'; partir del segundo carcter y luego cualquier cadena de caracteres

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Operadores Aritmticos
Operador Operacin Ejemplo + * / Suma Resta Producto Divisin
select nombre, salario+comision from emp where oficio='VENDEDOR'; select nombre from emp where sysdate-fecha_alta > 365; select nombre, salario*12 from emp; select nombre, salario/31 from emp;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Operadores de cadena de Caracteres


Operador Operacin Ejemplo || Concatenacin
select nombre||oficio from emp;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Clusula Group by
SQL nos permite agrupar las filas resultado de una consulta en conjuntos y aplicar funciones sobre esos conjuntos de filas.

Sintaxis:
SELECT columna,[columna ] FROM owner.tabla, [owner.tabla ] WHERE condicin, |AND | OR | NOT [columna ]

GROUP BY columna,[columna ]
Ejemplo: SELECT C.NOMBRE, COUNT(*) AS CANTIDAD_DE_USUARIOS FROM vg2curso.USUARIO A, vg2curso.DEARTAMENTO_DE_USUARIOS B, vg2curso.DEARTAMENTO C WHERE A.USUARIO_UNIVERSAL = B.USUARIO_UNIVERSAL AND B.ID_DEPARTAMENTO = C.ID_DEPARTAMENTO GROUP BY C.NOMBRE ;

DIRECCION DE INFORMATICA GCIA SOPORTE Y ADMON MOBILE 2000 SOPORTE A USUARIOS Y SUSPEND GSM

F-00.04.01.00.00-006

Potrebbero piacerti anche