Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
del
concept
o
Concepto
Operadores relacionales
10
Comentarios
11
12
Clave primaria
13
14
15
Truncate table
16
17
18
19
20
21
22
Columnas calculadas
(operadores aritmticos y de
concatenacin)
23
Alias
Detalle
Problem
Problema
del
a
concept
a
resuelto
o
resolver
24
Funciones
25
Orden
del
concept
o
Concepto
26
Funciones matemticas
27
28
29
30
31
32
33
34
35
36
Funciones de agrupamiento
(count - sum - min - max avg)
37
38
39
40
41
Funcin grouping
42
43
44
Clusula top
45
46
Detalle
Problem
Problema
del
a
concept
a
resuelto
o
resolver
47
Restriccin default
48
Restriccin check
49
50
Orden
del
concept
o
Concepto
51
Restriccin unique
52
Informacin de restricciones
(sp_helpconstraint)
53
54
55
56
57
Valores predeterminados
(create default)
58
59
Informacin de valores
predeterminados
60
Indices
61
Indices agrupados y no
agrupados (clustered y
nonclustered)
62
Creacin de ndices
63
Regenerar ndices
64
Eliminar ndices
65
66
67
68
Detalle
Problem
Problema
del
a
concept
a
resuelto
o
resolver
69
70
71
Autocombinacin
72
Combinaciones y funciones de
agrupamiento
73
Combinacin de ms de dos
tablas
74
75
Clave fornea
Orden
del
Concepto
concepto
76
77
78
79
80
81
82
Unin
83
84
85
86
Campos calculados
87
88
89
90
Detalle
del
concepto
Problema
resuelto
Problema
a
resolver
91
Subconsultas
92
93
Subconsultas con in
94
95
Subconsultas correlacionadas
96
Exists y No Exists
97
Subconsulta simil
autocombinacin
98
99
100
Subconsulta (insert)
Orden
del
concept
o
Concepto
101
102
go
103
Vistas
104
Vistas (informacin)
105
vistas (encriptar)
106
Vistas (eliminar)
107
108
109
110
111
112
Variables de usuario
113
114
Detalle
Problem
Problema
del
a
concept
a
resuelto
o
resolver
115
116
117
118
119
Procedimientos almacenados
120
Procedimientos almacenados
(crear - ejecutar)
121
Procedimientos almacenados
(eliminar)
122
Procedimientos almacenados
(parmetros de entrada)
123
Procedimientos almacenados
(parmetros de salida)
124
Procedimientos almacenados
(return)
125
Procedimientos almacenados
(informacin)
Orden
del
concept
o
Concepto
101
102
go
103
Vistas
104
Vistas (informacin)
105
vistas (encriptar)
106
Vistas (eliminar)
107
108
109
110
111
Detalle
Problem
Problema
del
a
concept
a
resuelto
o
resolver
112
Variables de usuario
113
114
115
116
117
118
119
Procedimientos almacenados
120
Procedimientos almacenados
(crear - ejecutar)
121
Procedimientos almacenados
(eliminar)
122
Procedimientos almacenados
(parmetros de entrada)
123
Procedimientos almacenados
(parmetros de salida)
124
Procedimientos almacenados
(return)
125
Procedimientos almacenados
(informacin)
Orden
del
concepto
Concepto
151
152
Disparador (condicionales)
Detalle
Problema
Problema
del
a
resuelto
concepto
resolver
La tabla debe ser definida con un nombre que la identifique y con el cual
accederemos a ella.
Creamos una tabla llamada "usuarios" y entre parntesis definimos los
campos y sus tipos:
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
Cada campo con su tipo debe separarse con comas de los siguientes,
excepto el ltimo.
Cuando se crea una tabla debemos indicar su nombre y definir al menos
un campo con su tipo de dato. En esta tabla "usuarios" definimos 2
campos:
nombre: que contendr una cadena de caracteres de 30 caracteres
de longitud, que almacenar el nombre de usuario y
clave: otra cadena de caracteres de 10 de longitud, que guardar
la clave de cada usuario.
Cada usuario ocupar un registro de esta tabla, con su respectivo
nombre y clave.
Para nombres de tablas, se puede utilizar cualquier caracter permitido
para nombres de directorios, el primero debe ser un caracter alfabtico y
no puede contener espacios. La longitud mxima es de 128 caracteres.
Si intentamos crear una tabla con un nombre ya existente (existe otra
tabla con ese nombre), mostrar un mensaje indicando que ya hay un
objeto llamado 'usuarios' en la base de datos y la sentencia no se
ejecutar. Esto es muy importante ya que cuando haga los ejercicios en
este sitio puede haber otra persona que haya creado una tabla con el
nombre que usted especifique.
Para ver la estructura de una tabla usamos el procedimiento almacenado
"sp_columns" junto al nombre de la tabla:
sp_columns usuarios;
Para eliminar una tabla usamos "drop table" junto al nombre de la tabla a
eliminar:
drop table usuarios;
Problema:
Vamos a crear una tabla llamada "usuarios". En primer lugar
vamos a eliminar la tabla "usuarios" averiguando si existe (a
esto vamos a repetirlo siempre porque puede haber otro
usuario que haya creado una tabla con el mismo nombre):
if object_id('usuarios') is not null
drop table usuarios;
Eliminemos la tabla:
drop table usuarios;
Verifiquemos si se ha eliminado:
sp_tables @table_owner='dbo';
);
sp_tables @table_owner='dbo';
sp_columns usuarios;
sp_tables @table_owner='dbo';
Problema:
Vamos a crear una tabla llamada "usuarios". En primer lugar
vamos a eliminar la tabla "usuarios" averiguando si existe
(recuerde que debemos repetir siempre esto porque puede
haber otro usuario que haya creado una tabla con el mismo
nombre en el servidor www.sqlserverya.com.ar:
if object_id('usuarios') is not null
drop table usuarios;
clave varchar(10)
);
Primer problema:
Necesita almacenar los datos de sus amigos en una
tabla. Los datos que guardar sern: apellido,
nombre, domicilio y telfono.
1- Elimine la tabla "agenda" si existe:
if object_id('agenda') is not null
drop table agenda;
2- Intente crear una tabla llamada "/agenda":
create table /agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
aparece un mensaje de error porque usamos un
caracter invlido ("/") para el nombre.
3- Cree una tabla llamada "agenda", debe tener los
siguientes campos: apellido, varchar(30); nombre,
varchar(20); domicilio, varchar (30) y telefono,
varchar(11):
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
4- Intente crearla nuevamente. Aparece mensaje de
error.
5- Visualice las tablas existentes (sp_tables
@table_owner='dbo').
6- Visualice la estructura de la tabla "agenda"
(sp_columns).
7- Elimine la tabla.
8- Intente eliminar la tabla, sin controlar si existe. Debe
aparecer un mensaje de error.
Ver solucin
if object_id('agenda') is not null
drop table agenda;
create table /agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
sp_tables @table_owner='dbo';
sp_columns agenda;
drop table agenda;
drop table agenda;
Segundo problema:
Necesita almacenar informacin referente a los libros
de su biblioteca personal. Los datos que
guardar sern: ttulo del libro, nombre del autor y
nombre de la editorial.
1- Elimine la tabla "libros", si existe:
if object_id('libros') is not null
drop table libros;
2- Verifique que la tabla "libros" no existe en la base de
datos activa (sp_tables @table_owner='dbo').
3- Cree una tabla llamada "libros". Debe definirse con
los siguientes campos: titulo, varchar(20);
autor, varchar(30) y editorial, varchar(15).
4- Intente crearla nuevamente. Aparece mensaje de
error.
5- Visualice las tablas existentes.
6- Visualice la estructura de la tabla "libros".
7- Elimine la tabla.
8- Intente eliminar la tabla nuevamente.
if object_id('libros') is not null
drop table libros;
sp_tables @table_owner='dbo';
create table libros(
titulo varchar(20),
autor varchar(30),
editorial varchar(15)
);
create table libros(
titulo varchar(20),
autor varchar(30),
editorial varchar(15)
);
sp_tables @table_owner='dbo';
sp_columns libros;
drop table libros;
drop table libros;
Problema:
Vamos a crear una tabla llamada "libros". En primer lugar
vamos a eliminar la tabla "libros" averiguando si existe:
if object_id('libros') is not null
drop table libros;
sp_columns libros;
Primer problema:
Un videoclub que alquila pelculas en video almacena la
informacin de sus pelculas en una tabla
llamada "peliculas"; para cada pelcula necesita los
siguientes datos:
-nombre, cadena de caracteres de 20 de longitud,
-actor, cadena de caracteres de 20 de longitud,
-duracin, valor numrico entero.
-cantidad de copias: valor entero.
1- Elimine la tabla, si existe:
if object_id('peliculas')is not null
drop table peliculas;
2- Cree la tabla eligiendo el tipo de dato adecuado para
cada campo:
create table peliculas(
nombre varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
3- Vea la estructura de la tabla:
4- Ingrese los siguientes registros:
Problema:
Trabajamos con la tabla "libros" que almacena los datos de los
libros de una librera.
Eliminamos la tabla, si existe:
if object_id('libros') is not null
drop table libros;
Creamos la tabla:
create table libros(
titulo varchar(40),
autor varchar(30),
editorial varchar(15),
precio float,
cantidad integer
);
Primer problema:
Un videoclub que alquila pelculas en video almacena la
informacin de sus pelculas en alquiler en
una tabla llamada "peliculas".
1- Elimine la tabla, si existe:
if object_id('peliculas') is not null
drop table peliculas;
2- Cree la tabla:
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
3- Vea la estructura de la tabla (sp_columns).
4- Ingrese alos siguientes registros:
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',180,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',190,2);
insert into peliculas (titulo, actor, duracion, cantidad)
Segundo problema:
Una empresa almacena los datos de sus empleados en
una tabla llamada "empleados".
1- Elimine la tabla, si existe:
if object_id('empleados') is not null
drop table empleados;
2- Cree la tabla:
create table empleados(
nombre varchar(20),
documento varchar(8),
sexo varchar(1),
domicilio varchar(30),
sueldobasico float
);
3- Vea la estructura de la tabla:
sp_columns empleados;
4- Ingrese algunos registros:
insert into empleados (nombre, documento, sexo,
domicilio, sueldobasico)
values ('Juan Juarez','22333444','m','Sarmiento
123',500);
insert into empleados (nombre, documento, sexo,
domicilio, sueldobasico)
values ('Ana Acosta','27888999','f','Colon 134',700);
insert into empleados (nombre, documento, sexo,
domicilio, sueldobasico)
values ('Carlos Caseres','31222333','m','Urquiza
479',850);
5- Muestre todos los datos de los empleados
Problema:
Trabajamos con la tabla "usuarios" que consta de 2 campos:
nombre de usuario y clave.
Eliminamos la tabla, si existe:
if object_id('usuarios') is not null
drop table usuarios;
Creamos la tabla:
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
sp_columns usuarios;
Primer problema:
Trabaje con la tabla "agenda" en la que registra los
datos de sus amigos.
1- Elimine "agenda", si existe:
sp_columns agenda;
insert into agenda(apellido,nombre,domicilio,telefono)
values
('Acosta', 'Ana', 'Colon 123', '4234567');
insert into agenda(apellido,nombre,domicilio,telefono)
values
('Bustamante', 'Betina', 'Avellaneda 135', '4458787');
insert into agenda(apellido,nombre,domicilio,telefono)
values
('Lopez', 'Hector', 'Salta 545', '4887788');
insert into agenda(apellido,nombre,domicilio,telefono)
values
('Lopez', 'Luis', 'Urquiza 333', '4545454');
insert into agenda(apellido,nombre,domicilio,telefono)
values
('Lopez', 'Marisa', 'Urquiza 333', '4545454');
select *from agenda;
select *from agenda
where nombre='Marisa';
select nombre,domicilio from agenda
where apellido='Lopez';
select nombre from agenda
where telefono='4545454';
Segundo problema:
Trabaje con la tabla "libros" de una librera que guarda
informacin referente a sus libros
disponibles para la venta.
1- Elimine la tabla si existe.
7 - Operadores relacionales
igual
distinto
mayor
menor
mayor o igual
menor o igual
Queremos seleccionar los libros cuyo precio sea menor o igual a 30:
select *from libros
where precio<=30;
Problema:
Trabajamos con la tabla "libros" de una librera.
Eliminamos la tabla "libros", si existe:
if object_id('libros') is not null
drop table libros;
editorial varchar(15),
precio float
);
select titulo,precio
from libros
where precio>20;
Primer problema:
Un comercio que vende artculos de computacin
registra los datos de sus artculos en una tabla con
ese nombre.
1- Elimine "articulos", si existe:
if object_id('articulos') is not null
drop table articulos;
2- Cree la tabla, con la siguiente estructura:
create table articulos(
codigo integer,
nombre varchar(20),
descripcion varchar(30),
precio float,
cantidad integer
);
3- Vea la estructura de la tabla (sp_columns).
4- Ingrese algunos registros:
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (1,'impresora','Epson Stylus C45',400.80,20);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (2,'impresora','Epson Stylus C85',500,30);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (3,'monitor','Samsung 14',800,10);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (4,'teclado','ingles Biswal',100,50);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (5,'teclado','espaol Biswal',90,50);
5- Seleccione los datos de las impresoras (2 registros)
6- Seleccione los artculos cuyo precio sea mayor o
igual a 400 (3 registros)
7- Seleccione el cdigo y nombre de los artculos cuya
cantidad sea menor a 30 (2 registros)
8- Selecciones el nombre y descripcin de los artculos
que NO cuesten $100 (4 registros)
Ver solucin
where cantidad<30;
select nombre, descripcion
from articulos
where precio<>100;
Segundo problema:
Un video club que alquila pelculas en video almacena la
informacin de sus pelculas en alquiler en
una tabla denominada "peliculas".
1- Elimine la tabla, si existe.
2- Cree la tabla eligiendo el tipo de dato adecuado para
cada campo:
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
3- Ingrese los siguientes registros:
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',120,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',180,4);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mujer bonita','Julia R.',90,1);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',80,2);
4- Seleccione las pelculas cuya duracin no supere los
90 minutos (2 registros)
5- Seleccione el ttulo de todas las pelculas en las que
el actor NO sea "Tom Cruise" (2
registros)
6- Muestre todos los campos, excepto "duracion", de
todas las pelculas de las que haya ms de 2
copias (2 registros)
Ver solucin
if object_id('peliculas') is not null
drop table peliculas;
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible','Tom Cruise',120,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mision imposible 2','Tom Cruise',180,4);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Mujer bonita','Julia R.',90,1);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',80,2);
select *from peliculas
where duracion<=90;
select *from peliculas
where actor<>'Tom Cruise';
select titulo,actor,cantidad
from peliculas
where cantidad >2;
8 - Borrar registros (delete)
Problema:
Trabajamos con la tabla "usuarios".
Eliminamos la tabla "usuarios", si existe:
if object_id('usuarios') is not null
drop table usuarios;
values ('FedericoLopez','Boca');
No hay registros.
Problema:
No hay registros.
Primer problema:
Trabaje con la tabla "agenda" que registra la
informacin referente a sus amigos.
1- Elimine la tabla si existe:
if object_id('agenda') is not null
drop table agenda;
2- Cree la tabla con los siguientes campos: apellido
(cadena de 30), nombre (cadena de 20),
domicilio (cadena de 30) y telefono (cadena de 11):
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
3- Ingrese los siguientes registros (insert into):
Alvarez,Alberto,Colon 123,4234567,
Juarez,Juan,Avellaneda 135,4458787,
Lopez,Maria,Urquiza 333,4545454,
Lopez,Jose,Urquiza 333,4545454,
Salas,Susana,Gral. Paz 1234,4123456.
4- Elimine el registro cuyo nombre sea "Juan" (1
registro afectado)
5- Elimine los registros cuyo nmero telefnico sea
igual a "4545454" (2 registros afectados):
6- Muestre la tabla.
7- Elimine todos los registros (2 registros afectados):
8- Muestre la tabla.
Ver solucin
if object_id('agenda') is not null
drop table agenda;
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
insert into agenda (apellido,nombre,domicilio,telefono)
values('Alvarez','Alberto','Colon 123','4234567');
insert into agenda (apellido,nombre,domicilio,telefono)
values('Juarez','Juan','Avellaneda 135','4458787');
insert into agenda (apellido,nombre,domicilio,telefono)
values('Lopez','Maria','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values('Lopez','Jose','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values('Salas','Susana','Gral. Paz 1234','4123456');
delete from agenda
where nombre='Juan';
delete from agenda
where telefono='4545454';
select * from agenda;
delete from agenda;
select * from agenda;
Segundo problema:
Un comercio que vende artculos de computacin
registra los datos de sus artculos en una tabla con
ese nombre.
1- Elimine "articulos", si existe:
if object_id('articulos') is not null
drop table articulos;
2- Cree la tabla, con la siguiente estructura:
create table articulos(
codigo integer,
nombre varchar(20),
descripcion varchar(30),
precio float,
cantidad integer
);
3- Vea la estructura de la tabla.
4- Ingrese algunos registros:
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (1,'impresora','Epson Stylus C45',400.80,20);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (2,'impresora','Epson Stylus C85',500,30);
sp_columns articulos;
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (1,'impresora','Epson Stylus C45',400.80,20);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (2,'impresora','Epson Stylus C85',500,30);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (3,'monitor','Samsung 14',800,10);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (4,'teclado','ingles Biswal',100,50);
insert into articulos (codigo, nombre, descripcion,
precio,cantidad)
values (5,'teclado','espaol Biswal',90,50);
delete from articulos
where precio>=500;
select * from articulos;
delete from articulos
where nombre='impresora';
select * from articulos;
delete from articulos
where codigo<>4;
select * from articulos;
9 - Actualizar registros (update)
Problema:
Trabajamos con la tabla "usuarios".
Eliminamos la tabla si existe:
if object_id('usuarios') is not null
drop table usuarios;
Creamos la tabla:
create table usuarios(
nombre varchar(20),
clave varchar(10)
);
Si vemos la tabla:
select *from usuarios;
Primer problema:
Trabaje con la tabla "agenda" que almacena los datos
de sus amigos.
1- Elimine la tabla si existe:
if object_id('agenda') is not null
drop table agenda;
2- Cree la tabla:
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
3- Ingrese los siguientes registros (1 registro
actualizado):
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Acosta','Alberto','Colon 123','4234567');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Juarez','Juan','Avellaneda 135','4458787');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Lopez','Maria','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Lopez','Jose','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono)
values ('Suarez','Susana','Gral. Paz 1234','4123456');
4- Modifique el registro cuyo nombre sea "Juan" por
"Juan Jose" (1 registro afectado)
Problema:
Trabajamos con la tabla "libros" que almacena los datos de los
libros de una librera.
Eliminamos la tabla, si existe:
if object_id('libros') is not null
drop table libros;
Creamos la tabla:
create table libros(
titulo varchar(30),
autor varchar(20),
editorial varchar(15)
);
Agregamos un registro:
insert into libros (titulo,autor,editorial)
values ('El aleph','Borges','Emece');
Para ver cules campos admiten valores nulos y cules no, podemos
emplear el procedimiento almacenado "sp_columns" junto al nombre de
la tabla. Nos muestra mucha informacin, en la columna "IS_NULLABLE"
vemos que muestra "NO" en los campos que no permiten valores nulos y
"YES" en los campos que si los permiten.
Para recuperar los registros que contengan el valor "null" en algn
campo, no podemos utilizar los operadores relacionales vistos
anteriormente: = (igual) y <> (distinto); debemos utilizar los operadores
"is null" (es igual a null) y "is not null" (no es null):
select * from libros
where precio is null;
Con la primera sentencia veremos los libros cuyo precio es igual a "null"
(desconocido); con la segunda, los libros cuyo precio es 0.
Igualmente para campos de tipo cadena, las siguientes sentencias
"select" no retornan los mismos registros:
select * from libros where editorial is null;
select * from libros where editorial='';
Problema:
Trabajamos con la tabla "libros" de una librera.
Eliminamos la tabla "libros", si existe:
if object_id('libros') is not null
drop table libros;
Primer problema:
Una farmacia guarda informacin referente a sus
medicamentos en una tabla llamada "medicamentos".
1- Elimine la tabla, si existe:
if object_id('medicamentos') is not null
drop table medicamentos;
2- Cree la tabla con la siguiente estructura:
create table medicamentos(
codigo integer not null,
nombre varchar(20) not null,
laboratorio varchar(20),
precio float,
cantidad integer not null
);
Segundo problema:
Trabaje con la tabla que almacena los datos sobre
pelculas, llamada "peliculas".
1- Elimine la tabla si existe:
if object_id('peliculas') is not null
drop table peliculas;
2- Crela con la siguiente estructura: