You are on page 1of 46

FUNDAMENTOS

DEBASE
BASE
DATOS
FUNDAMENTOS DE
DEDE
DATOS

FUNDAMENTOS
DEBASE
BASE
DATOS
FUNDAMENTOS DE
DEDE
DATOS
Competencia Especfica de la Unidad
Aplicar el lenguaje SQL para la manipulacin de datos.

Desarrollo de la Unidad
En la unidad seis, se realizan consultas SQL con el fin de
entender la estructura de las consultas revisando: funciones,
consultas anidadas y operaciones de modificacin de las
bases de datos sin profundizar, ya que el lenguaje se
trabajar con mayor detalle en las materias subsecuentes.

FUNDAMENTOS DE BASE DE DATOS


SQL: Structured Query Language
SQL es el lenguaje estndar actual para los sistemas de base de
datos relacionales. Fue desarrollado originalmente por IBM a
mediados de la dcada de los setenta, e implementado por
primera vez en un prototipo de IBM, System R.
En el ao 1986, el lenguaje SQL fue propuesto por ANSI (Instituto
nacional de normalizacin americano) como lenguaje relacional, y
fue aceptado en 1987 por ISO como lenguaje estndar. Versiones
posteriores de este lenguaje han aparecido en 1989,1992, y 1999.
En sus orgenes fue un lenguaje de tipo lgico, basado en el
calculo relacional (de tuplas) de E. F. Cood. Posteriormente fueron
incorporados aspectos (operadores) algebraicos.

FUNDAMENTOS DE BASE DE DATOS


Se puede afirmar que el SQL actual es un hibrido entre el
Algebra Relacional y el Clculo Relacional (de Tuplas).
El lenguaje SQL proporciona un sublenguaje de Definicin
de Datos
(DDL, Data Definition Language) y un
sublenguaje de Manipulacin de Datos (DML, Data
Manipulation Language).
Este lenguaje puede ser utilizado tambin
en modo
incrustado (o embebido), es decir, en un programa escrito
en un lenguaje de alto nivel ( C, Java, Visual Basic, etc.).

FUNDAMENTOS DE BASE DE DATOS


Definicin de tipos de datos:
En SQL Server, cada columna, variable local, expresin
y parmetro tiene un tipo de datos relacionado.Un tipo
de datos es un atributo que especifica el tipo de datos
que el objeto puede contener: datos de enteros, datos
de caracteres, datos de moneda, datos de fecha y hora,
cadenas binarias, etc.

FUNDAMENTOS DE BASE DE DATOS


Categoras de Tipos de Datos

En SQL Server, basado en sus caractersticas de almacenamiento,


algunos tipos de datos estn designados como pertenecientes a los
siguientes grupos:
Tipos de datos de valores grandes: varchar(max), nvarchar(max) y
varbinary(max)
Tipos de datos de objetos grandes: text, ntext, image, varchar(max),
nvarchar(max), varbinary(max) y xml

FUNDAMENTOS DE BASE DE DATOS


Tipos de Datos en SQL Server

FUNDAMENTOS DE BASE DE DATOS


Lenguaje de Manipulacin de Datos (DML)
DML es la parte de SQL que se usa para la recuperacin o
manipulacin de datos. Se refiere a los comandos
responsables por las consultas y modificaciones de los
contenidos de las tablas.
Comandos ms importantes:

FUNDAMENTOS DE BASE DE DATOS


SQL (SQL Server Particularmente) acepta los operadores
ms comunes que se encuentran en la mayor parte de los
lenguajes.
Los operadores actan sobre operandos, o sea, sobre los
elementos a los que se les aplicar la operacin
determinada por el operador.
Existen dos tipos de operadores: los unarios, que actan
sobre un nico operando, y los binarios que actan sobre
dos operandos.

FUNDAMENTOS DE BASE DE DATOS


Aritmticos

Comparacin

Multiplicacin ( * )

Divisin ( / )

Sustraccin ( - )

Adicin ( + )

Mdulo ( % )

Lgicos

Igualdad ( = )
Desigualdad ( <> )

NOT
(Negacin)

Mayor que ( > )

AND (y lgico)

Menor que ( < )

OR ( o lgico)

Mayor o igual a ( >=


)

Menor o igual a ( <=


)

FUNDAMENTOS DE BASE DE DATOS


Instruccin SELECT
La instruccin SELECT se utiliza principalmente para la recuperacin de datos especficos de
una Tabla o Vista.
Una instruccin SELECT puede ser simple o compleja (no es necesariamente mejor que sea
compleja). Hay que intentar construir las instrucciones SELECT de la forma ms sencilla
posible siempre que recuperen los resultados necesarios.
Por ejemplo, si se necesita mostrar solo dos columnas de una tabla, hay que incluir solo esas
dos columnas en la sentencia SELECT.
Sintaxis:
SELECT

nombre_de_columnas

FROM tabla_a_la_que_se_consulta

Secolocan
colocanlos
losnombres
nombresde
delas
lascolumnas
columnasque
que
Se
se mostraran
mostraran en
en elel SELECT,
SELECT, separados
separados por
por
se
unacoma.
coma.
una
Se colocan
colocan los
los nombres
nombres de
de las
las Tablas
Tablas aa las
las
Se
cualespertenecen
pertenecenlas
lascolumnas.
columnas.
cuales

FUNDAMENTOS DE BASE DE DATOS


Ejemplo 1: Liste de la Tabla clientes de la base de
datos Sales, las columnas nombre y apellido1:
SELECT nombre, apellido1 FROM clientes
Ejemplo 2: Liste todos los atributos de la tabla clientes.
En SQL se utiliza el comodn asterisco ( * ) para listar
todos los campos de una tabla:
SELECT * FROM clientes

FUNDAMENTOS DE BASE DE DATOS


Despus de que se haya decidido qu datos se necesitan y de qu
tablas, se puede determinar qu otras opciones, en caso necesario
hay que utilizar. Estas opciones pueden incluir especificar que
columnas deberan estar en la clusula WHERE, especificar si hay
que ordenar los datos devueltos y especificar si sean de devolver
solo valores distintos.
Clusula WHERE
Esta clusula permite hacer una seleccin sobre los atributos de
las diversas columnas que se desean mostrar, en base a diversas
condiciones. Ac se pueden ocupar algunos operadores de
comparacin y lgicos.
La clausula WHERE se ubica bajo la clausula FROM.

FUNDAMENTOS DE BASE DE DATOS


Ejemplo 1: Liste desde la tabla clientes todos los clientes
que tengan direccin en Guasave. Solo muestre el id,
nombre, apellido1 y ciudad.
Select id, nombre, apellido1, ciudad from clientes
Where ciudad = Guasave
Ejemplo 2: Utilizando operadores, realice una consulta que
le permita listar el id, nombre, apellido1 y ciudad, de los
clientes que vivan en Guasave o Guamuchil.

FUNDAMENTOS DE BASE DE DATOS


La clausula SELECT consiste en una lista de seleccin y
posiblemente algunos argumentos opcionales.
La lista de seleccin es la lista de expresiones o columnas
que se especifican en la clausula SELECT para indicar que
datos hay que devolver.
Argumentos Opcionales
Se pueden utilizar los siguientes dos argumentos en la
instruccin SELECT para controlar que filas se devuelven:

FUNDAMENTOS DE BASE DE DATOS


DISTINCT: devuelve solamente filas nicas. Si la lista de
seleccin contiene varias columnas, las filas se consideran
nicas si los valores correspondientes en al menos una de las
columnas es diferente. Para que se dupliquen dos filas deben
contener valores idnticos en cada columna.
Ejemplo: Liste desde la tabla clientes el nombre y el apellido,
de tal manera que no se repitan los datos.
SELECT DISTINCT nombre, apellido1 FROM clientes

FUNDAMENTOS DE BASE DE DATOS


TOP n [PERCENT]: Devuelve solamente las primeras filas
del conjunto resultado. PERCENT es opcional e indica un
porcentaje de filas listadas de acuerdo al total final, se
debe por lo tanto indicar un porcentaje con valores entre 0
y 100.
Ejemplo 1: Liste la mitad de los nombres y apellidos de la
tabla
clientes (50 %)
SELECT TOP 50 PERCENT nombre, apellido FROM clientes

FUNDAMENTOS DE BASE DE DATOS


Ejemplo 2: Liste exactamente los 5 primeros nombres y
apellidos de la tabla clientes.
SELECT TOP 5 nombre, apellido FROM clientes

Nota: en valores exactos no va PERCENT

FUNDAMENTOS DE BASE DE DATOS


Alias de Columna: Se puede utilizar un alias para
clarificar el significado de los datos en una columna de
salida, para asignar una cabecera a una columna que se
utiliza en una funcin.
Ejemplo 1: Cambiar el nombre de la columna de salida
au_fname a NOMBRE
SELECT apellido1 AS Apellido FROM clientes

FUNDAMENTOS DE BASE DE DATOS


Clusula ORDER BY: Esta clusula permite ordenar el resultado de
la consulta, definiendo el orden en que se presentan las columnas
seleccionadas en la lista de seleccin. Se pueden presentar en orden
ascendente (por defecto) y descendente (se coloca despus de la
columna a ordenar la palabra clave DESC).
Ejemplo 1: Liste los nombres y apellidos de los clientes (tabla clientes)
en orden descendente y despus en orden ascendente (por apellido1).
Resultados
SELECT nombre, apellido1 FROM clientes where ciudad =
Guasave ORDER BY apellido1
SELECT nombre, apellido1 FROM clientes ORDER BY apellido1 DESC

FUNDAMENTOS DE BASE DE DATOS


Funciones de Agregacin
La instruccin INSERT se utiliza para insertar una fila de
datos en una tabla o vista.
Sintaxis
INSERT INTO nombre_tabla (columna1, columna2, ..,
columnaN)
VALUES ( valor1, valor2,.., valorN )

FUNDAMENTOS DE BASE DE DATOS


Ejemplo 1: Inserte los campos a la tabla Demo2 (codigo, nombre, estado)
INSERT INTO Clientes (Id, nombre, apellido1, apellido2, ciudad, domicilio,
fecha) VALUES (150, 'Elba', 'Gordillo', '', 'DF', 'Pedregal', '20061228' )
NOTA 1: la lista de los datos a ingresar tienen que ser en el mismo orden de las
columnas definidas.
NOTA 2: Si vas a ingresar todos los datos asociados a la Tabla, no necesita
colocar el nombre de las columnas solo los valores a registrar.
Ejemplo 2: Insertar una fila en la tabla Clientes.
INSERT INTO clientes
VALUES ( 100, 'jose', 'sandoval', 'acosta', 'los mochis', 'las palmas',
'20040101')

FUNDAMENTOS DE BASE DE DATOS


La introduccin UPDATE se utiliza para actualizar o cambiar
un valor o valores en una fila o filas de una tabla.
Sintaxis:
UPDATE nombre_tabla_actualizar

Ac se
se colocan
colocan las
las columnas
columnas que
que sern
sern
Ac
modificadasdentro
dentrode
delalafila
filaoofilas.
filas.
modificadas

SET columna_actualizar1 = nuevo_valor,


columna_actualizar2 = nuevo_valor
WHERE condiciones_para_actualizar
Se colocan
colocan condiciones
condiciones para
para poder
poder
Se
actualizar.De
De lala condicin
condicin dependen
dependen las
las
actualizar.
filasque
quese
seactualizan.
actualizan.
filas

FUNDAMENTOS DE BASE DE DATOS


Ejemplo: Actualice el atributo nombre de la tabla Clientes,
que referencia a RAUL por el Nombre RAUL ARMANDO, y
su Ciudad de DF a NL.

Resuldatos:
UPDATE clientes
SET nombre = Raul Armando, ciudad = NL
WHERE nombre = Raul

FUNDAMENTOS DE BASE DE DATOS


La instruccin DELETE se utiliza para borrar una o varias filas de
datos de una tabla. Se puede incluso borrar todas las filas de una
tabla.
Sintaxis:
DELETE FROM nombre_tabla WHERE condiciones_para_borrar
Ejemplo 1: Borre desde la tabla clientes el cdigo 150:
DELETE FROM clientes WHERE id = 150
Ejemplo 2: Borre todas las filas de la Tabla clientes:
DELETE FROM clientes

FUNDAMENTOS DE BASE DE DATOS


Vistas en SQL
Qu son las Vistas? Son tablas virtuales en donde podemos
visualizar los datos que consultemos. Si actualizamos los datos de
una vista, actualizaremos la tabla, y si actualizamos la tabla estos
cambios sern visibles desde la vista.
Por qu crear vistas?
Seguridad:
Visualizamos solo una parte de la informacin que
existe en nuestras tablas
Comodidad: El modelo relacional no es cmodo para visualizar ,
tener una vista nos simplifica esta tarea.

FUNDAMENTOS DE BASE DE DATOS


Para crear una vista debemos utilizar la sentencia CREATE VIEW,
debiendoproporcionar un nombre a la vista y una sentencia
SELECT vlida.
Sintaxis:
CREATE VIEW <nombre_vista> AS (<sentencia_select>)
Ejemplo 1: Crear una vista sobre las tablas clientes y prestamos,
en la que se muestre el nombre, apellidos del cliente y el importe
de su prstamo.
CREATEVIEW vista_prestamos AS ( SELECT nombre, apellidos,
importe FROM clientes, prestamos WHERE id=idCliente)

FUNDAMENTOS DE BASE DE DATOS


Modificacin de una Vista
Si queremos, modificar la definicin de nuestra vista podemos
utilizar la sentencia ALTER VIEW, de forma muy parecida a
como lo hacamos con las tablas. En este caso queremos
colocar un alias a los campos de nuestra vista:

ALTER VIEW vista_prestamos AS (


SELECT nombre as Nombre, apellido1 as [Primer Apellido],
importe as [Monto Prestado] FROM clientes, prestamosWHERE
id=idCliente ) )

FUNDAMENTOS DE BASE DE DATOS


Eliminacin de una Vista
Por ltimo, podemos eliminar la vista a travs de la sentencia
DROP VIEW. Para eliminar la vista que hemos creado
anteriormente se utilizara:
Sintaxis:
DROP VIEW nombre_vista
Ejemplo 1:
DROP VIEW vista_prestamos

FUNDAMENTOS DE BASE DE DATOS


Lenguaje de definicin de datos (DDL)
La estructura bsica de una base de datos relacional:
Base de Datos
Catlogos
Esquemas
Tablas y
Vistas
Columnas

Privilegios

La tabla es la unidad bsica de gestin de datos en una


base de datos relacional en SQL. El esquema de la tabla
est definida por las columnas y sus tipos.

FUNDAMENTOS DE BASE DE DATOS


Creacin de Bases de Datos en SQL Server
En una instancia de SQL Server se pueden especificar 32.767
bases de datos como mximo.
Es requerido que el usuario que cree la base de datos tenga
los privilegios necesarios para tal accin en el SQL Server, de
lo contrario no podr realizar la tarea de creacin.
Al crear una DB es recomendado especificar el tamao
inicialdel archivo donde se almacenar la informacin, as
como el tamao mximo del mismo y su cuota de
crecimiento (todos en MB)

FUNDAMENTOS DE BASE DE DATOS


Ejemplo:
USE master
CREATE DATABASE Sales ON (
NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )
LOG ON (
NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )

FUNDAMENTOS DE BASE DE DATOS


Una tabla es un objeto de una base de datos que almacena datos en una
coleccin de filas y columnas. Una tabla se define por las columnas que
contiene. As los datos pueden organizarse de forma similar a una hoja de
clculo.
Cabe recordar que una Tabla es lo mismo que una Relacin
Para definir una tabla se debe decidir qu columnas definir y que tipo de
datos, como por ejemplo datos de caracteres o numricos, se permite que
haya en cada columna.
Tambin se debe decidir sobre un rango permisible a esos datos por
ejemplo, podra decidirse permitir hasta 30 caracteres o nmeros de 4
bytes. Estos atributos se especifican mediante la asignacin a cada
columna de un tipo de datos, que es un conjunto de atributos que
determinan que tipo y rango de datos puede albergar esa columna.

FUNDAMENTOS DE BASE DE DATOS


La asignacin de tipos de datos a una columna fija los
siguientes atributos:
La clase de datos que la columna puede contener, como
caracteres, enteros o imagines.
El tamao o longitud de los datos de una columna.
La precisin del nmero (solo para tipos numricos) - esto es, el
nmero de dgitos que puede contener un nmero.
La escala del nmero (slo para tipos numricos) esto es, el
nmero de dgitos que pueden almacenarse a la derecha del punto
decimal.
A continuacin se darn a conocer un conjunto de tipos de datos
pertenecientes a SQL SERVER.

FUNDAMENTOS DE BASE DE DATOS


Tipos de Datos SQL SERVER:
Numricos:

Fechas:

String:

BIT,

DATETIME,

INT,

SMALLDATETIME.

SMALLINT,
DECIMAL,
NUMERIC,
MONEY,
SMALMONEY,
FLOAT.

CHAR,
VARCHAR,
TEXT,
NCHAR,
NVARCHAR,
NTEXT.

String Binarias:
BINARY,
VARBINARY,
IMAGE.

FUNDAMENTOS DE BASE DE DATOS


Creacin de Tablas
El comando CREATE TABLE tiene por finalidad crear una
nueva tabla en la base de datos. SQL SERVER permite hasta
dos billones de tablas por base de datos y hasta 1024
columnas por tabla. No existe limite para la cantidad
de filas por tabla, salvo por el espacio fsico disponible.

FUNDAMENTOS DE BASE DE DATOS


Sintaxis:
CREATE TABLE nombre_tabla (
nombre_atributo1 tipo dato,
nombre_atributo2 tipo_dato, Conjunto de Atributos con
sus respectivos tipos de

datos.
nombre_atributoN tipo_dato,
)
Ejemplo:
create table prestamos (
NOTA: Para
Para poder
poder ver
ver las
las tablas
tablas creadas
creadas en
en tu
tu esquema
esquema
NOTA:
relacionalen
enSQL
SQLSERVER
SERVERejecuta
ejecutael
elsiguiente
siguientecomando:
comando:
relacional
idCliente
int NOT NULL,
select ** from
from information_schema.tables
information_schema.tables where
where
select
sucursal
varchar(25) DEFAULT (''),
TABLE_TYPE=
='BASE
'BASETABLE
TABLE
TABLE_TYPE
importe
int default (0),
Para poder
poder ver
ver el
el detalle
detalle de
de una
una tabla
tabla ejecuta
ejecuta el
el siguiente
siguiente
Para
comando:
fechaPrestamo date
comando:
idPrestamo

int NOT NULL,

select ** from
from information_schema.columns
information_schema.columns
where
select
where
TABLE_NAME =
=Nombre_Tabla
Nombre_Tablaorder
orderby
bytable_name
table_name
TABLE_NAME

FUNDAMENTOS DE BASE DE DATOS


Eliminacin de Tablas
Tal como existe una sentencia para crear tablas existe una para
borrarlas por completo de un esquema (schema, este se define por lo
nombres de usuarios definidos para la base de datos).
Sintaxis:
DROP TABLE nombre_tabla_a_eliminar
Ejemplo:
DROP TABLE clientes

FUNDAMENTOS DE BASE DE DATOS


Uso de Valores NULL
Un valor NULL es un valor desconocido al que se le refiere como NULL.
La admisin de nulos de una columna se refiere a la posibilidad de la
columna de aceptar o rechazar valores NULL.
Un valor NULL en una columna indica normalmente que no se ha
introducido nada para una fila particular de datos porque el valor es
desconocido, no aplicable, no definido o se ha de aadir en un momento
posterior.
Los valores NULL no son ni valores vacos ni valores 0; sus valores
verdaderos son desconocidos - as no hay dos valores NULL que sean
iguales.

FUNDAMENTOS DE BASE DE DATOS


Uso de Valores NULL
Ejemplo:
CREATE TABLE ejemplo (

Se especifica generalmente solo en


el caso del NOT NULL, ya que por
defecto son NULL.

atributo1 int NOT NULL,

atributo2 char NULL


)
Ejercicio: Crear la tabla Demo2 colocando el atributo codigo y estado
como NOT NULL .

FUNDAMENTOS DE BASE DE DATOS


Valor por DEFECTO
A las columnas tambin se les puede colocar un valor por defecto, en
el caso de que no se ingresen datos en esa fila. Para poder hacer esto
la columna debe ser pensada para aceptar datos NULL.
Nomenclatura:
nombre_atributo tipo_de_dato DEFAULT (Valor)
Ejemplo:
CREATE TABLE ejemplo (
atributo1 int NOT NULL,
atributo2 char DEFAULT (A),
atributo3 int
)

DEFAULT(1)

DEFAULT es la palabra reservada


para el caso de nmeros dentro del
parntesis slo se coloca el nmero,
en el caso de texto se coloca entre
comas simples .

FUNDAMENTOS DE BASE DE DATOS


Propiedad IDENTITY
Al crear una tabla se puede especificar una columna como columna de
identidad aadiendo la propiedad IDENTITY a la definicin de la columna.
Si se crea una columna con la propiedad IDENTITY se genera
automticamente un valor de fila para esa columna, basndose en un
valor semilla y un valor de incremento.
Ejemplo:
valor semilla (1) y valor incremento (2)
Para la primera fila el valor del atributo sera 1
Para la segunda fila el valor del atributo sera 3
Sintaxis:
Nombre_Atributo tipo_dato IDENTITY (valor semilla, valor incremento)

FUNDAMENTOS DE BASE DE DATOS


Propiedad IDENTITY
Ejemplo:
CREATE TABLE ejemplo (
atributo1 int IDENTITY (1,1) NOT NULL,
atributo2 nvarchar(20)
)
Ejercicio:
Crear la tabla DEMO2 colocando el cdigo con la propiedad
IDENTITY comenzando con un valor base 1 e incrementando de
1 en 1.

FUNDAMENTOS DE BASE DE DATOS


ALTER TABLE
La instruccin ALTER TABLE se utiliza para modificar la definicin o los
atributos de una tabla.
Se pueden modificar columnas,
restricciones, aadir atributos, etc.

eliminar

atributos,

modificar

Sintaxis:
ALTER TABLE nombre_tabla (tipo de cambio) ALTER COLUMN, ADD,
DROP.

FUNDAMENTOS DE BASE DE DATOS


ALTER TABLE
Ejemplo:
CREATE TABLE ejemplo (
atributo1 int,
atributo2 nvarchar
)
/* Se modifica columna*/
ALTER TABLE ejemplo
ALTER COLUMN atributo2 int

Se cambia el tipo de dato del atributo

FUNDAMENTOS DE BASE DE DATOS


Bibliografa
Fundamentos de bases de datos. Cuarta edicin. Abraham
Silberschatz et al. McGraw Hill. Madrid. Ebook. 2002.
Introduccin a los Sistemas de Base de Datos, C. J. Date, Prentice
Hall Sptima Edicin, 2001.
Running SQL SERVER 2000, Marci Frohock Garca & Jamie Reding &
Edward Whalen & Steve Adrien Deluca, McGraw Hill 2001.
SQL SERVER 7.0 Iniciacin y Referencia, Jos Antonio Ramalho,
McGraw-Hill 2000.
Bases de Datos Relacionales, Matilde Celma Gimnez & Juan
Casamayor & Laura Mota, Prentice Hall, 2003.

You might also like