




































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Bases de datos I, Profesor: , Carrera: Ingeniería en Informática, Universidad: UVIGO
Tipo: Apuntes
1 / 76
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





































































Contenido
− Descripci´on de las caracter´ısticas y elementos fundamentales del lenguaje. − Ejercicios sobre la sentencia SELECT. − Otras sentencias DML. − Sentencias DDL. − Vistas. − Indices. − Seguridad. − Transacciones. − Cat´alogo.
Nota
El presente material es un resumen de lo impartido en las clases de la Facultad de Inform´atica, que se entrega como documento de apoyo.
Esta obra est´a bajo una licencia Reconocimiento-NoComercial-SinObraDerivada de Creative Commons (Attribution-NonCommercial-NoDerivatives).
SQL*Plus de Oracle
Los fabricantes amplian las caracter´ısticas del est´andar pero dejan elementos sin implementar.
SQL*Plus: Interface de Oracle que permite ejecutar sentencias SQL y comandos propios.
Entrar en SQL*Plus (servidor oracle o xurxo):
$ sqlplus / [@filename]
Comandos SQL*Plus. Uno por fila:
SQL> DESC[RIBE] emp
Nombre Nulo? Tipo
Sentencias SQL: Multifila y acaban en ;
SQL> SELECT * FROM emp;
Salir de SQL*Plus:
SQL> EXIT
SQL*Plus de Oracle (cont.)
Crear el fichero de configuraci´on login.sql y ubicarlo en el directorio de llamada a SQL*Plus. Por ejemplo:
$ cat login.sql def_editor=vi set pages 50 set feed 1 column empno format 9990 column mgr format 9990 column sal format 99, column comm format 99, column deptno format 90
SQLPlus usa un buffer para almacenar la ´ultima sentencia SQL ejecutada (no afecta a los comandos SQLPlus). Incorpora un editor de l´ıneas elemental para realizar cambios m´ınimos en esa sentencia SQL, como visualizarla (LIST), editarla (ED), etc.
Algunas ´ordenes muy habituales son:
L[IST] [n [m]] Visualiza l´ıneas del buffer ED[IT] fichero[.sql] Edita un fichero [.sql] R[UN] Ejecuta lo almacenado en el buffer / Ejecuta lo almacenado en el buffer SAV[E] fichero[.sql] Almacena el buffer en un fichero GET fichero[.sql] Pasa al buffer un fichero
Sentencias SQL
Por ejemplo:
DROP TABLE mitabla; SELECT empno, ename FROM emp;
Tipos de Datos
Cada columna de una tabla tiene un tipo de dato asignado, que determina los valores posibles y las operaciones permitidas sobre esos valores.
Un tipo de dato puede asignarse a un dominio, con lo que se asignar´a a cada columna de ese dominio.
INTEGER o INT, SMALLINT FLOAT, REAL, DOUBLE PRECISION DECIMAL(m,n) o DEC(m,n) o NUMERIC(m,n)
CHAR(n) o CHARACTER(n)
VARCHAR(n), CHARVARYING(n), CHARACTER VARYING(n)
Tablas de los ejemplos(cont.)
SQL> SELECT * FROM emp
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17/12/80 800 20 7499 ALLEN SALESMAN 7698 20/02/81 1,600 300 30 7521 WARD SALESMAN 7698 22/02/81 1,250 500 30 7566 JONES MANAGER 7839 02/04/81 2,975 20 7654 MARTIN SALESMAN 7698 28/09/81 1,250 1,400 30 7698 BLAKE MANAGER 7839 01/05/81 2,850 30 7782 CLARK MANAGER 7839 09/06/81 2,450 10 7788 SCOTT ANALYST 7566 09/12/82 3,000 20 7839 KING PRESIDENT 17/11/81 5,000 10 7844 TURNER SALESMAN 7698 08/09/81 1,500 0 30 7876 ADAMS CLERK 7788 12/01/83 1,100 20 7900 JAMES CLERK 7698 03/12/81 950 30 7902 FORD ANALYST 7566 03/12/81 3,000 20 7934 MILLER CLERK 7782 23/01/82 1,300 10
SQL> SELECT * FROM dept
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
Valores nulos
El valor nulo NULL representa la ausencia de informaci´on, o bien por desconocimiento del dato, o bien porque no procede.
Debe diferenciarse de cualquier otro valor, entre ellos del valor 0 si se trata de un dato num´erico, y de la cadena de caracteres vac´ıa, si es un dato de tipo car´acter.
Una columna de una tabla podr´a admitir valores nulos (NULL) o no (NOT NULL). Por defecto admite nulos.
Una forma de indicar la no admisi´on de valores nulos:
CREATE TABLE emp( empno VARCHAR2(4) NOT NULL, ename VARCHAR2(15) NOT NULL, job VARCHAR2(9), mgr VARCHAR2(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno VARCHAR2(2) )
Incluyendo un valor nulo en una fila:
INSERT INTO emp VALUES(’1245’, ’Jos´e’, ’Analista’, NULL, ’12-Jan-1997’, 34000, 300.05, ’12’)
INSERT INTO emp VALUES(’1245’, ’Jos´e’, ’Analista’, NULL, TO_DATE(’12/01/1997’, ’dd/mm/yyyy’), 34000, 300.05, ’12’)
La sentencia SELECT
La sentencia SELECT permite seleccionar u obtener datos de una o de varias tablas.
Parte de una o de varias tablas de la BD y el resultado es otra tabla, denominada a veces tabla resultado, pero que no formar´a parte de la BD – no queda almacenada en la BD–.
SELECT [DISTINCT | ALL] {* |
La sentencia SELECT tiene varias cl´ausulas o partes diferentes con una funci´on espec´ıfica.
La sentencia SELECT b´asica est´a formada por las cl´asulas SELECT, FROM, WHERE y ORDER BY.
El orden de ejecuci´on de las cl´ausulas y la funci´on de cada una es:
Predicados elementales
Un predicado expresa una condici´on y como en BD relacionales existe una l´ogica de tres valores, verdadero, falso y nulo, la evaluaci´on de una condici´on puede ser TRUE, FALSE o NULL.
Un predicado puede aparecer en una cl´ausula WHERE evaluando la condici´on de cada fila de las tablas involucradas, de forma que s´olo las filas que cumplen la condici´on permanecen involucradas en la consulta, ignorando las restantes.
Los predicados m´as elementales son los de comparaci´on, que comparan dos expresiones seg´un un operador de comparaci´on, que puede ser: < <= = != <> >= >
Ejemplos iniciales
1.– Obtener todos los datos de la tabla de empleados:
SELECT * FROM emp
2.– Obtener los c´odigos y nombres de los empleados que trabajan en el departamento 10:
SELECT empno, ename FROM emp WHERE deptno = 10
Ejemplos iniciales (cont.)
6.– Obtener la comisi´on, departamento y nombre de los empleados cuyo salario sea infe- rior a 1.900, orden´andolos por departamento en orden creciente, y por comisi´on en orden decreciente dentro de cada departamento:
SELECT comm AS "COMISION", deptno AS DEPARTAMENTO, ename NOMBRE FROM emp WHERE sal < 1900 ORDER BY deptno, comm DESC
Elementos de inter´es:
Diversos criterios jerarquizados de ordenaci´on. Asignaci´on de nombres a las columnas del resultado.
Ejemplos iniciales (cont.)
7.– Hallar todas las combinaciones diferentes de valores de puesto de trabajo (JOB) y a˜no de contrataci´on en el departamento 30:
SELECT job, TO_CHAR(hiredate,’yyyy’) CONTRATADO FROM emp WHERE deptno = 30
JOB CONT
SALESMAN 1981 SALESMAN 1981 SALESMAN 1981 MANAGER 1981 SALESMAN 1981 CLERK 1981
SELECT DISTINC job, TO_CHAR(hiredate,’yyyy’) CONTRATADO FROM emp WHERE deptno = 30
JOB CONT
MANAGER 1981 SALESMAN 1981 CLERK 1981 El DISTINCT afecta a toda la fila.
Predicados
Los predicados expresan condiciones.
Si aparecen en una cl´ausula WHERE indican una condici´on que las filas de las tablas involucradas deben cumplir.
Pueden aparecer tambi´en en una cl´ausula HAVING, como veremos posteriormente.
Pueden ser simples, si incluyen una ´unica condici´on, o compuestos si constan de varias, o sea, si combinan varios predicados simples, unidos por los operadores AND, OR y NOT.
Predicados simples
Inicialmente veremos los predicados simples en su formato m´as elemental. Son los siguientes:
Predicados simples (cont.)