Sei sulla pagina 1di 10

Qualitas

Sistemas de Informacin

CURSO DE SQL

Mayo 2000

Curso de SQL

Qualitas

Sistemas de Informacin

1.

INTRODUCCIN
SQL (Structured Query Languaje) es un lenguaje para acceso a la informacin almacenada en bases de datos relacionales. SQL puede usarse desde dentro de programas y tambin desde un terminal, sin necesidad de incluirlo previamente en un programa. Esto lo hace til tanto para programadores como para usuarios finales, dndoles la posibilidad de acceder a los datos mediante consultas abiertas. En este curso se va a tratar nicamente la sintaxis del SQL, independientemente de si se va a utilizar embebido en programas o si se van a ejecutar sentencias SQL directamente contra la base de datos. El procesamiento de las sentencias SQL lo realiza el SGDB (Sistema de Gestin de Bases de Datos), ste las analiza, las traduce a operaciones con ficheros fsicos, las ejecuta, y devuelve el resultado al programa o usuario que realiz la peticin. El SGBD se encarga de coordinar todas la peticiones asegurando la integridad de los datos. En SQL se pueden distinguir 2 tipos de sentencias:

DML (Data Manipulation Language).- Como su nombre indica son las sentencias SQL que permiten trabajar con los datos, seleccionarlos, actualizarlos, eliminarlos, agruparlos, etc DDL (Data Definition Language).- Son sentencias que crean o eliminan objetos del SGDB por ejemplo tablas, vistas, etc Dentro de estas las ms tiles desde el punto de vista del programador o del usuario son las DML, y ser en las que se haga ms hincapi en este curso, las sentencias DDL se vern muy por encima.

Pgina 2 de 10

Curso de SQL

Qualitas

Sistemas de Informacin

2.

SENTENCIAS DML
2.1. SELECT La sentencia SELECT simple nos permite consultar los datos almacenados en una tabla de la base de datos. FORMATO: SELECT [DISTINCT] */<colum1,column2,...> FROM <nombre-tabla> [WHERE <condicin>] [GROUP BY <colum1,colum2,...>] [HAVING <condicin-selec-grupos>] [ORDER BY <colum1[DESC],colum2[DESC]...>] Clusula SELECT: En esta clusula se especifican la lista de los campos separados por comas. Es suficiente con poner nicamente el nombre del campo, pero si en dos tablas existen campos con el mismo nombre se a de preceder el nombre del campo por el de la tabla separados por un punto (nom_tabla.nom_campo). La palabra clave DISTINCT provocara que la sentencia devolviese solamente las lineas que tengan todos las columnas especificadas en la sentencia SELECT distintas. El asterisco(*) traera todos los campos de las tablas indicadas en el FROM. Clusula FROM: En esta clusula se especifican la lista de los nombres de tablas separados por comas. Clusula WHERE: Es una clusula opcional en la que se incluyen las condiciones de filtrado de la consulta que se quiere realizar Clusula GROUP BY: Es una clusula opcional de la sentencia SELECT que sirve para agrupar filas que tengan iguales valores en las columnas de agrupamiento. Clusula HAVING: Es una clusula opcional de la sentencia SELECT que sirve para descartar los grupos de filas. Una vez separados las filas en uno o varios grupos, se descartan aquellos que no satisfacen la condicin. Clusula ORDER BY: En esta clusula opcional se le indica a la sentencia el orden en que se quiere recibir los datos. Las columnas por las que se quiera ordenar tienen que estar en la clusula SELECT. La palabra clave DESC devuelve los datos ordenados de forma decreciente. Ejemplo: Hallar el salario medio de cada oficio donde ste sea distinto de vendedor y donde el salario medio sea mayor de $2000, ordenado en orden descendente de salarios.

Pgina 3 de 10

Curso de SQL SELECT job, AVG(sal) AS MEDIA_SAL FROM emp WHERE job NOT LIKE 'SALES%' GROUP BY job HAVING AVG(sal) > 2000 ORDER BY AVG(sal) DESC;

Qualitas

Sistemas de Informacin

2.1.1. FUNCIONES SOBRE COLUMNAS Estas funciones permiten obtener un solo valor como resultado de aplicar una determinada operacin a los valores contenidos en una columna, por ejemplo, la suma de todos ellos o su valor medio. Algunos ejemplos de estas funciones son: AVG: Calcula el valor medio de los valores de la columna. MAX: Devuelve el mximo. MIN: Devuelve el mnimo. SUM: Calcula la suma. COUNT: Halla cuntos valores hay en la coleccin.

2.1.2. SUBSELECTS Se llaman subselects o sentencias subordinadas a aquellas consultas que forman parte de otras sentencia SQL, dentro de la clausula WHERE de esta. Una sentencia subordinada puede tener a la vez otras sentencias subordinadas de ella. La sentencia ms externa puede ser una SELECT, un DELETE, un INSERT o un UPDATE.

2.1.3. CLUSULA UNION Con esta clusula y con UNION ALL se obtiene como resultado de la consulta la unin de dos sentencias SELECT. Si se escribe UNION o UNION ALL entre dos sentencias SELECT las tablas resultantes de stas deben tener el mismo nmero de columnas, y adems las columnas que estn en la misma posicin relativa deben ser de igual tipo, es decir, ambas numricas, o alfanumricas, o tipo fecha... Al unirlas se obtiene como resultado otra tabla con las mismas columnas y tipos de datos que las que las unen. Si se escribe UNION entre dos sentencias SELECT, el resultado final es otra tabla que contiene todas las filas resultantes del primer SELECT y todas las del segundo. Si hay una fila igual a otra, se eliminar para que no haya repeticiones. Si se escribe UNION ALL entre dos SELECT, el resultado final se forma igual que con UNION, excepto en que no se suprimen de l las filas repetidas. Ejemplo: Obtener por orden alfabtico los nombres de los empleados del departamento 30, as como su sueldo total, es decir, incluyendo la comisin en aquellos que la tengan. SELECT FROM UNION SELECT FROM ORDER BY ename, sal emp WHERE comm IS NULL AND deptno = 30 ename, sal + comm emp WHERE comm IS NOT NULL AND deptno = 30 ename;

Pgina 4 de 10

Curso de SQL 2.2. INSERT La sentencia INSERT permite aadir una o ms filas completas a una tabla. Puede especificarse con uno de los dos formatos siguientes: FORMATO 1: INSERT INTO tabla[(col-1, col-2, ...)] VALUES (valor-1,valor-2,...)

Qualitas

Sistemas de Informacin

En este formato tabla es el nombre de la tabla en la que se desea insertar, y col-1,col2,etc. es una lista del nombre de columnas de esta tabla, no necesariamente todas ellas, ni en el mismo orden en que se han definido. Si se omite, se interpreta como si se especificara una lista incluyndolas a todas y en dicho orden. Cada uno de los elementos de la lista de valores valor1, valor2,... debe ser una constante o la palabra NULL o un registro especial, y debe haber tantos como en la lista de nombres de columnas. Ejemplo: Dar de alta un nuevo empleado en la tabla emp:
INSERT INTO emp VALUES (9999,'RAL','CLERK',7782,TO_DATE('09/04/2000','DD/MM/YYYY'),4000,NULL,30);

Ntese que los datos que son tipo NUMBER no van entrecomillados al hacer la insercin, mientas que los tipo DATE y VARCHAR2 s lo estn. Se ha utilizado la funcin TO_DATE para especificar el formato en el que se est introduciendo la fecha. FORMATO 2: INSERT INTO tabla[(col-1, col-2, ...)] Subselect En este formato subselect es una sentencia subordinada y por consiguiente su formato es el de un SELECT bsico. Todas las filas que resulten de ejecutarla se insertan en la tabla. El nmero de columnas del resultado del subselect debe ser igual al de nombres en la lista de columnas, asignndose la primera de ellas a la primera columna de la lista, la segunda a la segunda, etc. Ejemplo: Supongamos que tenemos una tabla de empleados2 en la que queremos meter los datos de los empleados que han ingresado en la empresa despus de 1970. INSERT SELECT FROM WHERE INTO emp2 * emp hiredate > TO_DATE (31/12/1970,'DD/MM/YYYY');

2.3. UPDATE La sentencia UPDATE permite modificar o actualizar varias filas de una tabla. FORMATO:

Pgina 5 de 10

Curso de SQL UPDATE tabla [nombre-local] SET col-1 = expresin-1 [,col-2 = expresin-2] [WHERE predicado]

Qualitas

Sistemas de Informacin

Actualiza todas las filas de la tabla mencionada detrs de UPDATE que cumplan la condicin, modificando las columnas que se mencionen en la clusula SET. Se pueden actualizar parte o todas las columnas de los registros, al contrario de los que ocurre con la insercin y el borrado de filas. Si se omite la clusula WHERE se actualizan todas las filas. Ejemplo: Cambiar la fecha de ingreso de Pedro Prez poniendo la del da 25/12/1999. UPDATE emp SET hiredate = TO_DATE('25/12/1999', 'DD/MM/YYYY') WHERE ename = PEDRO PEREZ;

2.4. DELETE La sentencia DELETE permite borrar filas de una tabla. FORMATO: DELETE FROM tabla [nombre-local] [WHERE condicin] Esta sentencia borra todas las filas que cumplan la condicin expresada en la clusula WHERE. Las filas no se pueden borrar parcialmente, de modo que se borran filas completas. Si se omite la clusula WHERE se borran todas las filas de la tabla. Ejemplo: Borrar de la tabla de empleados a Pedro Prez. DELETE FROM emp WHERE ename = RAL';

Pgina 6 de 10

Curso de SQL

Qualitas

Sistemas de Informacin

3.

SENTENCIAS DDL
En general, un usuario o un programador acceder con el SQL a los datos de unas tablas ya creadas por el DBA de la base de datos. Pero puede ser necesario que el usuario disponga de tablas de uso privado con datos exclusivamente interesantes para l por su tipo de actividad o trabajo. Esto implica que el usuario ha de ser capaz de crear estas nuevas tablas, destruirlas cuando ya no las necesite, y autorizar a otros usuarios a utilizarlas si as lo estima oportuno. Todo ello puede hacerlo con las sentencias DDL si el DBA le ha otorgado previamente las autorizaciones correspondientes para ello. A continuacin se explican estas sentencias. 3.1. CREATE TABLE La ejecucin de esta sentencia permite almacenar en el catlogo del SGBD la definicin y el nombre de una tabla para que luego pueda ser referenciada. FORMATO: CREATE TABLE tabla (col-1 tipo-1 [not null] [,col-2 tipo-2 [NOT NULL]]) donde col-1 y col-2 son los nombres asignados a las columnas de la tabla y tipo-1 y tipo-2 son sus respectivos tipos de datos (INTEGER, NUMBER, VARCHAR2, DATE). Si en alguna columna se especifica NOT NULL, el SGBD no admitir la insercin en la tabla de una fila con valor Nulo en esa columna. Ejemplo: Crear la tabla de empleados. CREATE TABLE emp2 (NUMEM INTEGER ,FECNA DATE ,FECIN DATE ,SALAR NUMBER (5,0) ,COMIS NUMBER (5,0) ,NUMHI INTEGER ,NOMEM VARCHAR2(20) NOT NOT NOT NOT NOT NOT NOT NULL NULL NULL NULL NULL NULL NULL);

3.2. DROP TABLE La sentencia DROP TABLE se utiliza para destruir una tabla. FORMATO: DROP TABLE tabla Esta sentencia borra del catlogo de SGBD la descripcin de la tabla y desde ese momento no se admitirn referencias a ella. Ejemplo: Borrar la tabla de empleados.

Pgina 7 de 10

Curso de SQL DROP TABLE emp; 3.3. GRANT

Qualitas

Sistemas de Informacin

El propietario de una tabla puede usar esta sentencia SQL para transmitir a otros sus autorizaciones sobre ella, pero stos no pueden transmitirlas a su vez. FORMATO (simplificado): GRANT lista-privilegios ON tabla TO lista-usuarios donde lista-usuarios es una lista de identificadores personales, separados por comas, de los usuarios a los que se va a autorizar. Y lista-privilegios es una lista de palabras separadas por comas en la que se pueden especificar las siguientes: DELETE, INSERT, SELECT y UPDATE, que indican que se autoriza a usar las correspondientes sentencias SQL sobre la tabla. Ejemplo: Dar permisos de consulta y actualizacin sobre la tabla de empleados a los usuarios U1 y U2. GRANT SELECT,UPDATE ON emp TO U1,U2;

3.4. REVOKE Es la sentencia que permite anular una autorizacin previamente concedida. FORMATO (simplificado): REVOKE lista-privilegios ON tabla FROM lista-usuarios donde lista-privilegios y lista-usuarios significan lo mismo que en la sentencia GRANT. Ejemplo: Quitar los permisos de consulta y modificacin sobre la tabla de empleados a los usuarios U1, U2. REVOKE SELECT,UPDATE ON emp TO U1,U2;

Pgina 8 de 10

Curso de SQL

Qualitas

Sistemas de Informacin

4.

EJERCICIOS
1. Escribir una consulta para obtener un listado con todos los datos de la tabla emp. 2. Escribir una consulta para obtener todos los datos de la tabla dept. 3. Obtener todo de los empleados que sean vendedores. 4. Obtener el nombre de todos los empleados que empiezan por la letra A. Obtener lo mismo, pero que tengan la letra a en algn sitio. 5. Obtener los empleados cuyo salario est entre $1500 y $4000. 6. Obtener un listado de los empleados cuyo gerente es el 7698, ordenados alfabticamente. 7. Obtener el salario medio de los empleados que son gerentes 8. Obtener todos los empleados y la ciudad donde se encuentran cuyo salario sea mayor de $3500. 9. Dar de alta el departamento "COMPRAS". 10. Cambiar todos los oficios de categora MANAGER a la categora GERENTES. 11. Eliminar el departamento "COMPRAS".

Pgina 9 de 10

Curso de SQL

Qualitas

Sistemas de Informacin

ndice 1. INTRODUCCIN..............................................................................................................2 2. SENTENCIAS DML..........................................................................................................3


2.1. SELECT.................................................................................................................................................3 2.1.1. FUNCIONES SOBRE COLUMNAS..............................................................................................4 2.1.2. SUBSELECTS................................................................................................................................4 2.1.3. CLUSULA UNION......................................................................................................................4 2.2. INSERT.................................................................................................................................................5 2.3. UPDATE................................................................................................................................................5 2.4. DELETE................................................................................................................................................6

3. SENTENCIAS DDL...........................................................................................................7
3.1. CREATE TABLE..................................................................................................................................7 3.2. DROP TABLE.......................................................................................................................................7 3.3. GRANT..................................................................................................................................................8 3.4. REVOKE...............................................................................................................................................8

4. EJERCICIOS......................................................................................................................9

Pgina 10 de 10

Potrebbero piacerti anche