ING. FREDY RIVERA MONTERO - Actiweb crear paginas web gratis

Anuncio
Escuela
:
INGENIERIA INFORMATICA Y DE SISTEMAS
Docente
:
ING. FREDY RIVERA MONTERO
SQL-Lenguaje Estructurado de Consultas
Características y conceptos básicos
Historia del lenguaje SQL
El nacimiento del lenguaje SQL data de 1970 cuando E. F. Codd publica su libro: "Un modelo de datos
relacional para grandes bancos de datos compartidos". Ese libro dictaría las direcrices de las bases de datos
relacionales. Apenas dos años después IBM (para quien trabajaba Codd) utiliza las directrices de Codd para
crear el Standard English Query Language (Lenguaje Estándar Inglés para Consultas) al que se le llamó
SEQUEL. Más adelante se le asignaron las siglas SQL (Standard Query Language, lenguaje estándar de
consulta) aunque en inglés se siguen pronunciando SEQUEL. En español se le llama esecuele.
Poco después se convertía en un estándar en el mundo de las bases de datos avalado por los organismos ISO
y ANSI (el primer estándar es del año 1982). Aún hoy sigue siendo uno de los estándares más importantes de
la industria informática.
Los estándares más seguidos son los de los años 1992 y 1999 (el último estándar). Sobre estos dos estándares
giran estos apuntes.
Código SQL
El código SQL consta de los siguientes elementos:
�Comandos. Las distintas instrucciones que se pueden realizar desde SQL
�SELECT. Se trata del comando que permite realizar consultas sobre los datos de la base de datos.
Obtiene datos de la base de datos.
� DML, Data Manipulation Language (Lenguaje de manipulación de datos). Modifica filas
(registros) de la base de datos. Lo forman las instrucciones INSERT, UPDATE, MERGE y
DELETE.
�DDL, Data Definition Language (Lenguaje de definición de datos). Permiten modificar la
estructura de las tablas de la base de datos. Lo forman las instrucciones CREATE, ALTER,
DROP, TRUNCATE.
�Instrucciones de transferencia. Administran las modificaciones creadas por las instrucciones
DML. Lo forman las instrucciones ROLLBACK, COMMIT.
�DCL, Data Control Language (Lenguaje de control de datos). Administran los derechos y
restricciones de los usuarios. Lo forman las instrucciones GRANT y REVOKE.
�Cláusulas.
Son palabras especiales que permiten modificar el funcionamiento de un comando
(WHERE, ORDER BY,...)
�Operadores. Permiten crear expresiones complejas. Pueden ser aritméticos (+,-,*,/,...) lógicos (>, <,
!=,<>, AND, OR,...)
�Funciones. Para conseguir valores complejos (SUM(), DATE(),...)
�Constantes. Valores literales para las consultas, números, textos, caracteres,...
�Datos. Obtenidos de la propia base de datos
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
DDL-LENGUAJE DE DEFINICION DE DATOS
1. Crear una Base de Datos en SQL SERVER 2008
Empezaremos creando una Base de Datos por medio de:
a. SQL Server Management Studio Express
 Ubica la carpeta Base de Datos
 Dar click derecho en Nueva Base de datos

Se muestra la pantalla para crear una nueva base de datos
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas

Podemos limitar el crecimiento de la base de datos, si queremos.
b. Utilizando la orden CREATE DATABASE
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Sintaxis
CREATE DATABASE nombre_base_datos
ON
PRIMARY (NAME=nombre_logico_data,
FILENAME=’ubicacion_y_nombre_archivo,
SIZE=tamaño_en_MB,
MAXSIZE= tamaño_máximo_en_MB,
FILEGROWTH=incremento_crecimiento)
LOG ON
(NAME=nombre_logico_log,
FILENAME=’ubicacion_y_nombre_archivo,
SIZE=tamaño_en_MB,
MAXSIZE= tamaño_máximo_en_MB,
FILEGROWTH=incremento_crecimiento)
Donde:
nombre_base_datos: nombre de la nueva base de datos, deben ser únicos en el servidor.
nombre_logico_data, nombre_logico_log,: es el nombre a utilizar en una sentencia T-SQL
ubicacion_y_nombre_archivo: ruta y nombre del archivo.
tamaño_en_MB: tamaño del archivo
tamaño_máximo_en_MB: tamaño máximo que puede alcanzar el archivo
incremento_crecimiento: es la cantidad de espacio que se añade al archivo cada vez que se necesita
espacio adicional.
Ejemplo:
IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'Universidad')
--verificamos si existe la base de datos de nombre Universidad
DROP DATABASE Universidad
--si existe eliminarla
CREATE DATABASE Universidad
ON
PRIMARY ( NAME = N'Universidad',
FILENAME = N'c:\Archivos de programa\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Universidad.mdf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )
LOG
ON ( NAME = N'Universidad_log',
FILENAME = N'c:\Archivos de programa\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Universidad_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%)
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
create database logistica
on primary
(name=logistica01,
filename='e:\backup\logstica01.mdf',
size=10,
maxsize=15,
filegrowth=1mb)
log on
(name=logistica02,
filename='e:\backup\logistica02.ldf',
Size=8mb,
maxsize=10mb,
filegrowth=10%)
go
sp_helpdb logistica
Tamaño de la B.D = 18 MB
Maximo Tamaño B.D = 25 MB
create database Almacen
on primary
(name=Almacen01,
filename='e:\backup\Almacen01.mdf',
size=20mb,
maxsize=25mb),
(name=Almacen02,
filename='e:\backup\ALmacen02.ndf',
size=10mb,
maxsize=15mb)
log on
(name=Almacen03,
filename='e:\backup\Almacen03.ldf',
size=8mb,
filegrowth=10%)
go
sp_helpdb almacen
Tamaño de la B.D = 38MB
Maximo Tamaño B.D = NO TIENE LIMITE
*****************************************************************************
Modificando una base de datos
Se puede modificar incrementando el archivo de datos o el log.
Empleamos ALTER DATABASE
Base de Datos I
Ing. Fredy Rivera Montero
o ENTERPRISE MANAGER
SQL-Lenguaje Estructurado de Consultas
Expandiendo el archivo de datos
ALTER DATABASE ALMACEN
MODIFY FILE(NAME='Almacen03',
SIZE=15)
GO
SP_HELPDB ALMACEN
Agregando un archivo secundario
ALTER DATABASE ALMACEN
ADD FILE
(NAME=’Almacen04’,
FILENAME=’D:\asistencia\Almacen04.ndf’
SIZE=10,
Maxsize=15,
Filegrowth=10%)
GO
SP_HELPDB ALMACEN
2. Respaldar y Restaurar base de datos
Respaldar full
BACKUP DATABASE nombrebd TO DISK=’C:\....’
BACKUP DATABASE logistica TO DISK=’D:\ASISTENCIA\logistica.bk’
Respaldar Diferencial
BACKUP DATABASE nombrebd TO DISK=’C:\....’ WITH DIFFERENTIAL
Restaurar
RESTORE DATABASE nombrebd FROM DISK=’C:\...’
RESTORE DATABASE logistica FROM DISK=’D:\ASISTENCIA\logistica.bk’
TAREA 1
Crear un BD de nombre Almacén que tiene un archivo principal de tamaño 20 mb y máximo de 25 mb ,
además tiene un archivo secundario 10 mb y un máximo de 15 mb finalmente tiene un archivo de transacción
de
tamaña
8
mb
y
un
incremento
del
10
%
.
Determinar el tamaño máximo tamaño de la BD
3. Eliminar una base de datos
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Con el comando DROP DATABASE
4. CREACION DE TABLAS
Sintaxis:
CREATE TABLE nombre_tabla
(nombre_campo tipo [NULL/NOT NULL],
nombre_campo tipo [NULL/NOT NULL],
nombre_campo tipo [NULL/NOT NULL],
nombre_campo tipo *NULL/NOT NULL+,…..)
Tipos de Datos en SQL Server
Tipo
Char(n)
Varchar(n)
Int
Smallint
Decimal(p,e)
Numeric(p,e)
Float(p)
Real
Datetime
Descripción
Cadena de caracteres de longitud fija, por ejemplo: los nombres de los alumnos,
direcciones, descripciones, etc.
Cadena de caracteres de longitud fija, permiten que una columna almacene
cadenas de caracteres que varían de longitud de una fila a otra, a pesar que no
haya un dato, se rellena el vacio mediante espacios en blanco.
Numero enteros, por ejemplo: almacena cantidades, edades, etc.
Números enteros pequeños
Números decimales, almacenan números que tienen parte fraccionaria y deben
ser calculados exactamente.
Números en coma flotante de alta precisión, por ejemplo números científicos.
Números en coma flotante de baja precisión.
Fecha hora en formato largo dd/mm/aa hh:mm:ss
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Smalldatetime
Money
Smallmoney
Bit
Text
Image
Timestamp
Binary(n)
Identity
Fecha en formato corto dd/mm/aa
Monetario de doble precisión, se almacena como numero en coma flotante.
Monetario de simple precisión, se almacena como un numero decimal.
Para el almacenamiento de valores lógicos
Texto de longitud variable, se puede almacenar el contenido de una carta o de
un libro
En este campo se puede almacenar imágenes de mapa de bits.
Es un campo especial, almacena fecha y hora en la que se hizo una actualizacion
Valores binarios, permiten almacenar y recuperar secuencias de bytes de
longitud variable sin estructurar.
Permite emplear un campo con datos que se incrementan. Identity(1,1) por
ejemplo el valor del campo autoincrementa desde 1 (de uno en uno), cuando se
inserta un nuevo registro.
Ejemplo:
if exists (select * from sysobjects where id = object_id('dbo.PEDIDO') and
sysstat & 0xf = 3)
--Verificamos si existe la tabla pedido en la base de datos
DROP TABLE PEDIDO
--si existe la elimino para volverla a crear en la siguiente instrucción
CREATE TABLE PEDIDO (
Idpedido int NOT NULL,
Cliente varchar(35) NOT NULL,
Idempleado char(5) NOT NULL,
Fecha datetime NOT NULL,
Monto Money NOT NULL,
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Igv
Money NOT NULL,
TOTAL Money, NOT NULL)
Creación de claves primarias:
Creación de claves foráneas
Sintaxis:
ALTER TABLE nombre_tabla
Add constraint pk_nombre primary key
(lista_columnas)
Sintaxis:
ALTER TABLE nombre_tabla
ADD CONSTRAINT FK_NOMBRE FOREIGN
(lista_columnas)
REFERENCES nombre_tabla_referenciada
Ejem.
ALTER TABLE pedido
Add constraint pk_pedido primary key(idpedido)
Ejem.
ALTER TABLE articulo
Add constraint fk_articulo foreign key(idcategoria)
References categoria
CREATE ARTICULO(
Idarticulo char(4) not null,
Idcategoria char(4) not null,
Descripcion char(40) not null,
Precio money not null,
CONSTRAINT pk_articulo primary key(idarticulo)
CONSTRAINT fk_articulo foreign key (idcategoria)
REFERENCES categoria)
CREATE TABLE PEDIDO(
Idpedido int NOT NULL,
Cliente varchar(35) NOT NULL,
Idempleado char(5) NOT NULL,
Fecha datetime NOT NULL,
Monto Money NOT NULL,
Igv
Money NOT NULL,
TOTAL Money, NOT NULL,
CONSTRAINT pk_pedido PRIMARY KEY(idpedido))
Eliminar una tabla:
DROP TABLE PEDIDO
Eliminar datos de una tabla:
TRUNCATE TABLE PEDIDO
RESTRICCIONES
UNIQUE, CHECK, DEFAULT
CREATE TABLE PROVEEDOR(
Codproveedor UNIQUE primary key,
Ruc varchar(15) not null check(RUC>=10000005000)
UNIQUE,
RAZON VARCHAR(40) NOT NULL,
DIRECCION VARCHAR(50) NULL DEFAULT ‘Dirección
local’)
Create Database USP
Use USP
go
Base de Datos I
Ing. Fredy Rivera Montero
Create Table Persona
(nombre varchar(70),
Direccion Varchar(100),
KEY
SQL-Lenguaje Estructurado de Consultas
Telefono varchar(9),
Nacimiento datetime)
go
------------------- DEFAULT --------Alter Table Persona
Add Constraint Dtelf Default '999-9999' for Telefono
go
Insert Into Persona Values
('Robert','Av. Las Camelias 145','45821-35',getdate())
Select * From Persona
------------------- UNIQUE ----------Alter Table Persona
Add Constraint Unom Unique(nombre)
Insert Into Persona Values
('Emilio','Av. Las Camelias 145','40015-90',getdate())
------------------- CHECK -----------Alter Table Persona
Add Constraint Ctelf Check(Telefono
Like
'[0-9][0-9][0-9][0-9][0-9][0-9][09][0-9][0-9]')
Go
------------------------------insert Into Persona values
('Luis','Av. Lince 105','456-5456',getdate())
go
-------------------------------------insert Into Persona values
('Luis','Av. Lince 105','456-5456',getdate())
go
-----------------------------------------------Select * From SysObjects
Where Type='c' Or --CHEK
Type='k'
or
--PRIMARIAS
Type='U'
or
--TABLAS
Type='D'
or
--DEFAULT
Type='F'
--FORANEA
go
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
EJEMPLO
1. Crear una base de datos llamada LOGISTICA, que tiene un archivo principal de 20mb y un
maximo tamaño de 35mb ademas tiene 2 archivos de transaccion de 7mb y
10mb respectivamente, determinar el tamaño y max de la bd. Debe
un max de
2. Crear las siguientes tablas:
PROVEEDOR(Codproveedor, ruc, razon, direccion)
SUMINISTRO(codsuministro, descripcion, medida, stockactual, cuenta)
CUENTA_CONTABLE(cuenta, subcta, clase, descripcion)
INGRESO(numero, fecha, codprovedor, moneda, tipocambio)
DETA_INGRESO(numero, codsuministro,cantidad, precio)
Relación proveedor
Codproveedor: El código de un proveedor nos servirá para identificarlo, puede ser un NUMERIC.
RUC: El RUC de una persona natural o jurídica está comprendida por 11 dígitos, para ello utilizaremos
VARCHAR(15)
Razón: Representa la razón social del proveedor, la que puede tomar el valor de
VARCHAR(40).
Dirección: Representa la dirección de un proveedor, la que también puede tomar el valor VARCHAR(50).
Relación suministro
Codsuministro: El código de suministro puede ser un NUMERIC
Descripcion: La descripción de un suministro puede ser una tipo de dato VARCHAR(40).
Medida: La medida de un suministro puede ser expresada como un CHAR(3),
Stockactual: Muestra la cantidad actual de suministros que hay en el almacén, puede ser un NUMERIC.
Cuenta: Es la clave foránea y toma el mismo valor de la cuenta contable NUMERIC
Relación Cuenta_Contable
Cuenta: Representa la cuenta contable de un suministro, toma el valor de NUMERIC.
Subcta: Representa la subcuenta contable, toma el valor NUMERIC.
Clase: Indica a que clase pertenece un suministro, toma el valor de VARCHAR(30).
Descripcion: Indica la descripción de la cuenta contable, toma el valor de VARCHAR(50).
Relación Ingreso
Numero: Representa el número del documento de ingreso de suministros al almacén, toma el valor de
NUMERIC.
Fecha: Representa la fecha de ingreso, toma el valor DATETIME.
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Moneda: Indica si es soles o dólares, toma el valor CHAR(1).
Tipocambio: Indica el valor de dólar diario, toma el valor NUMERIC.
codproveedor: Es el codigo del proveedor, toma el valor NUMERIC.
Relación Deta_Ingreso
Numero: Representa el número del documento de ingreso de suministros al almacén, toma el valor de
NUMERIC.
Codsuministro: Es el código de suministro, y toma el valor anterior NUMERIC.
Cantidad: Es la cantidad de suministros ingresados al almacén NUMERIC.
Precio: Es el precio con que ingresa al almacén DECIMAL.
3.
Realice un respaldo de la base de datos logística y grabela en la unidad D
4. Crear Diagramas
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
TAREA 2
Use Almacen
go
Create Table Factura
(Factura_id int not null,
cliente varchar(100),
fecha datetime,
Monto Decimal(18,2))
go
Create Table Detalle
(Factura_Id int not null,
Item int not null,
Producto_Id int,
Precio Money,
Cantidad int,
Total Decimal(18,2))
go
Alter Table Factura
add constraint pk_factura_id primary
key(Factura_id)
go
Alter Table Detalle
add constraint pk_factura_id_det
primary key(item)
go
Alter Table Detalle
Add constraint Fk_Factura_Id_Det
foreign key(Factura_Id)
References Factura(Factura_Id)
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
TAREA 3
Create Database Estudiante
go
Use Estudiante
go
Create Table Persona
(Persona_Id int not null,
nombre varchar(70))
go
Create Table Curso
(Curso_Id int not null,
Descripcion varchar(100))
go
Create Table Persona_Curso
(Persona_Id int not null,
Curso_Id int not null)
go
Alter Table Persona
add constraint pk_Persona_Id primary
key(Persona_Id)
go
Alter Table Curso
add constraint pk_Curso_Id primary
key(curso_Id)
go
Alter Table Persona_Curso
add constraint fk_Persona_Id foreign
key(Persona_Id)
references persona(Persona_Id)
go
Alter Table Persona_Curso
add constraint fk_Curso_Id foreign
key(Persona_Id)
references curso(Curso_Id)
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
5. Crear una Base de Datos en MYSQL
Para crear una base de datos, empleando AppServ, hacer clic en MySQL Command Line Client.
Ingresar clave
Ver las bases de datos en MySQL:
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
Acceder a una base de datos en particular;
Crear una base de datos mediante comando CREATE DATABASE:
Eliminar una base de datos:
Crear Tablas
Sintaxis:
CREATE TABLE nombre_tabla (
nombre_columna1 TIPO_COLUMNA(nn),
nombre columna2 TIPO_COLUMNA(nn),
nombre_columna3 TIPO_COLUMNA(nn), ... );
Tipo de datos en MySQL:
Tipo
Descripción
BIT o BOOL
TINYINT
para un número entero que puede ser 0 ó 1
Es un número entero con rango de valores válidos desde -128 a 127. Si se configura como
unsigned (sin signo), el rango de valores es de 0 a 255
Para números enteros, con rango desde -32768 a 32767. Si se configura como unsigned, 0
a 65535.
Para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se configura
como unsigned, 0 a 16777215
Para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si
configuramos este dato como unsigned, el rango es 0 a 4294967295
Número entero con rango de valores desde -9223372036854775808 a
9223372036854775807. Unsigned, desde 0 a 18446744073709551615.
Representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse
(término también conocido como ancho de pantalla), y cuantos en la parte decimal (d).
Mysql redondeará el decimal para ajustarse a la capacidad.
SMALLINT
MEDIUMINT
INT
BIGINT
FLOAT
(m,d)
DOUBLE
DECIMAL
CHAR
VARCHAR
Número de coma flotante de precisión doble. Es un tipo de datos igual al anterior cuya
única diferencia es el rango numérico que abarca
Almacena los números como cadenas.
Este tipo se utiliza para almacenar cadenas de longitud fija. Su longitud abarca
desde 1 a 255 caracteres.
Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1255 caracteres, pero en este caso, de longitud variable.
DATE
DATETIME
TIMESTAMP
TIME
YEAR
Autoincrement
para almacenar fechas. El formato por defecto es YYYY MM DD desde 0000 00 00 a 9999
12 31.
Combinación de fecha y hora.
Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El
formato de almacenamiento depende del tamaño del campo
Amacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a
838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'
almacena un año.
El valor del registro se incrementa automáticamente en la cantidad que se configura
Base de Datos I
Ing. Fredy Rivera Montero
SQL-Lenguaje Estructurado de Consultas
cuando se inserta un nuevo registro
CREATE TABLE PEDIDO (
Idpedido
int
NOT NULL,
Cliente varchar(35)
NOT NULL,
Idempleado char(5)
NOT NULL,
Fecha
date
NOT NULL,
Monto
Double NOT NULL,
Igv
Double NOT NULL,
TOTAL
Double NOT NULL);
Realizar el ejemplo anterior empleando MySQL.
Base de Datos I
Ing. Fredy Rivera Montero
Descargar