You are on page 1of 21

Introducción a TSQL

Unidad 9

Introducción a SQL
Unidad 6

Autor
Isabel Ponce
Unidad 9

Objetivos

• Insertar datos
• Modificar datos
• Borrar datos
• Archivos Temporales
• Vistas
• Select into
Manipulación de Datos

• Hasta ahora se han cubierto diversas


formas de extraer datos de las
tablas.

• Pero esta es sólo una parte de SQL.

• Se debe conocer también la forma


de agregar nuevos datos a una tabla,
modificar los datos existentes y
borrar los datos.

• Para hacerlo se utilizan las


sentencias insert, update y delete.

• Estas instrucciones también son


referidas como DML o lenguaje de
manipulación de datos.
Insert

• Sintaxis:

insert [into] <nombreTabla>


[(<listaColumnas>)]
{values (<listaExpresiones>)|
instrucción select}

• La instrucción insert se usa para


agregar datos a una tabla.

• Tiene dos cláusulas, insert y values


con una cláusula de lista de columnas
opcional.

• El insert especifica en qué tabla se


agregan los datos y values especifica
cuáles son los datos a ingresar.

• Cualquier dato caracter o fecha debe


ser encerrado entre apóstrofes.
Insert

insert into authors


values('409-56-7008', 'Bennet',
'Abraham', '415 658-9932', '6223
Bateman St.', 'Berkeley', 'CA', '94705')

• Si se especifica una cantidad


numérica no va entre apóstrofes.

• Si no se ingresa un valor para una


columna en particular, se especifica
como null.

• Ya que en la instrucción anterior no


se tiene una lista de columnas, los
datos son insertados en la tabla en el
orden en que fueron creadas las
columnas.
Insert

• Por ejemplo, el resultado de esta


instrucción sería un nuevo renglón en la
tabla que tiene lo siguiente:

au_id = 409-56-7008
au_lname = Bennet
au_fname = Abraham
phone = 415 658-9932
address = 6223 Bateman St.
city = Berkeley
state = CA
zip = 94705

• Si no se tuviera el valor para address, la


instrucción insert podría ser la que sigue:

insert into authors


values ('409-56-7008', 'Bennet',
'Abraham','415 658-9932',null, 'Berkeley',
'CA', '94705')
Insert

• La palabra into es opcional, pero se


recomienda usarla por claridad y por que
es parte del estándar SQL.

• No es necesario insertar los datos


siempre en el orden exacto de las
columnas en la tabla, pero entonces se
debe especificar la lista de columnas:

insert into authors


(au_lname, city, state, au_id,
au_fname, zip, address, phone)
values('Bennet', 'Berkeley', 'CA',
'409-56-7008', 'Abraham', '94705',
'6223 Bateman St.', '415 658-9932')

• Esta instrucción produce el mismo


resultado que la anterior.

• También se debe usar una lista de


columnas si no se especifican todos los
valores.
Insert

• En la tabla authors, au_id, au_lname, y


au_fname son las únicas columnas que
requieren un valor no nulo (not null). Así,
también podríamos escribir:

insert into authors (au_id, au_lname,


au_fname)
values ('409-56-7008', 'Bennet', 'Abraham')
• Finalmente, la cláusula values puede ser
remplazada por una instrucción select.

• La forma en que funciona esta opción es:


la primer columna del resultado de la
instrucción select corresponde a la
primera columna de la lista de columnas
en el insert; la segunda a la segunda, etc.

insert into authors (au_id, au_lname,


au_fname)
select ID, LastName, FirstName from
authors_tmp
Insert

• Se puede obtener el mismo resultado sin


especificar una lista de columnas.

• El resultado de la instrucción select debe


coincidir con la tabla en la que se desea
insertar tanto en número como en tipo
de columnas.

• Los nombres de las columnas no


requieren ser los mismos.

insert into authors


select * from authors_tmp

• La instrucción select que se usa para


insertar los datos puede ser de cualquier
variedad. Se puede usar una
subquery(s), group by, order by, where,
having, joins, etc.
Update

update <nombreTabla>* set


<nombreColumna1 = {expresión | null |
DEFAULT | (instrucción select)>*}
[where <condiciones>] ]

• Una instrucción update es usada para


modificar los datos existentes en una
tabla.

• Por ejemplo, si se desea dar 10% de


descuento en todos los títulos:

update titles set price = price * .9;

• La cláusula where se emplea para


restringir cuáles son los renglones que
se desean actualizar.

• Por ejemplo, si sólo se desea dar el


descuento a aquellos libros publicados
antes del 1/1/87:
Update

update titles set price = price * .9


where pubdate < '1/1/87'

• También se pueden modificar varias


columnas al mismo tiempo:

update authors
set city = 'Oakland West',
zip = '94611'
where city = 'Oakland' and
address like '%College%‘

• Las columnas que tienen la definición


auto_increment (secuencias), no pueden
insertarse o modificarse manualmente en
la mayoría de los RDBMSs, ya que el
sistema lleva el control, por tanto:

update titles_ident
set title_id = 200
where title_id = 1 retornaría un error.
Update

• También se puede sustituir la


expresión con DEFAULT, NULL ó
una instrucción SELECT

• Por ejemplo, si queremos actualizar


el precio de un libro a partir del
precio de otro libro se puede hacer:

create table tp (c1 int);

insert into tp values (5);

update tp
set c1 = (select price
from titles
where title_id = ‘BU1032’)
where c1 = 5;
Update

• Cuando se requiere restringir la


actualización a un conjunto de
renglones cuyo valor depende de
mas de una tabla, se debe usar la
cláusula from y el join
correspondiente.

• Por ejemplo, si queremos hacer el


descuento sólo en aquellos libros
que son de editoriales en CA:

update titles t, publishers p


set price = price * .9
where t.pub_id = p.pub_id
and p.state = 'CA‘;
Delete

• Finalmente para borrar datos de una


tabla, se usa una instrucción delete.

delete from <NombreTabla>


[from <NombreTabla>*]
[where condiciones]

• Si no se especifica alguna condición


de búsqueda, se borrarán todos los
renglones de la tabla especificada.

delete from authors;


Delete

• Para restringir los renglones que se


desean borrar se usa la cláusula
where.

delete from authors


where state = 'CA‘;

• Para borrar renglones donde el


criterio se basa en múltiples tablas,
se usa la cláusula from y el join
correspondiente.

delete t from titles t, publishers p


where t.pub_id = p.pub_id and
state = 'CA‘;
Truncate

• También pueden borrarse datos en una


tabla sin usar una instrucción delete.

• Esto se realiza mediante un comando


truncate.

truncate [table] <nombreTabla>;

• Por ejemplo:
truncate table authors;
es equivalente a:
delete from authors;

• La diferencia está en cómo se manejan


estos dos comandos.

• Truncate es una operación segura para


transacciones.
Truncate

• Generalmente no se requiere usar


un comando truncate.

• En algunos sitios cliente, este es un


comando reservado para el DBA
(database administrator).

• Truncate se ejecuta más rápido,


porque puede crear otra tabla con la
misma estructura sin los datos, pero
este comando debe ser evitado.
Archivos Temporales

• Las tablas temporales se usan para


almacenar resultados parciales para
procesos futuros.

• Estas son usadas cuando se


requiere ejecutar un proceso que no
puede ser realizado en una sola
instrucción SQL.

• Las tablas temporales pueden ser un


apoyo poderoso para el código de
las aplicaciones.

• Deben usarse lo mínimo posible y se


borran al salir de la sesi[on.

• Se crean con create table y la opción


TEMPORARY.
Resumen

• La instrucción insert permite agregar


datos en una tabla.
• Insert puede contener una lista de
columnas
• Insert puede también obtener sus
valores desde otra tabla.
• La instrucción update se usa para
modificar los datos existentes.
• Update e Insert no deben ser
ejecutados en una columna de
secuencia.
• Delete borra los datos de una tabla.
• Insert, update y delete son parte del
DML (Data Manipulation Language).
• Truncate también borra todos los
datos de una tabla, pero debe
evitarse su uso.
Resumen

• Las tablas temporales pueden


crearse para almacenar resultados
intermedios.
Ejercicios

1. Insertar los siguientes datos en la tabla de


autores:

au_id au_lname au_fname Comtract


123-45-6789 Jordan Gregory 1
123-45-6788 Jonson Michael 0
123-45-6787 Miller Jim

• Te has dado cuenta que algunos datos


son incorrectos, corrígelos de acuerdo a
la siguiente tabla:
au_id au_lname au_fname Comtract
123-45-6788 Johnson Michael 0

123-45-6787 Miller James

12. Gregory Jordan ha muerto y ya no se


publicarán sus libros, así que debes
borrarlo de la tabla de autores

14. Borrar todos los autores

You might also like