SQL Server mARCODELCID PDF
SQL Server mARCODELCID PDF
Tambin es posible recuperar algunos registros. Existe una clusula, "where" con la cual podemos
especificar condiciones para una consulta "select". Es decir, podemos recuperar algunos registros,
slo los que cumplan con ciertas condiciones indicadas con la clusula "where". Por ejemplo,
queremos ver el usuario cuyo nombre es "Marcelo", para ello utilizamos "where" y luego de ella, la
condicin:
select nombre, clave
from usuarios
where nombre='Marcelo';
Para las condiciones se utilizan operadores relacionales (tema que trataremos ms adelante en
detalle). El signo igual(=) es un operador relacional.
Para la siguiente seleccin de registros especificamos una condicin que solicita los usuarios cuya
clave es igual a "Municipal":
select nombre,clave
from usuarios
where clave='Municipal';
Si ningn registro cumple la condicin establecida con el "where", no aparecer ningn registro.
Para recuperar algunos campos de algunos registros combinamos en la consulta la lista de campos
y la clusula "where":
select nombre
from usuarios
where clave='Municipal';
1
Catedrtico: Marco del Cid SQL Server
En la consulta anterior solicitamos el nombre de todos los usuarios cuya clave sea igual a
"Municipal".
Ejemplo:
Creamos la tabla:
create table usuarios (
nombre varchar(30),
clave varchar(10)
);
Realizamos una consulta especificando una condicin, queremos ver el usuario cuyo nombre es
"Leonardo":
select *from usuarios
where nombre='Juan Perez';
2
Catedrtico: Marco del Cid SQL Server
Ejercicio
Apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de
11).
7- Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lpez" (3 registros)
3
Catedrtico: Marco del Cid SQL Server
Operadores relacionales
Los operadores son smbolos que permiten realizar operaciones matemticas, concatenar
cadenas, hacer comparaciones.
relacionales (o de comparacin)
aritmticos
de concatenacin
lgicos.
Los operadores relacionales (o de comparacin) nos permiten comparar dos expresiones, que
pueden ser variables, valores de campos, etc.
Se ha aprendido a especificar condiciones de igualdad para seleccionar registros de una tabla; por
ejemplo:
select *from libros
where autor='Miguel ngel Asturias';
Los operadores relacionales vinculan un campo con un valor para que SQL Server compare cada
registro (el campo especificado) con el valor dado.
= igual a
<> Distinto a
Podemos seleccionar los registros cuyo autor sea diferente de "Miguel ngel Asturias", para ello
usamos la condicin:
4
Catedrtico: Marco del Cid SQL Server
Podemos comparar valores numricos. Por ejemplo, queremos mostrar los ttulos y precios de los
libros cuyo precio sea mayor a 20 quetzales:
Queremos seleccionar los libros cuyo precio sea menor o igual a 30:
Los operadores relacionales comparan valores del mismo tipo. Se emplean para comprobar si un
campo cumple con una condicin.
Ejemplo
5
Catedrtico: Marco del Cid SQL Server
Seleccionamos los registros cuyo autor sea diferente de 'Miguel ngel Asturias':
select *from libros
where autor<>'Miguel ngel Asturias';
Seleccionamos los registros cuyo precio supere los 20 pesos, slo el ttulo y precio:
select titulo,precio
from libros
where precio>20;
Note que el valor con el cual comparamos el campo "precio", como es numrico (float), no se
coloca entre comillas. Los libros cuyo precio es menor o igual a 20 quetzales no aparecen en la
seleccin.
6
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla
con ese nombre.
7
Catedrtico: Marco del Cid SQL Server
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)
Problema 2:
Un video club que alquila pelculas en video almacena la informacin de sus pelculas en alquiler
en una tabla denominada "peliculas".
8
Catedrtico: Marco del Cid SQL Server
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).
Si no queremos eliminar todos los registros, sino solamente algunos, debemos indicar cul o cules,
para ello utilizamos el comando "delete" junto con la clusula "where" con la cual establecemos la
condicin que deben cumplir los registros a borrar.
Por ejemplo, queremos eliminar aquel registro cuyo nombre de usuario es "Marcelo":
delete from usuarios
where nombre='Marcelo';
Si solicitamos el borrado de un registro que no existe, es decir, ningn registro cumple con la
condicin especificada, ningn registro ser eliminado.
Tenga en cuenta que si no se coloca una condicin, se eliminan todos los registros de la tabla
nombrada.
Ejemplo
9
Catedrtico: Marco del Cid SQL Server
10
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
Trabaje con la tabla "agenda" que registra la informacin referente a sus amigos.
5- Elimine los registros cuyo nmero telefnico sea igual a "4545454" (2 registros afectados):
11
Catedrtico: Marco del Cid SQL Server
6- Muestre la tabla.
8- Muestre la tabla.
Problema 2:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla
con ese nombre.
12
Catedrtico: Marco del Cid SQL Server
5- Elimine los artculos cuyo precio sea mayor o igual a 500 (2 registros)
delete from articulos
where precio>=500;
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.
Podemos modificar algunos registros, para ello debemos establecer condiciones de seleccin con
"where".
13
Catedrtico: Marco del Cid SQL Server
Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado
"Federicolopez", queremos como nueva clave "Atitlan", necesitamos una condicin "where" que
afecte solamente a este registro:
update usuarios set clave='Atitlan'
where nombre='Federicolopez';
Si Microsoft SQL Server no encuentra registros que cumplan con la condicin del "where",
no se modifica ninguno.
Las condiciones no son obligatorias, pero si omitimos la clusula "where", la actualizacin
afectar a todos los registros.
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.
Ejemplo
3. Creamos la tabla:
create table usuarios(
nombre varchar(20),
clave varchar(10)
);
14
Catedrtico: Marco del Cid SQL Server
Vimos que si Microsoft SQL Server no encuentra registros que cumplan con la condicin no se
modifican registros:
15
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
Trabaje con la tabla "agenda" que registra la informacin referente a sus amigos.
2- Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20),
5- Elimine los registros cuyo nmero telefnico sea igual a "4545454" (2 registros afectados):
6- Muestre la tabla.
16
Catedrtico: Marco del Cid SQL Server
8- Muestre la tabla.
Problema 2:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla
con
ese nombre.
17
Catedrtico: Marco del Cid SQL Server
5- Elimine los artculos cuyo precio sea mayor o igual a 500 (2 registros)
delete from articulos
where precio>=500;
Comentarios
Para aclarar algunas instrucciones, en ocasiones, necesitamos agregar comentarios.
Es posible ingresar comentarios en la lnea de comandos, es decir, un texto que no se ejecuta; para
ello se emplean dos guiones (--) al comienzo de la lnea:
select * from libros --mostramos los registros de libros;
En la lnea anterior, todo lo que est luego de los guiones (hacia la derecha) no se ejecuta.
Para agregar varias lneas de comentarios, se coloca una barra seguida de un asterisco (/*) al
comienzo del bloque de comentario y al finalizarlo, un asterisco seguido de una barra (*/).
18
Catedrtico: Marco del Cid SQL Server
from libros;
Por ejemplo, en nuestra tabla de libros, podemos tener valores nulos en el campo "precio" porque
es posible que para algunos libros no le hayamos establecido el precio para la venta.
Veamos un ejemplo. Tenemos nuestra tabla "libros". El campo "titulo" no debera estar vaco
nunca, igualmente el campo "autor". Para ello, al crear la tabla, debemos especificar que dichos
campos no admitan valores nulos:
create table libros(
titulo varchar(30) not null,
autor varchar(20) not null,
editorial varchar(15) null,
precio float
);
Para especificar que un campo no admita valores nulos, debemos colocar "not null" luego de la
definicin del campo.
Cuando colocamos "null" estamos diciendo que admite valores nulos (caso del campo "editorial");
por defecto, es decir, si no lo aclaramos, los campos permiten valores nulos (caso del campo
"precio").
Si ingresamos los datos de un libro, para el cual an no hemos definido el precio podemos colocar
"null" para mostrar que no tiene precio:
19
Catedrtico: Marco del Cid SQL Server
Note que el valor "null" no es una cadena de caracteres, no se coloca entre comillas.
Entonces, si un campo acepta valores nulos, podemos ingresar "null" cuando no conocemos el
valor.
Si intentamos ingresar el valor "null" en campos que no admiten valores nulos (como "titulo" o
"autor"), SQL Server no lo permite, muestra un mensaje y la insercin no se realiza; por ejemplo:
insert into libros values(null,'Borges','Siglo XXI',25);
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):
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:
20
Catedrtico: Marco del Cid SQL Server
Con la primera sentencia veremos los libros cuya editorial es igual a "null", con la segunda, los
libros cuya editorial guarda una cadena vaca.
Entonces, para que un campo no permita valores nulos debemos especificarlo luego de definir el
campo, agregando "not null". Por defecto, los campos permiten valores nulos, pero podemos
especificarlo igualmente agregando "null".
Veamos un ejemplo, si tenemos una tabla con datos de personas, el nmero de documento puede
establecerse como clave primaria, es un valor que no se repite; puede haber personas con igual
apellido y nombre, incluso el mismo domicilio (padre e hijo por ejemplo), pero su documento ser
siempre distinto.
Si tenemos la tabla "usuarios", el nombre de cada usuario puede establecerse como clave primaria,
es un valor que no se repite; puede haber usuarios con igual clave, pero su nombre de usuario ser
siempre diferente.
Podemos establecer que un campo sea clave primaria al momento de crear la tabla o luego que ha
sido creada. Vamos a aprender a establecerla al crear la tabla. Hay 2 maneras de hacerlo, por
ahora veremos la sintaxis ms sencilla.
21
Catedrtico: Marco del Cid SQL Server
En el siguiente ejemplo definimos una clave primaria, para nuestra tabla "usuarios" para
asegurarnos que cada usuario tendr un nombre diferente y nico:
Lo que hacemos agregar luego de la definicin de cada campo, "primary key" y entre parntesis, el
nombre del campo que ser clave primaria.
Una tabla slo puede tener una clave primaria. Cualquier campo (de cualquier tipo) puede ser clave
primaria, debe cumplir como requisito, que sus valores no se repitan ni sean nulos. Por ello, al definir
un campo como clave primaria, automticamente SQL Server lo convierte a "not null".
Luego de haber establecido un campo como clave primaria, al ingresar los registros, SQL Server
controla que los valores para el campo establecido como clave primaria no estn repetidos en la
tabla; si estuviesen repetidos, muestra un mensaje y la insercin no se realiza. Es decir, si en nuestra
tabla "usuarios" ya existe un usuario con nombre "juanperez" e intentamos ingresar un nuevo
usuario con nombre "juanperez", aparece un mensaje y la instruccin "insert" no se ejecuta.
Igualmente, si realizamos una actualizacin, SQL Server controla que los valores para el campo
establecido como clave primaria no estn repetidos en la tabla, si lo estuviese, aparece un mensaje
indicando que se viola la clave primaria y la actualizacin no se realiza.
Ejemplo:
22
Catedrtico: Marco del Cid SQL Server
Al campo "nombre" no lo definimos "not null", pero al establecerse como clave primaria, SQL Server
lo convierte en "not null", veamos que en la columna "IS_NULLABLE" aparece "NO":
sp_columns usuarios;
Recordemos que cuando un campo es clave primaria, sus valores no se repiten. Intentamos ingresar
un valor de clave primaria existente:
insert into usuarios (nombre, clave)
values ('juanperez','payaso');
Cuando un campo es clave primaria, sus valores no pueden ser nulos. Intentamos ingresar el valor
"null" en el campo clave primaria:
Si realizamos alguna actualizacin, SQL Server controla que los valores para el campo establecido
como clave primaria no estn repetidos en la tabla. Intentemos actualizar el nombre de un usuario
colocando un nombre existente:
23
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
2- Crela con los siguientes campos, estableciendo como clave primaria el campo "codigo":
create table libros(
codigo int not null,
titulo varchar(40) not null,
autor varchar(20),
editorial varchar(15),
primary key(codigo)
);
24
Catedrtico: Marco del Cid SQL Server
6- Intente actualizar el cdigo del libro "Martin Fierro" a "1" (mensaje de error)
Problema 2:
Un instituto de enseanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".
2- Cree la tabla con la siguiente estructura intentando establecer 2 campos como clave primaria, el
25
Catedrtico: Marco del Cid SQL Server
26
Catedrtico: Marco del Cid SQL Server
El atributo Identity
Un campo numrico puede tener un atributo extra "identity". Los valores de un campo con este
atributo generan valores secuenciales que se inician en 1 y se incrementan en 1 automticamente.
Para que un campo pueda establecerse como "identity", ste debe ser entero (tambin puede ser
de un subtipo de entero o decimal con escala 0, tipos que estudiaremos posteriormente).
Para que un campo genere sus valores automticamente, debemos agregar el atributo "identity"
luego de su definicin al crear la tabla:
Cuando un campo tiene el atributo "identity" no se puede ingresar valor para l, porque se inserta
automticamente tomando el ltimo valor como referencia, o 1 si es el primero.
Para ingresar registros omitimos el campo definido como "identity", por ejemplo:
27
Catedrtico: Marco del Cid SQL Server
Ejemplo
Creamos la tabla especificando que el campos "codigo" genere valores secuenciales comenzando
en 1 e incrementndose en 1 automticamente:
28
Catedrtico: Marco del Cid SQL Server
Ingresamos algunos registros, recordando que si un campo tiene el atributo "identity" debemos
omitirlo en la insercin:
29
Catedrtico: Marco del Cid SQL Server
Un campo "identity" tampoco puede ser actualizado. Intentemos cambiar el valor de cdigo de un
registro:
sp_columns libros;
Note que en el campo "codigo", en la columna "TYPE_NAME" aparece "int identity" y en la columna
IS_NULLABLE" aparece "NO", porque un campo "identity" automticamente se convierte en "not
null". En el campo "titulo", en la columna "IS_NULLABLE" aparece "NO" porque explcitamente
indicamos que el campo fuera "not null".
Ingresamos un quinto registro y luego vemos que en el campo cdigo se guard el valor secuencial
sin considerar que el valor "4" ya no existe:
insert into libros values('Martin Fierro','Jose
Hernandez','Paidos',25);
select *from libros;
30
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada
"medicamentos".
2- Cree la tabla con un campo "codigo" que genere valores secuenciales automticamente:
create table medicamentos(
codigo int identity,
nombre varchar(20) not null,
laboratorio varchar(20),
precio float,
cantidad integer
);
5- Verifique que SQL Server gener valores para el campo "cdigo" de modo automtico:
select *from medicamentos;
31
Catedrtico: Marco del Cid SQL Server
10- Seleccione todos los registros para ver qu valor guard SQL Server en el campo cdigo:
select *from medicamentos;
Problema 2:
Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas".
32
Catedrtico: Marco del Cid SQL Server
9- Visualice los registros para ver el valor almacenado en codigo (valor 7):
select *from peliculas;
El atributo "identity" permite indicar el valor de inicio de la secuencia y el incremento, para ello
usamos la siguiente sintaxis:
33
Catedrtico: Marco del Cid SQL Server
autor varchar(30),
precio float
);
La funcin ident_seed()
select ident_seed('libros');
La funcin ident_incr()
select ident_incr('libros');
Hemos visto que en un campo declarado "identity" no puede ingresarse explcitamente un valor.
La opci{on identity_insert
Cuando "identity_insert" est en ON, las instrucciones "insert" deben explicitar un valor:
34
Catedrtico: Marco del Cid SQL Server
El atributo "identity" no implica unicidad, es decir, permite repeticin de valores; por ello hay que
tener cuidado al explicitar un valor porque se puede ingresar un valor repetido.
Ejemplo:
Creamos la tabla especificando que el campo "codigo" genere valores secuenciales comenzando
en 100 e incrementndose en 2 automticamente:
Ingresamos algunos registros, recordando que si un campo tiene el atributo "identity" debemos
omitirlo en la insercin:
35
Catedrtico: Marco del Cid SQL Server
Para saber cul es el valor de inicio del campo "identity" de la tabla "libros" tipeamos:
select ident_seed('libros');
Retorna "2".
Recordemos que si "identity_insert" est en ON, la instruccin "insert" DEBE explicitar un valor:
insert into libros (codigo,titulo,autor)
values (100,'Matematica estas ahi','Paenza');
Note que ingresamos un valor de cdigo que ya existe; esto est permitido porque el atributo
"identity" no implica unicidad.
36
Catedrtico: Marco del Cid SQL Server
Note que ingresamos un valor de cdigo menor al valor de inicio de la secuencia, est permitido.
Ejercicios
Problema 1:
Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada
"medicamentos".
37
Catedrtico: Marco del Cid SQL Server
2- Cree la tabla con un campo "codigo" que genere valores secuenciales automticamente
comenzando en 10 e incrementndose en 1:
create table medicamentos(
codigo integer identity(10,1),
nombre varchar(20) not null,
laboratorio varchar(20),
precio float,
cantidad integer
);
4- Verifique que SQL Server gener valores para el campo "cdigo" de modo automtico:
select *from medicamentos;
7- Ingrese un nuevo registro sin valor para el campo "codigo" (no lo permite):
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Amoxilina 500','Bayer',15.60,100);
9- Use la funcin "ident_seed()" para averiguar el valor de inicio del campo "identity" de la tabla
"medicamentos"
38
Catedrtico: Marco del Cid SQL Server
10- Emplee la funcin "ident_incr()" para saber cul es el valor de incremento del campo "identity"
de "medicamentos"
Problema 2:
Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas".
39
Catedrtico: Marco del Cid SQL Server
12- Ingrese un nuevo registro y muestre todos los registros para ver cmo SQL Server sigui la
secuencia tomando el ltimo valor del campo como referencia.
40
Catedrtico: Marco del Cid SQL Server
Aprendimos que para borrar todos los registros de una tabla se usa "delete" sin condicin
"where".
Tambin podemos eliminar todos los registros de una tabla con "truncate table".
La sentencia "truncate table" vaca la tabla (elimina todos los registros) y conserva la estructura de
la tabla.
La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la vaca.
La diferencia con "delete" es la velocidad, es ms rpido "truncate table" que "delete" (se nota
cuando la cantidad de registros es muy grande) ya que ste borra los registros uno a uno.
Otra diferencia es la siguiente: cuando la tabla tiene un campo "identity", si borramos todos los
registros con "delete" y luego ingresamos un registro, al cargarse el valor en el campo de identidad,
contina con la secuencia teniendo en cuenta el valor mayor que se haba guardado; si usamos
"truncate table" para borrar todos los registros, al ingresar otra vez un registro, la secuencia del
campo de identidad vuelve a iniciarse en 1.
Por ejemplo, tenemos la tabla "libros" con el campo "codigo" definido "identity", y el valor ms alto
de ese campo es "2", si borramos todos los registros con "delete" y luego ingresamos un registro,
ste guardar el valor de cdigo "3"; si en cambio, vaciamos la tabla con "truncate table", al ingresar
un nuevo registro el valor del cdigo se iniciar en 1 nuevamente.
41
Catedrtico: Marco del Cid SQL Server
Ejemplo
Trabajamos con la tabla "libros" que almacena los datos de los libros de una librera.
Creamos la tabla:
create table libros(
codigo int identity,
titulo varchar(30),
autor varchar(20),
editorial varchar(15),
precio float
);
Truncamos la tabla:
truncate table libros;
42
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema 1:
Un instituto de enseanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".
43
Catedrtico: Marco del Cid SQL Server
5- Ingrese los siguientes registros y seleccinelos para ver cmo SQL Server gener los cdigos:
insert into alumnos values ('22345345','Perez Mariana','zona
4');
insert into alumnos values ('23545345','Morales Marcos','zona
3');
insert into alumnos values ('24356345','Gonzalez Analia','zona
11');
insert into alumnos values ('25666777','Torres Ramiro','zona
9');
select *from alumnos;
7- Ingrese los siguientes registros y muestre todos los registros para ver que SQL Server reinici la
secuencia del campo "identity":
insert into alumnos values('22345345','Perez Mariana','zona
14');
insert into alumnos values('23545345','Morales Marcos','zona
12');
select *from alumnos;
44
Catedrtico: Marco del Cid SQL Server
Problema 2:
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla
con ese nombre.
5- Ingrese algunos registros y mustrelos para ver que la secuencia de cdigos se reinicia:
insert into articulos values ('monitor','Samsung 14',800);
insert into articulos values ('teclado','ingles Manhatan',100);
insert into articulos values ('teclado','espaol Comtech',90);
select *from articulos;
45
Catedrtico: Marco del Cid SQL Server
7- Ingrese algunos registros y mustrelos para ver que la secuencia de cdigos contina:
insert into articulos values ('monitor','Samsung 14',800);
insert into articulos values ('teclado','ingles Dell',100);
select *from articulos;
46
Catedrtico: Marco del Cid SQL Server
El tipo de dato especificado en la definicin de cada campo indica los valores permitidos para cada
uno de ellos.
Hasta ahora hemos visto 3 tipos de datos: varchar, integer y float. Hay ms tipos, incluso, subtipos.
Las cadenas se colocan entre comillas simples. Podemos almacenar letras, smbolos y dgitos con
los que no se realizan operaciones matemticas, por ejemplo, cdigos de identificacin, nmeros
de documentos, nmeros telefnicos.
SQL Server ofrece los siguientes tipos: char, nchar, varchar, nvarchar, text y ntext.
Para almacenar valores enteros, por ejemplo, en campos que hacen referencia a cantidades,
precios, etc., usamos el tipo integer (y sus subtipos: tinyint, smallint y bigint).
Para almacenar valores con decimales exactos, utilizamos: numeric o decimal (son equivalentes).
Para guardar valores decimales aproximados: float y real. Para almacenar valores monetarios:
money y smallmoney.
FECHAS y HORAS: para guardar fechas y horas SQL Server dispone de 2 tipos: datetime y
smalldatetime.
Al crear una tabla se debe elegir la estructura adecuada, esto es, definir los campos y sus tipos ms
precisos, segn el caso.
Podemos almacenar letras, smbolos y dgitos con los que no se realizan operaciones matemticas,
por ejemplo, cdigos de identificacin, nmeros de documentos, nmeros telefnicos.
47
Catedrtico: Marco del Cid SQL Server
char(x): define una cadena de longitud fija determinada por el argumento "x". Si se omite el
argumento coloca 1 por defecto. Su rango es de 1 a 8000 caracteres.
Si la longitud es invariable, es conveniente utilizar el tipo char; caso contrario, el tipo varchar.
text: guarda datos binarios de longitud variable, puede contener hasta 2000000000 caracteres. No
admite argumento para especificar su longitud.
nvarchar(x): es similar a "varchar", excepto que permite almacenar caracteres Unicode, su rango
va de 0 a 4000 caracteres porque se emplean 2 bytes por cada caracter.
nchar(x): es similar a "char" excpeto que acepta caracteres Unicode, su rango va de 0 a 4000
caracteres porque se emplean 2 bytes por cada caracter.
ntext: es similar a "text" excepto que permite almacenar caracteres Unicode, puede contener hasta
1000000000 caracteres. No admite argumento para especificar su longitud.
Si intentamos almacenar en un campo una cadena de caracteres de mayor longitud que la definida,
aparece un mensaje indicando tal situacin y la sentencia no se ejecuta.
Por ejemplo, si definimos un campo de tipo varchar(10) y le asignamos la cadena 'Aprenda PHP'
(11 caracteres), aparece un mensaje y la sentencia no se ejecuta.
Si ingresamos un valor numrico (omitiendo las comillas), lo convierte a cadena y lo ingresa como
tal.
Por ejemplo, si en un campo definido como varchar(5) ingresamos el valor 12345, lo toma como si
hubisemos tipeado '12345', igualmente, si ingresamos el valor 23.56, lo convierte a '23.56'. Si el
valor numrico, al ser convertido a cadena supera la longitud definida, aparece un mensaje de error
y la sentencia no se ejecuta.
48
Catedrtico: Marco del Cid SQL Server
Para almacenar cadenas que varan en su longitud, es decir, no todos los registros tendrn la
misma longitud en un campo determinado, se emplea "varchar" en lugar de "char".
Por ejemplo, en campos que guardamos nombres y apellidos, no todos los nombres y apellidos
tienen la misma longitud.
Para almacenar cadenas que no varan en su longitud, es decir, todos los registros tendrn la
misma longitud en un campo determinado, se emplea "char".
Por ejemplo, definimos un campo "codigo" que constar de 5 caracteres, todos los registros
tendrn un cdigo de 5 caracteres, ni ms ni menos.
_________________________________
varchar(x) 0 a 8K
char(x) 0 a 8K
text 0 a 2GB
nvarchar(x) 0 a 8K
nchar(x) 0 a 8K
ntext 0 a 2GB
49
Catedrtico: Marco del Cid SQL Server
Ejemplo
Un comercio que tiene un stand en una feria registra en una tabla llamada "visitantes" algunos
datos de las personas que visitan o compran en su stand para luego enviarle publicidad de sus
productos.
Los campos "nombre", "domicilio" y "ciudad" almacenarn valores cuya longitud vara, por ello
elegimos el tipo "varchar" y le damos a cada uno una longitud mxima estimando su tamao. El
campo "sexo" se define de tipo "char", porque necesitamos solamente 1 caracter "f" o "m", que
siempre ser fijo. El campo "telefono" tambin se define como varchar porque no todos los nmeros
telefnicos tienen la misma longitud.
Intentamos ingresar una cadena de mayor longitud que la definida (el campo sexo):
insert into visitantes values ('Juan
Juarez',32,'masculino','zona 5','Guatemala','4234567');
Ingresamos un nmero telefnico olvidando las comillas, es decir, como un valor numrico:
50
Catedrtico: Marco del Cid SQL Server
Ejercicios
Problema :
Una concesionaria de autos vende autos usados y almacena los datos de los autos en una tabla
llamada "autos".
2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo, estableciendo el campo
Hemos definido el campo "patente" de tipo "char" y no "varchar" porque la cadena de caracteres
siempre tendr la misma longitud (6 caracteres). Lo mismo sucede con el campo "modelo", en el
cual almacenaremos el ao, necesitamos 4 caracteres fijos.
51
Catedrtico: Marco del Cid SQL Server
Para almacenar valores ENTEROS, por ejemplo, en campos que hacen referencia a cantidades,
usamos:
1) integer o int: su rango es de -2000000000 a 2000000000 aprox. El tipo "integer" tiene subtipos:
- smallint: Puede contener hasta 5 digitos. Su rango va desde ?32000 hasta 32000 aprox.
52
Catedrtico: Marco del Cid SQL Server
Para almacenar valores numricos EXACTOS con decimales, especificando la cantidad de cifras a la
izquierda y derecha del separador decimal, utilizamos:
2) decimal o numeric (t,d): Pueden tener hasta 38 digitos, guarda un valor exacto. El primer
argumento indica el total de dgitos y el segundo, la cantidad de decimales.
Por ejemplo, si queremos almacenar valores entre -99.99 y 99.99 debemos definir el campo como
tipo "decimal(4,2)". Si no se indica el valor del segundo argumento, por defecto es "0". Por
ejemplo, si definimos "decimal(4)" se pueden guardar valores entre -9999 y 9999.
Si ingresamos un valor con ms decimales que los permitidos, redondea al ms cercano; por
ejemplo, si definimos "decimal(4,2)" e ingresamos el valor "12.686", guardar "12.69",
redondeando hacia arriba; si ingresamos el valor "12.682", guardar "12.67", redondeando hacia
abajo.
5) money: Puede tener hasta 19 digitos y slo 4 de ellos puede ir luego del separador decimal;
entre ?900000000000000.5808 aprox y 900000000000000.5807.
- si ingresamos una cadena, SQL Server intenta convertirla a valor numrico, si dicha cadena
consta solamente de dgitos, la conversin se realiza, luego verifica si est dentro del rango, si es
53
Catedrtico: Marco del Cid SQL Server
as, la ingresa, sino, muestra un mensaje de error y no ejecuta la sentencia. Si la cadena contiene
caracteres que SQL Server no puede convertir a valor numrico, muestra un mensaje de error y la
sentencia no se ejecuta.
Es importante elegir el tipo de dato adecuado segn el caso, el ms preciso. Por ejemplo, si un
campo numrico almacenar valores positivos menores a 255, el tipo "int" no es el ms adecuado,
conviene el tipo "tinyint", de esta manera usamos el menor espacio de almacenamiento posible.
_______________________________________
int 4
smallint 2
tinyint 1
bigint 8
decimal 2 a 17
float 4u8
real 4u8
money 8
smallmoney 4
54
Catedrtico: Marco del Cid SQL Server
Ejemplo
Note que definimos el campo "codigo" de tipo "smallint", esto es porque estimamos que no
tendremos ms de 30000 libros. Si necesitramos un rango mayor podemos emplear "int".
Tambin podemos definirlo de tipo "decimal(5,2)" porque el mximo precio no superar los
999.99.
Como los valores para el campo "cantidad" no superarn los 255, definimos el campo de tipo
"tinyint". Si estimamos que tendremos ms cantidad de libros podemos emplear "smallint" que
55
Catedrtico: Marco del Cid SQL Server
tiene un rango mayor; no es adecuado usar int (cuyo rango llega hasta 4000 millones aprox.),
porque ocuparamos ms espacio (4 bytes).
Intentemos ingresar un valor fuera del rango definido, una cantidad que supera el rango del tipo
"tinyint", el valor 260:
Intentamos ingresar un precio que supera el rango del tipo "smallmoney", el valor 250000:
Intentamos ingresar una cadena que SQL Server no pueda convertir a valor numrico en el campo
"precio" (error):
values('Uno','Richard Bach','Planeta','a50.30',100);
values('Uno','Richard Bach','Planeta',50.30,'100');
56
Catedrtico: Marco del Cid SQL Server
Ejercicio
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas".
______________________________________________________________
2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba:
- Nmero de cuenta: entero, no nulo, no puede haber valores repetidos, clave primaria;
57
Catedrtico: Marco del Cid SQL Server
Note que hay dos cuentas, con distinto nmero de cuenta, de la misma persona.
4- Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros)
5- Muestre el nmero de cuenta y saldo de todas las cuentas cuyo propietario sea "Juan Lopez" (2
registros)
7- Muestre todas las cuentas cuyo nmero es igual o mayor a "3000" (2 registros):
select *from cuentas
where numero>=3000;
Para almacenar valores de tipo FECHA Y HORA SQL Server dispone de dos tipos:
1) datetime: puede almacenar valores desde 01 de enero de 1753 hasta 31 de diciembre de 9999.
Para almacenar valores de tipo fecha se permiten como separadores "/", "-" y ".".
SQL Server reconoce varios formatos de entrada de datos de tipo fecha. Para establecer el orden
de las partes de una fecha (dia, mes y ao) empleamos "set dateformat". Estos son los formatos:
-myd: 4/96/15,
58
Catedrtico: Marco del Cid SQL Server
-dmy: 15/4/1996
-dym: 15/96/4,
-ydm: 96/15/4,
-ydm: 1996/15/4,
Podemos ingresar una fecha, sin hora, en tal caso la hora se guarda como "[Link]". Por ejemplo,
si ingresamos '25-12-01' (ao de 2 dgitos), lo mostrar as: '2001-12-25 [Link].000'.
Podemos ingresar una hora sin fecha, en tal caso, coloca la fecha "1900-01-01". Por ejemplo, si
ingresamos '10:15', mostrar '1900-01-01 10:15.000'.
_______________________________________
datetime 8
smalldatetime 4
59
Catedrtico: Marco del Cid SQL Server
Ejemplo
Una empresa almacena los datos de sus empleados en una tabla "empleados".
60
Catedrtico: Marco del Cid SQL Server
Mostramos los datos de los empleados cuya fecha de ingreso es anterior a '01-01-1985':
select *from empleados where fechaingreso<'01-01-1985';
Actualizamos el nombre a "Maria Carla Juarez' del empleado cuya fecha de ingreso es igual a
'20/05/1983':
Veamos si se actualiz:
Veamos si se eliminaron:
select *from empleados;
Ejercicio
Una facultad almacena los datos de sus alumnos en una tabla denominada "alumnos".
61
Catedrtico: Marco del Cid SQL Server
3- Setee el formato para entrada de datos de tipo fecha para que acepte valores "da-mes-ao":
set dateformat 'dmy';
5- Ingrese otro alumno empleando solamente un dgito para da y mes y 2 para el ao:
insert into alumnos values('Juarez','Bernardo','25555555','zona
6','03-03-1991','15/02/1972');
"fechanacimiento":
insert into alumnos values('Perez','Laura','26666666','zona
5','03-03-91',null);
7- Intente ingresar un alumno con fecha de ingreso correspondiente a "15 de marzo de 1990" pero
en orden incorrecto "03-15-90":
insert into alumnos values('Lopez','Carlos','27777777','zona
8','03-15-1990',null);
aparece un mensaje de error porque lo lee con el formato da, mes y ao y no reconoce el mes 15.
8- Muestre todos los alumnos que ingresaron antes del '1-1-91' (1 registro).
1 registro.
62
Catedrtico: Marco del Cid SQL Server
No lo acepta.
11- Configure el formato de entrada de fechas para que acepte valores "mes-dia-ao".
63
Catedrtico: Marco del Cid SQL Server
Un valor por defecto se inserta cuando no est presente al ingresar un registro y en algunos casos
en que el dato ingresado es invlido.
Para campos de cualquier tipo no declarados "not null", es decir, que admiten valores nulos, el
valor por defecto es "null". Para campos declarados "not null", no existe valor por defecto, a
menos que se declare explcitamente con la clusula "default".
Para todos los tipos, excepto los declarados "identity", se pueden explicitar valores por defecto
con la clusula "default".
Podemos establecer valores por defecto para los campos cuando creamos la tabla. Para ello
utilizamos "default" al definir el campo. Por ejemplo, queremos que el valor por defecto del
campo "autor" de la tabla "libros" sea "Desconocido" y el valor por defecto del campo "cantidad"
sea "0":
create table libros(
codigo int identity,
titulo varchar(40),
autor varchar(30) not null default 'Desconocido',
editorial varchar(20),
precio decimal(5,2),
cantidad tinyint default 0
);
Si al ingresar un nuevo registro omitimos los valores para el campo "autor" y "cantidad", Sql Server
insertar los valores por defecto; el siguiente valor de la secuencia en "codigo", en "autor"
colocar "Desconocido" y en cantidad "0".
Ahora, al visualizar la estructura de la tabla con "sp_columns" podemos entender lo que informa la
columna "COLUMN_DEF", muestra el valor por defecto del campo.
64
Catedrtico: Marco del Cid SQL Server
Tambin se puede utilizar "default" para dar el valor por defecto a los campos en sentencias
"insert", por ejemplo:
Si todos los campos de una tabla tienen valores predeterminados (ya sea por ser "identity",
permitir valores nulos o tener un valor por defecto), se puede ingresar un registro de la siguiente
manera:
La sentencia anterior almacenar un registro con los valores predetermiandos para cada uno de
sus campos.
Los campos para los cuales no se ingresan valores en un "insert" tomarn los valores por defecto:
- si est declarado explcitamente "not null", no tiene valor "default" y no tiene el atributo
"identity", no hay valor por defecto, as que causar un error y el "insert" no se ejecutar.
- si tiene clusula "default" (admita o no valores nulos), el valor definido como predeterminado;
- para campos de tipo fecha y hora, si omitimos la parte de la fecha, el valor predeterminado para
la fecha es "1900-01-01" y si omitimos la parte de la hora, "[Link]".
Un campo slo puede tener un valor por defecto. Una tabla puede tener todos sus campos con
valores por defecto. Que un campo tenga valor por defecto no significa que no admita valores
nulos, puede o no admitirlos.
65
Catedrtico: Marco del Cid SQL Server
Ejemplo
Creamos la tabla definiendo un valor por defecto para el campo "autor" y otro para el campo
"cantidad":
create table libros(
codigo int identity,
titulo varchar(40),
autor varchar(30) not null default 'Desconocido',
editorial varchar(20),
precio decimal(5,2),
cantidad tinyint default 0
);
SQL Server ingresar el registro con el siguiente valor de la secuencia en "codigo", con el ttulo,
editorial y precio ingresados, en "autor" colocar "Desconocido" y en cantidad "0":
select *from libros;
Si ingresamos un registro sin valor para el campo "precio", que admite valores nulos, se ingresar
"null" en ese campo:
66
Catedrtico: Marco del Cid SQL Server
Podemos emplear "default" para dar el valor por defecto a algunos campos:
Como todos los campos de "libros" tienen valores predeterminados, podemos tipear:
La sentencia anterior almacenar un registro con los valores predetermiandos para cada uno de
sus campos.
Que un campo tenga valor por defecto no significa que no admita valores nulos, puede o no
admitirlos. Podemos ingresar el valor "null" en el campo "cantidad":
Ejercicio
Una pequea biblioteca de barrio registra los prstamos de sus libros en una tabla llamada
"prestamos". En ella almacena la siguiente informacin: ttulo del libro, documento de identidad
del socio a quien se le presta el libro, fecha de prstamo, fecha en que tiene que devolver el libro y
si el libro ha sido o no devuelto.
67
Catedrtico: Marco del Cid SQL Server
2- Cree la tabla:
create table prestamos(
titulo varchar(40) not null,
documento char(8) not null,
fechaprestamo datetime not null,
fechadevolucion datetime,
devuelto char(1) default 'n'
);
3- Ingrese algunos registros omitiendo el valor para los campos que lo admiten:
insert into prestamos
(titulo,documento,fechaprestamo,fechadevolucion)
values ('Manual de 1 grado','23456789','2006-12-15','2006-12-
18');
insert into prestamos (titulo,documento,fechaprestamo)
values ('Alicia en el pais de las maravillas','23456789','2006-
12-16');
insert into prestamos
(titulo,documento,fechaprestamo,fechadevolucion)
values ('El aleph','22543987','2006-12-16','2006-08-19');
insert into prestamos (titulo,documento,fechaprestamo,devuelto)
values ('Manual de geografia 5 grado','25555666','2006-12-
18','s');
5- Ingrese un registro colocando "default" en los campos que lo admiten y vea cmo se almacen.
6- Intente ingresar un registro con "default values" y analice el mensaje de error (no se puede)
68
Catedrtico: Marco del Cid SQL Server
Campos calculados
Aprendimos que los operadores son smbolos que permiten realizar distintos tipos de operaciones.
relacionales o de comparacin
lgicos
aritmticos
de concatenacin.
Son:
multiplicacin (*)
divisin (/)
mdulo (%) (el residuo de dividir nmeros enteros)
suma (+)
resta (-).
Es posible obtener salidas en las cuales una columna sea el resultado de un clculo y no un campo
de una tabla.
Si queremos ver los ttulos, precio y cantidad de cada libro escribimos la siguiente sentencia:
select titulo,precio,cantidad
from libros;
Si queremos saber el monto total en dinero de un ttulo podemos multiplicar el precio por la
cantidad por cada ttulo, pero tambin podemos hacer que SQL Server realice el clculo y lo
incluya en una columna extra en la salida:
select titulo, precio,cantidad,
precio*cantidad
from libros;
69
Catedrtico: Marco del Cid SQL Server
Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la
sentencia los siguientes clculos:
select titulo,precio,
precio-(precio*0.1)
from libros;
Para concatenar el ttulo, el autor y la editorial de cada libro usamos el operador de concatenacin
("+"):
select titulo+'-'+autor+'-'+editorial
from libros;
Note que concatenamos adems unos guiones para separar los campos.
Ejemplo
Creamos la tabla:
create table libros(
codigo int identity,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
editorial varchar(20),
70
Catedrtico: Marco del Cid SQL Server
precio decimal(6,2),
cantidad tinyint default 0,
primary key (codigo)
);
select titulo,precio,
precio-(precio*0.1)
from libros;
71
Catedrtico: Marco del Cid SQL Server
select titulo+'-'+autor+'-'+editorial
from libros;
Ejercicio
Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla
con ese nombre.
2- Cree la tabla:
create table articulos(
codigo int identity,
nombre varchar(20),
descripcion varchar(30),
precio smallmoney,
cantidad tinyint default 0,
primary key (codigo)
);
4- El comercio quiere aumentar los precios de todos sus artculos en un 15%. Actualice todos los
precios empleando operadores aritmticos.
72
Catedrtico: Marco del Cid SQL Server
5- Vea el resultado:
select *from articulos;
6- Muestre todos los artculos, concatenando el nombre y la descripcin de cada uno de ellos
separados por coma.
7- Reste a la cantidad de todos los teclados, el valor 5, empleando el operador aritmtico menos
("-")
Por ejemplo, tenemos la tabla "agenda" con un campo "nombre" (entre otros) en el cual se
almacena el nombre y apellido de nuestros amigos; queremos que al mostrar la informacin de
dicha tabla aparezca como encabezado del campo "nombre" el texto "nombre y apellido", para ello
colocamos un alias de la siguiente manera:
Para reemplazar el nombre de un campo por otro, se coloca la palabra clave "as" seguido del texto
del encabezado.
Si el alias consta de una sola cadena las comillas no son necesarias, pero si contiene ms de una
palabra, es necesario colocarla entre comillas simples:
73
Catedrtico: Marco del Cid SQL Server
Entonces, un "alias" se usa como nombre de un campo o de una expresin. En estos casos, son
opcionales, sirven para hacer ms comprensible el resultado; en otros casos, que veremos ms
adelante, son obligatorios.
Ejemplo
Creamos la tabla:
create table agenda(
nombre varchar(30),
domicilio varchar(30),
telefono varchar(11)
);
74
Catedrtico: Marco del Cid SQL Server
Ejercicio
Primer problema:
2- Cree la tabla:
create table libros(
codigo int identity,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
editorial varchar(20),
precio decimal(6,2),
cantidad tinyint default 0,
primary key (codigo)
);
75
Catedrtico: Marco del Cid SQL Server
4- Muestre todos los campos de los libros y un campo extra, con el encabezado "monto total" en
la que calcule el monto total en dinero de cada libro (precio por cantidad)
5- Muestre el ttulo, autor y precio de todos los libros de editorial "Emece" y agregue dos
columnas extra en las cuales muestre el descuento de cada libro, con el encabezado "descuento" y
el precio con un 10% de descuento con el encabezado "precio final".
6- Muestre una columna con el ttulo y el autor concatenados con el encabezado "Ttulo y autor"
76
Catedrtico: Marco del Cid SQL Server
Funciones
Una funcin es un conjunto de sentencias que operan como una unidad lgica.
Una funcin tiene un nombre, retorna un parmetro de salida y opcionalmente acepta parmetros
de entrada. Las funciones de SQL Server no pueden ser modificadas, las funciones definidas por el
usuario si.
SQL Server ofrece varios tipos de funciones para realizar distintas operaciones. Se pueden
clasificar de la siguiente manera:
1) de agregado: realizan operaciones que combinan varios valores y retornan un nico valor. Son
"count", "sum", "min" y "max".
2) escalares: toman un solo valor y retornan un nico valor. Pueden agruparse de la siguiente
manera:
Ejemplo:
select @@version;
- de fecha y hora: operan con valores "datetime" y "smalldatetime". Reciben un parmetro de tipo
fecha y hora y retornan un valor de cadena, numrico o de fecha y hora.
- de cadena: operan con valores "char", "varchar", "nchar", "nvarchar", "binary" y "varbinary" y
devuelven un valor de cadena o numrico.
77
Catedrtico: Marco del Cid SQL Server
- del sistema: informan sobre opciones, objetos y configuraciones del sistema. Ejemplo:
select user_name();
- texto e imagen: realizan operaciones con valor de entrada de tipo text o image y retornan
informacin referente al mismo.
Se pueden emplear las funciones del sistema en cualquier lugar en el que se permita una
expresin en una sentencia "select".
Retorna "tardes".
select str(123.456,7,3);
Retorna '123.46';
78
Catedrtico: Marco del Cid SQL Server
select str(123.456);
retorna '123';
select str(123.456,3);
retorna '123';
Si el segundo parmetro es menor a la parte entera del nmero, devuelve asteriscos (*). Ejemplo:
select str(123.456,2,3);
retorna "**".
select stuff('abcde',3,2,'opqrs');
Los argumentos numricos deben ser positivos y menor o igual a la longitud de la primera cadena,
caso contrario, retorna "null".
Si el tercer argumento es mayor que la primera cadena, se elimina hasta el primer carcter.
len(cadena): retorna la longitud de la cadena enviada como argumento. "len" viene de length,
que significa longitud en ingls. Ejemplo:
select len('Hola');
Devuelve 4.
79
Catedrtico: Marco del Cid SQL Server
char(x): retorna un caracter en cdigo ASCII del entero enviado como argumento. Ejemplo:
select char(65);
retorna "A".
lower(cadena): retornan la cadena con todos los caracteres en minsculas. lower significa reducir
en ingls. Ejemplo:
ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa
recortar. Ejemplo:
select ltrim(' Hola ');
80
Catedrtico: Marco del Cid SQL Server
select replace('[Link]','x','w');
Retorna "[Link]'.
select reverse('Hola');
retorna "aloH".
Retorna 7.
Retorna 2.
Retorna 0.
81
Catedrtico: Marco del Cid SQL Server
Retorna 13.
Retorna 2.
Retorna 0.
Retorna 0.
Retorna "HolaHolaHola";
space(cantidad): retorna una cadena de espacios de longitud indicada por "cantidad", que debe
ser un valor positivo. Ejemplo:
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo
caracter.
82
Catedrtico: Marco del Cid SQL Server
Ejemplo
Creamos la tabla:
create table libros(
codigo int identity,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
editorial varchar(20),
precio decimal(6,2),
cantidad tinyint default 0,
primary key (codigo)
);
Mostramos slo los 12 primeros caracteres de los ttulos de los libros y sus autores, empleando la
funcin "substring()":
select substring(titulo,1,12) as titulo
from libros;
Mostramos slo los 12 primeros caracteres de los ttulos de los libros y sus autores, ahora
empleando la funcin "left()":
select left(titulo,12) as titulo
from libros;
83
Catedrtico: Marco del Cid SQL Server
Mostramos los ttulos de los libros y sus precios convirtiendo este ltimo a cadena de caracteres
con un solo decimal, empleando la funcin "str":
select titulo,
str(precio,6,1)
from libros;
Mostramos los ttulos de los libros y sus precios convirtiendo este ltimo a cadena de caracteres
especificando un solo argumento:
select titulo,
str(precio)
from libros;
Se redondea a entero.
Mostramos los ttulos, autores y editoriales de todos libros, al ltimo campo lo queremos en
maysculas:
Funciones matemticas
Las funciones matemticas realizan operaciones con expresiones numricas y retornan un
resultado, operan con tipos de datos numricos.
Microsoft SQL Server tiene algunas funciones para trabajar con nmeros. Aqu presentamos
algunas.
select abs(-20);
Retorna 20.
84
Catedrtico: Marco del Cid SQL Server
Retorna 13.
Retorna 12.
select 10%3;
Retorna 1.
select 10%2;
Retorna 0.
select power(2,3);
Retorna 8.
85
Catedrtico: Marco del Cid SQL Server
select round(123.456,-1);
Retorna "120.000", es decir, redondea desde el primer valor entero (hacia la izquierda).
select round(123.456,-2);
Retorna "100.000", es decir, redondea desde el segundo valor entero (hacia la izquierda).
select square(3)
Retorna 9.
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo
numrico.
86