Vous êtes sur la page 1sur 75

TALLER DE BASE DE DATOS RELACIONALES SQL

Docente: Patricio Alejandro Alcayaga Dorta palcayagadorta@hotmail.com

TALLER DE BASE DE DATOS RELACIONALES

Arquitectura de las Base de datos


Definir el contexto de una base de datos y su arquitectura.

Disear conceptualmente la base de datos, de acuerdo a los requerimientos del cliente, respetando los principios del diseo de bases de datos, aplicando criterios de calidad aplicando normalizacin y optimizacin por medio de llaves.

TALLER DE BASE DE DATOS RELACIONALES

Modelamiento de datos
Operan con tcnicas de modelamiento de datos para la construccin de diferentes tipos de Bases de datos.

TALLER DE BASE DE DATOS RELACIONALES

Lenguaje de Consultas Estructurado


Crean bases de datos bajo un SGBD con Lenguaje de Consultas Estructurado. un

APRENDIZAJES

Conocer en forma general SQL


Crear BD en SQL Server a partir de Modelo Consultar BD con SQL

Qu es el SQL ?
Sublenguajes de S.Q.L. Sentencia SQL Crear BD de Prueba

Consultas Simples - SELECT

SQL

Qu es el SQL ?
El SQL (Structured query language), lenguaje de consulta estructurado, es un lenguaje surgido de un proyecto de investigacin de IBM para el acceso a bases de datos relacionales. Actualmente se ha convertido en un estndar de lenguaje de bases de datos, y la mayora de los sistemas de bases de datos lo soportan, desde sistemas para ordenadores personales, hasta grandes ordenadores. A partir del estndar cada sistema ha desarrollado su propio SQL.

SQL

Sublenguajes de S.Q.L.
DDL.: El lenguaje de definicin de datos (Data Definition Language), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.
DML.: Un lenguaje de manipulacin de datos (Data Manipulation Language), es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. SELECT, UPDATE, INSERT, DELETE.

SQL

Sublenguajes de S.Q.L.
DCL. El Lenguaje de control de datos (Data Control Language), posibilita tareas que tienen que ver ms con los datos que con la realidad que ellos representan. Estn relacionados con asignacin de privilegios (GRANT y REVOKE) y con el funcionamiento de las transacciones (COMMIT y ROLLBACK)

SQL

Sentencia SQL
Es como una frase (escrita en ingls ) con la que decimos lo que queremos obtener y de donde obtenerlo.
Empiezan con un verbo (palabra reservada que indica la accin a realizar) Seguido del resto de clusulas que varia segn el verbo utilizado Hay clusulas Obligatorias y opcionales

SQL

Como leer la notacin


SELECT ALL DISTINCT Campo *

FROM

tabla

WHERE

Condicin de bsqueda

SQL - SELECT

Consultas Simples - SELECT


Verificar base de datos y crear estructura de prueba
Permite recuperar datos de una o varias tablas

Es con mucho la ms compleja y potente de las Sentencias SQL


Forma parte del DML Resultado de la consulta es una tabla lgica Cada vez que ejecutamos la consulta se vuelve a calcular. El resultado en forma de tabla con columnas y filas

SQL - SELECT

Consultas Simples
SELECT ALL DISTINCT tabla. tabla. Campo/Columna , AS alias *

FROM

tabla
AS alias

WHERE ORDER BY

Condicin de bsqueda Campo/Columna N Campo/Columna , ASC DESC

SQL - SELECT

Ejemplo SELECT
SELECT ALL col1,col2,col3 FROM mitabla

SELECT col1,col2,col3 FROM mitabla


SELECT DISTINCT col1 FROM mitabla

SELECT col1,col2 FROM mitabla WHERE col2 = 0


SELECT col1,col2 FROM mitabla WHERE col2 = 0 ORDER BY col1 SELECT col1,col2 FROM mitabla WHERE col2 = 0 ORDER BY 1 DESC

SQL - SELECT

Consultas Simples
Ventajas de la Utilizacin del *

Evitar nombrar las columnas una a una (es ms corto).


Si aadimos una columna nueva en la tabla, esta nueva columna saldr sin tener que modificar la consulta.

SELECT * FROM oficinas

SELECT oficinas.* FROM oficinas

SQL - SELECT

Columnas de la tabla origen


Nombre simple Nombre calificado Alias de columna Columnas calculadas
SELECT nombre, oficina FROM ofiventas
SELECT ofiventas .nombre, ofiventas .oficina FROM ofiventas

SELECT idfab AS fabricante, idproducto, descripcion FROM productos


SELECT ciudad, regin, (ventas-objetivo) AS superavit FROM oficinas SELECT idfab, idproducto,(existencias * precio) AS valoracion FROM productos

SQL - SELECT

ORDER BY
Ordenar las filas del resultado de la consulta.

Podemos indicar la columna por la que queremos ordenar.


Se puede Ordenar por varias columnas. Por defecto el orden ser ascendente (ASC). Se puede ordenar en forma descendente (DESC). La clusula DESC o ASC se puede indicar para cada columna.

SQL - SELECT

SELECT nombre, oficina, contrato FROM empleados ORDER BY oficina SELECT nombre, numemp, contrato FROM empleados ORDER BY contrato DESC SELECT region, ciudad, (ventas - objetivo) AS superavit FROM oficinas ORDER BY region, 3 DESC

SQL - SELECT

DISTINCT / ALL
DISTINCT eliminan del resultado las repeticiones de filas.

ALL incluye todos los valores.


ALL es el valor que SQL asume por defecto

SELECT dir FROM oficinas

SELECT ALL dir FROM oficinas


SELECT DISTINCT dir FROM oficinas

SQL - SELECT

WHERE
Selecciona nicamente las filas que cumplan la condicin de seleccin especificada. Los valores nulos (NULL) no se incluyen. Operadores validos NOT (no) AND (y) y OR (). SELECT nombre FROM empleados WHERE oficina = 12 SELECT nombre FROM empleados WHERE oficina = 12 AND edad > 30

SQL - SELECT

WHERE - Condiciones de Seleccin

Test de comparacin.
Test de rango. Test de pertenencia a un conjunto. Test de valor nulo. Test de correspondencia con patrn.

SQL - SELECT

WHERE - Condiciones de Seleccin


Test de comparacin. = igual que <> distinto de < menor que <= menor o igual > mayor que >= mayor o igual SELECT numemp, nombre FROM empleados WHERE ventas > cuota SELECT oficina FROM oficinas WHERE ventas < objetivo * 0.8

SQL - SELECT

WHERE - Condiciones de Seleccin


Test de rango (BETWEEN).
Examina si el valor de la expresin est comprendido entre los dos valores

SELECT numemp, nombre FROM empleados WHERE ventas BETWEEN 100000 AND 500000
SELECT numemp, nombre FROM empleados WHERE (ventas >= 100000) AND (ventas <= 500000)

SQL - SELECT

WHERE - Condiciones de Seleccin


Test de pertenencia a conjunto (IN) Examina si el valor de la expresin es uno de los valores incluidos en la lista de valores. SELECT numemp, nombre, oficina FROM empleados WHERE oficina IN (12,14,16) SELECT numemp, nombre FROM empleados WHERE (oficina = 12) OR (oficina = 14) OR (oficina = 16)

SQL - SELECT

WHERE - Condiciones de Seleccin


Test de valor nulo (IS NULL).

Una condicin de seleccin puede dar como resultado el valor verdadero TRUE, falso FALSE o nulo NULL.

SELECT oficina, ciudad FROM oficinas WHERE dir IS NULL SELECT numemp, nombre FROM empleados WHERE oficina IS NOT NULL

SQL - SELECT

WHERE - Condiciones de Seleccin


Test de correspondencia con patrn (LIKE).

Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el comparar.
SELECT numemp, nombre FROM empleados WHERE nombre LIKE 'Luis%' SELECT numemp, nombre FROM empleados WHERE nombre LIKE '%Luis%' SELECT numemp, nombre FROM empleados WHERE nombre LIKE _a%'

SQL - SELECT

WHERE - LIKE
Comodines en Access
Tipo de coincidencia Varios caracteres Carcter especial Varios caracteres Un solo carcter Un solo dgito Rango caracteres Distinto dgito de Modelo Planteado 'a*a' 'a[*]a' 'ab*' 'a?a' 'a#a' de '[a-z]' '[!a-z]' 'a*a' 'abcdefg', 'abc' 'aaa', 'a3a', 'aBa' 'a0a', 'a1a', 'a2a' 'f', 'p', 'j' '9', '&', '%' 'A', 'a', '&', '~' 'An9', 'az0', 'a99' Coincide 'aa', 'aBa', 'aBBBa' No coincide 'aBC' 'aaa' 'cab', 'aab' 'aBBBa' 'aaa', 'a10a' '2', '&' 'b', 'a' '0', '1', '9' 'abc', 'aj0'

Fuera de un rango

un '[!0-9]' 'a[!b-m]#'

Combinada

SQL - SELECT

WHERE - LIKE
Comodines en SQL Server
Ejemplo LIKE 'A%' Descripcin Todo lo que comience por A

LIKE '_NG'
LIKE '[AF]%' LIKE '[A-F]%' LIKE '[A^B]%'

Todo lo que comience por cualquier carcter y luego siga NG


Todo lo que comience por A F Todo lo que comience por comprendida entre la A y la F cualquier letra

Todo lo que comience por A y la segunda letra no sea una B

En determinado motores de bases de datos, esta clusula, no reconoce el asterisco como carcter comodn y hay que sustituirlo por el carcter tanto por ciento (%).

SQL CONSULTAS MULTITABLAS

Union
Dos tablas con las mismas columnas y queremos obtener una nueva tabla con las filas de la primera y las filas de la segunda. Deja los valores duplicados fuera del resultado Ejemplo juntar registros histricos con los registros actuales.

SELECT idfab, idproducto FROM productos UNION SELECT fab, producto FROM productos_historico

SQL CONSULTAS MULTITABLAS

Union - Consideraciones
Las dos tablas/consultas deben tener el mismo nmero de columnas pero las columnas pueden llamarse de diferente forma y ser de tipos de datos distintos. Las columnas del resultado se llaman como las de la primera tablas/consulta.

Por defecto la unin no incluye filas repetidas, si alguna fila est en las dos tablas, slo aparece una vez en el resultado.
Si queremos que aparezcan todas las filas incluso las repeticiones de filas, incluimos la palabra ALL (todo en ingls).

SQL CONSULTAS MULTITABLAS

Union - Consideraciones
El empleo de ALL tienen una ventaja, la consulta se ejecutar ms rpidamente.

Se puede unir ms de dos tablas, para ello despus de la segunda consulta repetimos la palabra UNION ... y as sucesivamente. Tambin podemos indicar que queremos el resultado ordenado por algn criterio, en este caso se incluye la clusula ORDER BY. La clusula ORDER BY se escribe despus de la ltima consulta, al final de la sentencia; se deben de utilizar los nombres de columna de la primera consulta ya que son los que se van a utilizar para nombrar las columnas del resultado.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
Consiste en concatenar filas de una tabla con filas de otra.
Obtenemos una tabla con la unin de las Columnas de la primera y segunda tabla. Obtenemos una tabla con la concatenacin de las Filas de la primera y segunda tabla.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
Permite obtener una fila con datos de las dos tablas

Los tipos de composicin de tablas son:

El Producto Cartesiano El INNER JOIN El LEFT / RIGHT JOIN

SQL CONSULTAS MULTITABLAS

Composicin de tablas
Producto Cartesiano. Son todas las posibles concatenaciones de filas de la primera tabla con filas de la segunda tabla.

FROM tabla AS alias ,

El producto cartesiano se indica poniendo en la FROM las tablas que queremos componer separadas por comas, podemos obtener as el producto cartesiano de dos, tres, o ms tablas.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
Producto Cartesiano.

Hay que tener en cuenta que el producto cartesiano obtiene todas las posibles combinaciones de filas por lo tanto si tenemos dos tablas de 100 registros cada una, el resultado tendr 100x100 filas.
Se puede componer una tabla consigo misma, es obligatorio utilizar un alias por lo menos para una de las dos. Se puede acotar la consulta utilizando columnas de emparejamiento.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.

Ms eficiente que con el producto cartesiano. Utiliza ndices


FROM Tabla1 INNER JOIN Tabla2 ON
Tabla1.col1 Comp. Tabla2.col2

Ejemplo: SELECT * FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.col1 Comp. Tabla2.col2

Tabla1 y Tabla2 son especificaciones de tabla (nombre de tabla con alias o no), de las tablas cuyos registros se van a combinar. Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de tabla. col1, col2 son las columnas de emparejamiento. Observar que dentro de la clusula ON los nombres de columna deben ser nombres cualificados (llevan delante el nombre de la tabla y un punto).

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.col1 Comp. Tabla2.col2

Las columnas de emparejamiento deben contener la misma clase de datos, las dos de tipo texto, de tipo fecha etc... los campos numricos deben ser de tipos similares. Por ejemplo, se puede combinar campos AutoNumrico y Long puesto que son tipos similares, sin embargo, no se puede combinar campos de tipo Simple y Doble. Adems las columnas no pueden ser de tipo Memo ni OLE. comp representa cualquier operador de comparacin ( =, <, >, <=, >=, o <> ) y se utiliza para establecer la condicin de emparejamiento.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.col1 Comp. Tabla2.col2

Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR poniendo cada condicin entre parntesis.
SELECT * FROM pedidos INNER JOIN productos ON (pedidos.fab = productos.idfab) AND (pedidos.producto = productos.idproducto)

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.

Se pueden combinar ms de dos tablas. En este caso hay que sustituir en la sintaxis una tabla por un INNER JOIN completo.
SELECT * FROM (pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie) INNER JOIN empleados ON pedidos.rep = empleados.numemp

En vez de tabla1 hemos escrito un INNER JOIN completo.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
INNER JOIN.

SELECT * FROM clientes INNER JOIN (pedidos INNER JOIN empleados ON pedidos.rep = empleados.numemp) ON pedidos.clie = clientes.numclie

En este caso hemos sustituido tabla2 por un INNER JOIN completo.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
LEFT JOIN y RIGHT JOIN.

Tambin denominada composicin externa


Son una extensin del INNER JOIN

Una composicin interna slo obtienen las filas que tienen al menos una fila de la otra tabla que cumpla la condicin
FROM Tabla1
LEFT JOIN Tabla2 ON Tabla1.col1 Comp. Tabla2.col2

SQL CONSULTAS MULTITABLAS

Composicin de tablas
LEFT JOIN y RIGHT JOIN. Observe que pasa con las siguientes consultas
SELECT empleados.*,ciudad FROM empleados, oficinas WHERE empleados.oficina = oficinas.oficina SELECT empleados.*, ciudad FROM empleados INNER JOIN oficinas ON empleados.oficina = oficinas.oficina SELECT * FROM empleados LEFT JOIN oficinas ON empleados.oficina = oficinas.oficina SELECT * FROM empleados RIGHT JOIN oficinas ON empleados.oficina = oficinas.oficina

SQL CONSULTAS MULTITABLAS

Composicin de tablas
LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operacin INNER JOIN. INNER JOIN no se puede anidar dentro de LEFT JOIN o RIGHT JOIN.

Los anidamientos de JOIN de distinta naturaleza no funcionan siempre.

SQL CONSULTAS MULTITABLAS

Composicin de tablas
SELECT * FROM clientes INNER JOIN (empleados LEFT JOIN oficinas ON empleados.oficina = oficinas.oficina) ON clientes.repclie = empleados.numclie

Obtener los datos de la oficina de luego aadimos los clientes de cada obtenemos los clientes que tienen asignado y los datos de la oficina asignado.

cada empleado, y representante, as un representante del representante

Si hubiramos puesto INNER en vez de LEFT no saldran los clientes que tienen el empleado 110

SQL CONSULTAS MULTITABLAS

Composicin de tablas

SQL CONSULTAS RESUMEN

Tambin se conocen como consultas sumarias.


Las filas resultantes son un resumen de las filas de la tabla origen, corresponden a varias filas de la tabla origen

SQL CONSULTAS RESUMEN

SINTAXIS
SELECT lista de seleccin

FROM

Origen de datos

WHERE

Condicin de seleccin

GROUP BY

Columnas de agrupacin

HAVING ORDER BY

Condicin de seleccin
Columna de ordenacin ;

SQL CONSULTAS RESUMEN

FUNCIONES DE COLUMNAS
SUM() AVG() MIN() MAX() COUNT(nb columna) COUNT(*)
SELECT SUM(ventas) FROM oficinas

SELECT COUNT(*) FROM empleados


SELECT (AVG(ventas) * 3) + SUM(cuota) FROM ... Es correcto SELECT AVG(SUM(ventas)) FROM ... NO es correcto

SQL CONSULTAS RESUMEN

GROUP BY
Para obtener subtotales

SELECT SUM(ventas) FROM empleados


Obtiene la suma de las ventas de todos los empleados. SELECT SUM(ventas) FROM empleados GROUP BY oficina Se forma un grupo para cada oficina

SQL CONSULTAS RESUMEN

GROUP BY
Una columna de agrupacin no puede ser de tipo memo u OLE.
La columna de agrupacin se puede indicar mediante un nombre de columna o cualquier expresin vlida basada en una columna pero no se pueden utilizar los alias de campo.
SELECT importe/cant , SUM(importe) FROM pedidos GROUP BY importe/cant Est permitido SELECT importe/cant AS precio, SUM(importe) FROM pedidos GROUP BY precio No est permitido

SQL CONSULTAS RESUMEN

GROUP BY

Queremos obtener la suma de las ventas de las oficinas agrupadas por regin y ciudad. Qu Query nos sirve?

SELECT region,ciudad,SUM(ventas) FROM oficinas GROUP BY region,ciudad

SQL CONSULTAS RESUMEN

HAVING
Nos permite seleccionar filas de la tabla resultante de una consulta de resumen. Queremos saber las oficinas con un promedio de ventas de sus empleados mayor que 500.000.

SELECT oficina FROM empleados GROUP BY oficina HAVING AVG(ventas) > 500000

SQL CONSULTAS RESUMEN

RESUMEN
Cmo se ejecuta internamente una consulta de resumen?
1. Primero se forma la tabla origen de datos segn la clusula FROM, 2. Se seleccionan del origen de datos las filas segn la clusula WHERE, 3. Se forman los grupos de filas segn la clusula GROUP BY, 4. Por cada grupo se obtiene una fila en la tabla resultante con los valores que aparecen en las clusulas GROUP BY, HAVING y en la lista de seleccin, 5. Se seleccionan de la tabla resultante las filas segn la clusula HAVING, 6. Se eliminan de la tabla resultante las columnas que no aparecen en la lista de seleccin, 7. Se ordenan las filas de la tabla resultante segn la clusula ORDER BY

SQL CONSULTAS RESUMEN

RESUMEN

Una consulta se convierte en consulta de resumen en cuanto aparece GROUP BY, HAVING o una funcin de columna En una consulta de resumen, la lista de seleccin y la clusula HAVING slo pueden contener valores constantes funciones de columna columnas de agrupacin (columnas que aparecen en la clusula GROUP BY) o cualquier expresin basada en las anteriores.

SQL SUBCONSULTA

SELECT DENTRO DEL SELECT


Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la clusula HAVING de la consulta principal. Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal. No puede contener la clusula ORDER BY. No puede ser la UNION de varias sentencias SELECT. La subconsulta se ejecuta por cada fila de la consulta principal. Se aconseja no utilizar campos calculados en las subconsultas.

SQL SUBCONSULTA

EJEMPLOS
SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos WHERE rep = numemp) FROM empleados; SELECT numemp, nombre FROM empleados WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie FROM clientes WHERE nombre = 'Julia Antequera')) SELECT numemp, nombre FROM empleados WHERE contrato = (SELECT MIN(fechapedido) FROM pedidos)

SQL SUBCONSULTA

EJEMPLOS
SELECT oficina, ciudad FROM oficinas WHERE objetivo > (SELECT SUM(ventas) FROM empleados WHERE empleados.oficina = oficinas.oficina) SELECT oficina, ciudad FROM oficinas WHERE objetivo > ANY (SELECT SUM(cuota) FROM empleados GROUP BY oficina)

SELECT oficina, ciudad FROM oficinas WHERE objetivo > ALL (SELECT SUM(cuota) FROM empleados GROUP BY oficina)

SQL SUBCONSULTA

EJEMPLOS
SELECT numemp, nombre, oficina FROM empleados WHERE oficina IN (SELECT oficina FROM oficinas WHERE region = 'este') SELECT numemp, nombre, oficina FROM empleados WHERE EXISTS (SELECT * FROM oficinas WHERE region = 'este' AND empleados.oficina = oficinas.oficina)

Las condiciones asociadas a las subconsultas son las siguientes: el test de comparacin con subconsulta el test ANY Tarea Investigar el test ALL Condiciones el test IN el test EXISTS

SQL ACTUALIZACIN DE DATOS

INSERT INTO...VALUES
INSERT INTO Destino VALUES

NbColumn ,

);

Inserta una sola fila Los registros se agregan siempre al final de la tabla. Destino es el nombre de la tabla La palabra reservada VALUES se puede sustituir por la palabra SELECT A continuacin de la palabra VALUES, entre parntesis se escriben los valores que queremos aadir Cuando la tabla tiene una columna de tipo contador (AutoNumber), lo normal es no asignar valor a esa columna

( NbColumn ) ,

SELECT

SQL ACTUALIZACIN DE DATOS

INSERT INTO...VALUES ANALIZAR


INSERT INTO empleados VALUES (200, 'Juan Lpez', 30, NULL, 'rep ventas', '06/23/01', NULL, 350000, 0)

INSERT INTO empleados (numemp, oficina, nombre, titulo, cuota, contrato, ventas) VALUES (200, 30, 'Juan Lpez', 'rep ventas',350000, '06/23/01',0)

SQL ACTUALIZACIN DE DATOS

INSERT INTO...VALUES
Ventajas de utilizar una lista de columnas La sentencia queda ms fcil de interpretar
Nos aseguramos que el valor lo asignamos a la columna que queremos. No pasara nada si cambia el orden de las columnas en la tabla si se aade una nueva columna a la tabla no dara error y en la nueva columna se insertara el valor predeterminado.

SQL ACTUALIZACIN DE DATOS

INSERT INTO...VALUES
Errores que se pueden producir Si la tabla de destino tiene clave principal y en ese campo intentamos no asignar valor, asignar el valor nulo o un valor que ya existe en la tabla, el motor de base de datos no aade la fila y da un mensaje de error de 'infracciones de clave'.
Si tenemos definido un ndice nico (sin duplicados) e intentamos asignar un valor que ya existe en la tabla tambin devuelve el mismo error. Si la tabla est relacionada con otra, se seguirn las reglas de integridad referencial.

SQL ACTUALIZACIN DE DATOS

Insertar varias filas INSERT INTO...SELECT


INSERT INTO Destino
SELECT ;

( NbColumn ) ,

Sustituimos la clusula VALUES por la sentencia SELECT.


Es como si tuvisemos una INSERT...VALUES por cada fila resultado de la sentencia SELECT. Si no queremos asignar valores a todas las columnas entonces tenemos que indicar entre parntesis la lista de columnas a rellenar despus del nombre del destino.

SQL ACTUALIZACIN DE DATOS

Insertar varias filas INSERT INTO...SELECT


Restricciones segn el estndar ANSI/ISO La consulta no puede tener una clusula ORDER BY,

La tabla destino de la sentencia INSERT no puede aparecer en la clusula FROM de la consulta o de ninguna subconsulta que sta tenga. Esto prohibe insertar parte de una tabla en s misma.
La consulta no puede ser la UNION de varias sentencias SELECT diferentes, El resultado de la consulta debe contener el mismo nmero de columnas que las indicadas para insertar y los tipos de datos deben ser compatibles columna a columna.

SQL ACTUALIZACIN DE DATOS

Insertar varias filas INSERT INTO...SELECT

Tablas con la misma estructura. INSERT INTO repres SELECT * FROM empleados WHERE titulo = 'rep ventas' Tablas con distinta estructura.

INSERT INTO repres SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep ventas'
INSERT INTO repres (numemp, oficinarep, nombrerep) SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep ventas'

SQL ACTUALIZACIN DE DATOS

Insertar filas en una nueva tabla SELECT...INTO


SELECT lista de seleccin INTO Nueva Tabla

FROM

Origen de datos

Esta sentencia inserta filas creando en ese momento la tabla donde se insertan las filas. Se suele utilizar para guardar en una tabla el resultado de una SELECT o hacer un respaldo de datos no de estructura. Las columnas de la nueva tabla tendrn el mismo tipo y tamao que las columnas origen no se transfiere ninguna otra propiedad del campo o de la tabla como por ejemplo las claves e ndices.
SELECT * INTO t2 FROM empleados

SQL ACTUALIZACIN DE DATOS

Modificar el contenido de las filas (UPDATE)


UPDATE Origen SET Columna=Expresin , Condicin

WHERE

UPDATE empleados SET ventas = 0 WHERE oficina = 12; UPDATE oficinas INNER JOIN empleados ON oficinas.oficina = empleados.oficina SET cuota=objetivo*0.01;

SQL ACTUALIZACIN DE DATOS

Eliminar las filas (DELETE)


DELETE Tabla.* * FROM Origen WHERE Condicin

La sentencia DELETE elimina filas de una tabla.


Una vez borrados, los registros no se pueden recuperar. Si la tabla donde borramos est relacionada con otras tablas se podrn borrar o no los registros siguiendo las reglas de integridad referencial definidas en las relaciones.

SQL ACTUALIZACIN DE DATOS

Eliminar las filas (DELETE)

DELETE * FROM pedidos WHERE clie IN (SELECT numclie FROM clientes WHERE nombre = 'Julian Lpez'); DELETE pedidos.* FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie WHERE nombre = 'Julian Lpez';

DELETE * FROM pedidos; o DELETE FROM pedidos; Borra todas las filas de pedidos.

Lenguaje de Definicin de Datos

CREATE TABLE
La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos.
CREATE TABLE pedidos ( codigo numeric(11) identity, idfab varchar(10) NULL, idproducto varchar(10) NULL, numemp numeric(11) NOT NULL, numclie numeric(11) NULL, numpedido int NOT NULL default 0, fechapedido datetime NULL default NULL, cant int NULL default 0, importe int NULL default NULL, CONSTRAINT PK_pedidos PRIMARY KEY nonclustered (codigo), CONSTRAINT FK_productos_idfab FOREIGN KEY (idfab) REFERENCES productos(idfab) )

Lenguaje de Definicin de Datos

ALTER TABLE
La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe.
ADD (aade)

ALTER (modifica)
DROP (elimina)

COLUMN (columna)
CONSTRAINT (restriccin).

Lenguaje de Definicin de Datos

ALTER TABLE

ALTER TABLE tab1 ADD COLUMN col3 integer NOT NULL CONSTRAINT c1 UNIQUE
ALTER TABLE tab1 ADD col3 integer ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col3) ALTER TABLE tab1 DROP COLUMN col3 ALTER TABLE tab1 DROP col3

Lenguaje de Definicin de Datos

DROP TABLE
La sentencia DROP TABLE sirve para eliminar una tabla.
DROP TABLE tab1

Lenguaje de Definicin de Datos

CREATE INDEX

CREATE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)

DROP INDEX
DROP INDEX ind1 ON clientes

FIN SQL

Vous aimerez peut-être aussi