Sie sind auf Seite 1von 20

Manual de Base de datos

LENGUAJE DDL

Sentencia CREATE

CREATE DATABASE

Crea una nueva base de datos y los archivos que se usan para almacenar la base de datos, una
instantnea de base de datos, o adjunta una base de datos a partir de los archivos separados de
una base de datos creada anteriormente.

-- Crear una base de datos de nombre _Colegio


create database colegio
-- Se utiliza CONTAINMENT para especificar el estado de contencin
de la base de datos.
Una base de datos puede ser dependiente o independiente. Una base de datos independiente es
aquella que est aislada de otras bases de datos y de la instancia SQL SERVER que hospeda a la
base de datos.

Una base de datos totalmente independiente incluye todos los metadatos y opciones de
configuracin necesarios para definirla y no tiene dependencias de configuracin en la instancia
de Motor de base de datos de SQL Server donde est instalada.

NONE = Base de datos es dependiente

PARTIAL=Base de datos es parcialmente independiente

containment = none

- ON PRIMARY: on indica que las secciones de la base de datos se


especifican explcitamente. Primary especifica las lista de archivos
principales (.mdf y .ndf)

on primary
(
Name = 'dbcolegio_mdf', --Se especifica el nombre del archivo
Filename = 'D:\dbcolegio.mdf', -- Se indica la direccin donde se
va a guardar
size = 15MB, --Se indica el tamao inicial
maxsize = 250mb, --Se indica que el mximo tamao que puede tener.
filegrowth =10mb Se indica en cuanto aumento si se alcanza el
mximo tamao.
),(
Name = 'dbcolegio_ndf',
Filename = 'D:\dbcolegio.ndf',
size = 15MB,
maxsize = unlimited,
filegrowth =10mb
)

Log ON: indica que las secciones de registro de la base de datos.


LOG ON
(
Name = 'dbcolegio_ldf',
Filename = 'D:\dbcolegio.ldf',
size = 15MB,
maxsize = 500mb,
filegrowth =10%
)

CODIGO 1

create database dbcolegio


containment = none
on primary
(
Name = 'dbcolegio_mdf',
Filename = 'D:\dbcolegio.mdf',
size = 15MB,
maxsize = 250mb,
filegrowth =10mb
),(
Name = 'dbcolegio_ndf',
Filename = 'D:\dbcolegio.ndf',
size = 15MB,
maxsize = unlimited,
filegrowth =10mb
)
LOG ON
(
Name = 'dbcolegio_ldf',
Filename = 'D:\dbcolegio.ldf',
size = 15MB,
maxsize = 500mb,
filegrowth =10%
)

Sentencia USE

Cambia el contexto de la base de datos al de la base de datos especificada o a la instantnea en


SQL Server.

--SENTENCIA USE
USE dbreserva
GO
CODIGO 2 : BASE DE DATOS DE RESERVA

create database dbreserva


containment = none

on primary (
name = 'dbreserva_mdf',
filename = 'D:\dbreserva.mdf',
size = 15MB,
maxsize = 250MB,
filegrowth = 10MB
),(
name = 'dbreserva_ndf',
filename = 'D:\dbreserva.ndf',
size = 15MB,
maxsize = unlimited,
filegrowth = 10MB
)

log on
(name = 'dbreserva_ldf',
filename = 'D:\dbreserva.ldf',
size = 15MB,
maxsize = 500MB,
filegrowth = 10%
)
go

--SENTENCIA USE
use dbreserva
go

CREATE TABLE

Crea una nueva tabla en SQL Server.

TABLAS DE LA BASE DE DATOS COLEGIO


-- Crear una tabla de nombre carrera

create table carrera(


clave_c int,
nom_c varchar(50),
durac_c float,
constraint pk_cc primary key(clave_c)
)

La clusula constraint se utiliza cuando se usa las sentencias ALTER TABLE y CREATE
TABLE especifica el inicio de una definicin para una restriccin PRIMARY KEY,
UNIQUE, FOREIGN KEY o CHECK o una definicin DEFAULT.
PRIMARY KEY
Es una restriccin que aplica la integridad de entidad para una columna o columnas
especificadas mediante un ndice nico. Solo se puede crear una restriccin PRIMARY KEY
por cada tabla.
UNIQUE
Es una restriccin que proporciona integridad de entidad para una columna o columnas
especificadas mediante un ndice nico.

CODIGO 3: TABLAS BASE DE DATOS DE COLEGIO

--Tabla Carrera
create table carrera(
clave_c int,
nom_c varchar(50),
durac_c float,
constraint pk_cc primary key(clave_c)
)
--Tabla materia
create table materia(
clave_m int,
nom_m varchar(50),
cred_m float,
constraint pk_cm primary key(clave_m)
)
--Tabla profesor
create table profesor(
clave_p int,
nom_p varchar(150),
dir_p varchar(200),
tel_p bigint,
hor_p datetime,
constraint pk_cp primary key (clave_p)
)
--Tabla alumno
create table alumno(
mat_alu int,
nom_alu varchar(150),
edad_alu int,
sem_alu int,
gen_alu varchar(10),
clave_c1 int,
constraint pk_calu primary key (mat_alu),
constraint fk_fc1 foreign key(clave_c1) references carrera(clave_c)
)
--Tabla alu_pro
create table alu_pro(
mat_alu1 int,
clave_p1 int,
constraint fk_falu1 foreign key(mat_alu1) references
alumno(mat_alu),
constraint fk_fp1 foreign key(clave_p1) references profesor(clave_p)
)
--Tabla mat_alu
create table mat_alu(
clave_m1 int,
mat_alu2 int,
constraint fk_fm1 foreign key(clave_m1) references materia(clave_m),
constraint fk_falu2 foreign key(mat_alu2) references alumno(mat_alu)
)
--Tabla mat_pro
create table mat_pro(
clave_m2 int,
clave_p2 int,
constraint fk_fm2 foreign key(clave_m2) references materia(clave_m),
constraint fk_fp2 foreign key(clave_p2) references profesor(clave_p)
)

El diseo de las tablas y la base de datos de colegio se basa en el siguiente diagrama


entidad relacin.
CODdIGO 4: TABLAS BASE DE DATOS DE RESERVA

CREATE TABLE PAIS (


idpais char(4) not null primary key,
nombre varchar(30) not null unique
)

CREATE TABLE PASAJERO(


idpasajero char(8) not null primary key,
nombre varchar(20) not null,
apaterno varchar(20) not null,
amaterno char(20) not null,
tipo_documento varchar(30) not null,
numero_documento varchar(12) not null,
fecha_nacimiento date not null,
idpais char(4) not null,
telefono varchar(15) null,
email varchar(50) not null,
clave varchar(20) not null
)
create table aeropuerto(
idaeropuerto char(5) not null,
nombre varchar(50) not null,
idpais char(4) not null
)

ALTER TABLE AEROPUERTO


ADD CONSTRAINT PL_AEROPUERTO_PAIS
PRIMARY KEY NONCLUSTERED (idaeropuerto)

ALTER TABLE AEROPUERTO


ADD CONSTRAINT UQ_AEROPUERTO_NOMBRE
UNIQUE(nombre)

CREATE TABLE AEROLINEA(


idaerolinea int not null primary key,
ruc char(11) not null,
nombre varchar(40) not null
)

create table avion(


idavion char(5) not null primary key,
idaerolinea int not null,
fabricante varchar(40) null,
tipo varchar(3) not null
)

alter table avion


add capacidad int not null
go

alter table avion


alter column tipo varchar(30) not null
create table asiento(
idasiento int not null primary key,
letra char(2) not null,
fila int not null)

create table tarifa(


idtarifa int not null primary key,
clase varchar(20) not null unique,
precio money not null,
impuesto money not null
)
create table reservas(
idreserva int not null primary key,
costo money not null,
fecha date null,
observacion varchar(200) null,
)
La restriccin UNIQUE permite determinar que los valores registrados en una
misma columna no sean idnticos, es decir se mantengan nicos. Por ejemplo el email
de una persona es un campo nico.
La restriccin CHECK permite restringir el rango de valores que pueden estar
permitidos ingresar en una o ms columnas de una tabla.
La restriccin DEFAULT permite registrar un dato en un campo por defecto
cuando el usuario no ingresa ningn valor. La propiedad del campo de la tabla
necesariamente debe ser null.
--RESTRICCION DEFAULT
ALTER TABLE reservas
add constraint dfl_reserva_fecha
default getdate() for fecha
go
)
CREATE TABLE vuelo(
idasiento int not null,
idaeropuerto char(5) not null,
idreserva int not null,
idavion char(5) not null,
idtarifa int not null
)
alter table vuelo
add primary key(idasiento, idaeropuerto, idreserva, idavion)

create table pago(


idpago int not null primary key identity,
idreserva int not null,
fecha date default getdate(),
idpasajero char(8) not null,
monto money not null,
tipo_comprobante varchar(20) not null,
num_comprobante varchar(15) not null,
impuesto decimal(5,2) not null
)

--AGEREGA RESTRICCION CHECK CONTROLAR QUE NO SE INGRESEN


--FECHAS MAYORES A LA FECHA
ALTER TABLE pago
add constraint chk_pag_fecha
CHECK (fecha <=getdate())

Para crear el diagrama de relaciones, tiene que alterarse cada una de las tablas para el caso
de las base de datos de Reserva, muy diferente en el caso Colegio, en el que en la propia
sentencia de crate table se establecio dicha relacin.

CODIGO 5: RELACIONES DE LA BASE DE DATOS RESERVA


--Relacion entre tabla pasajero -pais
alter table pasajero
add constraint fk_pasajero_pais foreign key(idpais) references
pais(idpais)
go
--Relacion entre tabla aeropuerto -pais
alter table aeropuerto
add constraint fk_aeropuerto_pais foreign key(idpais) references
pais(idpais)
go
--Relacion entre la tabla pago y pasajero
alter table pago
add constraint fk_pago_pasajero foreign key(idpasajero) references
pasajero(idpasajero)
--Relacion entre la tabla pago y reservas
alter table pago
add constraint fk_pago_reservas foreign key(idreserva) references
reservas(idreserva)
--Relacion entre la tabla avion y aerolinea
alter table avion
add constraint fk_avion_aerolinea foreign key(idaerolinea) references
aerolinea(idaerolinea)
--Relacion entre la tabla vuelo y asiento
alter table vuelo
add constraint fk_vuelo_asiento foreign key(idasiento) references
asiento(idasiento)
--Relacion entre la tabla vuelo y avion
alter table vuelo
add constraint fk_vuelo_avion foreign key(idavion) references
avion(idavion)
--Relacion entre la tabla vuelo y reserva
alter table vuelo
add constraint fk_vuelo_reservas foreign key(idreserva) references
reservas(idreserva)
--Relacion entre la tabla vuelo y tarifa
alter table vuelo
add constraint fk_vuelo_tarifa foreign key(idtarifa) references
tarifa(idtarifa)
--Relacion entre la tabla vuelo y aeropuerto
alter table vuelo
add constraint fk_vuelo_aeropuerto foreign key(idaeropuerto)
references aeropuerto(idaeropuerto)
LENGUAJE DML

Sentencia INSERT

INSERT INTO TABLA VALUES()

use dbcolegio
go
insert into carrera values(1, 'Derecho',3)
insert into carrera values(2, 'Ingenieria sistemas',4)
insert into materia values(1, 'Matematicas' ,25)
insert into materia values(2,'Espaol', 15)
insert into profesor values(1, 'Laura Rosas', 'Calle
azul', 969591161, '7:00')
insert into profesor values(2,'Roberto Diaz', 'Calle
verde',959713486., '7:00')
insert into alumno values(1, 'Ana Cruz', 18,6,'Mujer',1)
insert into alu_pro values(1,2)
insert into mat_alu values(1,1)
insert into mat_pro values(2,2)
Al usar la instruccin insert into table values en llaves forneas se especifica el cdigo
select * from carrera
que este almacena)
select clave_m,nom_m from materia
CODIGO
select 5: RELACIONES
* from materia DE LA BASE DE DATOS RESERVA
select * from profesor
CODIGO 6: INSERTAR TABLAS BASE DE DATOS RESERVA

insert into reservas(idreserva, costo, fecha, observacion)


values('1','140','2013-01-27',' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('2','140','2013-01-01',' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('3','100','2013-04-05',' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('4','300','2013-04-03',' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('5','800','2013-05-03',' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('6','250',getdate(),' ')
insert into reservas(idreserva, costo, fecha, observacion)
values('7','1150','2013-05-06',' ')
--Tabla Pago
insert into pago(idreserva, fecha,
idpasajero,monto,tipo_comprobante,num_comprobante,impuesto)
values('1','2013-07-06','00000001',100,'Factura','001-0001',0.18)
insert into pago(idreserva, fecha,
idpasajero,monto,tipo_comprobante,num_comprobante,impuesto)
values('2','2013-07-06','00000001',40,'Ticket','0010007',0.18),
('3','2014-05-05','00000002',250,'Factura','001-0002',0.18),
('7',getdate(),'00000007',700,'Factura','001-0003',0.18)
--Tabla Tarifa
insert into tarifa
values('1','SuperVip',1200,12),
('2','Vip',1000,12),
('3','Nacional',800,12),
('4','Economica',500,0)
--tABLA aEROPUERTO
insert into aeropuerto (idaeropuerto, idpais, nombre)
values('AE01','0003','Bariloche'),
('AE02','0003','Mar de plata'),
('AE03','0001','Jorge Chavez')
SENTENCIA SELECT
ALL: Especifica el conjunto de filas devueltas por la consulta
DISTINCT: Sentencia utilizada para mostrar filas nicas no repetidas
TOP: Para mostrar solo un numero o porcentaje indicado de filas obtenidas
FROM: PERMITE indicar las filas que estn involucradas.

select nom_alu,edad_alu,sem_alu
from alumno inner join carrera on alumno.clave_c1 =
carrera.clave_c
--Seleccionar de la tabla alumno y la tabla carrera mediante
--La tabla alumno atributo clave_c1 asociada a la tablacarrera
atriburo clave_c
use dbcolegio
go
select nom_alu,edad_alu,sem_alu, nom_c,nom_p, nom_m
from alumno inner join carrera on alumno.clave_c1 =
carrera.clave_c
inner join alu_pro on alu_pro.mat_alu1=alumno.mat_alu
inner join profesor on profesor.clave_p=alu_pro.clave_p1
inner join mat_alu on mat_alu.mat_alu2=alumno.mat_alu
inner join materia on materia.clave_m= mat_alu.clave_m1
where edad_alu >18

WHERE: Clusula que permite condicionar el resultado de una consulta.


GROUP BY: Permite agrupar un conjunto de registros en forma de resumen.
HAVING: Permite condicionar el resultado despus de haber agrupado los registros.
ORDER BY: Permite ordenar los registros de acuerdo a una columna especifica.
MODIFICAR DATOS EN UNA BASE DE DATOS
UPDATE Nombre de la tabla
SET CAMPO = Nuevo valor
FROM
WHERE

create database modificar

use modificar

create table producto(


clave_prod int,
nom_prod varchar(20),
precio float,
constraint pk_cp primary key (clave_prod))

create table cliente(


clave_clie int,
nom_clie varchar(20),
constraint pk_cc primary key (clave_clie))

create table nota(


folio int,
clave_prod1 int,
clave_clie1 int,
cant int,
subtot float,
constraint fk_cp1 foreign key (clave_prod1) references producto
(clave_prod),
constraint fk_cc1 foreign key (clave_clie1) references cliente
(clave_clie))

insert into producto values (1,'papas',7)


insert into producto values (2,'refresco',9)

insert into cliente values (1,'ana')


insert into cliente values (2,'sergio')

insert into nota values (1,1,1,4,null)


insert into nota values (2,2,2,1,null)
update cliente
set nom_clie = 'ana'
where clave_clie = 1

--Relacionando tablas
update nota
set subtot = cant*precio
from nota inner join producto on
producto.clave_prod=nota.clave_prod1

use dbreserva
go
select * from pais
select * from pasajero
update pasajero
set telefono='SIN FONO'
where idpais= (select idpais from pais where nombre = 'peru')
go

ELIMINAR DATOS EN UNA BASE DE DATOS


Delete: elimina registros de una tabla
Drop: Elimina estructuras como tablas o bases de datos, junto con sus datos
almacenados.
Truncate: Elimina todos los registros de una tabla.

Delete From

delete from nota

delete from producto


where clave_prod=3

SELECT * from Producto


delete from producto
where clave_prod=3 and clave_prod=1
DROP

drop table cliente

TRUNCATE

TRUNCATE table NOTA

OPERADORES MATEMATICOS

ARITMETICOS

select '2*(10+5) - (8/3)' as [Operacin],


2*(10+5)-(8/3) as [Resultado]

SELECT '100' as Fahrenheit,


(100-32)*5/9 as Celsius

ASIGNACION

--DECLARACION DE VALORES
DECLARE @PI FLOAT
DECLARE @RADIO FLOAT
DECLARE @AREA FLOAT
--ASIGNAMOS VALORES
SET @PI = 3.1415
SET @RADIO = 7
--ENCONTRAR EL AREA DEL CIRCULO
--SET @AREA = @PI*@RADIO*@RADIO
SET @AREA = @PI * power(@RADIO,2)
SELECT @AREA AS [AREA]
USE dbreserva
GO
DECLARE @CORREO VARCHAR(70)
SELECT @CORREO=email from pasajero
where idpasajero = '00000005'

SELECT '00000005' AS [CODIGO],


@CORREO AS email

OPERADORES LOGICOS
AND : LOGICA Y

SELECT * FROM reservas


where year(fecha) = '2013'
and costo < 500
go

ANY : DEVUELVE TRUE SI ALGUNA EXPRESION DEL


CONJUNTO ES TRUE.
BETWEEN: DEVULVE TRUE SI EL VALOR SE ENCUENTRA
DENTRO DE UN RANGO NUMERICO O CADENA.

SELECT * FROM reservas


where costo between 200 and 1000
go

SELECT * FROM RESERVAS


WHERE FECHA BETWEEN '2013-01-01' AND '2013-12-31'

SELECT * FROM PASAJERO


where left(apaterno,1) between 'A' AND 'C'
ORDER BY APATERNO ASC, AMATERNO ASC, NOMBRE ASC

EXISTS: DEVUELVE TRUE SI UNA DETERMINADA


SUBCONSULTA DEVUELVE POR LO MENOS UNA FILA DE
REGISTROS.

SELECT * FROM RESERVAS


DECLARE @PAIS VARCHAR(40)
SET @PAIS = 'peru'
if exists(select idpais from PAIS where nombre = @PAIS)
Print 'Pas registrado'
else
Print 'Pas no se encuentra registrado'

IN: DEVUELVE TRUE SU EL OPERADOR SE ENCUENTRA


DENTOR DE UNA LISTA DE VALORES ESPECIFICOS.

NOT: INVIERTE EL VALOR BOOLEANO

SELECT * FROM PASAJERO


where NOT left(apaterno,1) between 'A' AND 'C'
ORDER BY APATERNO ASC, AMATERNO ASC, NOMBRE ASC

OR: DEVUELVE FALSE CUANDO AMBAS EXPRESIONES SON


FALSE
SOME: DEVUELVE TRUE SI DE UN CONJUNTO DE
COMPRACIONES ES ALGUNA TRUE.

LIKE: DEVUELVE TRUE SI EL OPERADOR COINCIDE A LO


MAS CON UN PATRON ESPECIFICO. EL PATRON ES UNA CADENA
DE CARACTERES QUE SE BUSCARA EN LA EXPRESIN.
%: UNO O MAS CARACTERES
SELECT * FROM PASAJERO
WHERE NOMBRE LIKE 'J%'--DESPUES DE LA PUEDE HABER
CUALQUIER VALOR ES DECIR JUAN, JESUS, JAIRO ETC
SELECT * FROM PASAJERO
WHERE email like '%gmail%'pasjeros con gmail

_: UN SOLO CARCTER DE UN TIPO


[]: REPRESENTA CUALQUIER CARCTER INDIVIDUAL.
IS NOT NULL: REPRESENTA QUE UNA COLUMNA NO
ESTE VACIA
SELECT * FROM PASAJERO
WHERE nombre like '_[AOU]%'

SELECT * FROM PASAJERO


WHERE nombre like '_[^AOU]%'

DECLARE @DOC VARCHAR(50)


SET @DOC = '47715777'
select * from pago
where idpasajero = (select idpasajero from pasajero
where numero_documento = @DOC)

COMBINACIN DE TABLAS
En determinadas ocasiones se tendr que unir las tablas para combinar valores y
poder mostrarlos juntos en una consulta para esto utilizamos la clusula JOIN.
Existen 2 tipos:
Interna: Devuelvan todas las filas que cumplen con la condicin de las
tablas, en caso de encontrarse coincidencia de valores no muestra nada.
Externa: Las filas resultantes no son directamente de la tabla de origen,
podra ser la izquierda derecha o completa.
INNER JOIN
PERMITE EMPAREJAR FILAS DE DISTINTAS TABLAS DE FORMA MS EFICIENTE QUE
CON EL PRODUCTO CARTESIANO CUANDO UNA DE LAS COLUMNAS DE
EMPAREJAMIENTO ESTA INDEXADA.

Das könnte Ihnen auch gefallen