Tema 33. El lenguaje SQL



Documentos relacionados
SQL (Structured Query Language)

Base de datos relacional

Bases de Datos 2. Teórico

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

SQL Los fundamentos del lenguaje

A.1. Definiciones de datos en SQL

Consultas con combinaciones

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

Bases de Datos: Structured Query Language (SQL)

ADMINISTRACIÓN DE BASE DE DATOS

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

ADMINISTRACION DE BASES DE DATOS EN ORACLE

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

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

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

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

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

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

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

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

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

MANUAL BÁSICO DEL LENGUAJE SQL

8 SQL SERVER 2008 RA-MA

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

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

SQL Server FEMEPA SQL Server 2000

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

Unidad. Lenguaje SQL. (Structured Query Language)

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.

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

Guía práctica de SQL

Bases de datos: Sistemas de bases de datos:

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

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Bases de Datos Relacionales

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

SQL (Structured Query Language)- DML

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

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

T12 Vistas y tablas temporales

Restricciones de Integridad

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

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

APÉNDICE SQL (Structures Query Language)

Trabajos de Ampliación. Bases de datos NoSQL.

Conceptos básicos Oracle 10g Introducción - Administración de Oracle - Orasite.com

Base de datos Lenguaje SQL

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

Acceso a bases de datos MySQL con PHP

[CASI v.0110] Pág. 1

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

Seguridad en SQL Server 2005

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

EL ENTORNO DE TRABAJO SQL ORACLE

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

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

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

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

Bases de Datos. Sistemas de Gestión de Bases de Datos

UNIDAD DIDACTICA 1: SISTEMAS GESTORES DE BASES DE DATOS

Procedimientos para agrupar y resumir datos

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

Sub consultas avanzadas

Conceptos Avanzados de Bases de datos

CONSULTAS BASICAS EN SQL SERVER

Temario Curso Bases de Datos

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

Repaso de Conceptos Básicos de Bases de Datos

Bases de Datos 3º Informática de Sistemas

FORMACIÓN E-LEARNING. Curso de Lenguaje SQL para Oracle

1. DML. Las subconsultas

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

SQL. Orígenes y Evolución

Vistas en postgresql

Oracle 12c DISEÑO Y PROGRAMACIÓN

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

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

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

ESPECIALISTA EN BASE DE DATOS

1

Práctica 3. Consultas SQL

Lenguaje para descripción de datos

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Temario. Índices simples Árboles B Hashing

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

ÍNDICE INTRODUCCIÓN...13

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

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

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

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

Tema 4. Manipulación de datos con SQL

BASES DE DATOS - SQL. Javier Enciso

Base de datos Procedimientos Almacenados y Funciones

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

Base de Datos Práctica 1.

select nombre from profesores where categoria='aso6';

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

Transcripción:

Tema 33. El lenguaje SQL Introducción... 1 Modos de uso... 2 Ejecución de las sentencias SQL... 2 Instrucciones DDL Data Definition Language-... 3 Instrucciones DML Data Manipulation Language-... 4 Instrucciones DQL Data Query Language-... 5 Creación de vistas... 6 Control de acceso a los datos... 6 Control de transacciones... 7 Críticas al lenguaje SQL... 8 Introducción El lenguaje SQL (Structured Query Language) es el lenguaje estándar para interactuar con las bases de datos relacionales. Su antecesor fue el SEQUEL Structured English QUEry Language -, lenguaje desarrollado por IBM. En 1986, la ISO La Organización internacional de estandarización- publicó la primera versión de SQL. La versión actual de SQL es el SQL:2006, una versión que establece como usar SQL con XML. A pesar de su nombre, SQL no es sólo un lenguaje de consulta de datos DQL-, posee las siguientes características: Posee instrucciones de definición de datos DDL- Posee instrucciones de manipulación de datos DDL- Posee instrucciones de creación de vistas. Posee instrucciones de definición del control de acceso a los datos. Posee instrucciones de control de la integridad de los datos. Posee instrucciones de control de transacciones. El lenguaje SQL es un lenguaje declarativo, es decir, especifica que operaciones se deben realizar pero no cómo. Se basa en el lenguaje formal de cálculo relacional, pero tiene una sintaxis y un léxico más amigables. SQL incorpora unas pocas operaciones del álgebra relacional. SQL es un lenguaje orientado a realizar operaciones complejas sobre datos simples almacenados y organizados dentro de bases de datos relacionales. SQL trabaja a nivel conceptual, es por ello que el estándar no contempla la gestión de índices desde el SQL2. Aunque el SQL de las bases de datos si posee esta funcionalidad. El motivo es que los fabricantes implementan el lenguaje SQL con más funcionalidad. Esto da lugar a incompatibilidades. La gestión de índices con SQL es diferente por ejemplo entre ORACLE y MySQL. Página 1 de 8

Modos de uso El SQL permite fundamentalmente dos modos de uso: Un uso interactivo, destinado principalmente a los usuarios finales avanzados, en el que las sentencias SQL se escriben y ejecutan en línea de comandos, o un entorno semejante. Un uso integrado, destinado al uso por parte de los programadores dentro de programas escritos en cualquier lenguaje de programación anfitrión. En este caso el SQL asume el papel de sublenguaje de datos. En el caso de hacer un uso embebido del lenguaje podemos utilizar dos técnicas alternativas de programación: 1. SQL estático, las sentencias SQL aparecen fijas en los programas, no cambian durante la ejecución del programa. 2. SQL dinámico, se produce una modificación total o parcial de las sentencias en el transcurso de la ejecución del programa. La utilización de SQL dinámico permite mayor flexibilidad y mayor complejidad en las sentencias, pero como contra punto obtenemos una eficiencia menor y el uso de técnicas de programación más complejas en el manejo de memoria y variables. Ejecución de las sentencias SQL SQL es un lenguaje declarativo. O sea, que especifica que es lo que se quiere y no como conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de la ejecución de la misma. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores. Como he indicado en la introducción, SQL trabaja a nivel conceptual, es por ello que no tiene en cuenta el uso de índices o la optimización de las instrucciones. La optimización de las instrucciones SQL dependen de las características de cada SGBD, aunque existen técnicas de optimización de las sentencias SQL comunes a todos los SGBD. Página 2 de 8

Instrucciones DDL Data Definition Language- SQL utiliza los términos tabla, fila y columna para referirse a las relaciones, tuplas y atributos, respectivamente. El esquema y el catálogo en SQL SQL organiza las tablas en esquemas. Las tablas y otros componentes de una misma base de datos de una aplicación pertenecen a un mismo esquema. La instrucción de creación de un esquema es: CREATE SCHEMA NOM_ESQUEMA AUTHORIZATION NOM_USUARIO Los esquemas de un mismo entorno SQL se almacenan en un mismo catálogo. Los esquemas de un mismo catálogo pueden compartir elementos, como la definición de un dominio. Creación de objetos La creación de objetos dentro de un esquema se realiza con la instrucción create. El objeto puede se una tabla, una vista, una función... Por ejemplo: Para crear una tabla se especifica su nombre, las columnas (nombre, tipo de datos y el valor por defecto) y las ligaduras a nivel de columna (clave obligatoria, clave única) como de fila (clave primaria, clave externa). Ejemplo: CREATE TABLE TABLA1 ( CODIGO VARCHAR2(10), COLUMNA1 VARCHAR2(8) NOT NULL, COLUMNA2 INT DEFAULT 1, PRIMARY KEY (CODIGO), FOREIGN KEY (COLUMNA2) REFERENCES TABLA2(CODIGO)); La modificación de los objetos se consigue con la instrucción alter. Por ejemplo: Se puede modificar la tabla posteriormente con la instrucción ALTER TABLE <nombre tabla> [ADD DROP <tipo elemento>] [columnas o ligaduras] (CASCADE RESTRICT]. Ejemplo: ALTER TABLE TABLA ADD COLUMNA 3 BOOLEAN; El termino CASCADE indica que, en el caso de borrar una columna, elimine todas las vistas y ligaduras asociadas. RESTRICT se utiliza para indicar que no borre la columna en el caso de haber vistas o ligaduras asociadas a ella. La eliminación de los objetos se realiza con la instrucción drop. Para borrar una tabla: DROP TABLE <nombre de la tabla> Dominios SQL permite crear dominios de datos escalares y simples. Como por ejemplo: CREATE DOMAIN t_nombre CHAR(20) Los tipos de dominio predefinidos por SQL son: char(n), varchar(n), int, smallint, numeric(p,d), real, float(n) y date. Página 3 de 8

Instrucciones DML Data Manipulation Language- Son las instrucciones encargadas de la modificación la información almacenadas dentro de las tablas. Existen tres instrucciones básicas Insert: Inserta nuevos registros en una tabla. Antes de insertar un registro comprueba que se cumplan todas las restricciones constraints- que le afecten. INSERT nombre_tabla [(Columna1, Columna2,...)] VALUES (value1, value2...); Si no se indica el nombre de las columnas donde insertar los valores, se utiliza el mismo orden que aparecen en el esquema de la tabla. Si una columna no se le indica un valor, se pone a nulo. Delete: Elimina registros de una tabla. Con la cláusula where se indica que registros hay que eliminar. DELETE FROM nombre_tabla WHERE predicado; Update: Modifica el valor de la columnas de los registros de una tabla determinada. Los registros a modificar se indican en las cláusulas where. UPDATE nombre_tabla SET Columna1 = valor1, Columna2 = valor2... WHERE predicado; En la cláusula set se indica que columnas se modifican y que valores se utilizan. Además de estas tres instrucciones, existen otras dos: Merge: Definida en el estándar SQL:2003. Sirve para combinar datos de múltiples tablas. Truncate: No es una instrucción estándar, pero es común a la mayoría de las extensiones del SQL de los fabricantes. Sirve para eliminar rápidamente todos los datos de una table. Página 4 de 8

Instrucciones DQL Data Query Language- SQL tiene una sola instrucción para realizar consultas: el Select. Aunque está es la instrucción más versátil de todo el juego de instrucciones de SQL. La instrucción SQL no es una instrucción 100% válida según el modelo relacional formal. Dado que este modelo exige que todas las operaciones con relaciones den como resultado otra relación. El Select puede dar como resultado una tablea no válida, pues permite que haya registros repetidos. La instrucción sql básica es la siguiente: SELECT [DISTINCT ALL] expresión1, expresión2... FROM tabla1, tabla2... La cláusula SELECT indica las expresiones que se utilizarán para obtener los datos que compondrán las tuplas devueltas en las consulta. Las expresiones utilizan generalmente los datos de las columnas de las tablas señaladas en la clausula FROM. Las tablas utilizadas pueden renombrarse utilizando el operador AS, aunque no es obligatorio. La palabra clave DISTINCT sirve para indicar que queremos que la consulta no devuelva tuplas repetidas. La palabra ALL significa lo contrario, queremos que aparezcan todas las tuplas. La instrucción select puede además contener las siguientes cláusulas: Where: Contiene un predicado utilizado para determinar que tuplas de las tablas de entrada se utilizan. Ejemplo: SELECT nombre FROM usuario AS usu WHERE usu.cod_dept = 1; Selecciona el nombre de todos los usuarios del departamento 1. Order by: Indica que las tuplas resultantes deben ser ordenadas por los valores de una o varias de sus columnas. El orden se establece con las palablas ASC -ascendente- o DESC descendente-. Por defecto es ascendente. SELECT nombre, DNI FROM usuario ORDER BY DNI; Group by: Esta cláusula sirve para indicar como hacer las agrupaciones al utilizar funciones de agrupación. SQL proporciona por defecto cinco funciones de agrupación: sum(), avg(), count(), max() y min(). Having: Se utiliza siempre junto a la cláusula group by. Sirve para establecer un predicado que debe cumplir la función de agragación. Ejemplo: SELECT nombre, count(*) FROM usuario GROUP BY nombre HAVING count(*) > 1 Muestra los valores de las columnas nombre y DNI de la tabla usuario, ordenadas por el valor del DNI. Muestra los nombres y el némero de usuarios con ese nombre siempre que sea mayor que 1 de la tabla usuario. Página 5 de 8

Funciones SQL proporciona un conjunto de funciones utilizables en las consultas. Estas funciones son: 1. De agregación: Vistas anteriormente. 2. De conversión de tipo: Permiten transformar el tipo de dato del parámetro de entrada. To_char(), to_date(), to_numbre()... Ejemplo: SELECT nombre FROM usuario WHERE to_char(fecha_nacimiento, YYYY ); 3. De manejo de Strings: LTRIM, LIKE, SUBSTR()... 4. De manejo de números: exp(), abs(), power()... Creación de vistas Las vistas son tablas virtuales, generalmente de solo lectura, cuyos datos se obtienen dinámicamente de otras tablas. Su finalidad es obtener una visión diferente a la visión conceptual de los datos. Se utilizan para: 1. Mostrar los datos de una forma más clara al usuario. 2. Ocultar datos confidenciales, haciendo que no aparezcan en las vistas usadas. 3. Permitir modificar la estructura lógica de la BD sin que se vean afectadas las aplicaciones. Se modifican las vistas para que sigan mostrando los mismos datos. Las funciones utilizadas para la creación y eliminación de las vistas son create y drop. Ejemplo: CREATE VIEW nombre_de_la_vista AS (Sentencia select). CREATE VIEW usuarios_por_pais AS ( SELECT pais, count(*) FROM usuario GROUP BY pais ) Control de acceso a los datos SQL implementa medidas de seguridad utilizando un control de acceso discreccional, basado en dar y revocar permisos a los usuarios. Existen dos tipos de permisos: A nivel de cuenta. A un usuario se le dan privilegios sobre la base de datos. Se le permite crear vistas, tablas, esquemas... A nivel de tabla. Se restringe el acceso y operaciones a tablas y vistas. En SQL, los usuarios están identificados. Generalmente la autentificación se realiza mediante mecanismos de usuario-contraseña. Además los usuarios pueden estar clasificados en roles. Los roles agrupan a los usuarios con unas funciones comunes en una aplicación. El control de acceso puede realizarse a nivel de usuario o de rol, aunque es mejor hacerlo a nivel de rol, pues facilita la administración. Página 6 de 8

El creador de un objeto, por ejemplo una vista, se convierte en el dueño del objeto y está capacitado en otorgar, en primera instancia, los privilegios sobre sus tablas o vistas. Las sentencias básicas de control de los privilegios son: Grant. Otorga un privilegio a un usuario o rol sobre una tabla o vista. GRANT (privilegio)+ ON tabla TO ( USER ROLE ) [WITH GRANT OPTION]. Los privilegios pueden ser: select, update, delete, insert y reference. Reference es el privilegio de poder crear restricciones sobre la tabla. Los privilegios generalmente se aplican a nivel de tabla, aunque update, insert y reference pueden darse a nivel de columna. La opción With grant option permite al usuario poder a su vez otorgar el privilegio a otros. Revoke: Se utiliza para revocar un privilegio concedido. Control de transacciones SQL establece controles sobre el acceso concurrente a tablas y sus columnas para poder asegurar la consistencia de las operaciones sobre los datos. Las instrucciones de control de transacción son: Start transaction: Indica donde comienza la transacción. En muchos entornos, el inicio de transacción se realiza por defecto, por lo que no es necesario el uso de esta sentencia. Commit: Da validez a todos los cambios realizados en la transacción. Rollback: Ordena deshacer los cambios realizados en la transacción. Las transacciones en SQL tienen tres características: Modo de acceso: Read write y Read Only Nivel de diagnóstico: Número de condiciones simultáneas del área de diagnóstico. Insolation: Nivel de consistencia exigida, de más a menos son: Operaciones serializables, lectura repetible, lectura confirmada y lectura no confirmada. Las transacciones se configuran con la instrucción siguiente: SET TRANSACTION (modo de acceso) DIAGNOSTIC LEVEL N (nivel de consistencia); Ejemplo: SET TRANSACTION READ ONLY DIAGNOSTIC LEVEL SERIALIZABLE; Página 7 de 8

Críticas al lenguaje SQL Los inconvenientes de SQL como lenguaje son: Es un lenguaje demasiado extenso. Su sintaxis similar al inglés, destinada a facilitar su uso por usuarios no técnicos, provoca que el código SQL sea muy extenso. Las implementaciones en los diferentes SGBD son inconsistentes entre ellos y, muchas veces, incompatibles. Esto es debido que los fabricantes de sistemas de gestión de BD amplían la funcionalidad del SQL de sus productos. Usar esta funcionalidad extra limita las ventajas de SQL como lenguaje estándar. No dispone de mecanismos que faciliten el manejo de las sentencias de consultas complejas y extensas, lo que provoca problemas de mantenibilidad del código. Página 8 de 8