SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
SQL
Structured Query
Language
SQL - Structured Query Language
P á g i n a | 2
1. Introducción
Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo
relacional y asociado a este un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en
estas ideas, los laboratorios de IBM definieron el lenguaje SEQUEL (Structured English Query Language) que más tarde
fue ampliamente implementado por el sistema de gestión de bases de datos (SGBD) experimental System R,
desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un
producto comercial.
El SEQUEL terminó siendo el predecesor de SQL, que es una versión evolucionada del primero. El SQL pasa a ser el
lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en los años
siguientes y fue por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje,
el "SQL-86" o "SQL1". Al año siguiente este estándar es también adoptado por la ISO.
Sin embargo, este primer estándar no cubría todas las necesidades de los desarrolladores e incluía funcionalidades de
definición de almacenamiento que se consideró suprimirlas. Así que, en 1992, se lanzó un nuevo estándar ampliado y
revisado del SQL llamado "SQL92" o "SQL2".
En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad
de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al
estándar SQL-92 es general y muy amplio.
Concepto:
El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es
un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos
tipos de operaciones en ellas.
2. Modelo Relacional de SQL
• Hablaremos de tablas en lugar de relaciones.
• Hablaremos de columnas en lugar de atributos.
• Hablaremos de filas en lugar de tuplas.
SQL - Structured Query Language
P á g i n a | 3
3. Estructura
Las operaciones de SQL reciben el nombre de sentencias y están formadas por diferentes partes que denominamos
cláusulas, tal y como podemos apreciar en el siguiente ejemplo:
Esta consulta muestra el código, el nombre y el tipo de los productos que cuestan más de 1.000 dólares.
Los tres primeros apartados de este módulo tratan sobre un tipo de SQL denominado SQL interactivo, que permite
acceder directamente a una base de datos relacional:
a) En el primer apartado definiremos las denominadas sentencias de definición, donde crearemos la base de
datos, las tablas que la compondrán y los dominios, las aserciones y las vistas que queramos.
b) En el segundo aprenderemos a manipular la base de datos, ya sea introduciendo, modificando o borrando
valores en las filas de las tablas, o bien haciendo consultas.
c) En el tercero veremos las sentencias de control, que aseguran un buen uso de la base de datos.
Sin embargo, muchas veces querremos acceder a la base de datos desde una aplicación hecha en un lenguaje de
programación cualquiera, que nos ofrece mucha más potencia fuera del entorno de las bases de datos. Para utilizar
SQL desde un lenguaje de programación necesitaremos sentencias especiales que nos permitan distinguir entre las
instrucciones del lenguaje de programación y las sentencias de SQL. La idea es que trabajando básicamente con un
lenguaje de programación anfitrión se puede cobijar SQL como si fuese un huésped.
Por este motivo, este tipo de SQL se conoce con el nombre de SQL hospedado.
4. Sentencias o Lenguajes de SQL
En SQL existen diferentes sentencias:
• Sentencias de definición o Lenguaje de Definición de datos (DDL): Nos sirven para crear y borrar una base de
datos relacional y para insertar, borrar y modificar las diferentes tablas que la componen.
• Sentencias de manipulación o Lenguaje de Manipulación de Datos (DML): Nos sirven para poder insertar,
modificar y borrar los valores de las filas de las tablas.
• Sentencias de Control: Nos sirve para establecer mecanismos de control para resolver problemas de
concurrencia de usuarios y garantizar la seguridad de los datos.
4.1 Sentencias de Definición o Lenguaje de Definición de Datos (DDL)
El lenguaje de definición de datos (DDL), es un lenguaje 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
• DROP
• ALTER
• TRUNCATE.
SQL - Structured Query Language
P á g i n a | 4
4.1.1 Creación y borrado de una base de datos relacional
El estándar SQL92 no dispone de ninguna sentencia de creación de bases de datos. La idea es que una base de datos
no es más que un conjunto de tablas y, por lo tanto, las sentencias que nos ofrece el SQL92 se concentran en la
creación, la modificación y el borrado de estas tablas. Sin embargo existe una sentencia para la de creación de bases
de datos: CREATE SCHEMA.
La sintaxis es la siguiente:
CREATE SCHEMA {[nombre_esquema]} | [AUTHORIZATION usuario]}
[lista_de_elementos_del_esquema];
Muchos de los sistemas relacionales comerciales (como ocurre en el caso de Informix, DB2, SQL Server y otros) han
incorporado sentencias de creación de bases de datos con la siguiente sintaxis:
CREATE DATABASE
Para borrar una base de datos encontramos el mismo problema que para crearla.
El estándar SQL92 sólo nos ofrece la sentencia de borrado de esquemas DROP SCHEMA, que presenta la siguiente
sintaxis:
DROP SCHEMA nombre_esquema {RESTRICT|CASCADE};
4.1.2 Creación de tablas
Para crear una tabla, es necesario utilizar la sentencia:
CREATE TABLE nombre_tabla
nombre_columna {tipo_datos|dominio} [def_defecto] [restric_col];
Ejemplo:
CREATE TABLE Empleado
(
id int,
nombre varchar(255),
apellido varchar(255),
dirección varchar(255),
sueldo int(5),
);
SQL - Structured Query Language
P á g i n a | 5
4.1.2.1 Tipos de datos
Para cada columna tenemos que elegir alguno de los tipos de datos predefinidos que se describen a continuación:
4.1.2.2 Restricciones de columna
En cada una de las columnas de la tabla, una vez les hemos dado un nombre y hemos definido su dominio, podemos
imponer ciertas restricciones que siempre se tendrán que cumplir. Las restricciones que se pueden dar son las que
aparecen en la tabla que tenemos a continuación:
SQL - Structured Query Language
P á g i n a | 6
4.1.2.3 Restricciones de tabla
Se pueden aplicar restricciones sobre toda la tabla, que siempre se deberán cumplir. Las restricciones que se pueden
dar son las siguientes:
4.1.3 Modificación y borrado de tablas
Para modificar una tabla es preciso utilizar la sentencia ALTER TABLE. Veamos su formato:
ALTER TABLE nombre_tabla {acción_modificar_columna|
acción_modif_restricción_tabla};
En este caso, tenemos que:
• acción_modificar_columna puede ser:
{ADD [COLUMN] columna def_columna |
ALTER [COLUMN] columna {SET def_defecto|DROP DEFAULT}|DROP [COLUMN ]
columna {RESTRICT|CASCADE}}
• acción_modif_restricción_tabla puede ser:
{ADD restricción|
DROP CONSTRAINT restricción {RESTRICT|CASCADE}}
Ejemplo:
ALTER TABLE 'EMPLEADO' ADD NOMBRE INT UNSIGNED;
Para borrar una tabla es preciso utilizar la sentencia DROP TABLE o TRUNCATE TABLE:
DROP TABLE nombre_tabla {RESTRICT|CASCADE};
Ejemplo:
DROP TABLE 'EMPLEADO';
SQL - Structured Query Language
P á g i n a | 7
Ejemplo:
TRUNCATE TABLE 'EMPLEADO';
La ventaja sobre el comando DROP, 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.
4.2 Sentencias de Definición o Lenguaje de Manipulación de datos (DML)
Un lenguaje de manipulación de datos (DML) 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. Creada la base de datos con sus tablas, podemos consultar, insertar, modificar y borrar los valores
de las filas de las tablas, para poder hacer esto, tenemos las sentencias:
• INSERT
• UPDATE
• DELETE
• SELECT FROM
4.2.1 Inserción, borrado, modificación de filas en una tabla
Antes de poder consultar los datos de una base de datos, es preciso introducirlos con la sentencia INSER TINTO
VALUES, su formato es el siguiente:
INSERT INTO nombre_tabla (columna1,columna2,... )
VALUES (valor1,valor2,...)
Ejemplo:
INSERT INTO Empleado (id,nombre,apellido,dirección,sueldo)
VALUES (01,Roberto,Perez,La Dolorosa,1500)
Para borrar valores de algunas filas de una tabla podemos utilizar la sentencia DELETE FROM WHERE, su formato
es el siguiente:
DELETE FROM nombre_tabla
WHERE condiciones;
Ejemplo:
DELETE FROM Empleado
WHERE apellido='Pérez';
Si quisiéramos modificar los valores de algunas filas de una tabla, tendríamos que utilizar la sentencia UPDATE SET
WHERE, su formato es el siguiente:
UPDATE nombre_tabla
SET columna='expresión'
WHERE condiciones;
Ejemplo:
UPDATE Empleado
SET sueldo = sueldo + 100
WHERE apellido='Perez';
SQL - Structured Query Language
P á g i n a | 8
4.2.2 Consultas a una base de datos relacional
Para hacer consultas sobre una tabla con el SQL es preciso utilizar la sentencia SELECT FROM, que tiene el siguiente
formato:
SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}]
FROM nombre_tabla>
WHERE condiciones
GROUP BY nombre_campo
HAVING condicion [{AND|OR <condicion>}]]
ORDER BY <nombre_campo>[ASC | DESC]
Veamos por partes que quiere decir cada una de las partes que conforman la sentencia.
SENTENCIA SIGNIFICADO
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.
Admiten los operadores lógicos AND y OR.
GROUP BY
Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones
agregadas.
HAVING
Especifica una condición que debe cumplirse para los datos. 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 BY
Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC
(orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.
Ejemplos:
 Consultar todos los datos de la tabla empleado
SELECT *
FROM empleado;
 Consultar el código del empleado cuyo apellido es Pérez
SELECT id
FROM empleado
WHERE apellido='Pérez';
Para definir las condiciones en la cláusula WHERE, podemos utilizar alguno de los operadores de los que dispone el
SQL, que son los siguientes:
SQL - Structured Query Language
P á g i n a | 9
Si queremos que en una consulta nos aparezcan las filas resultantes sin repeticiones, es preciso poner la palabra clave
DISTINCT inmediatamente después de SELECT. También podríamos explicitar que lo queremos todo, incluso con
repeticiones, poniendo ALL (opción por defecto) en lugar de DISTINCT. El formato de DISTINCT es:
DELETE FROM nombre_tabla
WHERE condiciones;
Ejemplo:
 Queremos ver los sueldos se están pagando en nuestra empresa
SELECT DISTINCT sueldo
FROM empleado;
4.2.3 Funciones de agregación
El SQL nos ofrece las siguientes funciones de agregación para efectuar varias operaciones sobre los datos de una base
de datos:
Las funciones de agregación se aplican a una columna, excepto la función de agregación COUNT, que normalmente se
aplica a todas las columnas de la tabla o tablas seleccionadas, por lo tanto, COUNT (*) contará todas las filas de la
tabla o las tablas que cumplan las condiciones. Si se utilizase COUNT(distinct columna), sólo contaría los valores que
no fuesen nulos ni repetidos, y si se utilizase COUNT (columna), sólo contaría los valores que no fuesen nulos.
 Queremos saber cuántos empleados se llaman Juan
SELECT COUNT(*) AS id
FROM empleado
WHERE nombre='Juan';
SQL - Structured Query Language
P á g i n a | 10
4.2.4 Sub-consultas
Una subconsulta es una consulta incluida dentro de una cláusula WHERE de otra consulta. En ocasiones, para expresar
ciertas condiciones no hay más remedio que obtener el valor que buscamos como resultado de una consulta.
Ejemplo:
 Queremos saber los empleados de mayor sueldo
SELECT nombre, apellido
FROM empleado
WHERE sueldo =(SELECT MAX (sueldo)
FROM empleados);
4.2.5 Ordenación de los datos
Si se desea que, al hacer una consulta, los datos aparezcan en un orden determinado, es preciso utilizar la cláusula
ORDER BY en la sentencia SELECT, que presenta el siguiente formato:
SELECT nombre_columna
FROM tabla_a_consultar
WHERE condiciones
ORDER BY columna_según la cual se quiere ordenar [DESC]
[,col_ordenación [DESC]...];
Ejemplo:
 Queremos consultar los nombres de los empleados ordenados según el sueldo que ganan, y si ganan el
mismo sueldo, ordenados alfabéticamente por el nombre:
SELECT nombre, apellido, sueldo
FROM empleado
ORDER BY sueldo, nombre;
4.2.6 Consultas con agrupación de filas de una tabla
Las cláusulas siguientes, añadidas a la instrucción SELECT FROM, permiten organizar las filas por grupos:
a) La cláusula GROUP BY nos sirve para agrupar filas según las columnas que indique esta cláusula.
a) b) La cláusula HAVING especifica condiciones de búsqueda para grupos de filas; lleva a cabo la misma función
que antes cumplía la cláusula WHERE para las filas de toda la tabla, pero ahora las condiciones se aplican a los
grupos obtenidos.
Presenta el siguiente formato:
SELECT nombre_columnas_a seleccionar
FROM tabla_a_consultar
WHERE condiciones]
GROUP BY columnas_según_las_cuales_se_quiere_agrupar
HAVING condiciones_por_grupos
ORDER BY columna_ordenación [DESC] [, columna [DESC]...]];
Ejemplo:
 Queremos saber el sueldo medio que ganan los empleados de ordenados por dirección de residencia:
SELECT AVG(sueldo)
FROM empleados
GROUP BY dirección;
SQL - Structured Query Language
P á g i n a | 11
2.5.3. Predicados
1. Predicado BETWEEN
Para expresar una condición que quiere encontrar un valor entre unos límites concretos, su formato es el siguiente:
SELECT nombre_columnas_a_seleccionar
FROM tabla_a_consultar
WHERE columna BETWEEN límite1 AND límite2;
Ejemplo:
 Queremos saber el nombre de todos los empleados que ganan entre 1500 y 2000
SELECT nombre
FROM empleado
WHERE sueldo BETWEEN 1500 and 2000;
2. Predicado IN
Para comprobar si un valor coincide con los elementos de una lista utilizaremos IN, y para ver si no coincide, NOT IN,
su formato es el siguiente:
SELECT nombre_columnas_a_seleccionar
FROM tabla_a_consultar
WHERE columna [NOT] IN (valor1, ..., valorN);
Ejemplo:
 Queremos saber el nombre de todos los empleados cuyo apellido sea Pérez o Rubio
SELECT nombre, apellido
FROM empleado
WHERE apellido IN ('Perez', 'Rubio');
3. Predicado LIKE
Para comprobar si una columna de tipo carácter cumple alguna propiedad determinada, podemos usar LIKE:
SELECT nombre_columnas_a_seleccionar
FROM tabla_a_consultar
WHERE columna LIKE característica;
Los patrones del SQL92 para expresar características son los siguientes:
a) Pondremos un carácter _ para cada carácter individual que queramos considerar.
b) Pondremos un carácter % para expresar una secuencia de caracteres.
Ejemplo:
 Empleados que empiezan por la letra J
SELECT nombre, apellidos
FROM empleado
WHERE nombre LIKE 'J%';
 Empleados que empiezan por S y tienen cinco letras
SELECT nombre, apellidos
FROM empleado
WHERE nombre LIKE 'S_ _ _ _';
SQL - Structured Query Language
P á g i n a | 12
4. Predicado IS NULL
Para comprobar si un valor es nulo utilizaremos IS NULL, y para averiguar si no lo es, IS NOT NULL, su formato es el
siguiente:
SELECT nombre_columnas_a_seleccionar
FROM tabla_a_consultar
WHERE columna IS [NOT] NULL;
Ejemplo:
 Queremos saber el código y el nombre de todos los empleados que no tienen un sueldo
SELECT id, nombre, apellido
FROM empleado
WHERE sueldo IS NULL;
4.2.7 Consultas más de una tabla
En varias ocasiones queremos consultar datos de más de una tabla haciendo combinaciones de columnas de tablas
diferentes, en el SQL es posible listar más de una tabla que se quiere consultar especificándolo en la cláusula
FROM, para esto utilizamos la Combinación.
Tenemos la base de datos Empresa con las tablas siguientes:
DEPARTAMENTO
cod_dep nombre_dep localización
10 Desarrollo de Software El Coyolar
20 Análisis de Sistemas Guadalupe
30 Contabilidad Subtiava
40 Ventas San Felipe
EMPLEADO
cod_emp nombre edad oficio dir fecha_ing salario comisión cod_dep
1 Vargas Héctor 27 Vendedor León 12/05/1993 12000 40
2 Hernández Julio 27 Analista Chinandega 14/07/1982 13000 1500 20
3 Esquivel José 31 Director Juigalpa 05/06/1981 16700 1200 30
4 Delgado Carmen 37 Vendedor León 02/03/1983 13400 40
5 Castillo Luis 17 Vendedor Masaya 12/08/1982 16309 1000 40
6 Esquivel Alfonso 26 Presidente Nagarote 12/09/1981 15000 30
7 Pérez Luis 32 Empleado Managua 02/03/1980 16890 10
 Combinación
La combinación consigue crear una sola tabla a partir de las tablas especificadas en la cláusula FROM, haciendo
coincidir los valores de las columnas relacionadas de estas tablas.
Ejemplo 1:
 Seleccionar el nombre, salario y la localidad de los empleados que tengan un salario entre 10000 y 13000.
SELECT nombre, salario, localización
FROM EMPLEADO, DEPARTAMENTO
WHERE EMPLEADO.cod_dep=DEPARTAMENTO.cod_dep and salario>10000 and salario < 13500
Resultado
nombre salario localización
Vargas Héctor 12000 San Felipe
Hernández Julio 13000 Guadalupe
Delgado Carmen 13400 San Felipe
SQL - Structured Query Language
P á g i n a | 13
Ejemplo 2:
 Seleccionar el nombre, el oficio y la localidad de los departamentos donde trabajan los Vendedores.
SELECT nombre, oficio, localización
FROM EMPLEADO, DEPARTAMENTO
WHERE EMPLEADO.cod_dep=DEPARTAMENTO.cod_dep and oficio ='Vendedor'
Resultado
nombre oficio localización
Vargas Héctor Vendedor San Felipe
Delgado Carmen Vendedor San Felipe
Castillo Luis Vendedor San Felipe
4.2.8 Unión
La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT.
Las dos sentencias SELECT tienen que tener el mismo número de columnas, con el mismo tipo de dato y en el mismo
orden.
Presenta el siguiente formato:
SELECT columnas
FROM tabla
[WHERE condiciones]
UNION [ALL]
SELECT columnas
FROM tabla
[WHERE condiciones];
Ejemplo:
PERSONAS_EMPRESA1
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ
PERSONAS_EMPRESA2
per nombre apellido1 apellido2
1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ
SELECT nombre, apellido1 FROM personas_empresa1
UNION
SELECT nombre, apellido1 FROM personas_empresa2
nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
PEDRO RUIZ
JUAN APARICIO
LUIS LOPEZ
La persona 'ANTONIO GARCIA RODRIGUEZ' aparecerá solo una vez en el resultado, porque no aparecerán las filas
repetidas.
4.2.9 Intersección
Parecido a la UNION, la diferencia es que UNION actúa como un operador OR (O) (el valor se selecciona si aparece en
la primera o la segunda instrucción), mientras que INTERSECT actúa como un operador AND (Y) (el valor se
selecciona si aparece en ambas instrucciones).
Presenta el siguiente formato:
SQL - Structured Query Language
P á g i n a | 14
SELECT columnas
FROM tabla
[WHERE condiciones]
INTERSECT [ALL]
SELECT columnas
FROM tabla
[WHERE condiciones];
Ejemplo:
PERSONAS_EMPRESA1
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ
PERSONAS_EMPRESA2
per nombre apellido1 apellido2
1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ
SELECT nombre, apellido1 FROM personas_empresa1
INTERSECT
SELECT nombre, apellido1 FROM personas_empresa2
nombre apellido1
ANTONIO GARCIA
4.2.10 Diferencia
Con la sentencia SQL EXCEPT, aparecen en la tabla resultante las filas de la primera consulta que no aparecen en la
segunda.
Presenta el siguiente formato:
SELECT columnas
FROM tabla
[WHERE condiciones]
EXCEPT [ALL]
SELECT columnas
FROM tabla
[WHERE condiciones];
Ejemplo:
PERSONAS_EMPRESA1
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ
PERSONAS_EMPRESA2
per nombre apellido1 apellido2
1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ
SELECT nombre, apellido1 FROM personas_empresa1
EXCEPT
SELECT nombre, apellido1 FROM personas_empresa2
nombre apellido1
ANTONIO PERES
PEDRO RUIZ

Weitere ähnliche Inhalte

Andere mochten auch (20)

Computacion
ComputacionComputacion
Computacion
 
LA WEB Y NUESTRA VISION INTEGRAL
LA WEB Y NUESTRA VISION INTEGRALLA WEB Y NUESTRA VISION INTEGRAL
LA WEB Y NUESTRA VISION INTEGRAL
 
Herreamientas
Herreamientas  Herreamientas
Herreamientas
 
Examen
Examen Examen
Examen
 
S11 actividad de aprendizaje
S11   actividad de aprendizajeS11   actividad de aprendizaje
S11 actividad de aprendizaje
 
Text für broschüre
Text für broschüreText für broschüre
Text für broschüre
 
Was ist Elektrosmog?
Was ist Elektrosmog?Was ist Elektrosmog?
Was ist Elektrosmog?
 
Arte academ
Arte academArte academ
Arte academ
 
Enogastronomia - Alemanha
Enogastronomia - AlemanhaEnogastronomia - Alemanha
Enogastronomia - Alemanha
 
Buscadores y metabuscadores
Buscadores y metabuscadores Buscadores y metabuscadores
Buscadores y metabuscadores
 
Manualdeajax
ManualdeajaxManualdeajax
Manualdeajax
 
En javi i la targeta de crèdit
En javi i la targeta de crèditEn javi i la targeta de crèdit
En javi i la targeta de crèdit
 
Gat1
Gat1Gat1
Gat1
 
Report in history-PAGLALAYAG NI MAGELLAN
Report in history-PAGLALAYAG NI MAGELLANReport in history-PAGLALAYAG NI MAGELLAN
Report in history-PAGLALAYAG NI MAGELLAN
 
La Web 2.0
La Web 2.0 La Web 2.0
La Web 2.0
 
Zierkeramik Wehner Katalog 2012
Zierkeramik Wehner Katalog 2012Zierkeramik Wehner Katalog 2012
Zierkeramik Wehner Katalog 2012
 
Castillo Medieval
Castillo MedievalCastillo Medieval
Castillo Medieval
 
Rubrica competencia siglo 21
Rubrica competencia siglo 21Rubrica competencia siglo 21
Rubrica competencia siglo 21
 
Importancia de la computación
Importancia de la computaciónImportancia de la computación
Importancia de la computación
 
Business bavaria 4-2012_de
Business bavaria 4-2012_deBusiness bavaria 4-2012_de
Business bavaria 4-2012_de
 

Ähnlich wie 111

Ähnlich wie 111 (20)

TEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfTEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdf
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
MySQL
MySQLMySQL
MySQL
 
MySQL
MySQLMySQL
MySQL
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
Base datos f03
Base datos f03Base datos f03
Base datos f03
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transact
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transact
 
LENGUAJE TRANSACT SQL
 LENGUAJE TRANSACT SQL LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 
Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3
 
Sql
SqlSql
Sql
 
Curso sql
Curso sqlCurso sql
Curso sql
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 

Mehr von GeovannyYungan

Herramientas para crear y compartir
Herramientas para crear y compartir Herramientas para crear y compartir
Herramientas para crear y compartir GeovannyYungan
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación   Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación GeovannyYungan
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación GeovannyYungan
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación GeovannyYungan
 
Acuerdos y compromisos
Acuerdos y compromisos   Acuerdos y compromisos
Acuerdos y compromisos GeovannyYungan
 
Acta de compromiso (1)
Acta de compromiso (1) Acta de compromiso (1)
Acta de compromiso (1) GeovannyYungan
 
Yungan geovanny rl_1cd
Yungan geovanny rl_1cdYungan geovanny rl_1cd
Yungan geovanny rl_1cdGeovannyYungan
 
ffghYungan geovanny bdii_t8
ffghYungan geovanny bdii_t8ffghYungan geovanny bdii_t8
ffghYungan geovanny bdii_t8GeovannyYungan
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7GeovannyYungan
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2GeovannyYungan
 
sistema gestor de bases de datos
sistema gestor de bases de datossistema gestor de bases de datos
sistema gestor de bases de datosGeovannyYungan
 

Mehr von GeovannyYungan (20)

Seguimiento
Seguimiento Seguimiento
Seguimiento
 
Correccion
Correccion Correccion
Correccion
 
Final
Final Final
Final
 
Herramientas para crear y compartir
Herramientas para crear y compartir Herramientas para crear y compartir
Herramientas para crear y compartir
 
Web2.0 v
Web2.0 vWeb2.0 v
Web2.0 v
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación   Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación
 
Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación Tecnologías de la información y la comunicación
Tecnologías de la información y la comunicación
 
Funciones
Funciones Funciones
Funciones
 
Plan buen vivir
Plan buen vivir Plan buen vivir
Plan buen vivir
 
Geovanny 1
Geovanny 1 Geovanny 1
Geovanny 1
 
Geovanny yungan
Geovanny yungan Geovanny yungan
Geovanny yungan
 
Acuerdos y compromisos
Acuerdos y compromisos   Acuerdos y compromisos
Acuerdos y compromisos
 
Acta de compromiso (1)
Acta de compromiso (1) Acta de compromiso (1)
Acta de compromiso (1)
 
Yungan geovanny rl_1cd
Yungan geovanny rl_1cdYungan geovanny rl_1cd
Yungan geovanny rl_1cd
 
ffghYungan geovanny bdii_t8
ffghYungan geovanny bdii_t8ffghYungan geovanny bdii_t8
ffghYungan geovanny bdii_t8
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
sistema gestor de bases de datos
sistema gestor de bases de datossistema gestor de bases de datos
sistema gestor de bases de datos
 

Kürzlich hochgeladen

Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREAS
Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREASEjemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREAS
Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREASJavier Sanchez
 
CARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCarolVigo1
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxArs Erótica
 
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdfConcurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxFranciscoCruz296518
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdfceeabarcia
 
Presentación del tema: tecnología educativa
Presentación del tema: tecnología educativaPresentación del tema: tecnología educativa
Presentación del tema: tecnología educativaricardoruizaleman
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesmelanieteresacontrer
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxJulioSantin2
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionCarolVigo1
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkMaximilianoMaldonado17
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdfNELLYKATTY
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptjosemanuelcremades
 
Los escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialesLos escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialeshanda210618
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er gradoAnaMara883998
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónIES Vicent Andres Estelles
 

Kürzlich hochgeladen (20)

Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREAS
Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREASEjemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREAS
Ejemplo de trabajo de TIC´s CON VARIAS OPCIONES DE LAS TAREAS
 
CARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacion
 
VISITA DE ESTUDO À CRUZ VERMELHA _
VISITA DE ESTUDO À CRUZ VERMELHA                   _VISITA DE ESTUDO À CRUZ VERMELHA                   _
VISITA DE ESTUDO À CRUZ VERMELHA _
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptx
 
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdfConcurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
 
Presentación del tema: tecnología educativa
Presentación del tema: tecnología educativaPresentación del tema: tecnología educativa
Presentación del tema: tecnología educativa
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comerciales
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptx
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
 
Sesión de clase ES: Adoración sin fin...
Sesión de clase ES: Adoración sin fin...Sesión de clase ES: Adoración sin fin...
Sesión de clase ES: Adoración sin fin...
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 link
 
Tema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdfTema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdf
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.ppt
 
Los escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comercialesLos escritos administrativos, técnicos y comerciales
Los escritos administrativos, técnicos y comerciales
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er grado
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificación
 

111

  • 2. SQL - Structured Query Language P á g i n a | 2 1. Introducción Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas, los laboratorios de IBM definieron el lenguaje SEQUEL (Structured English Query Language) que más tarde fue ampliamente implementado por el sistema de gestión de bases de datos (SGBD) experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un producto comercial. El SEQUEL terminó siendo el predecesor de SQL, que es una versión evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en los años siguientes y fue por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el "SQL-86" o "SQL1". Al año siguiente este estándar es también adoptado por la ISO. Sin embargo, este primer estándar no cubría todas las necesidades de los desarrolladores e incluía funcionalidades de definición de almacenamiento que se consideró suprimirlas. Así que, en 1992, se lanzó un nuevo estándar ampliado y revisado del SQL llamado "SQL92" o "SQL2". En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio. Concepto: El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. 2. Modelo Relacional de SQL • Hablaremos de tablas en lugar de relaciones. • Hablaremos de columnas en lugar de atributos. • Hablaremos de filas en lugar de tuplas.
  • 3. SQL - Structured Query Language P á g i n a | 3 3. Estructura Las operaciones de SQL reciben el nombre de sentencias y están formadas por diferentes partes que denominamos cláusulas, tal y como podemos apreciar en el siguiente ejemplo: Esta consulta muestra el código, el nombre y el tipo de los productos que cuestan más de 1.000 dólares. Los tres primeros apartados de este módulo tratan sobre un tipo de SQL denominado SQL interactivo, que permite acceder directamente a una base de datos relacional: a) En el primer apartado definiremos las denominadas sentencias de definición, donde crearemos la base de datos, las tablas que la compondrán y los dominios, las aserciones y las vistas que queramos. b) En el segundo aprenderemos a manipular la base de datos, ya sea introduciendo, modificando o borrando valores en las filas de las tablas, o bien haciendo consultas. c) En el tercero veremos las sentencias de control, que aseguran un buen uso de la base de datos. Sin embargo, muchas veces querremos acceder a la base de datos desde una aplicación hecha en un lenguaje de programación cualquiera, que nos ofrece mucha más potencia fuera del entorno de las bases de datos. Para utilizar SQL desde un lenguaje de programación necesitaremos sentencias especiales que nos permitan distinguir entre las instrucciones del lenguaje de programación y las sentencias de SQL. La idea es que trabajando básicamente con un lenguaje de programación anfitrión se puede cobijar SQL como si fuese un huésped. Por este motivo, este tipo de SQL se conoce con el nombre de SQL hospedado. 4. Sentencias o Lenguajes de SQL En SQL existen diferentes sentencias: • Sentencias de definición o Lenguaje de Definición de datos (DDL): Nos sirven para crear y borrar una base de datos relacional y para insertar, borrar y modificar las diferentes tablas que la componen. • Sentencias de manipulación o Lenguaje de Manipulación de Datos (DML): Nos sirven para poder insertar, modificar y borrar los valores de las filas de las tablas. • Sentencias de Control: Nos sirve para establecer mecanismos de control para resolver problemas de concurrencia de usuarios y garantizar la seguridad de los datos. 4.1 Sentencias de Definición o Lenguaje de Definición de Datos (DDL) El lenguaje de definición de datos (DDL), es un lenguaje 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 • DROP • ALTER • TRUNCATE.
  • 4. SQL - Structured Query Language P á g i n a | 4 4.1.1 Creación y borrado de una base de datos relacional El estándar SQL92 no dispone de ninguna sentencia de creación de bases de datos. La idea es que una base de datos no es más que un conjunto de tablas y, por lo tanto, las sentencias que nos ofrece el SQL92 se concentran en la creación, la modificación y el borrado de estas tablas. Sin embargo existe una sentencia para la de creación de bases de datos: CREATE SCHEMA. La sintaxis es la siguiente: CREATE SCHEMA {[nombre_esquema]} | [AUTHORIZATION usuario]} [lista_de_elementos_del_esquema]; Muchos de los sistemas relacionales comerciales (como ocurre en el caso de Informix, DB2, SQL Server y otros) han incorporado sentencias de creación de bases de datos con la siguiente sintaxis: CREATE DATABASE Para borrar una base de datos encontramos el mismo problema que para crearla. El estándar SQL92 sólo nos ofrece la sentencia de borrado de esquemas DROP SCHEMA, que presenta la siguiente sintaxis: DROP SCHEMA nombre_esquema {RESTRICT|CASCADE}; 4.1.2 Creación de tablas Para crear una tabla, es necesario utilizar la sentencia: CREATE TABLE nombre_tabla nombre_columna {tipo_datos|dominio} [def_defecto] [restric_col]; Ejemplo: CREATE TABLE Empleado ( id int, nombre varchar(255), apellido varchar(255), dirección varchar(255), sueldo int(5), );
  • 5. SQL - Structured Query Language P á g i n a | 5 4.1.2.1 Tipos de datos Para cada columna tenemos que elegir alguno de los tipos de datos predefinidos que se describen a continuación: 4.1.2.2 Restricciones de columna En cada una de las columnas de la tabla, una vez les hemos dado un nombre y hemos definido su dominio, podemos imponer ciertas restricciones que siempre se tendrán que cumplir. Las restricciones que se pueden dar son las que aparecen en la tabla que tenemos a continuación:
  • 6. SQL - Structured Query Language P á g i n a | 6 4.1.2.3 Restricciones de tabla Se pueden aplicar restricciones sobre toda la tabla, que siempre se deberán cumplir. Las restricciones que se pueden dar son las siguientes: 4.1.3 Modificación y borrado de tablas Para modificar una tabla es preciso utilizar la sentencia ALTER TABLE. Veamos su formato: ALTER TABLE nombre_tabla {acción_modificar_columna| acción_modif_restricción_tabla}; En este caso, tenemos que: • acción_modificar_columna puede ser: {ADD [COLUMN] columna def_columna | ALTER [COLUMN] columna {SET def_defecto|DROP DEFAULT}|DROP [COLUMN ] columna {RESTRICT|CASCADE}} • acción_modif_restricción_tabla puede ser: {ADD restricción| DROP CONSTRAINT restricción {RESTRICT|CASCADE}} Ejemplo: ALTER TABLE 'EMPLEADO' ADD NOMBRE INT UNSIGNED; Para borrar una tabla es preciso utilizar la sentencia DROP TABLE o TRUNCATE TABLE: DROP TABLE nombre_tabla {RESTRICT|CASCADE}; Ejemplo: DROP TABLE 'EMPLEADO';
  • 7. SQL - Structured Query Language P á g i n a | 7 Ejemplo: TRUNCATE TABLE 'EMPLEADO'; La ventaja sobre el comando DROP, 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. 4.2 Sentencias de Definición o Lenguaje de Manipulación de datos (DML) Un lenguaje de manipulación de datos (DML) 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. Creada la base de datos con sus tablas, podemos consultar, insertar, modificar y borrar los valores de las filas de las tablas, para poder hacer esto, tenemos las sentencias: • INSERT • UPDATE • DELETE • SELECT FROM 4.2.1 Inserción, borrado, modificación de filas en una tabla Antes de poder consultar los datos de una base de datos, es preciso introducirlos con la sentencia INSER TINTO VALUES, su formato es el siguiente: INSERT INTO nombre_tabla (columna1,columna2,... ) VALUES (valor1,valor2,...) Ejemplo: INSERT INTO Empleado (id,nombre,apellido,dirección,sueldo) VALUES (01,Roberto,Perez,La Dolorosa,1500) Para borrar valores de algunas filas de una tabla podemos utilizar la sentencia DELETE FROM WHERE, su formato es el siguiente: DELETE FROM nombre_tabla WHERE condiciones; Ejemplo: DELETE FROM Empleado WHERE apellido='Pérez'; Si quisiéramos modificar los valores de algunas filas de una tabla, tendríamos que utilizar la sentencia UPDATE SET WHERE, su formato es el siguiente: UPDATE nombre_tabla SET columna='expresión' WHERE condiciones; Ejemplo: UPDATE Empleado SET sueldo = sueldo + 100 WHERE apellido='Perez';
  • 8. SQL - Structured Query Language P á g i n a | 8 4.2.2 Consultas a una base de datos relacional Para hacer consultas sobre una tabla con el SQL es preciso utilizar la sentencia SELECT FROM, que tiene el siguiente formato: SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM nombre_tabla> WHERE condiciones GROUP BY nombre_campo HAVING condicion [{AND|OR <condicion>}]] ORDER BY <nombre_campo>[ASC | DESC] Veamos por partes que quiere decir cada una de las partes que conforman la sentencia. SENTENCIA SIGNIFICADO 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. Admiten los operadores lógicos AND y OR. GROUP BY Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas. HAVING Especifica una condición que debe cumplirse para los datos. 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 BY Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC. Ejemplos:  Consultar todos los datos de la tabla empleado SELECT * FROM empleado;  Consultar el código del empleado cuyo apellido es Pérez SELECT id FROM empleado WHERE apellido='Pérez'; Para definir las condiciones en la cláusula WHERE, podemos utilizar alguno de los operadores de los que dispone el SQL, que son los siguientes:
  • 9. SQL - Structured Query Language P á g i n a | 9 Si queremos que en una consulta nos aparezcan las filas resultantes sin repeticiones, es preciso poner la palabra clave DISTINCT inmediatamente después de SELECT. También podríamos explicitar que lo queremos todo, incluso con repeticiones, poniendo ALL (opción por defecto) en lugar de DISTINCT. El formato de DISTINCT es: DELETE FROM nombre_tabla WHERE condiciones; Ejemplo:  Queremos ver los sueldos se están pagando en nuestra empresa SELECT DISTINCT sueldo FROM empleado; 4.2.3 Funciones de agregación El SQL nos ofrece las siguientes funciones de agregación para efectuar varias operaciones sobre los datos de una base de datos: Las funciones de agregación se aplican a una columna, excepto la función de agregación COUNT, que normalmente se aplica a todas las columnas de la tabla o tablas seleccionadas, por lo tanto, COUNT (*) contará todas las filas de la tabla o las tablas que cumplan las condiciones. Si se utilizase COUNT(distinct columna), sólo contaría los valores que no fuesen nulos ni repetidos, y si se utilizase COUNT (columna), sólo contaría los valores que no fuesen nulos.  Queremos saber cuántos empleados se llaman Juan SELECT COUNT(*) AS id FROM empleado WHERE nombre='Juan';
  • 10. SQL - Structured Query Language P á g i n a | 10 4.2.4 Sub-consultas Una subconsulta es una consulta incluida dentro de una cláusula WHERE de otra consulta. En ocasiones, para expresar ciertas condiciones no hay más remedio que obtener el valor que buscamos como resultado de una consulta. Ejemplo:  Queremos saber los empleados de mayor sueldo SELECT nombre, apellido FROM empleado WHERE sueldo =(SELECT MAX (sueldo) FROM empleados); 4.2.5 Ordenación de los datos Si se desea que, al hacer una consulta, los datos aparezcan en un orden determinado, es preciso utilizar la cláusula ORDER BY en la sentencia SELECT, que presenta el siguiente formato: SELECT nombre_columna FROM tabla_a_consultar WHERE condiciones ORDER BY columna_según la cual se quiere ordenar [DESC] [,col_ordenación [DESC]...]; Ejemplo:  Queremos consultar los nombres de los empleados ordenados según el sueldo que ganan, y si ganan el mismo sueldo, ordenados alfabéticamente por el nombre: SELECT nombre, apellido, sueldo FROM empleado ORDER BY sueldo, nombre; 4.2.6 Consultas con agrupación de filas de una tabla Las cláusulas siguientes, añadidas a la instrucción SELECT FROM, permiten organizar las filas por grupos: a) La cláusula GROUP BY nos sirve para agrupar filas según las columnas que indique esta cláusula. a) b) La cláusula HAVING especifica condiciones de búsqueda para grupos de filas; lleva a cabo la misma función que antes cumplía la cláusula WHERE para las filas de toda la tabla, pero ahora las condiciones se aplican a los grupos obtenidos. Presenta el siguiente formato: SELECT nombre_columnas_a seleccionar FROM tabla_a_consultar WHERE condiciones] GROUP BY columnas_según_las_cuales_se_quiere_agrupar HAVING condiciones_por_grupos ORDER BY columna_ordenación [DESC] [, columna [DESC]...]]; Ejemplo:  Queremos saber el sueldo medio que ganan los empleados de ordenados por dirección de residencia: SELECT AVG(sueldo) FROM empleados GROUP BY dirección;
  • 11. SQL - Structured Query Language P á g i n a | 11 2.5.3. Predicados 1. Predicado BETWEEN Para expresar una condición que quiere encontrar un valor entre unos límites concretos, su formato es el siguiente: SELECT nombre_columnas_a_seleccionar FROM tabla_a_consultar WHERE columna BETWEEN límite1 AND límite2; Ejemplo:  Queremos saber el nombre de todos los empleados que ganan entre 1500 y 2000 SELECT nombre FROM empleado WHERE sueldo BETWEEN 1500 and 2000; 2. Predicado IN Para comprobar si un valor coincide con los elementos de una lista utilizaremos IN, y para ver si no coincide, NOT IN, su formato es el siguiente: SELECT nombre_columnas_a_seleccionar FROM tabla_a_consultar WHERE columna [NOT] IN (valor1, ..., valorN); Ejemplo:  Queremos saber el nombre de todos los empleados cuyo apellido sea Pérez o Rubio SELECT nombre, apellido FROM empleado WHERE apellido IN ('Perez', 'Rubio'); 3. Predicado LIKE Para comprobar si una columna de tipo carácter cumple alguna propiedad determinada, podemos usar LIKE: SELECT nombre_columnas_a_seleccionar FROM tabla_a_consultar WHERE columna LIKE característica; Los patrones del SQL92 para expresar características son los siguientes: a) Pondremos un carácter _ para cada carácter individual que queramos considerar. b) Pondremos un carácter % para expresar una secuencia de caracteres. Ejemplo:  Empleados que empiezan por la letra J SELECT nombre, apellidos FROM empleado WHERE nombre LIKE 'J%';  Empleados que empiezan por S y tienen cinco letras SELECT nombre, apellidos FROM empleado WHERE nombre LIKE 'S_ _ _ _';
  • 12. SQL - Structured Query Language P á g i n a | 12 4. Predicado IS NULL Para comprobar si un valor es nulo utilizaremos IS NULL, y para averiguar si no lo es, IS NOT NULL, su formato es el siguiente: SELECT nombre_columnas_a_seleccionar FROM tabla_a_consultar WHERE columna IS [NOT] NULL; Ejemplo:  Queremos saber el código y el nombre de todos los empleados que no tienen un sueldo SELECT id, nombre, apellido FROM empleado WHERE sueldo IS NULL; 4.2.7 Consultas más de una tabla En varias ocasiones queremos consultar datos de más de una tabla haciendo combinaciones de columnas de tablas diferentes, en el SQL es posible listar más de una tabla que se quiere consultar especificándolo en la cláusula FROM, para esto utilizamos la Combinación. Tenemos la base de datos Empresa con las tablas siguientes: DEPARTAMENTO cod_dep nombre_dep localización 10 Desarrollo de Software El Coyolar 20 Análisis de Sistemas Guadalupe 30 Contabilidad Subtiava 40 Ventas San Felipe EMPLEADO cod_emp nombre edad oficio dir fecha_ing salario comisión cod_dep 1 Vargas Héctor 27 Vendedor León 12/05/1993 12000 40 2 Hernández Julio 27 Analista Chinandega 14/07/1982 13000 1500 20 3 Esquivel José 31 Director Juigalpa 05/06/1981 16700 1200 30 4 Delgado Carmen 37 Vendedor León 02/03/1983 13400 40 5 Castillo Luis 17 Vendedor Masaya 12/08/1982 16309 1000 40 6 Esquivel Alfonso 26 Presidente Nagarote 12/09/1981 15000 30 7 Pérez Luis 32 Empleado Managua 02/03/1980 16890 10  Combinación La combinación consigue crear una sola tabla a partir de las tablas especificadas en la cláusula FROM, haciendo coincidir los valores de las columnas relacionadas de estas tablas. Ejemplo 1:  Seleccionar el nombre, salario y la localidad de los empleados que tengan un salario entre 10000 y 13000. SELECT nombre, salario, localización FROM EMPLEADO, DEPARTAMENTO WHERE EMPLEADO.cod_dep=DEPARTAMENTO.cod_dep and salario>10000 and salario < 13500 Resultado nombre salario localización Vargas Héctor 12000 San Felipe Hernández Julio 13000 Guadalupe Delgado Carmen 13400 San Felipe
  • 13. SQL - Structured Query Language P á g i n a | 13 Ejemplo 2:  Seleccionar el nombre, el oficio y la localidad de los departamentos donde trabajan los Vendedores. SELECT nombre, oficio, localización FROM EMPLEADO, DEPARTAMENTO WHERE EMPLEADO.cod_dep=DEPARTAMENTO.cod_dep and oficio ='Vendedor' Resultado nombre oficio localización Vargas Héctor Vendedor San Felipe Delgado Carmen Vendedor San Felipe Castillo Luis Vendedor San Felipe 4.2.8 Unión La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT. Las dos sentencias SELECT tienen que tener el mismo número de columnas, con el mismo tipo de dato y en el mismo orden. Presenta el siguiente formato: SELECT columnas FROM tabla [WHERE condiciones] UNION [ALL] SELECT columnas FROM tabla [WHERE condiciones]; Ejemplo: PERSONAS_EMPRESA1 per nombre apellido1 apellido2 1 ANTONIO PEREZ GOMEZ 2 ANTONIO GARCIA RODRIGUEZ 3 PEDRO RUIZ GONZALEZ PERSONAS_EMPRESA2 per nombre apellido1 apellido2 1 JUAN APARICIO TENS 2 ANTONIO GARCIA RODRIGUEZ 3 LUIS LOPEZ VAZQUEZ SELECT nombre, apellido1 FROM personas_empresa1 UNION SELECT nombre, apellido1 FROM personas_empresa2 nombre apellido1 ANTONIO PEREZ ANTONIO GARCIA PEDRO RUIZ JUAN APARICIO LUIS LOPEZ La persona 'ANTONIO GARCIA RODRIGUEZ' aparecerá solo una vez en el resultado, porque no aparecerán las filas repetidas. 4.2.9 Intersección Parecido a la UNION, la diferencia es que UNION actúa como un operador OR (O) (el valor se selecciona si aparece en la primera o la segunda instrucción), mientras que INTERSECT actúa como un operador AND (Y) (el valor se selecciona si aparece en ambas instrucciones). Presenta el siguiente formato:
  • 14. SQL - Structured Query Language P á g i n a | 14 SELECT columnas FROM tabla [WHERE condiciones] INTERSECT [ALL] SELECT columnas FROM tabla [WHERE condiciones]; Ejemplo: PERSONAS_EMPRESA1 per nombre apellido1 apellido2 1 ANTONIO PEREZ GOMEZ 2 ANTONIO GARCIA RODRIGUEZ 3 PEDRO RUIZ GONZALEZ PERSONAS_EMPRESA2 per nombre apellido1 apellido2 1 JUAN APARICIO TENS 2 ANTONIO GARCIA RODRIGUEZ 3 LUIS LOPEZ VAZQUEZ SELECT nombre, apellido1 FROM personas_empresa1 INTERSECT SELECT nombre, apellido1 FROM personas_empresa2 nombre apellido1 ANTONIO GARCIA 4.2.10 Diferencia Con la sentencia SQL EXCEPT, aparecen en la tabla resultante las filas de la primera consulta que no aparecen en la segunda. Presenta el siguiente formato: SELECT columnas FROM tabla [WHERE condiciones] EXCEPT [ALL] SELECT columnas FROM tabla [WHERE condiciones]; Ejemplo: PERSONAS_EMPRESA1 per nombre apellido1 apellido2 1 ANTONIO PEREZ GOMEZ 2 ANTONIO GARCIA RODRIGUEZ 3 PEDRO RUIZ GONZALEZ PERSONAS_EMPRESA2 per nombre apellido1 apellido2 1 JUAN APARICIO TENS 2 ANTONIO GARCIA RODRIGUEZ 3 LUIS LOPEZ VAZQUEZ SELECT nombre, apellido1 FROM personas_empresa1 EXCEPT SELECT nombre, apellido1 FROM personas_empresa2 nombre apellido1 ANTONIO PERES PEDRO RUIZ