A.1. Definiciones de datos en SQL



Documentos relacionados
SQL (Structured Query Language)

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Consultas con combinaciones

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Bases de Datos 2. Teórico

CONSULTAS BASICAS EN SQL SERVER

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

SQL (Structured Query Language)- DML

Bases de Datos: Structured Query Language (SQL)

MANUAL BÁSICO DEL LENGUAJE SQL

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Bases de Datos Relacionales

Base de datos relacional

APÉNDICE SQL (Structures Query Language)

Sub consultas avanzadas

Bases de datos relacionales y el modelo entidad-relación

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Procedimientos para agrupar y resumir datos

SQL Server FEMEPA SQL Server 2000

1. DML. Las subconsultas

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Tema 4. Manipulación de datos con SQL

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Restricciones de Integridad

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Base de datos Lenguaje SQL

3 Consultas y subconsultas

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Patrones para persistencia (I) Ingeniería del Software II

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

SENTENCIAS Y CONSULTAS EN SQL SERVER

Bases de datos: Sistemas de bases de datos:

Vistas en postgresql

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

Repaso de Conceptos Básicos de Bases de Datos

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

Bases de datos y tablas

5- Uso de sentencias avanzadas

Práctica 3. Consultas SQL

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Tema 33. El lenguaje SQL

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Capítulo 12: Indexación y asociación

DML SQL II. Comparaciones con relaciones

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

Lenguaje para descripción de datos

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

FUNCIONES EN SQL SERVER

T12 Vistas y tablas temporales

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Trabajos de Ampliación. Bases de datos NoSQL.

select nombre from profesores where categoria='aso6';

- Bases de Datos - - Diseño Físico - Luis D. García

2071 Querying Microsoft SQL Server 2000 with Transact- SQL

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

8 SQL SERVER 2008 RA-MA

SQL. Orígenes y Evolución

2. ESTUDIO DE INDICES

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Acceso a bases de datos MySQL con PHP

Bases de Datos SQL - Ejemplos

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

CURSO DE SQL SERVER 2005

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

El lenguaje SQL es un lenguaje estándar para el acceso y

Tema 4. SQL. Juan Ignacio Rodríguez de León

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad


6- Combinación de tablas

Construcción de la base de datos en Oracle

Unidad. Lenguaje SQL. (Structured Query Language)

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Base de datos Procedimientos Almacenados y Funciones

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Primeramente estudiaremos la forma básica de la sentencia SELECT, que esta formado por:

Universidad Nacional de Costa Rica Administración de Bases de Datos

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción:

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Tutorial de SQL - El comando SELECT

Boletín de Problemas de la Asignatura II18 Bases de Datos. Ingeniería Informática Universitat Jaume I

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

SQL Los fundamentos del lenguaje

Transcripción:

A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE ALTER TABLE CREATE INDEX DROP INDEX Las sentencias antes mencionadas restringen la atención a los aspectos que son de directo interés para el usuario y no los aspectos que tienen que ver con el nivel interno del sistema (tales detalles son de importancia para el DBA [15] ). Una tabla base se define en los sistemas relacionales como una fila de encabezados de columnas más cero o más filas con valores de datos. Esta tabla es creada usando la sentencia CREATE TABLE del DDL de SQL. La fila de encabezados de columna especifica una o más columnas asociadas cada una a sus respectivos tipos de datos. Cada fila de datos contiene exactamente un valor de dato para cada columna. No existe un orden de filas, pero es posible imponer un orden sobre ellas. Las columnas están ordenadas de izquierda a derecha pero este orden no es parte del modelo relacional. Las Tablas son autónomas e independientes a diferencia de las vistas las cuales no existen en su propio espacio pero si se derivan de una o más tablas. A.1.1. Comando CREATE TABLE El comando CREATE TABLE se usa para especificar una nueva relación por medio de un nombre y especificando cada uno de sus atributos. A cada atributo se le da un nombre, un tipo de datos (para especificar su dominio) y algunas constraints [16] sobre el atributo. La sintaxis del comando es : CREATE TABLE nombre_de_tabla (definicion_de_columna [,definicion_de_columna ]...) donde la definición de columna es de la forma : nombre_de_columna tipo_de_dato [ NOT NULL ] create table DUENOS ( RUT INTEGER not null, NOMBRE CHAR(30) not null, TELEFONO CHAR(10), DIRECCION CHAR(50) ); A.1.1.1. Definición de NOT NULL (no nulo)

Puesto que SQL permite valores nulos como valores de atributos, una constraint NOT NULL puede ser especificada en un atributo para indicar que no se permiten valores nulos para este atributo. En general NOT NULL debe ser especificado para los atributos que componen la llave primaria de cada relación. A.1.1.2. Tipos de datos SQL Los siguientes tipos de datos son los comúnmente soportados por el estándar SQL. Datos Numéricos INTEGER Entero con signo de 31 bits SMALLINT Entero con signo de 15 bits DECIMAL(p,q) FLOAT(p) Número con signo de p dígitos, q decimales Número de punto flotante, p bits de precisión Datos String CHAR(n) Cadena de texto de largo fijo de n bytes VARCHAR(n) GRAPHIC(n) Cadena de texto de largo variante, hasta los n bytes Cadena de texto de largo fijo, n*2 bytes Datos de Fecha y Hora VARGRAPHIC(n) Cadena de texto de largo variante, hasta los n*2 bytes DATE TIME Fecha (aaaammmdd) Hora (hhmmss) TIMESTAMP Combinación de fecha y hora Tabla A-1 - Tipos de datos de SQL A.1.2. Comando DROP TABLE El comando DROP TABLE se usa para eliminar una relación y su definición de atributos como también borra del catálogo la tupla relacionada a esta. La sintaxis de la Instrucción es : DROP TABLE nombre_de_tabla; drop table DUENOS; A.1.3. Comando ALTER TABLE El comando ALTER TABLE es usado para agregar un atributo a una de las tablas de la base de datos. Además cambia las tuplas en el catalogo de sistema de la BD. El nuevo atributo tendrá el valor nulo (NULL) en todas la tuplas de la relación inmediatamente después de ejecutada la instrucción,

puesto que no se permite la constraint NOT NULL. La sintaxis de este comando es : ALTER TABLE nombre_de_tabla ADD nombre_de_columna tipo_de_dato; alter table DUENOS add VIGENCIA CHAR(1); A.1.4. Comando CREATE INDEX El Comando CREATE INDEX se usa para crear un índice. Cada índice tiene un nombre el cual será usado para borrarlo en caso de que no se necesite más. La sintaxis de este comando es la siguiente: CREATE [ UNIQUE ] INDEX nombre_de_indice ON nombre_de_tabla ( nombre_de_columna [orden] [,nombre_de_columna [orden] ]... ) [CLUSTER]; CLUSTER: La especificación opcional CLUSTER [17] en un comando CREATE INDEX indica si este índice estará el cluster. Una tabla dada puede tener un sólo índice en cluster en un momento dado. ORDER: Toda especificación ORDER en una sentencia SQL CREATE INDEX debe ser ya sea ASC (ascendente) o DESC (descendente) y por lo tanto especifica el orden en que se organizarán los datos, el valor por defecto para ORDER es ASC. UNIQUE: La opción UNIQUE en una sentencia SQL CREATE INDEX especifica que no se permitirán dos registros en la tabla a indexar que tengan el mismo valor para el campo (o la combinación de estos) para el cual se está creando el índice. create unique index DUENO_PK on DUENOS (RUT asc); A.1.5. Comando DROP INDEX El comando SQL DROP INDEX se usa para soltar el índice de la tabla relacionada y borrar la tupla correspondiente desde el catalogo de sistema de la base de datos. Una razón para borrar índices es que es costoso mantenerlos cada vez que la relación base es actualizada y por lo tanto se requiere espacio adicional. Los índices que especifican una constraint de llave (primaria, alterna o externa) no se pueden borrar a menos que se quiera borrar también la constraint asociada. La sintaxis de la cláusula DROP INDEX es: DROP INDEX nombre_de_indice; drop index DUENO_PK; [15] DataBase Administrator. Administrador de la base de datos. [16] Una Constraint es una regla que se debe aplicar a un atributo de una tabla. Las constraints proveen un mecanismo rápido y eficiente para asegurar la integridad de la base de datos sin importar los cambios que requiera el usuario. [17] La técnica de clustering involucra el tratar de almacenar en disco lo más cerca posible los registros que están relacionados lógicamente, de manera de poder mejorar el rendimiento. A.2. Manipulación de datos en SQL

SQL provee cuatro sentencias de manipulación de datos (DML). Esas son: SELECT UPDATE DELETE INSERT A.2.1. Comando SELECT El comando DML SELECT es la sentencia SQL básica para la recuperación de información desde una base de datos. (nótese que el comando SELECT de SQL no guarda relación con el operador de selección del álgebra relacional). La sintaxis del comando es la siguiente: SELECT [DISTINCT] ítem(s) FROM tabla(s) [ WHERE condición ] [ GROUP BY campo(s) ] [ HAVING condición ] [ ORDER BY campos] [ UNION SQL_SELECT] La palabra clave DISTINCT se usa para indicar que los valores duplicados o redundantes deben ser eliminados antes que la función sea ejecutada. DISTINCT puede ser especificada con las funciones agregadas COUNT y AVG pero es totalmente irrelevante para las funciones MAX y MIN. No se puede usar esta cláusula junto con la función especial COUNT(*). La palabra Clave UNIQUE es un sinónimo para DISTINCT y las dos se pueden usar sin distinción. select COUNT(DISCTINCT MARCA) FROM MOVIL; Retorna el número de Marcas de autos que tiene la empresa A.2.1.1. Funciones Agregadas de la cláusula SELECT SQL provee algunas funciones especiales que pueden ser usadas con el comando SELECT. Esas funciones son las siguientes: COUNT SUM AVG MAX MIN COUNT(*) COUNT : La función COUNT se usa para obtener el número de valores en la columna. Opera sobre una colección de valores en una columna de la tabla. La palabra clave DISTINCT se puede usar conjuntamente con COUNT. Si el resultado

del argumento es el conjunto vacío la función COUNT retorna el valor cero. Un ejemplo de COUNT es: SELECT COUNT (DISTINCT MARCA) FROM MOVIL; SUM : La función SUM se usa para sumar los valores de una columna. La función opera sobre una colección de valores en una columna de la tabla. Los valores deben ser numéricos. Si el resultado del argumento es el conjunto vacío, SUM retorna NULL. Un ejemplo de SUM es: SELECT SUM (HORA_HASTA - HORA_DESDE) WHERE PATENTE_MOVIL = 'HL-8483'; AVG : La Función AVG se usa para promediar todos los valores seleccionados en una columna, opera sobre una colección de valores (numéricos) en una sola columna de la tabla. La función AVG puede ir precedida por la palabra clave DISTINCT lo cual promediará sólo los valores únicos. Si el resultado del argumento es el conjunto vacío, AVG retorna NULL. SELECT AVG (HORA_HASTA - HORA_DESDE) WHERE PATENTE_MOVIL = 'HL-8483'; MIN (MAX): La función MIN (MAX) se usa para obtener el menor (mayor) valor en una columna. Ambas funciones operan sobre una colección de valores en una columna. Los valores no necesitan ser numéricos. Si el resultado del argumento es el conjunto vacío, ambas retornan NULL. SELECT MAX (HORA_HASTA - HORA_DESDE) ; SELECT MIN (HORA_HASTA - HORA_DESDE) ; COUNT(*): La función COUNT(*) se usa para contar la cardinalidad de una tabla sin eliminación de valores duplicados. En las funciones anteriores, cualquier valor nulo en el argumento se elimina antes que la función se aplique (indiferentemente de si se usa o no la cláusula DISTINCT). COUNT(*) retorna cero si el resultado del argumento es el conjunto vacío. SELECT COUNT(*) S WHERE PATENTE_MOVIL = 'HL-8483'; A.2.1.2. Cláusula GROUP BY La cláusula GROUP BY en una sentencia SELECT reordena lógicamente la tabla representada por la cláusula FROM en grupos, tal que dentro de cada grupo todas las filas tienen el mismo valor para el campo dado en la cláusula GROUP BY (esto es conceptual; la tablas no se reordena físicamente en la base de datos). Cada expresión en la cláusula SELECT debe ser reducible a valor simple dentro de un grupo, es decir, que puede ser ya sea el mismo campo evaluado en la Cláusula GROUP BY (o talvez una expresión que lo contenga), un literal, o una función tal como SUM que opera sobre todos los valores de un grupo dentro de un campo y que reduce todos aquellos valores a un valor simple.

GROUP BY no implica ORDER BY; para garantizar que el resultado aparezca en un determinado orden se debe especificar también la cláusula ORDER BY. SELECT PATENTE_MOVIL, SUM(HORA_HASTA - HORA_DESDE) GROUP BY PATENTE_MOVIL; A.2.1.3. Cláusula HAVING La cláusula HAVING en una sentencia SELECT se usa para eliminar grupos, (tal como se usa WHERE para eliminar filas). Si se especifica, debe existir una cláusula GROUP BY también. La Expresión en la cláusula HAVING debe ser reducible a valor simple dentro de un grupo. SELECT PATENTE_MOVIL, SUM(HORA_HASTA - HORA_DESDE) GROUP BY PATENTE_MOVIL HAVING SUM(HORA_HASTA - HORA_DESDE) > 10; A.2.1.4. Cláusula ORDER BY Esta cláusula se utiliza en un comando SELECT para producir como resultado una relación en un orden específico. En general, la relación resultado no se garantiza que esté en un orden particular. De ahí que la cláusula ORDER BY se utilice para ordenar el resultado en alguna secuencia particular antes de que los datos sean desplegados. AL igual que la cláusula ORDER del comando CREATE INDEX el argumento puede ser ya sea ASC o DESC. ASC es el valor por defecto. También es posible identificar columnas por su número de columna en lugar de su nombre, esto es, por la posición ordinal (de izquierda a derecha) de la columna en cuestión dentro de la tabla resultado. Esta característica hace posible ordenar un resultado en base a una columna que no tiene nombre. SELECT RUT, NOMBRE FROM CHOFER WHERE SYSDATE < FECHA_LCENCIA_HASTA ORDER BY 2 DESC; A.2.1.5. Cláusula EXIST La cláusula EXISTS en un comando SELECT representa el calificador de

existencia. La expresión se avaluara como verdadera, si y sólo si, el resultado de evaluar la sentencia SELECT... FROM... no es vacía, esto es, si y sólo si, existe un registro en la tabla dada en FROM desde el nivel más externo de la consulta. La negación (NOT EXISTS) es especialmente importante para una cierta clase de consultas bastante más complejas que el común. SELECT PATENTE FROM MOVIL WHERE EXISTS ( SELECT * WHERE MOVIL.PATENTE = VIAJE.PATENTE_MOVIL); A.2.1.6. Subconsultas. Una Subconsulta en una cláusula SELECT es una expresión de la forma SELECT - FROM - WHERE - GROUP BY - HAVING que se anida dentro de otra expresión. Las Subconsultas se usan comúnmente para representar un conjunto de valores que se buscan por medio de una condición IN condición. El sistema evalúa toda la consulta evaluando la Subconsultas anidadas. Ejemplos : * Retorna todos los móviles que tienen más de 10 horas de viaje. SELECT CHOFER.NOMBRE, MOVIL.PATENTE FROM MOVIL, CHOFER WHERE PATENTE IN ( SELECT PATENTE_MOVIL WHERE (HORA_HASTA - HORA_DESDE) > 10) AND MOVIL.RUT_CHOFER = CHOFER.RUT; A.2.2. Comando UPDATE El comando DML UPDATE se usa para modificar valores de atributos de una o más tuplas seleccionadas. Al igual que con el comando SELECT la cláusula WHERE es la que selecciona la o las tuplas que serán modificadas desde una relación simple. La cláusula adicional SET especifica los atributos que serán modificados y sus nuevos valores. La Sintaxis de UPDATE es la siguiente UPDATE nombre_de_tabla SET campo = expresion_escalar [, campo = expresion_escalar ]... [ WHERE condicion ] ; Todos los registros en la tabla que satisfagan la condición serán modificados de acuerdo a sus asignaciones ( campo = expresion_escalar ) en la cláusula SET.

El siguiente ejemplo demuestra el uso del comando UPDATE en un Registro. UPDATE CHOFER SET DIRECCION = Otra Dirección, TELEFONO = 5555555 WHERE RUT = 12657378 El siguiente ejemplo demuestra el uso del comando UPDATE para un conjunto de registros. UPDATE CHOFER SET VIGENCIA = N WHERE SYSDATE > FECHA_LICENCIA_HASTA; A.2.3. Comando DELETE El comando DML DELETE borra tuplas desde una relación. Al igual que el comando UPDATE puede incluir la cláusula WHERE para seleccionar las tuplas a ser eliminadas. Las tuplas son borradas sólo desde una tabla a la vez. Dependiendo del número de tuplas seleccionadas por la condición en la cláusula WHERE será la cantidad (cero, una o más) de tuplas que serán eliminadas con un sólo comando DELETE. Si se omite la cláusula WHERE se asume que todas las tuplas de la relación deben ser borradas, sin embargo la tabla permanece en la base de datos como una tabla vacía. (el comando DROP TABLE se usa para eliminar completamente la tabla, aún si esta no está vacía). La sintaxis del comando DELETE es la siguiente : DELETE FROM table [ WHERE condition ] ; El siguiente ejemplo borra una sola tupla en la tabla base: DELETE FROM MOVIL WHERE PATENTE = 'HL-8205' ; El siguiente ejemplo borra todas las tuplas que satisfagan la condición DELETE FROM MOVIL WHERE ANO <= 1960; A.2.4. Comando INSERT El comando DML INSERT en su forma más simple se usa para agregar una sola tupla a una relación. Se debe especificar el nombre de la relación y una lista de los valores que se agregarán para la tupla. La lista de valores se debe proporcionar en el mismo orden que sus respectivos atributos. Es posible también insertar múltiples registros de una sola vez por medio de una subconsulta.

La sintaxis es la siguiente: INSERT INTO TABLE [ ( campo [, campo ]... ) ] VALUES ( literal [, literal ]... ) ; o INSERT INTO TABLE [ ( campo [, campo ]... ) ] subconsulta; En el primer formato se inserta una fila en la tabla especificada dados los valores para los campos respectivos. En el segundo formato, la subconsulta será evaluada y se insertará en la tabla una copia de su resultado. Omitir la lista de campos es equivalente a especificar una lista con todos los campos de la tabla (en orden de creación, de izquierda a derecha). El siguiente es un ejemplo de la inserción de un sólo registro. INSERT INTO DUENO ( RUT, NOMBRE, VIGENCIA ) VALUES ( 12657378, MARIO CISTERNA, S ); El siguiente ejemplo muestra la inserción por medio de una Subconsultas. INSERT INTO CHOFER (RUT, NOMBRE, TELEFONO, DIRECCION, VIGENCIA) SELECT RUT, NOMBRE, TELEFONO, DIRECCION, VIGENCIA FROM DUENO WHERE VIGENCIA = S