Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% encontró este documento útil (1 voto)
76 vistas13 páginas

Cap 7 - SQL

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 13

MATERIA: BASE DE DATOS 25-5-2020

SQL

SQL (por sus siglas en inglés Structured Query Language; en español lenguaje de consulta
estructurada) es un lenguaje de dominio específico utilizado en programación, diseñado para
administrar, y recuperar información de sistemas de gestión de bases de datos relacionales. Una de
sus principales características es el manejo del álgebra y el cálculo relacional para efectuar consultas
con el fin de recuperar, de forma sencilla, información de bases de datos, así como realizar cambios
en ellas.

SQL consiste en un lenguaje de definición de datos, un lenguaje de manipulación de datos y


un lenguaje de control de datos. El alcance de SQL incluye la inserción de datos, consultas,
actualizaciones, borrado, la creación, modificación de esquemas y el control de acceso a los datos.

SQL fue uno de los primeros lenguajes comerciales para el modelo relacional de Edgar Frank
Codd como se describió en su artículo de investigación de 1970 El modelo relacional de datos para
grandes bancos de datos compartidos. A pesar de no adherirse totalmente al modelo relacional
descrito por Codd, pasó a ser el lenguaje de base de datos más usado.

SQL pasó a ser el estándar del Instituto Nacional Estadounidense de Estándares (ANSI) en
1986 y de la Organización Internacional de Normalización (ISO) en 1987. Desde entonces, el
estándar ha sido revisado para incluir más características. A pesar de la existencia de ambos
estándares, la mayoría de los códigos SQL no son completamente portables entre sistemas de bases
de datos diferentes sin otros ajustes.

Características generales de SQL

SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales y permite así gran variedad de operaciones.5

Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte


base teórica y su orientación al manejo de conjuntos de registros (y no a registros individuales)
permite una alta productividad en codificación y la orientación a objetos. De esta forma, una sola
sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel
orientado a registros. SQL también tiene las siguientes características:

 Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la


definición de esquemas de relación, borrado de relaciones y modificaciones de los
esquemas de relación.
 Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes
de consultas basado tanto en álgebra relacional como en cálculo relacional de
tuplas.
 Integridad: El LDD de SQL incluye comandos para especificar las restricciones de
integridad que deben cumplir los datos almacenados en la base de datos.
 Definición de vistas: El LDD incluye comandos para definir las vistas.
PROF.: JOSÉ A. GONZÁLEZ S. 1
MATERIA: BASE DE DATOS 25-5-2020

 Control de transacciones: SQL tiene comandos para especificar el comienzo y el


final de una transacción.
 SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar
instrucciones de SQL en lenguajes de programación como: C++, C, Java, PHP, COBOL,
Pascal y Fortran.
 Autorización: El LDD incluye comandos para especificar los derechos de acceso a las
relaciones y a las vistas.

Lenguaje de definición de datos (DDL)

El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se
encarga de la modificación de la estructura de los objetos de la base de datos. Incluye órdenes para
modificar, borrar o definir las tablas en las que se almacenan los datos de la base de datos. Existen
cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

- CREATE (Crear)

Este comando permite crear objetos de datos, como nuevas bases de datos, tablas, vistas y
procedimientos almacenados.

Ejemplos:

Crear una base de datos

CREATE DATABASE "db_prueba";

Crear una tabla


CREATE TABLE "clientes";

- ALTER (Alterar)

Este comando permite modificar la estructura de una tabla u objeto. Se pueden


agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una
tabla, modificar un trigger, etc.

Ejemplo (agregar columna a una tabla)


ALTER TABLE "alumnos" ADD "edad" INT UNSIGNED;

En este caso en particular, se agrega una columna a la tabla “alumnos” de tipo entero
llamada “edad”.

PROF.: JOSÉ A. GONZÁLEZ S. 2


MATERIA: BASE DE DATOS 25-5-2020

- DROP (Eliminar)

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice,
trigger, función, procedimiento o cualquier objeto que el motor de la base de datos soporte. Se
puede combinar con la sentencia ALTER.

Ejemplo
DROP TABLE "alumnos";

- TRUNCATE (Truncar)

Este comando solo aplica a tablas y su función es borrar el contenido completo de la tabla
especificada. La ventaja sobre el comando DELETE, es que si se quiere borrar todo el contenido de
la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que
TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se
permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de
Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra
la tabla y la vuelve a crear y no ejecuta ninguna transacción.

Ejemplo
TRUNCATE TABLE "alumnos";

Lenguaje de manipulación de datos DML (Data Manipulation Language)

Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es


un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios
llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos
adecuado.

El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y
manipular datos en una base de datos relacional.

SELECT (Seleccionar)

La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base
de datos. La forma básica es:

PROF.: JOSÉ A. GONZÁLEZ S. 3


MATERIA: BASE DE DATOS 25-5-2020

SELECT [{ALL|DISTINCT}]
<nombre_campo>[, <nombre_campo>...]

FROM {<nombre_tabla>|<nombre_vista>}[,
{<nombre_tabla>|<nombre_vista>}...]

[WHERE <condición> [{AND|OR} <condición>...]]

[GROUP BY <nombre_campo>[, <nombre_campo>...]]

[HAVING <condición> [{AND|OR} <condición>...]]

[ORDER BY {<nombre_campo>|<indice_campo>} [{ASC|DESC}][,


{<nombre_campo>|<indice_campo>} [{ASC|DESC}]]];

SELECT Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de
selección.
ALL Indica que queremos seleccionar todos los valores. Es el valor por defecto y no suele
especificarse casi nunca.
DISTINCT Indica que queremos seleccionar sólo los valores distintos.
FROM Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de
que exista más de una tabla se denomina a la consulta "consulta combinada" o "join".
En las consultas combinadas es necesario aplicar una condición de combinación a
través de una cláusula WHERE.
WHERE Especifica una condición que debe cumplirse para que los datos sean devueltos por
la consulta. Admite los operadores lógicos AND y OR.
GROUP Especifica la agrupación que se da a los datos. Se usa siempre en combinación con
BY funciones agregadas.
HAVING Especifica una condición que debe cumplirse para que los datos sean devueltos por
la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de
resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la
condición debe estar referida a los campos contenidos en ella.
ORDER Presenta el resultado ordenado por las columnas indicadas. El orden puede
BY expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.

Ejemplo:

Para formular una consulta a la tabla coches y recuperar los campos matrícula, marca,
modelo, color, número_kilómetros, num_plazas debemos ejecutar la siguiente consulta. Los datos
serán devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor. La
palabra clave FROM indica que los datos serán recuperados de la tabla Coches.

PROF.: JOSÉ A. GONZÁLEZ S. 4


MATERIA: BASE DE DATOS 25-5-2020

SELECT
"matricula",
"marca",
"modelo",
"color",
"numero_kilometros",
"num_plazas"
FROM
"coches"
ORDER BY
"marca",
"modelo";

Ejemplo de consulta simplificada a través de un comodín de campos (*): El uso del asterisco
indica que queremos que la consulta devuelva todos los campos que existen en la tabla y los datos
serán devueltos ordenados por marca y por modelo.

SELECT *
FROM
"coches"
ORDER BY
"marca",
"modelo";

- Cláusula WHERE (Donde)

La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia
SELECT. Habitualmente no deseamos obtener toda la información existente en la tabla, sino que
queremos obtener sólo la información que nos resulte útil en ese momento. La cláusula WHERE
filtra los datos antes de ser devueltos por la consulta. Cuando en la Cláusula WHERE queremos
incluir un tipo texto, debemos incluir el valor entre comillas simples.

Ejemplos:

En nuestro ejemplo, se desea consultar un coche en concreto, para esto se agregó una
cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para que la
sentencia SELECT devuelva los datos. En este caso la consulta devolverá sólo los datos del coche con
matrícula para que la consulta devuelva sólo los datos del coche con matrícula MF-234-ZD o bien la

PROF.: JOSÉ A. GONZÁLEZ S. 5


MATERIA: BASE DE DATOS 25-5-2020

matrícula FK-938-ZL. Se puede utilizar la cláusula WHERE solamente, ó en combinación con tantas
condiciones como queramos.

SELECT
"matricula",
"marca",
"modelo",
"color",
"numero_kilometros",
"num_plazas"
FROM
"coches"
WHERE
"matricula" = 'MF-234-ZD'
OR "matricula" = 'FK-938-ZL';

Otro ejemplo, de una condición WHERE puede ser negada a través del Operador Lógico NOT.
La Siguiente consulta devolverá todos los datos de la tabla Coches, menos el que tenga la Matrícula
MF-234-ZD.

SELECT
"matricula",
"marca",
"modelo",
"color",
"numero_kilometros",
"num_plazas"
FROM
"coches"
WHERE
NOT "matricula" = 'MF-234-ZD';

La siguiente consulta utiliza la condicional DISTINCT, la cual nos devolverá todos los valores
distintos formados por los campos marca y modelo. de la tabla coches.

SELECT DISTINCT "marca", "modelo" FROM "coches";

- Cláusula ORDER BY (Ordernar Por)

La cláusula ORDER BY es la instrucción que nos permite especificar el orden en el que serán
devueltos los datos. Podemos especificar la ordenación ascendente o descendente a través de las
palabras clave ASC y DESC. La ordenación depende del tipo de datos que esté definido en la columna,
de forma que un campo numérico será ordenado como tal, y un alfanumérico se ordenará de la A a

PROF.: JOSÉ A. GONZÁLEZ S. 6


MATERIA: BASE DE DATOS 25-5-2020

la Z, aunque su contenido sea numérico. El valor predeterminado es ASC si no se especifica al hacer


la consulta.

Ejemplos:
SELECT
"matricula",
"marca",
"modelo",
"color",
"numero_kilometros",
"num_plazas"
FROM
"coches"
ORDER BY
"marca" ASC,
"modelo" DESC;

Este ejemplo, selecciona todos los campos matricula, marca, modelo, color,
numero_kilometros y num_plazas de la tabla coches, ordenándolos por los campos marca y modelo,
marca en forma ascendente y modelo en forma descendente.

SELECT
"matricula",
"marca",
"modelo",
"color",
"numero_kilometros",
"num_plazas"
FROM
"coches"
ORDER BY 2;

Este ejemplo, selecciona todos los campos matrícula, marca, modelo, color,
numero_kilometros y num_plazas de la tabla coches, ordenándolos por el campo marca, ya que
aparece en segundo lugar dentro de la lista de campos que componen la SELECT.

- Subconsultas

Una subconsulta es una sentencia SELECT que está embebida en una cláusula de otra
sentencia SQL. También pueden utilizarse subconsultas en los comandos INSERT, UPDATE, DELETE
y en la cláusula FROM.

Las subconsultas pueden resultar útiles si necesitas seleccionar filas de una tabla con una
condición que depende de los datos de la propia tabla o de otra tabla.

La subconsulta (consulta interna), se ejecuta antes de la consulta principal; el resultado de


la subconsulta es utilizado por la consulta principal (consulta externa).

PROF.: JOSÉ A. GONZÁLEZ S. 7


MATERIA: BASE DE DATOS 25-5-2020

SELECT "c"."matricula", "c"."modelo"


FROM "coches" AS "c"
WHERE "c"."matricula" IN
(
SELECT "m"."matricula"
FROM "multas" AS "m"
WHERE "m"."importe" > 100
);

En este ejemplo, se seleccionan las matrículas y los modelos de los coches cuyas multas
superan los u$s 100.

INSERT (Insertar)

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una
base de datos relacional.
INSERT INTO
"tablatura"("columnaA", ["columnaB", "..."])
VALUES
('valor1', ['valor2', ...]);

-- O también se puede utilizar como:


INSERT INTO "tablatura" VALUES ('valor1', 'valor2');

Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le
será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT
deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las
restricciones es violada, no se agrega la fila y se devuelve un error.

Ejemplo:
INSERT INTO "agenda_telefonica" ("nombre", "numero")
VALUES ('Roberto Jeldrez', 4886850);

Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:
INSERT INTO "nombre_tabla" VALUES ('valor1', ['valor2', ...]);

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla
'agenda_telefonica'), se puede omitir el nombre de los campos:

INSERT INTO "agenda_telefonica"


VALUES ('Jhonny Aguilar', 080473968);

PROF.: JOSÉ A. GONZÁLEZ S. 8


MATERIA: BASE DE DATOS 25-5-2020

- UPDATE (Actualizar)

Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.

Ejemplo:
UPDATE "tabla" SET "campo1" = 'valor' WHERE "campo2" = 'N';

- DELETE (Borrar)

Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

Forma básica:
DELETE FROM "tabla" WHERE "columna2" = 'N';

Con estas 2 últimas operaciones, se debe tener a consideración la cláusula ‘Where’

Ejercicios resueltos

1. Crear una tabla Base de Datos de nombre ‘biblioteca’.


CREATE DATABASE biblioteca;

2. Crear una tabla de nombre ‘libros’, esta debe tener los campos de ‘titulo’, ‘autor’,
‘año’. ‘editorial’,’area’.
CREATE TABLE libros
{
id int primary key,
titulo varchar[50],
autor varchar[30],
ano_p int,
editorial varchar[30],
area varchar[15]
};

Nota: Al no tener un campo que podría considerarse único para ser clave principal,
se toma de la decisión de crear uno con un nombre idóneo que requiera el
diseñador/desarrollador de la base de datos.

PROF.: JOSÉ A. GONZÁLEZ S. 9


MATERIA: BASE DE DATOS 25-5-2020

3. Modifica el nombre del campo ‘area’ por el de ‘area_conocimiento’


ALTER TABLE "alumnos" CHANGE "area" ‘area_conocimiento’ varchar[20];

4. Ingresar datos a la tabla ‘libros’.


INSERT INTO libros (id, titulo, autor, ano_p, editorial, área_conocimiento)
VALUES (1, ’Diseño de Sistemas’, ’Jason Kendall’, 1999, ’Prentice’, ’Sistemas’),
(2, ’Matemáticas Aplicadas’, ’Nelson Jaramillo’, 2010, ’Santillana’, ’Ciencias’),
(3, ’Psicología Infantil’, ’María Sotillo’, 2007, ’UNEFA-San Tome’, ’Psicología’),
(4, ’Redes TCP/IP’, ’Jason Kendall’, 2014, ’Comor’, ’Sistemas’),
(5, ’Cirugía Intravascular’, ’Pedro Quiñones’, 2019, ’Prentice’, ’Medicina’) ,
(6, ’Algebra’, ’Baldor’, 1981, ’Santillana’, ’Ciencias’);

Nota: Si se requiere ingresar más de dos registros, puede colocarse separado por
coma.

5. Modificar el dato del año de publicación con 2011 del libro con id 2.
UPDATE libros SET ano_p = 2011 WHERE id = 2;

6. Modificar la editorial Prentice por Prentice-Hill


UPDATE libros SET editorial = ‘Prentice-Hill’ WHERE editorial = ‘Prentice’;

7. Eliminar el registro de la tabla con id 4.


DELETE FROM libros WHERE id = 4;

8. Selecciona el título y el autor de todos los libros.


SELECT titulo, autor FROM libros;

9. Selecciona todos los campos de la tabla libros.


SELECT * FROM libros;

10. Seleccione todos campos de los libros que tienen año de publicación mayor a 2005.
SELECT * FROM libros WHERE ano_p > 2005;

11. Muestre los titulo y su editorial ordenado por el año de publicación.


SELECT titulo, editorial FROM libros ORDER BY ano_p;

12. Muestre el título y el area de conocimiento de los libros cuyo autor es Jason Kendall
SELECT titulo, area_conocimiento FROM libros WHERE autor = ‘Jason Kendall’;

13. Muestre el id, el editorial y el año de publicación de los libros area de Ciencias.
SELECT id, editorial, ano_p FROM libros WHERE area_conocimiento = ‘Ciencias’;

PROF.: JOSÉ A. GONZÁLEZ S. 10


MATERIA: BASE DE DATOS 25-5-2020

MYSQL

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual:
Licencia pública general/Licencia comercial por Oracle Corporation y está considerada como la base
de datos de código abierto más popular del mundo, y una de las más populares en general junto a
Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.

Al contrario de proyectos como Apache, donde el software es desarrollado por una


comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL
es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto
es lo que posibilita el esquema de doble licenciamiento anteriormente mencionado. La base de
datos se distribuye en varias versiones, una Community, distribuida bajo la Licencia pública general
de GNU, versión 2, y varias versiones Enterprise, para aquellas empresas que quieran incorporarlo
en productos privativos. Las versiones Enterprise incluyen productos o servicios adicionales tales
como herramientas de monitorización y asistencia técnica oficial. En 2009 se creó un fork
denominado MariaDB por algunos desarrolladores (incluido algunos desarrolladores originales de
MySQL) descontentos con el modelo de desarrollo y el hecho de que una misma empresa controle
a la vez los productos MySQL y Oracle Database.

Está desarrollado en su mayor parte en ANSI C y C++.4 Tradicionalmente se considera uno


de los cuatro componentes de la pila de desarrollo LAMP y WAMP.

Aplicaciones

MySQL es muy utilizado en aplicaciones web, como Joomla, Wordpress, Drupal o phpBB, en
plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento
de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo
aparece en combinación con MySQL.

MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no
transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta
concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de
datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este
tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante monitorizar
de antemano el rendimiento para detectar y corregir errores tanto de SQL como de programación.

PROF.: JOSÉ A. GONZÁLEZ S. 11


MATERIA: BASE DE DATOS 25-5-2020

Interfaces de usuario (Interfaces gráficas de usuario)

Una interfaz gráfica de usuario (GUI) es un tipo de interfaz que permite a los usuarios
interactuar con dispositivos o programas electrónicos mediante iconos gráficos e indicadores
visuales como la notación secundaria, a diferencia de las interfaces basadas en texto, las etiquetas
de comandos mecanografiadas o la navegación de texto. Las GUI son más fáciles de aprender que
las interfaces de línea de comandos (CLI), que requieren que los comandos se escriban en el teclado.

Se dispone de aplicaciones de administración gráfica (o "frontales") de propiedad de


terceros y gratuitas que se integran con MySQL y permiten a los usuarios trabajar con la estructura
y los datos de la base de datos de forma visual. Algunos frontales muy conocidos son:

- MySQL Workbench.
- Adminer.
- ClusterControl.
- Database Workbench.
- DBeaver.
- DBEdit.
- HeidiSQL (anteriormente conocido como MySQL-Front).
- LibreOffice Base.
- Navicat.
- PhpMyAdmin.
- SequelPro.
- SQLBuddy.
- SQLyog.
- Toad for MySQL.
- Webmin.

Características de MySql

Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos


relacionales, tales como integridad referencial y transacciones. A pesar de ello, atrajo a los
desarrolladores de páginas web con contenido dinámico, justamente por su simplicidad.

Poco a poco los elementos de los que carecía MySQL están siendo incorporados tanto por
desarrollos internos, como por desarrolladores de software libre. Entre las características
disponibles en las últimas versiones se puede destacar:

- Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.
- Disponibilidad en gran cantidad de plataformas y sistemas.

PROF.: JOSÉ A. GONZÁLEZ S. 12


MATERIA: BASE DE DATOS 25-5-2020

- Posibilidad de selección de mecanismos de almacenamiento que ofrecen diferentes


velocidades de operación, soporte físico, capacidad, distribución geográfica,
transacciones.
- Transacciones y claves foráneas.
- Conectividad segura.
- Replicación.
- Búsqueda e indexación de campos de texto.

MySQL está escrito en una mezcla de C y C++.

PROF.: JOSÉ A. GONZÁLEZ S. 13

También podría gustarte