Funciones y capacidades básicas del lenguaje SQL. Conocimiento y sus tipos. Definición de estructuras de control

2. gratis y memoria usada en las páginas de relaciones. Esta información es necesaria para la búsqueda. espacio libre al ingresar una tupla

3. vincular páginas de un componente. Si un archivo contiene varias páginas de relaciones, entonces estas páginas deben estar vinculadas de alguna manera. El uso de enlaces y punteros es problemático, por lo que se introducen estructuras de control: páginas de enlace. Utiliza indexación indirecta de páginas de una única relación basada enÁrboles B.

lenguaje SQL. Funciones y características principales.

1. La capacidad en una consulta de agrupar tuplas de relaciones de resultados por campos específicos de acuerdo con las condiciones de selección para todo el grupo.

2. En SQL no es necesario eliminar duplicar tuplas tanto en el resultado como en la tupla intermedia. El resultado de una consulta SQL es una tupla de conjuntos múltiples. Todos los operadores de teoría de conjuntos se implementaron en el DBMS System R.

EN System R implementa 4 operadores de manipulación de datos y 2 operadores de creación de vistas.

También operadores adicionales Le permite realizar cambios en la estructura de la tabla.

Definición de restricciones y desencadenantes de integridad

En System R, el medio para mantener la integridad de la base de datos es afirmarHon (excepciones) - expresión lógica, problema en toda la base de datos, cuya falsedad indicaba que la base de datos estaba incompleta. Las restricciones de integridad se dividieron en 2 clases:

1. comprobado después de la ejecución del operador de manipulación (transacción)

2. a petición de un operador especial FORZAR LA INTEGRIDAD

Los tipos de predicados diferían para estos grupos. System R fue el primero en implementar un mecanismo de activación que servía para mantener automáticamente la integridad de la base de datos. Al definir un disparador, se especificaba la condición para su aplicación y, de ser verdadera, se activaba el disparador.

vista de base de datos

Para definir representaciones se utiliza el aparato de operadores de selección.

Definición de estructuras de control

La definición de estructuras de control representa índices y relaciones. SQL ahora tiene una comprensión clara de cómo representar índices y relaciones.

Operadores principales:

CONCESIÓN – “Permitir

REVOCAR - “cobrar” derechos

Puntos de guardado y reversión de transacciones. SQL incorporado

SQL incorporado es operadores especiales, apoyando la posibilidad Ejecución de SQL Operadores en lenguajes de programación tradicionales.

ESQL/C – Lenguaje C con capacidad de escribir consultas.

El principal problema de la incrustación es el problema de la conjugación entre los lenguajes de programación declarados y procedimentales.

Problema de acceso a tuplas en lenguajes procesales se resolvió utilizando un mecanismo de "cursor", que es un puntero a una tupla.

Operadores básicos en cursores: ABRIR CURSOR

SQL dinámico

Un mecanismo que permite ejecutar sentencias SQL en tiempo de compilación.

1. Restricción única(no más de una clave primaria)

3. Verificar restricción(especifica una condición que debe cumplir cada fila de la tabla)

Definición de vistas.

Mecanismo vistas vistas es una herramienta poderosa SQL, que le permite ocultar la estructura real de la base de datos al usuario esencialmente almacenando una consulta con columnas con nombre en la base de datos.

Para su uso, una vista (o presentación) no es diferente de la tabla base. En realidad, la vista se superpone en la mesa cada vez que se ejecuta.

El motor de visualización estándar SQL-89 se define de la siguiente manera:

::=

CREAR VISTA

[()] COMO

< view column list>::= [{}]

Se presenta una determinada tabla que es mutable, es decir aplicar a ella BORRAR declaraciones o ACTUALIZAR solo si se realizan las siguientes operaciones de consulta:

1. No especificado palabra clave DISTINTO

2. cada expresión aritmética en una lista de selección representa una especificación de una sola columna

3. la cláusula FROM contiene una tabla

4. no hay subconsultas en la cláusula WHERE

5. no AGRUPAR POR TENER secciones

El requisito CON CHECK OPTION tiene sentido en el caso de una vista mutable con una cláusula WHERE. Este requisito evita que aparezcan filas en la tabla base que no son visibles en la vista (es decir, aquellas filas que no cumplen DONDE condición en solicitudes).

Definición de privilegios.

En el estándar SQL-89, otorgar privilegios sólo es posible al definir una tabla. Un usuario que ha recibido privilegios de otro usuario puede transferirlos más solo al definir un esquema.

Los privilegios se definen de la siguiente manera:

< privilege definition >::=

MAGNÍFICO EN

A

[g, concede 3…] ::= TODOS LOS PRIVILEGIOS | [{,}..]

::= SELECCIONAR | ACTUALIZACIÓN | INSERTAR | BORRAR | REFERENCIAS [ ]

::= PÚBLICO |

Herramientas de manipulación de datos.

Estructura de la solicitud.

::= []

::= | UNIÓN

::= | ()

::=(SELECCIONAR

)

EN

::= SELECCIONAR

::= [] [] [] []

El lenguaje SQL implica 3 tipos de construcciones SELECT:

1. especificación del cursor

2. seleccione declaración

3.subconsulta

La expresión de tabla es la base de todas las estructuras sintácticas.

1. Especificación del cursor: cursor del constructor SQL que le permite obtener acceso fila por fila a los resultados de una consulta en la base de datos. No existen requisitos especiales para las expresiones de tabla involucradas en la especificación del cursor.

  • Traducción
  • Tutorial
¿Necesita “SELECCIONAR * DONDE a=b DESDE c” o “SELECCIONAR DONDE a=b DESDE c EN *”?

Si eres como yo, estarás de acuerdo: SQL es una de esas cosas que parece fácil al principio (¡se lee como en inglés!), pero de alguna manera tienes que buscar en Google cada consulta simple para encontrar la sintaxis correcta.


Y luego comienzan las uniones, la agregación, las subconsultas y resulta completamente basura. Algo como esto:


SELECCIONAR miembros.nombre || " " || miembros.apellido COMO "Nombre completo" DE préstamos UNIÓN INTERNA miembros EN miembros.miembroid=borrowings.memberid UNIÓN INTERIOR libros EN libros.bookid=borrowings.bookid DONDE prestamos.bookid EN (SELECCIONE bookid DE libros DONDE stock>(SELECCIONE promedio (stock) ) DE libros)) GRUPO POR miembros.nombre, miembros.apellido;

¡Bue! Esto ahuyentará a cualquier novato, o incluso a un desarrollador de nivel intermedio si ve SQL por primera vez. Pero no todo es malo.


Es fácil recordar lo que es intuitivo y con esta guía espero reducir la barrera de entrada a SQL para los principiantes y ofrecer a aquellos que ya tienen experiencia una nueva forma de ver SQL.


Aunque la sintaxis SQL es casi la misma entre diferentes bases de datos, este artículo utiliza PostgreSQL para consultas. Algunos ejemplos funcionarán en MySQL y otras bases de datos.

1. Tres palabras mágicas

Hay muchas palabras clave en SQL, pero SELECT, FROM y WHERE están presentes en casi todas las consultas. Un poco más adelante comprenderá que estas tres palabras representan los aspectos más fundamentales de la construcción de consultas de bases de datos, y otras consultas más complejas son solo complementos de ellas.

2. Nuestra base

Echemos un vistazo a la base de datos que usaremos como ejemplo en este artículo:







Tenemos una biblioteca de libros y gente. También hay una mesa especial para registrar los libros emitidos.

  • La tabla "libros" almacena información sobre el título, autor, fecha de publicación y disponibilidad del libro. Es sencillo.
  • En la tabla "miembros", el nombre y apellido de todas las personas que se registraron en la biblioteca.
  • La tabla de “préstamos” almacena información sobre libros tomados de la biblioteca. La columna bookid se refiere al ID del libro tomado en la tabla "libros", y la columna memberid se refiere a la persona correspondiente de la tabla "miembros". También tenemos una fecha de emisión y una fecha en la que se debe devolver el libro.

3. Solicitud sencilla

Comencemos con una petición sencilla: necesitamos nombres Y identificadores(id) de todos los libros escritos por el autor "Dan Brown"


La solicitud será así:


SELECCIONE bookid COMO "id", título DE libros DONDE autor="Dan Brown";

Y el resultado es así:


identificación título
2 El símbolo perdido
4 Infierno

Bastante sencillo. Veamos la solicitud para entender qué está pasando.

3.1 DE - de donde obtenemos los datos

Esto puede parecer obvio ahora, pero FROM será muy importante más adelante cuando lleguemos a uniones y subconsultas.


FROM apunta a la tabla para consultar. Puede ser una tabla existente (como en el ejemplo anterior) o una tabla creada sobre la marcha mediante combinaciones o subconsultas.

3.2 DÓNDE: qué datos se muestran

DONDE simplemente se comporta como un filtro pauta, que queremos generar. En nuestro caso, solo queremos ver filas donde el valor en la columna del autor sea "Dan Brown".

3.3 SELECCIONAR: cómo mostrar datos

Ahora que tenemos todas las columnas que necesitamos de la tabla que necesitamos, debemos decidir cómo mostrar exactamente estos datos. En nuestro caso, sólo necesitamos los títulos e identificadores de los libros, así que eso es lo que elijamos usando SELECCIONAR. Al mismo tiempo, puedes cambiar el nombre de la columna usando AS.


La consulta completa se puede visualizar mediante un diagrama simple:


4. Conexiones (uniones)

Ahora queremos ver los títulos (no necesariamente únicos) de todos los libros de Dan Brown que se han retirado de la biblioteca y cuándo es necesario devolver esos libros:


SELECCIONE libros.título COMO "Título", préstamos.returndate COMO "Fecha de devolución" DE préstamos ÚNASE a libros EN préstamos.bookid=books.bookid DONDE libros.autor="Dan Brown";

Resultado:


Título Fecha de regreso
El símbolo perdido 2016-03-23 00:00:00
Infierno 2016-04-13 00:00:00
El símbolo perdido 2016-04-19 00:00:00

En su mayor parte la solicitud es similar a la anterior. excepto DE secciones. Esto significa que estamos consultando datos de otra tabla. No accedemos ni a la tabla “libros” ni a la tabla “empréstitos”. En lugar de eso, recurrimos a nueva mesa, que se creó uniendo estas dos tablas.


préstamos ÚNASE a libros EN préstamos.bookid=books.bookid: considere esta nueva tabla que se formó combinando todos los registros de las tablas "libros" y "préstamos" en las que los valores de bookid son los mismos. El resultado de dicha fusión será:



Y luego consultamos esta tabla de la misma manera que en el ejemplo anterior. Esto significa que al unir tablas, solo debe preocuparse por cómo realizar la unión. Y entonces la solicitud queda tan clara como en el caso de la “solicitud simple” del punto 3.


Probemos una combinación un poco más compleja con dos tablas.


Ahora queremos obtener los nombres y apellidos de las personas que tomaron libros de la biblioteca del autor "Dan Brown".


Esta vez vayamos de abajo hacia arriba:


Paso Paso 1- ¿De dónde obtenemos los datos? Para obtener el resultado que necesitamos, debemos unir las tablas "miembros" y "libros" con la tabla "préstamos". La sección UNIRSE se verá así:


préstamos ÚNASE a libros EN préstamos.bookid=books.bookid ÚNASE a miembros EN miembros.memberid=borrowings.memberid

El resultado de la conexión se puede ver en el enlace.


Paso 2- ¿Qué datos mostramos? Sólo nos interesan datos donde el autor del libro es “Dan Brown”


DONDE libros.autor="Dan Brown"

Paso 3- ¿Cómo mostramos los datos? Ahora que se han recibido los datos, solo falta mostrar el nombre y apellido de quienes tomaron los libros:


SELECCIONE miembros.nombre COMO "Nombre", miembros.apellido COMO "Apellido"

¡Súper! Ya sólo queda combinar los tres componentes y realizar la solicitud que necesitamos:


SELECCIONE miembros.nombre COMO "Nombre", miembros.apellido COMO "Apellido" DE préstamos ÚNASE a libros EN préstamos.bookid=books.bookid ÚNASE a miembros EN miembros.miembroid=borrowings.memberid DONDE libros.autor="Dan Brown";

Qué nos dará:


Nombre de pila Apellido
Micro willis
Elena hortón
Elena hortón

¡Excelente! Pero los nombres se repiten (no son únicos). Arreglaremos esto pronto.

5. Agregación

Más o menos, Se necesitan agregaciones para convertir varias filas en una. Al mismo tiempo, durante la agregación, se utiliza una lógica diferente para diferentes columnas.


Sigamos con nuestro ejemplo donde aparecen nombres duplicados. Está claro que Ellen Horton se llevó más de un libro, pero éste no es el más mejor manera mostrar esta información. Puedes hacer otra solicitud:


SELECCIONE miembros.nombre COMO "Nombre", miembros.apellido COMO "Apellido", contar(*) COMO "Número de libros prestados" DE préstamos ÚNASE a libros EN préstamos.bookid=books.bookid ÚNASE a miembros EN miembros.memberid=borrowings .memberid DONDE libros.autor="Dan Brown" GRUPO POR miembros.nombre, miembros.apellido;

Lo que nos dará el resultado deseado:


Nombre de pila Apellido Número de libros prestados
Micro willis 1
Elena hortón 2

Casi todas las agregaciones vienen con una cláusula GROUP BY. Esto convierte una tabla que podría recuperarse mediante una consulta en grupos de tablas. Cada grupo corresponde a un valor único (o grupo de valores) de la columna que especificamos en GROUP BY. En nuestro ejemplo, convertimos el resultado del ejercicio anterior en un grupo de filas. También hacemos una agregación con count , que convierte varias filas en un valor entero (en nuestro caso, el número de filas). Luego se asigna este significado a cada grupo.


Cada fila del resultado representa el resultado de la agregación de cada grupo.



Se puede llegar a la conclusión lógica de que todos los campos del resultado deben especificarse en GROUP BY o se deben realizar agregaciones en ellos. Debido a que todos los demás campos pueden diferir entre sí en diferentes lineas, y si los selecciona SELECCIONAR "ohm, entonces no está claro cuál de ellos valores posibles Necesito tomarlo.


En el ejemplo anterior función de conteo procesó todas las filas (ya que contamos el número de filas). Otras funciones como proceso de suma o máximo solo líneas especificadas. Por ejemplo, si queremos saber la cantidad de libros escritos por cada autor, necesitamos la siguiente consulta:


SELECCIONAR autor, suma (stock) DEL GRUPO de libros POR autor;

Resultado:


autor suma
Robin Sharma 4
Daniel Brown 6
Juan Verde 3
Amish Tripati 2

Aquí función de suma procesa solo la columna de existencias y calcula la suma de todos los valores de cada grupo.

6. Subconsultas


Las subconsultas son consultas SQL normales integradas en consultas más grandes. Se dividen en tres tipos según el tipo de resultado devuelto.

6.1 Tabla bidimensional

Hay consultas que devuelven varias columnas. Buen ejemplo Esta es una consulta de un ejercicio de agregación anterior. Al ser una subconsulta, simplemente devolverá otra tabla en la que se pueden realizar nuevas consultas. Siguiendo con el ejercicio anterior, si queremos saber el número de libros escritos por el autor “Robin Sharma”, entonces uno de formas posibles- utilizar subconsultas:


SELECCIONE * DE (SELECCIONE autor, suma (stock) DE libros GRUPO POR autor) COMO resultados DONDE autor="Robin Sharma";

Resultado:



Puede escribirse como: ["Robin Sharma", "Dan Brown"]


2. Ahora usamos este resultado en una nueva consulta:


SELECCIONE título, bookid DE libros DONDE autor EN (SELECCIONE autor DE (SELECCIONE autor, suma (stock) DE libros GRUPO POR autor) COMO resultados DONDE suma> 3);

Resultado:


título libro
El símbolo perdido 2
¿Quién llorará cuando mueras? 3
Infierno 4

Esto es lo mismo que:


SELECCIONE título, bookid DE los libros DONDE el autor EN ("Robin Sharma", "Dan Brown");

6.3 Valores individuales

Hay consultas que dan como resultado solo una fila y una columna. Pueden tratarse como valores constantes y usarse en cualquier lugar donde se usen valores, como en operadores de comparación. También se pueden utilizar como tablas bidimensionales o matrices de un solo elemento.


Por ejemplo, obtengamos información sobre todos los libros cuyo número en la biblioteca excede el promedio actual.


El promedio se puede obtener de esta manera:


seleccione promedio (stock) de los libros;

Que nos da:


7. Escribir operaciones

La mayoría de las operaciones de escritura en bases de datos son bastante simples en comparación con operaciones de lectura más complejas.

7.1 Actualización

Sintaxis Solicitud de ACTUALIZAR semánticamente lo mismo que una solicitud de lectura. La única diferencia es que en lugar de seleccionar columnas con SELECT, configuramos el conocimiento con SET.


Si se pierden todos los libros de Dan Brown, deberá restablecer el valor de la cantidad. La consulta para esto sería:


ACTUALIZAR libros SET stock=0 WHERE autor="Dan Brown";

DONDE hace lo mismo que antes: selecciona filas. En lugar del SELECT que usamos al leer, ahora usamos SET. Sin embargo, ahora necesita especificar no sólo el nombre de la columna, sino también un nuevo valor para esta columna en las filas seleccionadas.


7.2 Eliminar

Una consulta DELETE es simplemente una consulta SELECT o UPDATE sin nombres de columnas. En serio. Al igual que con SELECT y UPDATE, el bloque WHERE sigue siendo el mismo: selecciona las filas que se eliminarán. La operación de eliminación destruye toda la fila, por lo que no tiene sentido especificar columnas individuales. Entonces, si decidimos no restablecer la cantidad de libros de Dan Brown, sino eliminar todos los registros por completo, entonces podemos realizar la siguiente solicitud:


ELIMINAR DE libros DONDE autor="Dan Brown";

7.3 Insertar

Quizás lo único que la diferencia de otro tipo de consultas sea INSERT. El formato es:


INSERTAR EN x (a,b,c) VALORES (x, y, z);

Donde a, b, c son los nombres de las columnas y x, y y z son los valores que se insertarán en esas columnas, en el mismo orden. Eso es básicamente todo.


Echemos un vistazo a ejemplo concreto. Aquí hay una consulta INSERT que completa toda la tabla de "libros":


INSERTAR EN libros (bookid,título,autor,publicado,stock) VALORES (1,"Vástago de Ikshvaku","Amish Tripathi","22-06-2015",2), (2,"El símbolo perdido"," Dan Brown","22-07-2010",3), (3,"¿Quién llorará cuando mueras?"","Robin Sharma","15-06-2006",4), (4,"Infierno" ,"Dan Brown","05-05-2014",3), (5,"La falla en nuestras estrellas","John Green","03-01-2015",3);

8. comprobar

Hemos llegado al final, sugiero. pequeña prueba. Mire esa solicitud al principio del artículo. ¿Puedes resolverlo? Intente dividirlo en secciones SELECCIONAR, DESDE, DÓNDE, AGRUPAR POR y considere componentes individuales subconsultas.


Aquí está en una forma más legible:


SELECCIONAR miembros.nombre || " " || miembros.apellido COMO "Nombre completo" DE préstamos UNIÓN INTERNA miembros EN miembros.miembroid=borrowings.memberid UNIÓN INTERIOR libros EN libros.bookid=borrowings.bookid DONDE prestamos.bookid EN (SELECCIONE bookid DE libros DONDE stock> (SELECCIONE promedio (stock) ) DE libros)) GRUPO POR miembros.nombre, miembros.apellido;

Esta consulta devuelve una lista de personas que han sacado prestado un libro de la biblioteca cuyo número total está por encima del promedio.


Resultado:


Nombre completo
Lida Tyler

Espero que hayas podido resolverlo sin ningún problema. Pero si no, agradecería sus comentarios y sugerencias para poder mejorar esta publicación.

Etiquetas: Agregar etiquetas

Estándar lenguaje SQL Fue adoptado en 1992 y todavía está en uso hoy. Fue esto lo que se convirtió en el estándar para muchos. Por supuesto, algunos fabricantes utilizan sus propias interpretaciones del estándar. Pero cualquier sistema todavía tiene los componentes principales: declaraciones SQL.

Introducción

Mediante sentencias SQL, se gestionan y obtienen valores y tablas para su posterior análisis y visualización. Son un conjunto de palabras clave mediante las cuales el sistema entiende qué hacer con los datos.

Se definen varias categorías de sentencias SQL:

  • definir objetos de base de datos;
  • manipulación de valores;
  • protección y control;
  • parámetros de sesión;
  • información sobre la base de datos;
  • SQL estático;
  • SQL dinámico.

Sentencias SQL para manipulación de datos.

INSERTAR. Inserta filas en una tabla existente. Puede usarse para un valor o varios, definidos por una determinada condición. Por ejemplo:

nombre de la tabla (nombre de columna 1, nombre de columna 2)

VALORES(valor 1, valor 2).

Para utilizar la instrucción INSERT en varios valores, utilice la siguiente sintaxis:

nombre de tabla 1 (nombre de columna 1, nombre de columna 2)

SELECCIONE el nombre de la columna 1, el nombre de la columna 2

DEL nombre de la tabla 2

DONDE nombre de la tabla 2.nombre de la columna 1>2

Esta consulta seleccionará todos los datos de la tabla 2 que sean mayores que 2 en la columna 1 y los insertará en la primera.

ACTUALIZAR. Como sugiere el nombre, este operador consulta SQL actualiza datos en una tabla existente según un criterio específico.

ACTUALIZAR nombre de la tabla 1

SET nombre de columna 2 = "Vasily"

DONDE nombre de la tabla 1.nombre de la columna 1 = 1

Esta construcción llenará con el valor Vasily todas las líneas en las que encuentre el número 1 en la primera columna.

Datos de la tabla. Puede especificar una condición o eliminar todas las líneas.

ELIMINAR DEL nombre de la tabla

DONDE nombre de la tabla.nombre de la columna 1 = 1

La consulta anterior eliminará de la base de datos todos los datos con el valor uno en la primera columna. Así es como puedes borrar toda la tabla:

SELECCIONAR declaración

El objetivo principal de SELECT es seleccionar datos de acuerdo con ciertas condiciones. El resultado de su trabajo es siempre nueva mesa con datos seleccionados. El operador MS se puede utilizar en una variedad de consultas diferentes. Por lo tanto, junto con ella, puedes considerar otras palabras clave relacionadas.

Para seleccionar todos los datos de una tabla específica, utilice el signo "*".

DESDE el nombre de la tabla 1

El resultado del trabajo. de esta solicitud voluntad copia exacta tabla 1.

Y aquí se realiza una selección utilizando la condición WHERE, que recupera de la tabla 1 todos los valores mayores que 2 en la columna 1.

DESDE el nombre de la tabla 1

DONDE nombre de la tabla 1.nombre de la columna 1> 2

También puede especificar en la selección que solo se necesitan determinadas columnas.

SELECCIONAR nombre de tabla 1.nombre de columna 1

DESDE el nombre de la tabla 1

El resultado de esta consulta serán todas las filas con valores de la columna 1. Con los operadores de MS SQL, puede crear su propia tabla, reemplazando, calculando y sustituyendo ciertos valores sobre la marcha.

nombre de la tabla 1.nombre de la columna 1

nombre de la tabla 1.nombre de la columna 2

nombre de la tabla 1.nombre de la columna 3

nombre de la tabla 1.nombre de la columna 2 * nombre de la tabla 1.nombre de la columna 3 AS SUMMA

DESDE el nombre de la tabla 1

Esta consulta aparentemente compleja recupera todos los valores de la Tabla 1 y luego crea nuevas columnas EQ y SUMMA. El primero se rellena con el signo “+” y el segundo es el producto de los datos de las columnas 2 y 3. El resultado obtenido se puede presentar en forma de tabla para entender cómo funciona:

Al utilizar la instrucción SELECT, puede ordenar inmediatamente los datos según cualquier criterio. Para esto se utiliza la palabra ORDER BY.

nombre de la tabla 1.nombre de la columna 1

nombre de la tabla 1.nombre de la columna 2

nombre de la tabla 1.nombre de la columna 3

DESDE el nombre de la tabla 1

ORDENAR POR nombre de columna 2

La tabla resultante se verá así:

Es decir, todas las filas se configuraron en tal orden que los valores de la columna 2 estuvieran en orden ascendente.

Los datos también se pueden obtener de varias tablas. Para mayor claridad, primero debe imaginar que hay dos de ellos en la base de datos, algo como esto:

Tabla "Empleados"

Tabla "Salario"

Ahora necesitas conectar de alguna manera estas dos tablas para obtener valores generales. Usando declaraciones SQL básicas, puede hacer esto de esta manera:

Número de empleados

Empleados.Nombre

Salario.Tasa

Salario acumulado

DE Empleados, Salario

DONDE Empleados.Número = Salario.Número

Aquí tienes una selección de dos diferentes mesas valores combinados por número. El resultado será el siguiente conjunto de datos:

Un poco más sobre SELECCIONAR. Usar funciones agregadas

Uno de los operadores principales puede realizar algunos cálculos al realizar la recuperación. Para ello utiliza ciertas funciones y fórmulas.

Por ejemplo, para obtener la cantidad de registros de la tabla Empleados, debe utilizar la consulta:

SELECCIONAR CUENTA (*) COMO N

DE Empleados

El resultado es una tabla con un valor y una columna.

Puede ejecutar una consulta como esta y ver qué sucede:

SUM(Salario. Devengado) COMO SUMMA

MAX(Salario. Acumulado) COMO MAX

MIN(Salario. Acumulado) COMO MIN

AVG(Salario. Acumulado) COMO SRED

DESDE Salario

La mesa final quedará así:

Así es como puedes seleccionar de la base de datos. valores requeridos, realizando cálculos de varias funciones sobre la marcha.

Unión, intersección y diferencias.

Combina múltiples consultas en SQL

SELECCIONAR Empleados.Nombre

DE Empleados

DONDE Empleados.Número = 1

SELECCIONAR Empleados.Nombre

DE Empleados, Salario

DONDE Salario.Número = 1

Hay que tener en cuenta que con tal unión las mesas deben ser compatibles. Es decir, tener el mismo número de columnas.

Sintaxis de la declaración SELECT y orden de procesamiento

Lo primero que hace SELECT es determinar el área de la que tomará datos. Para esto se utiliza la palabra clave FROM. Si no se indica qué elegir exactamente.

Entonces la cláusula SQL WHERE puede estar presente. Con su ayuda, SELECT recorre todas las filas de la tabla y verifica que los datos cumplan con la condición.

Si la consulta contiene GROUP BY, los valores se agrupan según los parámetros especificados.

Operadores para comparar datos.

Hay varios tipos. EN declaraciones SQL las comparaciones pueden verificar varios tipos valores.

    "=". Denota, como puedes imaginar, la igualdad de dos expresiones. Por ejemplo, ya se ha utilizado en los ejemplos anteriores: DONDE Salario.Número = 1.

    ">". Más señal. Si el valor del lado izquierdo de la expresión es mayor, entonces se devuelve el VERDADERO lógico y la condición se considera cumplida.

    «<». Знак меньше. Обратный предыдущему оператор.

    Señales "<=» и «>=". Se diferencia de los operadores simples de más y menos en que si los operandos son iguales, la condición también será verdadera.

COMO

Esta palabra clave se puede traducir como "similar". El operador LIKE en SQL se usa aproximadamente de la misma manera: ejecuta una consulta basada en una plantilla. Es decir, permite ampliar la selección de datos de la base de datos mediante expresiones regulares.

Por ejemplo, se planteó la siguiente tarea: de la ya conocida base de datos “Empleados”, obtener todas las personas cuyo nombre termine en “I”. Entonces la consulta se puede escribir así:

DE Empleados

DONDE Nombre COMO `%i`

El signo de porcentaje en este caso significa una máscara, es decir, cualquier carácter y su número. Y con la letra “I”, SQL determinará que el último carácter debe ser exactamente así.

CASO

Esta declaración de SQL Server es una implementación de selección múltiple. Es una reminiscencia de la construcción switch en muchos lenguajes de programación. La declaración CASE en SQL realiza una acción basada en varias condiciones.

Por ejemplo, debe seleccionar los valores máximo y mínimo de la tabla "Salario".

Entonces la consulta se puede escribir así:

DESDE Salario

DONDE CASO CUANDO SELECCIONE MAX(Acumulado) ENTONCES Máximo

CUANDO SELECCIONE MIN(Acumulado) ENTONCES Mínimo

En este contexto, el sistema busca el valor máximo y mínimo en la columna Acumulado. Luego, al usar FIN, se crea un campo “total”, en el que se ingresará “Máximo” o “Mínimo”, dependiendo del resultado de la condición.

Por cierto, SQL también tiene una forma más compacta de CASE - COALESCE.

Operadores de definición de datos

Esta vista le permite realizar diversas modificaciones en las tablas: crear, eliminar, modificar y trabajar con índices.

El primero que vale la pena considerar es CREAR TABLA. No hace más que crear una tabla. Si simplemente escribe la consulta CREATE TABLE, no sucederá nada, ya que aún necesita especificar varios parámetros.

Por ejemplo, para crear la ya familiar tabla "Empleados", debe utilizar los comandos:

CREAR TABLA Empleados

(Número (10) NO NULO

Nombre varchar(50) NO NULO

Apellido varchar(50) NOT NULL)

En esta consulta se determinan inmediatamente entre paréntesis los nombres de los campos y sus tipos, así como si puede ser igual a NULL.

MESA DE CAÍDA

Realiza una tarea sencilla: eliminar la tabla especificada. Tiene un parámetro adicional SI EXISTE. Absorbe un error de caída si la tabla que buscas no existe. Ejemplo de uso:

DROP TABLE Empleados SI EXISTE.

CREAR ÍNDICE

SQL tiene un sistema de índice que le permite acelerar el acceso a los datos. Por lo general, es un enlace que apunta a una columna específica. Puedes crear un índice. petición sencilla:

CREAR ÍNDICE nombre_índice

EN nombre_tabla(nombre_columna)

Este operador se utiliza en T-SQL, Oracle, PL SQL y muchas otras tecnologías de interpretación.

ALTERAR TABLA

Un operador muy funcional con numerosas opciones. En general, cambia la estructura, definición y ubicación de las tablas. Operador usado en Oracle SQL, Postgres y muchos otros.

    AGREGAR. Agrega una columna a la tabla. Su sintaxis es la siguiente: ALTER TABLE nombre_tabla ADD nombre_columna tipo_datos_almacenados. Puede tener una opción SI NO EXISTE para suprimir el error si la columna que se está creando ya existe;

    GOTA. Elimina una columna. También cuenta con una clave SI EXISTE, sin la cual se generará un error indicando que falta la columna requerida;

    CAMBIAR. Sirve para cambiar el nombre del campo al especificado. Ejemplo de uso: ALTER TABLE nombre_tabla CAMBIAR nombre_antiguo nombre_nuevo;

    MODIFICAR. Este comando le ayudará a cambiar el tipo y los atributos adicionales de una determinada columna. Y se usa así: ALTER TABLE nombre_tabla MODIFY nombre_columna atributos tipo_datos;

CREAR VISTA

En SQL existe una vista. En definitiva, se trata de una especie de tabla virtual con datos. Se forma como resultado de la selección mediante la instrucción SQL SELECT. Las vistas pueden restringir el acceso a la base de datos, ocultarlas y reemplazar nombres de columnas reales.

El proceso de creación se produce mediante una simple solicitud:

CREAR VISTA ver nombre COMO SELECCIONAR DE * nombre de tabla

El muestreo puede realizarse a partir de toda la base de datos o en función de alguna condición.

Un poco sobre las funciones.

Las consultas SQL suelen utilizar varias funciones integradas que le permiten interactuar con los datos y transformarlos sobre la marcha. Vale la pena considerarlos porque forman parte integral del lenguaje estructurado.

    CONTAR. Cuenta registros o filas en una tabla específica. Puede especificar el nombre de la columna como parámetro y luego se tomarán los datos de ella. SELECCIONAR RECUENTO * DE Empleados;

    PROMEDIO. Se aplica solo a columnas con datos numéricos. Su resultado es la determinación de la media aritmética de todos los valores;

    MÍN y MÁX. Estas funciones ya se han utilizado en este artículo. Determinan los valores máximo y mínimo de una columna específica;

    SUMA. Es simple: la función calcula la suma de los valores de las columnas. Se aplica exclusivamente a datos numéricos. Al agregar el parámetro DISTINCT a la consulta, solo se sumarán valores únicos;

    REDONDO. Función para redondear fracciones decimales. La sintaxis utiliza el nombre de la columna y el número de decimales;

    LEN. Una función simple que calcula la longitud de los valores de una columna. El resultado será una nueva tabla que indica el número de caracteres;

    AHORA. Esta palabra clave se utiliza para calcular la fecha y hora actuales.

Operadores adicionales

Muchos ejemplos de declaraciones SQL tienen palabras clave que realizan pequeñas tareas pero aún así simplifican enormemente la recuperación o manipulación de la base de datos.

    COMO. Se utiliza cuando necesita formatear visualmente el resultado asignando el nombre especificado a la tabla resultante.

    ENTRE. Una herramienta de muestreo muy conveniente. Especifica el rango de valores entre los cuales se recuperarán los datos. Toma como entrada el parámetro desde y hasta qué número se utiliza el rango.

    NO. El operador da lo contrario de la expresión.

    TRUNCAR. Elimina datos de la sección especificada de la base de datos. Se diferencia de operadores similares en que es imposible restaurar datos después de su uso. Vale la pena considerar que la implementación de esta palabra clave en diferentes interpretaciones de SQL puede diferir. Por lo tanto, antes de intentar utilizar TRUNCATE, es mejor leer la información de ayuda.

    LÍMITE. Establece el número de líneas a generar. La peculiaridad del operador es que siempre se encuentra al final. Acepta un parámetro obligatorio y otro opcional. El primero especifica cuántas filas de datos seleccionados se deben mostrar. Y si se utiliza el segundo, entonces el operador trabaja como para un rango de valores.

    UNIÓN. Un operador muy conveniente para combinar múltiples consultas. Ya se ha encontrado entre ejemplos de esto en este artículo. Puede mostrar las filas deseadas de varias tablas combinándolas con UNION para un uso más conveniente. Su sintaxis es la siguiente: SELECCIONE nombre_columna DESDE nombre_tabla UNION SELECCIONE otro_nombre_columna DESDE otro_nombre_tabla. El resultado es una tabla dinámica con las consultas combinadas.

    CLAVE PRIMARIA. Traducido como "clave primaria". De hecho, ésta es exactamente la terminología utilizada en los materiales de referencia. Significa un identificador de fila único. Se utiliza, por regla general, al crear una tabla para indicar el campo que la contendrá.

    POR DEFECTO. Al igual que el operador anterior, se utiliza durante la ejecución de la solicitud de creación. Define el valor predeterminado con el que se completará el campo cuando se cree.

    NULO. Los principiantes, y no sólo los programadores, al escribir consultas, a menudo se olvidan de la posibilidad de obtener el valor NULL. Como resultado, se introduce un error en el código, que es difícil de localizar durante la depuración. Por lo tanto, al crear tablas, seleccionar o recalcular valores, debe detenerse y pensar si se tiene en cuenta la aparición de NULL en esta parte de la consulta.

    Memoria. Este artículo mostró varias funciones que pueden realizar algunas tareas. Al desarrollar un shell para trabajar con una base de datos, puede subcontratar el cálculo de expresiones simples al sistema de gestión de bases de datos. En algunos casos, esto proporciona un aumento significativo del rendimiento.

    Restricciones. Si necesita obtener sólo dos filas de una base de datos con miles de filas, entonces debe utilizar operadores como LIMIT o TOP. No es necesario extraer datos utilizando un lenguaje de desarrollo de shell.

    Compuesto. Después de recibir datos de varias tablas, muchos programadores comienzan a reunirlos utilizando la memoria shell. ¿Pero por qué? Después de todo, puedes crear una solicitud en la que todo esto estará presente. No es necesario escribir código adicional ni reservar memoria adicional en el sistema.

    Clasificación. Si es posible aplicar el orden en una consulta, es decir, utilizando el DBMS, entonces debe utilizarlo. Esto le permitirá ahorrar significativamente recursos al ejecutar un programa o servicio.

    Muchas solicitudes. Si tiene que insertar muchos registros secuencialmente, para la optimización debería pensar en insertar datos por lotes con una sola solicitud. Esto también aumentará el rendimiento de todo el sistema en su conjunto.

    Ubicación cuidadosa de los datos. Antes de compilar la estructura de la base de datos, es necesario pensar si se necesitan tantas tablas y campos. Quizás haya una manera de combinarlos o descartar algunos. Muy a menudo los programadores utilizan una cantidad excesiva de datos que nunca se utilizarán en ninguna parte.

    Tipos. Para ahorrar espacio y recursos, debe ser sensible a los tipos de datos que utiliza. Si es posible utilizar un tipo que sea menos “pesado” para la memoria, entonces deberías utilizarlo. Por ejemplo, si sabe que el valor numérico en un campo determinado no excederá 255, entonces ¿por qué usar un INT de 4 bytes si hay un TINYINT de 1 byte?

Conclusión

En conclusión, cabe señalar que el lenguaje de consulta estructurado SQL se utiliza ahora en casi todas partes: sitios web, servicios web, programas para PC y aplicaciones para dispositivos móviles. Por tanto, el conocimiento de SQL ayudará a todas las ramas del desarrollo.

Sin embargo, las modificaciones del estándar del idioma original a veces difieren entre sí. Por ejemplo, las sentencias PL SQL pueden tener una sintaxis diferente a la de SQL Server. Por eso, antes de empezar a desarrollar con esta tecnología, merece la pena leer los tutoriales sobre la misma.

En el futuro, es poco probable que aparezcan análogos que puedan superar a SQL en funcionalidad y rendimiento, por lo que esta área es un nicho bastante prometedor para cualquier programador.

Enviar su buen trabajo a la base de conocimientos es fácil. Utilice el siguiente formulario

Los estudiantes, estudiantes de posgrado y jóvenes científicos que utilicen la base de conocimientos en sus estudios y trabajos le estarán muy agradecidos.

Plan

Introducción…………………………………………………………...…………………………3

Capítulo I. Información teórica sobre el lenguaje de consulta SQL………………...…………..4

1.1. El concepto de base de datos relacional…………………………..…………4

1.2. El concepto del lenguaje SQL…………………………………………...…………...10

1.3. SQL interactivo y anidado…………………………...………….12

1.4. Subdivisiones SQL…………………………………………...……13

1.5. Tipos de datos……………………………………………………...…….13

1.6. Inconsistencias de SQL…………………………………………………………...…...16

Capítulo II. Usando SQL para recuperar información………………18

2.1. Crear una solicitud……………………………………………………..18

2.2. Comando SELECCIONAR……………………………………………………………….19

2.3. Comando DISTINTO……………………………………………………...22

2.4. Propuestas de equipo…………………………………………………….24

Conclusión…………………………………………………………...……..27

Lista de referencias…………………………………………………………..…….28

Introducción

La mayoría de los DBMS modernos se basan en un modelo de datos relacional. Para obtener información de las relaciones de bases de datos (tablas), se utilizan teóricamente tres lenguajes abstractos como lenguaje de manipulación de datos: el lenguaje del álgebra relacional; lenguaje de cálculo relacional sobre tuplas; Lenguaje de cálculo relacional basado en dominios.

Como lenguaje práctico para trabajar con datos, a mediados de los años 70, IBM desarrolló el lenguaje de consulta estructurado SQL, que luego se convirtió en el estándar de facto cuando se trabaja con bases de datos. La transición actual a grandes DBMS corporativos como Oracle, Informix, Sybase, DB2, Progress hace que el estudio del lenguaje SQL sea relevante tanto en términos prácticos como puramente teóricos, ya que los elementos del lenguaje SQL se basan en las disposiciones de la teoría de relaciones, teoría de conjuntos y lógica.

El propósito del trabajo del curso es analizar las capacidades del lenguaje SQL.

Para lograr este objetivo, es necesario resolver las siguientes tareas:

· Estudiar literatura sobre el tema;

· Revisar la estructura de SQL;

· Definir especificaciones y estándares del lenguaje;

· Aprender el uso de SQL para la recuperación de información.

CapítuloI. Teoría del lenguaje de consultaSQL

1.1. Concepto de base de datos relacional

SQL (comúnmente pronunciado "Sequel") significa Lenguaje de Consulta Estructurado. Es un lenguaje que permite trabajar en bases de datos relacionales, que son colecciones de información relacionada almacenada en tablas.

El mundo de las bases de datos está cada vez más unificado, lo que ha llevado a la necesidad de crear un lenguaje estándar que pueda utilizarse para funcionar en una gran cantidad de tipos diferentes de entornos informáticos. Un lenguaje estándar permitirá a los usuarios que conocen un conjunto de comandos usarlos para crear, buscar, modificar y comunicar información ya sea que estén trabajando en una computadora personal, una estación de trabajo en red o una computadora central.

En nuestro mundo informático cada vez más interconectado, un usuario equipado con un lenguaje de este tipo tiene una enorme ventaja a la hora de utilizar y resumir información de una variedad de fuentes de muchas maneras.

Su elegancia e independencia de la tecnología informática, así como el apoyo de los líderes de la industria en tecnología de bases de datos relacionales, han hecho de SQL, y probablemente seguirá siéndolo en el futuro previsible, el lenguaje estándar dominante. Por este motivo, cualquiera que quiera trabajar con bases de datos de los 90 debe conocer SQL.

El estándar SQL está definido por ANSI (Instituto Nacional Estadounidense de Estándares) y actualmente también lo adopta ISO (Organización Internacional de Normalización). Sin embargo, la mayoría de los programas de bases de datos comerciales extienden SQL sin previo aviso ANSI, agregando varias otras características al lenguaje que creen que serán muy útiles. A veces violan un poco el estándar del lenguaje, aunque las buenas ideas tienden a desarrollarse y pronto se convierten en estándares de "mercado" por derecho propio debido a su utilidad.

Una base de datos relacional es un cuerpo de información relacionada almacenada en tablas bidimensionales. Me recuerda a una dirección o directorio telefónico. El libro tiene una gran cantidad de entradas, cada una de las cuales corresponde a una característica específica. Para cada una de estas características, puede haber varios datos independientes, como nombre, número de teléfono y dirección. Supongamos que desea formatear esta libreta de direcciones como una tabla con filas y columnas. Cada fila (también llamada registro) corresponderá a una característica específica; cada columna contendrá un valor para cada tipo de datos: nombre, número de teléfono y dirección representados en cada fila. La libreta de direcciones podría verse así:

El resultado es la base de una base de datos relacional, es decir, una tabla de información bidimensional (filas y columnas). Sin embargo, las bases de datos relacionales rara vez constan de una única tabla. Una tabla de este tipo es más pequeña que un sistema de archivos. Al crear varias tablas de información relacionada, puede realizar operaciones más complejas y potentes con los datos. El poder de una base de datos depende de las relaciones que se pueden crear entre piezas de información, no de la información en sí.

Usando la libreta de direcciones como ejemplo, podemos comenzar a discutir una base de datos que realmente puede usarse en una situación comercial. Supongamos que los personajes de la primera tabla (libreta de direcciones) son pacientes de hospital. En otra tabla podríamos recordar información adicional sobre estos pacientes. Las columnas de la segunda tabla podrían denominarse Paciente, Médico, Seguro y Saldo.

Se pueden realizar muchas funciones poderosas extrayendo información de estas tablas de acuerdo con parámetros específicos, especialmente cuando estos parámetros incluyen información relacionada entre sí en diferentes tablas. Por ejemplo, tomemos a los médicos. Digamos que el Dr. Halben quería obtener los números de teléfono de todos sus pacientes. Para extraer esta información, podría vincular una tabla de números de teléfono de pacientes (de la libreta de direcciones) a una tabla que indicaría qué paciente era el suyo. Aunque, en este sencillo ejemplo, podría tenerlo en cuenta y obtener inmediatamente los números de teléfono de los pacientes de Grillet y Brock, estas tablas pueden ser demasiado grandes y complejas. Los programas de bases de datos relacionales se desarrollaron para manejar colecciones grandes y complejas de este tipo de datos, lo que obviamente es un método más universal en el mundo empresarial. Incluso si la base de datos del hospital contuviera cientos o miles de nombres, como suele ser el caso en la práctica, un único comando SQL podría proporcionar al Dr. Halben la información que necesitaba casi de inmediato.

Para mantener la máxima flexibilidad, las filas de la tabla, por definición, no deben estar en ningún orden particular. Desde este punto de vista, aquí es donde la estructura de la base de datos se diferencia de nuestra libreta de direcciones. Las entradas de la libreta de direcciones suelen estar organizadas alfabéticamente. En los sistemas de bases de datos relacionales, una característica poderosa para los usuarios es la capacidad de organizar la información para poder recuperarla.

Veamos la segunda tabla. A veces desea ver esta información organizada alfabéticamente por nombre, a veces en orden ascendente o descendente y, a veces, agrupada en relación con un médico en particular. Imponer el orden establecido en las filas interferirá con la capacidad del cliente para cambiarlo, por lo que las filas siempre se tratan como desordenadas. Por esta razón, no se puede simplemente decir: "Queremos ver la quinta fila de la tabla". Si ignoramos el orden en que se ingresaron los datos o cualquier otro criterio, determinaremos la fila incorrecta, aunque así sea. ser el quinto. Las filas de la tabla que se examinan no estarán en ningún orden en particular.

Por estas y otras razones, debe tener una columna en su tabla que identifique de forma única cada fila. Normalmente, esta columna contiene un número; por ejemplo, el número de paciente asignado a cada paciente. Por supuesto, podría utilizar el nombre de los pacientes, pero es posible que haya varias Mary Smith; y en este caso, no tendrá otra forma de distinguir a estos pacientes entre sí.

Por eso los números son tan necesarios. Una columna única (o un grupo único de columnas) que se utiliza para identificar cada fila y almacenar todas las filas por separado se denomina clave principal de la tabla.

Las claves primarias de una tabla son un elemento importante en la estructura de una base de datos. Son la base de su sistema de grabación de archivos; y cuando desee encontrar una fila específica en una tabla, consulte esa clave principal. Además, las claves primarias garantizan que sus datos tengan cierta integridad. Si la clave principal se utiliza y se mantiene correctamente, sabrá que no hay filas vacías en la tabla y que cada fila es diferente de todas las demás.

A diferencia de las filas, las columnas de la tabla (también llamadas campos) están ordenadas y nombradas. Así, en nuestra tabla de libreta de direcciones, es posible señalar "dirección de columna" o "columna 3". Por supuesto, esto significa que cada columna de una tabla determinada debe tener un nombre único para evitar ambigüedades. Es mejor si estos nombres indican el contenido del campo.

Las tablas 1.1, 1.2 y 1.3 constituyen una base de datos relacional que es mínimamente suficiente para ser rastreada fácilmente y lo suficientemente completa como para ilustrar conceptos y prácticas clave de SQL.

La primera columna de cada tabla contiene números cuyos valores son diferentes para cada fila. Estas son las claves principales de las tablas. Algunas de estas cifras también se muestran en las columnas de otros cuadros. No hay nada de malo en esto. Muestran la relación entre las filas que usan un valor de la clave principal y las filas donde ese valor se usa en la propia clave principal.

Tabla 1.1 - Vendedores

Tabla 1.2 - Clientes

Tabla 1.3 - Órdenes

Por ejemplo, el campo snum en la tabla Clientes indica a qué vendedor está asignado este cliente. El número de campo snum está asociado con la tabla Proveedores, que proporciona información sobre estos proveedores. Obviamente, el proveedor al que se asignan los clientes ya debe existir; es decir, el valor snum de la tabla Clientes también debe estar presente en la tabla Proveedores. Si este es el caso, entonces se dice que el sistema está "en un estado de integridad de referencia".

Veamos estas tres tablas y sus valores de campo.

Las columnas de la Tabla 1.1 se muestran aquí.

La tabla 1.2 contiene las siguientes columnas:

Y hay columnas en la Tabla 1.3:

1.2. Concepto deSQL-idioma

SQL es un lenguaje diseñado específicamente para bases de datos relacionales. Elimina gran parte del trabajo que tendría que hacer si estuviera usando un lenguaje de programación de propósito general como C. Para formar una base de datos relacional en C, necesitaría comenzar desde el principio. Tendría que definir un objeto, llamado tabla, que podría crecer hasta tener cualquier número de filas y luego crear procedimientos incrementales para colocar valores y recuperar valores de él. Si desea encontrar algunas cadenas específicas, deberá seguir un procedimiento paso a paso como el siguiente:

Considere una fila de la tabla.

Verifique si esta cadena es una de las cadenas que necesita.

Si es así, guárdelo en algún lugar hasta que se haya verificado toda la tabla.

Compruebe si hay otras filas en la tabla.

Si los hay, regrese al paso 1.

Si no hay más filas, imprima todos los valores guardados en el paso 3.

(Por supuesto, este no es el conjunto real de comandos C, sino sólo la lógica de los pasos que se incluirían en un programa real). SQL guardará todo eso. Los comandos en SQL pueden funcionar con todos los grupos de tablas como un solo objeto y pueden procesar cualquier cantidad de información extraída o derivada de ellos, como un solo módulo.

El estándar SQL se define utilizando el código ANSI (American National Standards Institute). SQL no fue inventado por ANSI. Es esencialmente un invento de IBM. Después de que aparecieran en el mercado varios programas SQL competidores, ANSI definió el estándar al que debían ajustarse (definir dichos estándares es función de ANSI).

Sin embargo, después de esto, aparecieron algunos problemas. Surgieron como resultado de la estandarización ANSI en forma de ciertas restricciones. Dado que ANSI no siempre determina qué es más útil, los programas intentan ajustarse al estándar ANSI sin permitir que los limite demasiado. Esto, a su vez, conduce a inconsistencias aleatorias. Los programas de bases de datos suelen ofrecer funciones adicionales a ANSI SQL y, a menudo, relajan muchas de las restricciones de la mayoría de ellos.

SQL tiene ciertos términos especiales que se utilizan para describirlo. Entre ellas se encuentran palabras como consulta, cláusula y predicado, que son las más importantes en la descripción y comprensión del lenguaje pero no significan nada independiente para SQL.

Los comandos o declaraciones son instrucciones que utilizamos para acceder a una base de datos SQL. Los comandos constan de una o más partes lógicas separadas llamadas cláusulas. Las oraciones comienzan con la palabra clave que les da nombre y constan de palabras clave y argumentos. Ejemplos de cláusulas que podemos encontrar son "DE Vendedores" y "DONDE ciudad = "Londres".

Los argumentos completan o cambian el significado de una oración. En los ejemplos anteriores, Vendedores es el argumento y FROM es la palabra clave de la cláusula FROM.

Asimismo, "ciudad = "Londres"" es un argumento de la cláusula WHERE. Los objetos son estructuras en la base de datos a las que se les dan nombres y se almacenan en la memoria.

Estos incluyen tablas base, vistas (dos tipos de tablas) e índices.

1.3. Interactivo y anidadoSQL

Hay dos SQL: interactivo y anidado. En su mayor parte, ambas formas funcionan igual, pero se usan de manera diferente. SQL interactivo se utiliza para ejecutarse directamente en una base de datos y producir resultados para uso del cliente. En esta forma de SQL, cuando ingresa un comando, se ejecutará inmediatamente y podrá ver el resultado (si lo hay), inmediatamente.

SQL anidado consta de comandos SQL ubicados dentro de programas que generalmente están escritos en algún otro lenguaje (como COBOL o Pascal).

Esto hace que estos programas sean más poderosos y efectivos. Sin embargo, permitir estos lenguajes viene con una estructura SQL y un estilo de administración de datos que requiere algunas extensiones del SQL interactivo. Pasar comandos SQL a SQL anidado se "pasa" para las variables o parámetros utilizados por el programa en el que fueron anidados.

1.4. SubdivisionesSQL

Tanto en la forma interactiva como en la anidada de SQL, existen numerosas partes o subdivisiones.

Lamentablemente, estos términos no se utilizan universalmente en todas las implementaciones. ANSI los enfatiza y son útiles a nivel conceptual, pero la mayoría de los programas SQL hacen poco para tratarlos por separado, por lo que esencialmente se convierten en categorías funcionales de comandos SQL.

DDL (lenguaje de definición de datos), llamado lenguaje de descripción de esquemas en ANSI, consta de comandos que crean objetos (tablas, índices, vistas, etc.) en una base de datos.

DML (Lenguaje de manipulación de datos) es un conjunto de comandos que determinan qué valores se representan en las tablas en un momento dado.

DCD (Lenguaje de control de datos) consta de herramientas que determinan si se permite a un usuario realizar determinadas acciones o no. Son parte de ANSI DDL. Estos no son lenguajes diferentes, sino secciones de comandos SQL agrupadas por sus funciones.

1.5. Tipos de datos

No todos los tipos de valores que pueden ocupar campos de una tabla son lógicamente iguales. La diferencia más obvia es entre números y texto. No se pueden poner los números en orden alfabético ni restar un nombre de otro. Debido a que los sistemas de bases de datos relacionales se basan en relaciones entre piezas de información, los diferentes tipos de datos deben distinguirse claramente entre sí para que se puedan realizar procesos y comparaciones apropiados entre ellos.

En SQL, esto se hace asignando a cada campo un tipo de datos que indica el tipo de valor que ese campo puede contener.

Todos los valores de este campo deben ser del mismo tipo. En la tabla Clientes, por ejemplo, cname y city contienen líneas de texto para evaluación, snum y cnum ya son números. Por este motivo, no puede ingresar un valor Más alto o Ninguno en el campo de calificación, que tiene un tipo de datos numérico. Esta restricción es buena porque impone cierta estructura a sus datos. A menudo comparará algunos o todos los valores de un campo determinado, por lo que es posible que solo desee realizar una acción en determinadas filas en lugar de en todas. No podría hacer esto si los valores de los campos fueran de un tipo de datos mixtos.

Desafortunadamente, definir estos tipos de datos es un área importante en la que la mayoría de los programas de bases de datos comerciales y el estándar SQL oficial no siempre coinciden. El estándar ANSI SQL reconoce sólo tipos de texto y números, mientras que la mayoría de los programas comerciales utilizan otros tipos especiales. Como DATA y TIME son en realidad tipos casi estándar (aunque su formato exacto varía). Algunos paquetes también admiten tipos como DINERO y BINARIO. (EL DINERO es un sistema numérico especial utilizado por las computadoras. Toda la información en una computadora se transmite en números binarios y luego se convierte a otros sistemas para que podamos usarlos y comprenderlos fácilmente).

ANSI define varios tipos diferentes de valores numéricos, cuyas diferencias son bastante sutiles y, a veces, confusas.

La complejidad de los tipos numéricos ANSI se puede atribuir, al menos en parte, al esfuerzo por hacer que el SQL anidado sea compatible con otros lenguajes.

Los dos tipos de números ANSI, INTEGER y DECIMAL (que pueden abreviarse como INT y DEC, respectivamente), serán adecuados para nuestros propósitos, así como para la mayoría de las aplicaciones comerciales prácticas. Naturalmente, el tipo INTEGER se puede representar como un NÚMERO DECIMAL, que no contiene ningún dígito a la derecha del punto decimal.

El tipo de texto es CHAR (o CHAR), que hace referencia a una cadena de texto. Un campo CHAR tiene una longitud específica, que está determinada por la cantidad máxima de caracteres que se pueden ingresar en el campo.

La mayoría de las implementaciones también tienen un tipo no estándar llamado VARCHAR, que es una cadena de texto que puede tener cualquier longitud hasta un máximo definido por la implementación (normalmente 254 caracteres). Los valores CHARACTER y VARCHAR se incluyen entre comillas simples como "texto". La diferencia entre CHAR y VARCHAR es que CHAR debe reservar suficiente memoria para la longitud máxima de la cadena, mientras que VARCHAR asigna memoria según sea necesario.

Los tipos de caracteres constan de todos los caracteres imprimibles, incluidos los números.

Sin embargo, el número 1 no es lo mismo que el carácter "1". El carácter "1" es simplemente otro fragmento de texto impreso que el sistema no detecta como si tuviera el valor numérico 1.

Por ejemplo, 1 + 1 = 2, pero "1" + "1" no es igual a "2".

Los valores de los caracteres se almacenan en la computadora como valores binarios, pero se muestran al usuario como texto impreso. La conversión sigue el formato determinado por el sistema que estés utilizando. Este formato de conversión será uno de los dos tipos estándar (posiblemente con extensiones) utilizados en los sistemas informáticos: código ASCII (utilizado en todas las computadoras personales y pequeñas) y código EBCDIC (utilizado en computadoras grandes). Ciertas operaciones, como alfabetizar los valores de los campos, cambiarán con el formato.

1.6. SQLinconsistencias

Existen inconsistencias independientes dentro de los productos del mundo SQL. SQL surgió del mundo de las bases de datos comerciales como una herramienta y luego se desarrolló hasta convertirse en un estándar ANSI. Desafortunadamente, ANSI no siempre determina el mayor beneficio, por lo que los programas intentan ajustarse al estándar ANSI sin permitir que los limite demasiado. ANSI es una especie de estándar mínimo: puede hacer más de lo que permite, pero debe poder obtener los mismos resultados que al realizar la misma tarea.

SQL suele encontrarse en sistemas informáticos que tienen más de un usuario, y por tanto hay que diferenciar entre ellos. Normalmente, en un sistema de este tipo, cada usuario tiene algún tipo de código de verificación de derechos que lo identifica (la terminología varía). Al comienzo de una sesión con una computadora, un usuario inicia sesión (se registra) diciéndole a la computadora quién es el usuario, identificado por una identificación específica. Cualquier número de personas que utilicen el mismo ID de acceso son usuarios independientes; y de manera similar, una persona puede representar una gran cantidad de usuarios (en diferentes momentos) utilizando diferentes Identificadores disponibles.

SQL hace lo mismo. Las acciones en la mayoría de los entornos SQL se envían a un identificador accesible especial que coincide exactamente con un usuario específico. Una tabla u otro objeto es propiedad de un usuario que tiene control total sobre él. Un usuario puede tener o no privilegios para realizar una acción sobre un objeto.

El valor especial USUARIO se puede utilizar como argumento en el comando. Indica la ID disponible del usuario que emite el comando.

Conclusiones del capítulo I:

El primer capítulo introdujo el concepto de base de datos relacional. También se aprendieron algunos principios fundamentales sobre cómo se crean las tablas: cómo funcionan las filas y columnas, cómo las claves primarias distinguen las filas de las demás y cómo las columnas pueden hacer referencia a valores en otras columnas. Hemos definido que un registro es sinónimo de fila y que un campo es sinónimo de columna. Miramos las tablas de ejemplo. Breves y sencillas, son capaces de mostrar la mayoría de las características del idioma.

También se dio el concepto del lenguaje SQL, algunas de sus convenciones y términos, se consideró su estructura, el uso del lenguaje SQL, el suministro de datos y su definición (y algunas inconsistencias que aparecen en este caso).

CapítuloII. uso del lenguajeSQLpara extraer información de tablas

2.1. Crear una solicitud

SQL significa lenguaje de consulta estructurado. Las consultas son probablemente el aspecto más utilizado de SQL. De hecho, para la categoría de usuarios de SQL, es poco probable que alguien utilice el lenguaje para cualquier otra cosa. Por esta razón, comenzaremos nuestra discusión sobre SQL analizando la consulta y cómo se ejecuta en este lenguaje.

Una consulta es un comando que se le da a su programa de base de datos y le indica que muestre cierta información de las tablas en la memoria. Esta información suele enviarse directamente a la pantalla o terminal de la computadora, aunque en la mayoría de los casos también puede enviarse a una impresora, almacenarse en un archivo (como un objeto en la memoria de la computadora) o proporcionarse como entrada para otro comando o proceso.

Generalmente se considera que las consultas forman parte del lenguaje DML. Sin embargo, dado que la consulta no cambia la información en las tablas, sino que simplemente la muestra al usuario, consideraremos las consultas como una categoría separada entre los comandos DML que realizan una acción en lugar de simplemente mostrar el contenido de la base de datos.

Todas las consultas SQL constan de un único comando. La estructura de este comando es engañosamente simple porque debe extenderla para realizar evaluaciones y manipulaciones de datos altamente complejas. Este comando se llama SELECCIONAR.

2.2. AequipoSELECCIONAR

En su forma más simple, el comando SELECT simplemente indica a la base de datos que recupere información de una tabla. Por ejemplo, podría mostrar la tabla Proveedores escribiendo lo siguiente:

SELECCIONE snum, sname, sity, comm

DE Vendedores;

El resultado de esta consulta se muestra en la Tabla 2.1.

Tabla 2.1 - Comando SELECCIONAR

Registro de ejecución de SQL

SELECCIONE snum, sname, sity, comm DE Vendedores;

En otras palabras, este comando simplemente muestra todos los datos de la tabla. La mayoría de los programas también proporcionarán encabezados de columna como los anteriores, y algunos permiten un formato detallado de la salida, pero esto está fuera de la especificación estándar.

Hay una explicación para cada parte de este comando:

SELECT es una palabra clave que le dice a la base de datos que este comando es una consulta. Todas las consultas comienzan con esta palabra seguida de un espacio.

Snum, sname es una lista de columnas de la tabla que se seleccionan mediante la consulta. Cualquier columna que no aparezca aquí no se incluirá en la salida del comando. Esto, por supuesto, no significa que se eliminarán o que su información se borrará de las tablas, porque la consulta no afecta la información de las tablas; solo muestra datos.

FROM FROM es una palabra clave, como SELECT, que los vendedores deben presentar en cada consulta. Le sigue un espacio y luego el nombre de la tabla utilizada como fuente de información. En este caso es la tabla de Vendedores.

El punto y coma se utiliza en todos los comandos SQL interactivos para indicarle a la base de datos que el comando está completo y listo para ejecutarse.

En algunos sistemas, una barra invertida (\) en una línea indica el final de un comando.

Naturalmente, una consulta de esta naturaleza no necesariamente ordenará la salida de una manera específica. El mismo comando ejecutado con los mismos datos pero en diferentes momentos no producirá la misma orden. Normalmente, las filas se encuentran en el orden en que se encuentran en la tabla, ya que, como establecimos en el capítulo anterior, este orden es arbitrario. Este no será necesariamente el orden en que se ingresaron o guardaron los datos. Puede ordenar la salida de los comandos SQL directamente: usando una cláusula especial.

El uso de retorno (tecla ENTER) es opcional. Debe determinar exactamente cómo es más conveniente redactar una consulta, en varias líneas o en una línea, de la siguiente manera:

SELECCIONE snum, sname, ciudad, comm DE Vendedores;

Dado que SQL usa el punto y coma para indicar el final de un comando, la mayoría de los programas SQL tratan los retornos (presionando Retorno o la tecla ENTER) como un espacio. Es una buena idea utilizar el retroceso y la justificación para que los comandos sean más fáciles de leer y más correctos.

Se puede utilizar un asterisco (*) para mostrar una lista completa de columnas de la siguiente manera:

DE Vendedores;

Esto producirá el mismo resultado que el comando anterior.

En general, un comando SELECT comienza con la palabra clave SELECT seguida de un espacio. Esto debería ir seguido de una lista de nombres de columnas que desea ver, separados por comas. Para ver todas las columnas de una tabla, puede reemplazar esta lista con un asterisco (*). Sigue la palabra clave FROM, seguida de un espacio y el nombre de la tabla a la que se realiza la consulta. Finalmente, se debe usar un punto y coma (;) para finalizar la declaración e indicar que el comando está listo para ser ejecutado.

El comando SELECT es capaz de extraer información estrictamente definida de una tabla. Al principio, sólo puedes ver determinadas columnas de la tabla. Esto se hace fácilmente simplemente excluyendo las columnas que no son necesarias de la parte SELECCIONAR del comando. Por ejemplo, solicitar

SELECCIONAR nombre, comunicación

DE Vendedores;

producirá el resultado que se muestra en la Tabla 2.2:

Tabla 2.2 - Selección de columnas específicas

Registro de ejecución de SQL

SELECCIONE snum, comm DE Vendedores;

Es posible que tenga tablas que tengan una gran cantidad de columnas que contengan datos, y no todas sean relevantes para la tarea en cuestión. Por lo tanto, se puede encontrar una manera de seleccionar y seleccionar solo columnas útiles.

Incluso si las columnas de una tabla están, por definición, ordenadas, esto no significa que se restaurarán en el mismo orden. Por supuesto, el asterisco (*) mostrará todas las columnas en su orden natural, pero si se enumeran por separado, podemos obtenerlas en el orden que queramos. Considere una tabla de pedidos que contenga la fecha de compra (odate), el número de vendedor (snum), el número de pedido (onum) y el monto de la compra (amt):

SELECCIONE odate, snum, onum, amt

El resultado de esta consulta se muestra en la Tabla 2.3.

Tabla 2.3 - Reconstrucción de columnas

Registro de ejecución de SQL

SELECCIONE odate, snum, onum, amt FROM Órdenes;

La estructura de la información en tablas es simplemente la base para una reestructuración activa en SQL.

2.3. EquipoDISTINTO

El comando DISTINCT es un argumento que puede eliminar valores duplicados de una cláusula SELECT. Supongamos que necesitamos saber qué vendedores tienen actualmente sus pedidos en la tabla Pedidos. Se entiende por pedido una entrada en la tabla de Pedidos que registra las compras realizadas en un determinado día por un determinado cliente a un determinado vendedor por un determinado importe. No necesitamos saber cuántos pedidos tiene cada uno; solo necesitamos una lista de números de vendedor (snum). Por lo tanto puedes ingresar:

para obtener el resultado que se muestra en la Tabla 2.4.

Tabla 2.4 - SELECCIONAR con números de vendedor duplicados

Registro de ejecución de SQL

SELECCIONE snum DE Órdenes;

Para obtener una lista sin duplicados, para facilitar la lectura, puede ingresar lo siguiente:

SELECCIONAR DISTINTO snum

El resultado de esta consulta se muestra en la Tabla 2.5.

En otras palabras, DISTINCT realiza un seguimiento de los valores que había antes para que no se dupliquen en la lista. Esta es una forma útil de evitar la redundancia de datos. Para evitar perder algunos datos, no debes usar DISTINCT imprudentemente, porque puede ocultar algún problema o algún dato importante.

DISTINCT solo puede aparecer una vez en una cláusula SELECT determinada. Si la propuesta selecciona numerosos campos,

Tabla 2.5 - SELECCIONAR sin duplicación

Registro de ejecución de SQL

SELECCIONE DISTINTO snum DE Órdenes;

DISTINCT omite filas donde todos los campos seleccionados son idénticos. Se guardarán las filas en las que algunos valores sean iguales y otros diferentes. DISTINCT en realidad hace que se muestre toda la línea de salida sin especificar ningún campo (excepto cuando se usa dentro de funciones agregadas), por lo que no tiene sentido repetirlo.

En lugar de DISTINCT, puede especificar - TODOS. Esto tendrá el efecto contrario; quedarán líneas de salida duplicadas. Dado que este es el mismo caso en el que no se especifica DISTINCT ni ALL, ALL es esencialmente un argumento explicativo más que operativo.

2.4. Sugerencias de equipo

Las tablas tienden a volverse muy grandes a medida que se les agregan más filas con el tiempo. Debido a que normalmente solo ciertas filas son de interés, SQL le permite establecer criterios para determinar qué filas se seleccionan para la salida.

WHERE es una cláusula SELECT que le permite establecer predicados cuya condición puede ser verdadera o falsa para cualquier fila de la tabla. El comando recupera sólo aquellas filas de la tabla para las cuales esta afirmación es verdadera. Por ejemplo, necesitamos ver los nombres y comisiones de todos los vendedores de Londres. Puede ingresar el siguiente comando:

SELECCIONAR nombre, ciudad

DE Vendedores;

DONDE ciudad = "LONDRES";

Cuando se presenta una cláusula WHERE, el programa de base de datos escanea toda la tabla, una fila a la vez, y examina cada fila para determinar si la afirmación es verdadera. Por lo tanto, para la entrada Peel, el programa observará el valor actual de la columna de ciudad, determinará que es igual a "Londres" e incluirá esa cadena en la salida. No se incluirá la entrada de Serres, y así sucesivamente.

El resultado de la consulta anterior se muestra en la Tabla 2.6.

Tabla 2.6 - SELECT con cláusula WHERE

Registro de ejecución de SQL

SELECCIONE nombre, ciudad DE Vendedores DONDE ciudad = "Londres"

Probemos un ejemplo con un campo numérico en la cláusula WHERE. El campo de calificación de la tabla Clientes tiene como objetivo dividir a los clientes en grupos según ciertos criterios que finalmente se pueden obtener a través de este número. Quizás se trate de una forma de valoración crediticia o valoración basada en el volumen de adquisiciones anteriores. Estos códigos numéricos pueden resultar útiles en bases de datos relacionales como forma de resumir información compleja. Puede seleccionar todos los clientes con una calificación de 100, de la siguiente manera:

DONDE calificación = 100;

Aquí no se utilizan comillas simples porque la puntuación es un campo numérico. Los resultados de la consulta se muestran en la Tabla 2.7.

Puede usar números de columna, eliminar duplicados o reordenar columnas en una instrucción SELECT que use WHERE. Sin embargo, puede cambiar el orden de las columnas de los nombres sólo en la cláusula SELECT y no en la cláusula WHERE.

Tabla 2.7 - SELECT con un campo numérico en un predicado

Registro de ejecución de SQL

SELECCIONAR * DE Clientes DONDE calificación = 100;

ENconclusiones del capitulo II:

Ahora conocemos varias formas de hacer que una tabla proporcione la información necesaria y no simplemente desechar todo su contenido. Es posible reordenar las columnas de la tabla o eliminar alguna de ellas, y también decidir si ver valores duplicados o no.

Lo más importante es que puede establecer una condición llamada predicado, que determina si una fila de la tabla especificada entre miles de filas similares se seleccionará o no para la salida.

Conclusión

Completando el trabajo, podemos llegar a la conclusión de que SQL es un lenguaje de programación de alto nivel diseñado para trabajar con bases de datos. Le permite modificar datos, redactar y ejecutar consultas y mostrar resultados en forma de informes. Actualmente, es un estándar generalmente aceptado para los sistemas de gestión de bases de datos relacionales.

El lenguaje SQL se suele utilizar junto con los lenguajes de programación universales C, Pascal, etc., o los lenguajes de gestión de bases de datos Fox, dBASE IV, etc.

Listausadoliteratura

1. F. Andon, V. Reznichenko Lenguaje de consulta SQL: curso de formación. - San Petersburgo: Peter, 2006.

2. K. Fecha Guía del SGBD relacional DB2. - M.: Finanzas y Estadística, 1988. - 320 p.

3. V.V. Kirillov Conceptos básicos del diseño de bases de datos relacionales. Guía de estudio. - San Petersburgo: ITMO, 1994. - 90 p.

4. M. Meyer Teoría de las bases de datos relacionales. - M.: Mir, 1987. - 608 p.

5. SGBD distribuido. Informax. Parte 1. Conceptos básicos del trabajo con bases de datos. - Pautas para la realización de trabajos de laboratorio / V.M. Stasyshin - Novosibirsk: NSTU, 1995.

6. Bases de datos de J. Ullman en Pascal. - M.: Ingeniería Mecánica, 1990. - 386 p.

Documentos similares

    Información general sobre los principales operadores del lenguaje SQL. Modo de funcionamiento interactivo. Utilice el lenguaje SQL para seleccionar información de tablas, insertar, editar y eliminar datos en ellas. Relación entre operaciones de álgebra relacional y sentencias SQL.

    resumen, añadido el 06/02/2015

    El concepto y características generales del lenguaje de programación PHP, principios y etapas de su trabajo, sintaxis y matrices asociadas. Manejo de excepciones en Java. Trabajar con bases de datos usando JDBC. Aprender a desarrollar una interfaz gráfica.

    presentación, agregado 13/06/2014

    El concepto de modelo de datos relacional, la integridad de su esencia y vínculos. Las principales etapas de la creación de una base de datos, vinculando tablas en el diagrama de datos. Diseño de una base de datos para el catálogo de libros “Libros” utilizando el SGBD Microsoft Access y el lenguaje de consulta SQL.

    trabajo del curso, añadido el 25/11/2010

    Información general sobre la historia de la creación y estándares de SQL: estándar internacional 1989, 1992 (SQL2), estándar SQL: 1999 (SQL3). SQL interactivo y anidado. Subdivisiones SQL. Un lenguaje de consulta estructurado para crear y modificar tablas.

    resumen, añadido el 14/10/2011

    Lenguaje de Consulta Estructurado (SQL) y su lugar en el campo del acceso a la información en bases de datos relacionales. Estructura y tipos de datos básicos del lenguaje. Sintaxis y semántica de las principales sentencias SQL, últimos estándares de lenguaje.

    resumen, añadido el 29/03/2012

    Información teórica y conceptos básicos de bases de datos. Sistemas de gestión de bases de datos: composición, estructura, seguridad, modos de funcionamiento, objetos. Trabajar con bases de datos en OpenOffice.Org BASE: crear tablas, relaciones, consultas utilizando el Asistente de consultas.

    trabajo del curso, añadido el 28/04/2011

    Diferencias entre dialectos SQL existentes. Estandarización del lenguaje SQL. Concepto de base de datos. Eficiencia de la organización de datos. Estructura del lenguaje SQL. Tipos numéricos aproximados. Tipo de datos de intervalo. Procesamiento de información estructurada compleja.

    trabajo del curso, añadido el 29/05/2014

    Información general sobre los sistemas de gestión de bases de datos MS Access. Utilizar el lenguaje QBE para crear consultas para seleccionar datos. Consultas paramétricas y cruzadas. Consultas con sustitución automática para seleccionar duplicados y registros que no tienen coincidencia.

    trabajo del curso, añadido el 03/06/2015

    Diseño de una base de datos relacional utilizando el software de aplicación MS ACCESS. Descripciones de las características del uso de consultas para recuperar, cambiar y eliminar información de una base de datos. Características de la estructura de la interfaz de usuario.

    trabajo del curso, añadido el 19/11/2012

    Análisis del área temática mediante modelos de la metodología ARIS y desarrollo de un diagrama ER. Descripción de información de entrada y salida para el diseño de una base de datos relacional. Desarrollo de consultas de control y conexiones entre ellas utilizando el lenguaje SQL.




Arriba