Você está na página 1de 39

UNIVERSIDAD

SEOR DE SIPN

Implementacin de
Bases de Datos
Tema 02: Proceso de
Creacin de una Base de
datos
Ing. Freddy Campos Flores

Qu es SQL?
Es un lenguaje de consulta y programacin de bases de

datos utilizado para la organizacin, acceso, consulta y


gestin de bases de datos relacionales.
Aplicacin
del Cliente

Validacin de
Permisos

Solicitud
SQL

Cliente

APIs de la BD
(OLEDB, ODBC,
Microsoft Jet, etc.)
Librera de
Autentificacin
del Cliente

Datos

USS -Escuela de Ingeniera de Sistemas

Server

Database
Management
System
(SGBD)

Ing. Freddy Campos Flores

Funciones Principales
de SQL en un SGBD
Definicin de Datos

Estructura de la BD

Organizacin de Datos

Relaciones

Recuperacin de Datos

Extraccin de Datos

Manipulacin de Datos

Permite la insercin, eliminacin, modificacin y actualizacin de los datos.

Control de Acceso

Control sobre los Permisos en los datos

Compartimiento de Datos

Coordina el acceso y la comparticin de datos entre varios usuarios.

Integridad de Datos

Protege la BD de deterioros o errores causados por el sistema

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

SQL Server Management Studio

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Estructura de las Bases de Datos


Cada Base de Datos de SQL Server se crea a partir de un

conjunto de archivos del sistema operativo.

Archivos

Un archivo de base de datos puede ser un archivo de datos o


bien un archivo de registro.

Archivos de Datos.- Se usan para almacenar datos y objetos


como tablas, ndices, vistas y procedimientos almacenados.
Existen dos tipos de archivos de datos:

Principales

Secundarios

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Estructura de las Bases de Datos

Archivos de datos principal


- Contiene toda la informacin de inicio para la base de datos, tablas y objetos del

sistema. Apunta al resto de archivos creados en la base de datos. Tambin puede


almacenar tablas y objetos definidos por el usuario.

- Cada base de datos debe tener un archivo principal con la extensin .MDF

Archivos de datos secundarios


- Estos archivos son opcionales. Pueden contener datos y objetos que no se encuentren

en el archivo principal.

- Una base de datos podra no tener ningn archivo secundario si todos sus datos se

encuentran en el archivo principal.

- Se puede tener ms de un archivo secundario.


- La extensin de estos archivos son .NDF.

Archivos de Registro de Transacciones

Contiene toda la informacin de registro de transacciones utilizada para recuperar


la base de datos.

Toda base de datos debe tener al menos una archivo de registro

La extensin de este tipo de archivo es .ldf

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Estructura de una base de datos


Transacciones
1
1

La
La aplicacin
aplicacin enva
enva
una
una modificacin
modificacin

Cache y bfer

2
2 Se

Se cargan
cargan las
las pginas
pginas en
en
memoria
memoria y
y se
se modifican
modifican

3
3

La
La modificacin
modificacin es
es
guardada
guardada en
en el
el log
log
Archivo log

Archivo de datos
4
4

USS -Escuela de Ingeniera de Sistemas

Un
Un checkpoint
checkpoint
escribe
escribe las
las
pginas
pginas de
de
memoria
memoria a
a disco
disco

Ing. Freddy Campos Flores

Bases de Datos del Sistema


Al instalar SQL Server se crean cuatro bases de datos del

sistema: las bases de datos master, temdb, model y msdb.

Master.- Registra la informacin de inicializacin de SQL Server


y los parmetros de configuracin de SQL Server. Tambin
registra todas las cuentas de inicio de sesin, la existencia de
todas las dems bases de datos y la posicin del archivo
principal de todas las bases de datos de usuario

Tempdb.- Alberga tablas y procedimientos almacenados


temporales. Esta base de datos tambin se utiliza para otras
necesidades de almacenamiento como el ordenamiento de
datos.

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Bases de Datos del Sistema

Model.- Sirve como plantilla para todas las dems bases de


datos que se creen en el sistema, entre ellas tempdb. Esta
base de datos debe existir en el sistema por que se utiliza para
volver a crear tempdb cada vez que SQL Server se inicia.

Msdb.- Contiene tablas que agente de SQL Server utiliza para


la planificacin de trabajos y alertas. Esta base de datos
tambin alberga las tablas que se usan para la duplicacin.

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Comentarios
Los comentarios son cadenas de texto que no son tomados en cuenta

durante la ejecucin de sentencias.

Existen 2 formas de colocar comentarios en SQL:

Comentarios por Lnea

Para colocar un comentario en una lnea, se deben colocar 2 (--) guiones


antes del comentario, ya que SQL ignora todo el texto que se encuentre a
la derecha de los guiones.
Ejemplo:
Use Ventas - - utiliza la BD Ventas
SELECT *
- - Selecciona todos los registros
FROM Pedidos - - de la tabla pedidos
Go

Comentarios de Bloque

Para generar un bloque de varias lneas de comentarios se utiliza los


caracteres (/*) para marcar el inicio del comentario y los caracteres (*/)
para finalizar el comentario
Ejemplo:
/* Este es un bloque
de varias lneas
que termina precisamente aqu */

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Transacciones DDL
Son instrucciones que controlan la estructura de una BD con

las cuales se pueden realizar las siguientes acciones:

Crear Tablas

Eliminar Tablas

Modificar la estructura de la tabla

Definir Vistas (Tablas Virtuales)

Establecer parmetros de seguridad a la BD

Creacin de ndices para la aceleracin el acceso a los datos.

Control del almacenamiento de los datos

Las transacciones DDL que se utilizan son:

CREATE Nombre del Objeto

ALTER Nombre del Objeto

DROP Nombre del Objeto

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Crear una Base de Datos (CREATE)


Comando T-SQL:

CREATE DATABASE

Sintaxis:

CREATE DATABASE [Nombre de BD]

CREATE DATABASE CursoSql


ON
(NAME = CursoSql_dat,
FILENAME = 'C:\MSSQL\cursosql_dat.mdf',
SIZE=8MB, MAXSIZE=9MB,FILEGROWTH=100KB)
LOG ON
(NAME = cursosql_log,
FILENAME = 'C:\MSSQL\cursosql_log.ndf',
SIZE=1000MB, MAXSIZE=1500MB,FILEGROWTH=100MB)
use cursosql
go
sp_helpdb [base de datos]

Permite mostrar la informacin de los archivos de la


base de datos y muestra el espacio asignado.

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Utilizar una BD
Para realizar una accin dentro de una Base de Datos,

primero hay que decirle a SQLServer que queremos


trabajar con esa Base de Datos, para esto se utiliza el
siguiente comando

Sentencia SQL:

USE

Sintaxis:

USE Nombre de la BD

Ejemplo:
USE Animales

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Creacin de una Tabla


Comando T-SQL:

CREATE TABLE

Sintaxis:

CREATE TABLE Nombre_Tabla (


Nombre_Campo1 Tipo_Dato[(Tamao)] [NULL | NOT NULL] [DEFAULT
Valor],
Nombre_Campo2 Tipo_Dato[(Tamao)] [NULL | NOT NULL] [DEFAULT
Valor], etc )

* Solo es necesario definir el tamao cuando se utilizan los Tipos de


Datos Char y Varchar.
Ejemplo 1:
CREATE TABLE MiTabla (
Matricula INT,
Nombre VARCHAR(15),
Edad INT )

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Creacin de una Tabla


Valores Ausentes y Valores Predeterminados

Al momento de definir cada una de las columnas es posible


determinar si el campo va a permitir valores nulos o no.

Es posible definir para cada columna en caso de ser necesario,


una valor que funcione como predeterminado al momento de
ingresar registros a la tabla.

CREATE TABLE oficinas


(oficina integer NOT NULL,
ciudad varchar(15) NOT NULL,
region varchar(15) NOT NULL DEFAULT 'Este',
jef integer DEFAULT 106,
objetivo money DEFAULT NULL,
ventas money NOT NULL)

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Eliminacin de una Tabla


Es posible eliminar una tabla de la base de datos, es

importante considerar que al momento de que la tabla es


eliminada todos los registros almacenados en dicha tabla,
tambin sern eliminados.

Al eliminar una tabla debe considerar si esta no se

encuentra relacionada con alguna otra tabla, en caso de


que as sea, la integridad en las relaciones se vera
afectada.
DROP TABLE nombre_tabla

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Modificacin de una Tabla


En ocasiones ser necesario alterar la definicin de la

estructura las tablas, por lo que ser posible modificar la


tabla en los siguientes aspectos:

Cambiar el tipo de datos para las columnas

Agregar columnas

Eliminar columnas
ALTER TABLE MITABLA
alter column matricula varchar(15)
ALTER TABLE nombre_tabla
ADD nueva_columna tipo_datos
ALTER TABLE nombre_tabla
DROP COLUMN nombre_columna

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Asignar Alias a los Campos


Es posible que al momento de que muestre el resultado de

la consulta, los nombres de los campos sean distintos.

Lo anterior es til cuando los nombres de los campos no

son muy representativos para los usuarios finales.

La asignacin del Alias se hace a travs de la clusula AS

seguido del nombre del alias o sobrenombre que se quiera


asignar.

SELECT idproducto AS [Cdigo Producto],


nombreproducto AS Producto from productos

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Tablas con Columnas Incrementales


Las tablas pueden contener una sola columna que tenga

como valor un valor inicial y que en cada registro que se


agregue se pueda ver incrementado dependiendo del valor
que se defini en la sintaxis de la creacin de la tabla
CREATE TABLE nombre_tabla
(nombre_columna tipo_dato
[IDENTITY [(valor_inicial,incremento)]]NOT NULL)

CREATE TABLE clases


(Id_Estudiante integer IDENTITY(100, 5) NOT NULL,
Nombre varchar(15))

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Tablas con Columnas Incrementales


Al momento de insertar registros a la tabla, la primer

columna se incrementar de manera automtica tomando


como valor inicial e incremento los establecidos en la
sentencia del T-SQL.

Ingrese los datos faltantes al registro y observe el

comportamiento que se tiene al querer ingresar datos al


primer campo.
insert into clases
(nombre) values ('David')

select * from clases

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Consultas Simples SELECT


La instruccin Select permite recuperar informacin de una base de datos

y los devuelve en forma de resultados de la consulta.

En la instruccin Select se especifican los elementos de datos que

recupera la consulta.

Los elementos se especifican a travs de una lista de elementos

separados por comas.

Cada elemento de seleccin en la lista genera una nica columna de

resultados de la consulta, de izquierda a derecha.

Un elemento de seleccin puede ser:

Un nombre de columna

Identifica una columna de la tabla o tablas que aparecen en la clusula FROM

SQL toma el valor de esa columna de cada fila de la tabla y lo muestra como resultado de
la consulta

Una constante

Especifica que ese mismo valor de constante aparecer en cada fila de los resultados de
la consulta

Una expresin

Indica a SQL que debe calcular el valor a poner e los resultados, segn se especifica en la
expresin

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Instruccin SELECT
SELECT

Lista las columnas que se van a recuperar


de la BD.

FROM

Se indica el nombre de la tabla que


contiene la informacin a recuperar.

WHERE

Se especifica una condicin para los


registros que debe recuperar SQL.

GROUP BY

Genera una columna donde agrupa los


registros que tengan la misma informacin,
generando un resumen.

HAVING

Indica a SQL que incluya en el resultado


slo determinados grupos producidos por la
clusula GROUP BY.

ORDER BY

Ordena los resultados tomando como base


los datos de una o ms columnas.

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Instruccin SELECT
En ocasiones es conveniente mostrar la informacin de

todas las columnas que existen en la tabla, por lo que no


ser necesario colocar la lista de todos los nombres de la
columna. Para lo anterior ser necesario utilizar el (*), el
cual le indica a SQL que debe tomar todas las columnas de
la tabla para posteriormente ser mostradas sobre la
consulta.

Ejemplo 1:
SELECT * FROM CLIENTES

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Seleccin de Filas (WHERE)


Normalmente no se desea seleccionar slo algunos

registros de una tabla e incluir slo estos en los resultados


de la consulta.

La clusula WHERE se usa para especificar los registros

que se desea recuperar.

SELECT idpedido,idproducto,preciounidad
FROM [detalles de pedidos]
WHERE preciounidad >=100
SELECT idcliente,nombrecompaa,nombrecontacto
FROM clientes
WHERE nombrecontacto = 'Antonio Moreno'

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda
SQL ofrece una gran variedad de condiciones de bsqueda

que permiten especificar muchos tipos diferentes de


consulta de forma eficiente y natural.

Existen cinco condiciones bsicas de consulta:

Comparacin. Compara el valor de una expresin con el valor


de otra expresin.

Rango. comprueba si el valor de una expresin se encuentra


en un rango especificado de valores

Pertenencia a conjuntos. Comprueba si el valor de una


expresin con uno de un conjunto de valores.

Encaje de patrones. Comprueba si el valor de una columna


que contiene datos de cadena coincide con un patrn
especificado.

Valores nulos. Comprueba si una columna tiene una valor


NULL.

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda (Comparacin)


La condicin de comparacin es la ms usual en una

consulta de SQL, en dicha comparacin SQL calcula y


compara los valores de dos expresiones para cada fila de
datos.

Las expresiones pueden tan sencillas o complejas,

dependiendo de lo el usuario desea obtener en la consulta.

SELECT * FROM productos WHERE unidadesenexistencia>=50


AND unidadesenexistencia<=100
SELECT * FROM clientes
WHERE cargocontacto<>'propietario'
USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda (Rango)


SQL proporciona una forma diferente de condicin de

bsqueda con el rango (BETWEEN), el cual comprueba si


un valor se encuentra entre dos especificaciones.

Implica tres expresiones SQL:

La primera define el valor a comprobar

La segunda el lmite inferior del rango a comprobar

La tercera el lmite superior del rango a comprobar

SELECT idpedido,idcliente,fechapedido,fechaentrega
FROM pedidos
WHERE idpedido BETWEEN 10300 AND 10400
SELECT idpedido,idcliente,fechapedido,fechaentrega
FROM pedidos
WHERE fechapedido BETWEEN '09-01-96' AND '09-30-96'
mm/dd/aa

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda
(Pertenencia a Conjuntos)
La bsqueda de pertenencia a conjuntos (IN), comprueba

si un valor de datos coincide con uno de una lista de


posibles valores.

SELECT idproducto, nombreproducto, preciounidad,


Unidadesenexistencia FROM productos
WHERE unidadesenexistencia IN (0,5,10)
SELECT idpedido,idcliente,fechapedido,fechaentrega
FROM pedidos
WHERE fechapedido IN ('05-01-97','06-01-97','07-01-97',
'08-01-97')

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda
(Encaje de Patrones)
La bsqueda de encaje de patrones, permite recuperar los

registros que coincidan con un texto en concreto.

SELECT idcliente,nombrecompaa,nombrecontacto
FROM clientes
WHERE nombrecompaa like 'S%'
SELECT idcliente,nombrecompaa,nombrecontacto
FROM clientes
WHERE nombrecompaa like 'S%' or nombrecompaa
like 'A%'
SELECT * FROM mitabla
WHERE nombre LIKE '_egador'
SELECT * FROM mitabla
WHERE nombre LIKE '_egador%'

SELECT * FROM mitabla


WHERE nombre LIKE '_egador_'

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Condiciones de Bsqueda
(Valores Nulos)
Para una fila dada, el resultado de una condicin de

bsqueda puede ser TRUE o FALSE, o puede ser NULL por


que una de las columnas usadas en la evaluacin de la
condicin de bsqueda contenga un valor NULL

SELECT nombrecompaa,cargocontacto,direccin, regin, fax


FROM clientes
WHERE regin IS NULL
SELECT idcliente,fechapedido,regindestinatario
FROM pedidos
WHERE idcliente='TOMSP' AND regindestinatario IS

USS -Escuela de Ingeniera de Sistemas

NULL

Ing. Freddy Campos Flores

Agrupacin de Registros (Group By)


Una consulta que contiene GROUP BY se denomina

consulta de agrupacin por que agrupa los datos de las


tablas fuente en una nica fila de resumen por cada
registro.
SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor
SELECT idproveedor,unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)
SELECT idproveedor,unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia) by idproveedor
COMPUTE sum(unidadesenexistencia)

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Uso de la Clusula HAVING en GROUP BY


La clusula HAVING permite establecer una condicin en

los registros agrupados de una consulta, para que SQL


muestre slo los registros que hayan cumplido con la
condicin.

HAVING debe utilizarse en combinacin con la clusula

GROUP BY.

SELECT idproducto,
idorden,cantidad
FROM pedidos

idproducto

Idorden

cantidad

10

10

25

15

30

USS -Escuela de Ingeniera de Sistemas

SELECT idproducto,
sum(cantidad) as Total
FROM pedidos
GROUP BY idproducto
HAVING sum(cantidad)>=30
idproducto

Total

35

45

Ing. Freddy Campos Flores

Uso de la Clusula HAVING en GROUP BY


Ejercicios:
SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor
having sum(unidadesenexistencia)>200

SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor
having idproveedor<=5

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Uso del GROUP BY


con la clusula COMPUTE
La clusula COMPUTE permite colocar al final de la consulta una

fila con un resultado de alguna funcin matemtica aplicada.

Puede utilizarse tambin la clusula COMPUTE BY para crear una

especie de subtotales con su respectivo total general.

SELECT idproveedor,
unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)

SELECT idproveedor,
unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)
by idproveedor
COMPUTE sum(unidadesenexistencia)

IdProveedor

Unidadesenexistencia

39

IdProveedor

Unidadesenexistencia

17

39

53

17

Sum

56

76

53

Sum

194

76

Sum

138

Sum

194

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Registros Duplicados (DISTINCT)


En caso de que en la tabla se tenga especificado un campo

como clave principal, todos los registros de la tabla en ese


campo tendr informacin diferente, ya que la clave
principal por naturaleza impide tener registros duplicados
en el campo de clave principal.

Si la clave principal no se incluye, la tabla podr tener

registros con informacin duplicada.

Para no mostrar los registros con informacin duplicada

ser necesario insertar la palabra DISTINCT en la


instruccin SELECT ates de la lista de seleccin.
SELECT DISTINCT fechapedido FROM pedidos
SELECT DISTINCT cargo FROM empleados
SELECT DISTINCT cargo, regin FROM empleados

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Ordenacin de
Registros (ORDER BY)
Una consulta generada por la clusula SELECT puede

presentar los resultados de manera organizada tanto


numricamente y alfabticamente.

Clusula T-SQL:

Sintaxis:

ORDER BY
SELECT [Campos] FROM [Tabla] ORDER BY [Campos] [Tipo de Ordenacin]

Los tipos de ordenacin puedes ser:

ASC -

Ordenacin Ascendente

DESC - Ordenacin Descendente


SELECT * FROM empleados ORDER BY idempleado desc

SELECT * FROM empleados ORDER BY cargo asc


USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Mostrar los Valores


Superiores/Inferiores
A travs de la clusula TOP, SQL permite mostrar los registros

que contengan los valores mas superiores o inferiores de la


consulta.
Cuando se desean devolver dos o ms filas que ocupan el ltimo
lugar en el conjunto de resultados se agrega la clusula WITH
TIES despus de la clusula TOP.
SELECT TOP 3 *
FROM productos
order by unidadesenexistencia desc
SELECT TOP 3 *
FROM productos
Order BY unidadesenexistencia asc
SELECT TOP 3 with ties *
FROM productos
ORDER BY unidadesenexistencia asc
USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Consultas con Columnas Calculadas


Los resultados de una consulta vienen directamente de la

bas de datos, una consulta de SQL puede incluir columnas


calculadas, cuyos valores se obtiene a partir de los valores
almacenados.

Para solicitar una columna calculada se hace a travs de

una expresin

Las expresiones de SQL pueden incluir la suma, resta,

multiplicacin y la divisin.

Las columnas referenciadas en una expresin aritmtica

deben tener un tipo numrico.

select idpedido, idproducto, (preciounidad*cantidad)


as 'Total de Venta' from [detalles de pedidos]

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Consultas de Varias Tablas


A travs de la clusula INNER JOIN ser posible realizar

consultas entre dos o ms tablas.

Para realizar consultas entre varias tablas, es

recomendable asignar Alias haciendo uso de la clusula AS


para nombrar las tablas.
Select idpedido, idproducto,producto,cantidad
FROM pedidos INNER JOIN productos
ON pedidos.idproducto=productos.idproducto
GO
Select idpedido, idproducto,producto,cantidad
FROM pedidos AS pe INNER JOIN productos AS pr
ON pe.idproducto=pr.idproducto
GO

USS -Escuela de Ingeniera de Sistemas

Ing. Freddy Campos Flores

Você também pode gostar