Tutorial SQL
Tutorial SQL
Tutorial SQL
Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un
campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un
dato específico, un solo valor.
Nosotros trabajaremos con la base de datos llamada wi520641_sqlserverya (este nombre se debe a
que las empresas de hosting es la que lo define).
Para ver las tablas existentes creadas por los usuarios en una base de datos usamos el procedimiento
almacenado "sp_tables @table_owner='dbo';":
sp_tables @table_owner='dbo';
El parámetro @table_owner='dbo' indica que solo muestre las tablas de usuarios y no las que crea el
SQL Server para administración interna.
Al crear una tabla debemos resolver qué campos (columnas) tendrá y que tipo de datos almacenarán
cada uno de ellos, es decir, su estructura.
1
La sintaxis básica y general para crear una tabla es la siguiente:
Creamos una tabla llamada "usuarios" y entre paréntesis definimos los campos y sus tipos:
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:
Cada usuario ocupará un registro de esta tabla, con su respectivo nombre y clave.
Para nombres de tablas, se puede utilizar cualquier carácter permitido para nombres de directorios,
el primero debe ser un carácter alfabético y no puede contener espacios. La longitud máxima 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 el nombre.
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):
2
Recordar que debemos finalizar cada comando con un punto y coma.
Usamos "insert into", luego el nombre de la tabla, detallamos los nombres de los campos entre
paréntesis y separados por comas y luego de la cláusula "values" colocamos los valores para cada
campo, también entre paréntesis y separados por comas.
En el ejemplo anterior se nombra primero el campo "clave" y luego el campo "nombre" por eso, los
valores también se colocan en ese orden.
Si ingresamos los datos en un orden distinto al orden en que se nombraron los campos, no aparece
un mensaje de error y los datos se guardan de modo incorrecto.
En el siguiente ejemplo se colocan los valores en distinto orden en que se nombran los campos, el
valor de la clave (la cadena "Boca") se guardará en el campo "nombre" y el valor del nombre (la
cadena "Luis") en el campo "clave":
insert into usuarios (nombre,clave) values ('Boca','Luis');
3
insert into agenda (apellido,nombre, domicilio, telefono)
values ('Torres','Juan','Avellaneda 135','4458787');
El tipo de dato especifica el tipo de información que puede guardar un campo: caracteres, números,
etc.
Estos son algunos tipos de datos básicos de SQL Server (posteriormente veremos otros):
varchar: se usa para almacenar cadenas de caracteres. Una cadena es una secuencia de
caracteres. Se coloca entre comillas (simples); ejemplo: 'Hola', 'Juan Perez'. El tipo
"varchar" define una cadena de longitud variable en la cual determinamos el máximo de
caracteres entre paréntesis. Puede guardar hasta 8000 caracteres. Por ejemplo, para
almacenar cadenas de hasta 30 caracteres, definimos un campo de tipo varchar(30), es
decir, entre paréntesis, junto al nombre del campo colocamos la longitud.
Si asignamos una cadena de caracteres de mayor longitud que la definida, la cadena no se
carga, aparece un mensaje indicando tal situación y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo varchar(10) e intentamos asignarle la cadena
'Buenas tardes', aparece un mensaje de error y la sentencia no se ejecuta.
integer: se usa para guardar valores numéricos enteros, de -2000000000 a 2000000000
aprox. Definimos campos de este tipo cuando queremos representar, por ejemplo,
cantidades.
float: se usa para almacenar valores numéricos con decimales. Se utiliza como separador el
punto (.). Definimos campos de este tipo para precios, por ejemplo. Antes de crear una tabla
debemos pensar en sus campos y optar por el tipo de dato adecuado para cada uno de ellos.
4
Por ejemplo, si en un campo almacenaremos números enteros, el tipo "float" sería una mala
elección; si vamos a guardar precios, el tipo "float" es más adecuado, no así "integer" que
no tiene decimales. Otro ejemplo, si en un campo vamos a guardar un número telefónico o
un número de documento, usamos "varchar", no "integer" porque si bien son dígitos, con
ellos no realizamos operaciones matemáticas.
Hemos aprendido cómo ver todos los registros de una tabla, empleando la instrucción "select".
Podemos especificar el nombre de los campos que queremos ver separándolos por comas:
La lista de campos luego del "select" selecciona los datos correspondientes a los campos
nombrados. En el ejemplo anterior seleccionamos los campos "titulo" y "autor" de la tabla "libros",
mostrando todos los registros. Los datos aparecen ordenados según la lista de selección, en dicha
lista los nombres de los campos se separan con comas.
Un videoclub que alquila películas en video almacena la información de sus películas en alquiler en
una tabla llamada "peliculas".
2- Cree la tabla:
create table peliculas(
titulo varchar(20),
actor varchar(20),
duracion integer,
cantidad integer
);
5
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)
values ('Mujer bonita','Julia Roberts',118,3);
insert into peliculas (titulo, actor, duracion, cantidad)
values ('Elsa y Fred','China Zorrilla',110,2);
sp_columns peliculas;
Existe una cláusula, "where" con la cual podemos especificar condiciones para una consulta
"select". Es decir, podemos recuperar algunos registros, sólo los que cumplan con ciertas
condiciones indicadas con la cláusula "where". Por ejemplo, queremos ver el usuario cuyo nombre
es "Marcelo", para ello utilizamos "where" y luego de ella, la condición:
select nombre,clave
from usuarios
where clave='River';
Si ningún registro cumple la condición establecida con el "where", no aparecerá ningún registro.
Para recuperar algunos campos de algunos registros combinamos en la consulta la lista de campos y
la cláusula "where":
select nombre
from usuarios
where clave='River';
En la consulta anterior solicitamos el nombre de todos los usuarios cuya clave sea igual a "River".
Trabaje con la tabla "agenda" en la que registra los datos de sus amigos.
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).
7
Acosta, Ana, Colon 123, 4234567;
Bustamante, Betina, Avellaneda 135, 4458787;
Lopez, Hector, Salta 545, 4887788;
Lopez, Luis, Urquiza 333, 4545454;
Lopez, Marisa, Urquiza 333, 4545454.
7- Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lopez" (3 registros)
sp_columns agenda;
8
select nombre,domicilio from agenda
where apellido='Lopez';
relacionales (o de comparación)
aritméticos
de concatenación
lógicos.
Los operadores relacionales (o de comparación) nos permiten comparar dos expresiones, que
pueden ser variables, valores de campos, etc.
Hemos aprendido a especificar condiciones de igualdad para seleccionar registros de una tabla; por
ejemplo:
Los operadores relacionales vinculan un campo con un valor para que SQL Server compare cada
registro (el campo especificado) con el valor dado.
= igual
<> distinto
> mayor
< menor
>= mayor o igual
<= menor o igual
Podemos seleccionar los registros cuyo autor sea diferente de "Borges", para ello usamos la
condición:
9
where precio>20;
Queremos seleccionar los libros cuyo precio sea menor o igual a 30:
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)
);
10
4- Elimine el registro cuyo nombre sea "Juan" (1 registro afectado)
5- Elimine los registros cuyo número telefónico sea igual a "4545454" (2 registros afectados):
6- Muestre la tabla.
8- Muestre la tabla.
if object_id('agenda') is not null
drop table agenda;
11
Decimos que actualizamos un registro cuando modificamos alguno de sus valores.
Para modificar uno o varios datos de uno o varios registros utilizamos "update" (actualizar).
Por ejemplo, en nuestra tabla "usuarios", queremos cambiar los valores de todas las claves, por
"RealMadrid":
update usuarios set clave='RealMadrid';
Utilizamos "update" junto al nombre de la tabla y "set" junto con el campo a modificar y su nuevo
valor.
El cambio afectará a todos los registros.
Podemos modificar algunos registros, para ello debemos establecer condiciones de selección con
"where".
Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado
"Federicolopez", queremos como nueva clave "Boca", necesitamos una condición "where" que
afecte solamente a este registro:
update usuarios set clave='Boca'
where nombre='Federicolopez';
Si Microsoft SQL Server no encuentra registros que cumplan con la condición del "where", no se
modifica ninguno.
Las condiciones no son obligatorias, pero si omitimos la cláusula "where", la actualización afectará
a todos los registros.
También podemos actualizar varios campos en una sola instrucción:
update usuarios set nombre='Marceloduarte', clave='Marce'
where nombre='Marcelo';
Para ello colocamos "update", el nombre de la tabla, "set" junto al nombre del campo y el nuevo
valor y separado por coma, el otro nombre del campo con su nuevo valor.
Trabaje con la tabla "agenda" que almacena los datos de sus amigos.
2- Cree la tabla:
create table agenda(
apellido varchar(30),
nombre varchar(20),
domicilio varchar(30),
telefono varchar(11)
);
12
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)
5- Actualice los registros cuyo número telefónico sea igual a "4545454" por "4445566"
(2 registros afectados)
6- Actualice los registros que tengan en el campo "nombre" el valor "Juan" por "Juan Jose" (ningún
registro afectado porque ninguno cumple con la condición del "where")
7 - Luego de cada actualización ejecute un select que muestre todos los registros de la tabla.
13
update agenda set telefono='4445566'
where telefono='4545454';
14