En el blog analizaremos los componentes de una base de datos Microsoft SQL Server, Oracle, Access, diseñaremos base de datos, tablas, consultas, formularios, informes y macros con el propósito de desarrollar un soporte de datos para aplicaciones o una solución informática de un área de negocio.
viernes, 30 de diciembre de 2016
Cambiar contraseña a inicio de sesión en SQL Server
sp_password
Se utiliza
para cambiar la contraseña a un inicio de sesión.
sp_password 'Contraseña Actual', 'Nueva
Contraseña', 'Inicio de Sesión'
Ejemplo
:
Cambiar el password al inicio de sesión rhuarcaya
sp_password '123$2016', '2017$123', 'rhuarcaya'
Modificar tamaño de de base de datos en SQL Server
Para modificar el tamaño de una base de datos utilizamos Alter Database. Se tiene una BD con el nombre Tienda y se desea aumentar a 200 MB.
Alter Database Tienda
Modify file (Name='Tienda_datos', size=200 MB)
Tipos de archivos de Microsoft SQL Server
Una base de datos de SQL Server permite
tres siguientes tipos de archivos:
- Archivos de datos primarios: Realiza el seguimiento de todos los demás archivos. Por convenio su extensión es MDF.
- Archivos de datos secundarios: Una base de datos puede tener cero o varios archivos de datos secundarios. Por convenio su extensión NDF.
- Archivos de registro(LOG): Contiene información necesaria para recuperar todas las transacciones realizadas en la misma. Por convenio su extensión es LDF.
Bases de datos de Microsoft SQL Server
Las bases de datos del servidor SQL Server son:
a. Master.
Es la base de datos principal, contiene información de todos los
objetos de la bases de datos, logins, espejo de bases de datos,
configuraciones, etc.
Realiza un seguimiento de todas las bases de datos, controla las
asignaciones de archivos, los parámetros de configuración que afectan al
sistema y las cuentas de inicio de sesión
b. Model.
Funciona como modelo para todas las bases de datos que se crean
en una instancia de SQL Server. Es utilizada
como una plantilla para cada vez que creamos nuevas base
de datos.
c. Tempdb.
Almacena
objetos temporales creados por procesos internos, por usuarios o aplicaciones
(tablas, procedimientos almacenados, variables de tablas, cursores).
d. Msdb.
Almacena principalmente
la metadata de todas las tareas que programamos mediante SQL Server Agent. Guarda
información respecto a tareas de automatización, como son las copias de
seguridad y tareas de duplicación, etc.
lunes, 28 de noviembre de 2016
Comprimir tabla en SQL Server
Se crea una la tabla Documento y luego se le comprime, esto se utiliza en una tabla de alto movimiento de registros.
Create
table Documento
(cod_doc
char(2) not null Primary key,
nom_doc
varchar(30) not null,
cod_Sunat char(2) not null,
tipo_doc
char(1) not null,
est_doc char(1) not null Default 'A')
Comprimir
la tabla Documento, usando compresión page,
Alter Table Documento
Rebuild With (Data_Compression = Page);
Go
domingo, 27 de noviembre de 2016
Creación de una tabla con una columna XML
Creación de una tabla con una
columna XML.
USE Tienda
Go
Create Table Proyectos_XML (
Id_Proyecto Int not Null,
Det_Proyecto XML not Null,
Constraint pk_proy Primary Key (Id_Proyecto ))
-- Ingreso de datos a la tabla Proyecto_XML.
Insert Into Proyectos_XML Values
(1, '<Proyecto-2017>
<Registro>
<jefe>Remigio
Huarcaya</jefe>
<area>Gerencia</area>
<inversion>25500</inversión>
</Registro>
<Registro>
<jefe>Alberto Troncos</jefe>
<area>Administración</area>
<inversión>30200</inversión>
</Registro>
</Proyecto-2017>'),
(2, '<Proyecto-2017>
<Registro>
<jefe>María Troncos</jefe>
<area>Arquitectura</area>
<inversión>49500</inversión>
</Registro>
<Registro>
<jefe>Fabiola Guillen</jefe>
<area>Desarrollo de Producto</area>
<inversión>79300</inversión>
</Registro>
</Proyecto-2017>')
-- Seleccionar los registros con xml de la tabla Proyecto_XML
-- Seleccionar los registros con xml de la tabla Proyecto_XML
Select * From Proyectos_XML For Xml Raw
Crear una función en SQL Server
Se crea una función que devuelva un número de autogenerado del campo principal de una tabla.
Create table Area
(cod_area char(2) not null,
nom_area varchar(30) not null,
est_area char(1) not null,
Constraint pk_area Primary key (cod_area))
go
-- Ingresamos registros
(cod_area char(2) not null,
nom_area varchar(30) not null,
est_area char(1) not null,
Constraint pk_area Primary key (cod_area))
go
-- Ingresamos registros
Insert into Area values ('01','Gerencia','A'),
('02','Contabilidad','A'),
('03','Finanzas','A')
('02','Contabilidad','A'),
('03','Finanzas','A')
go
-- Creación de la función
-- Creación de la función
Create function funcod()
returns char(2)
Begin
Declare @codactual char(2),@codautogenerado char(2)
set @codactual =(select max(cod_area) from Area)
set @codautogenerado= right('0' + ltrim(str (@codactual + 1)),2)
return (@codautogenerado)
End-- Prueba de la función
Select Tienda.dbo.funcod()
Adjuntar base de datos en Servidor SQL Server
Adjunta
una base de datos al servidor, los archivos de la base de datos (mdf y ldf) se encuentran en la carpeta DemoBK.
EXEC sp_attach_db @dbname = N'Tienda',
@filename1 = N'c:\DemoBK\Tienda_data.mdf',
@filename2 = N'c:\DemoBK\Tienda_log.ldf'
Separa base de datos del Servidor SQL Server
Separa
una base de datos del servidor SQL Server.
EXEC sp_detach_db 'Tienda', 'true'
sábado, 19 de noviembre de 2016
Creación de trigger en Microsoft SQL Server
Un trigger es un desencadenador que se ejecuta automáticamente cuando se produce un
evento sobre una tabla. Se ejecutan
cuando un usuario intenta modificar datos mediante un evento de lenguaje de
manipulación de datos (DML).
Los eventos DML son instrucciones Insert, Update o Delete que se aplican a una tabla o
vista.
Ejemplo 1: Crear un trigger que no
permita ingresar un precio negativo en la tabla Producto.
Create trigger
TR_Inserta_Pro
On Producto FOR Insert
As
-- La tabla (temporal) inserted contiene los datos que se van a ingresar
If (select pre_pro from inserted)<0
Begin
Print
'Precio Negativo'
Rollback --Anula la transacción Insert
End
Ejemplo 2: Crear un trigger que inserte un registro en la tabla
auditoría en el caso que se cambie el valor del precio de un Producto.
Create table auditoria
(id_auditoria int identity(1,1) not null primary key,
fecha_auditoria date not null,
id_pro int not null,
pre_nuevo decimal(7,2) not null,
usuario varchar(20) not null)
-- Creación de trigger TR_Actualiza_Pro.
Create trigger TR_Actualiza_Pro
On Producto FOR Update
As
Declare @id int
Declare @nuevopre decimal(7,2)
Select @nuevopre=pre_pro from Inserted
Insert into auditoria values (CONVERT (date, GETDATE()),5,@nuevopre, user)
--Probamos el trigger, modificamos el precio de un producto.
Update Producto set pre_pro =1.5 where id_pro=5
Minería de Datos
Minería de datos es el proceso de descubrir conocimiento en grandes volúmenes
de datos como en los DataWarehouse, para ello utiliza métodos matemáticos para encontrar tendencias y reglas en los datos almacenado.
Según Turban (2007), indican que las herramientas más usadas en Data
Mining son:
- Métodos estadísticos,
- Árboles de decisión,
- Razonamiento en base a casos,
- Redes neuronales,
- Algoritmos genéticos.
Propiedad Identity en tabla de Microsoft SQL Server
Propiedad IDENTITY
En una
tabla solo se permite una sola columna con la propiedad IDENTITY, se puede usar propiedad solo si la columna es de tipo Entero, se le utiliza mayormente en la clave principal.
IDENTITY
[(inicialización, incremento)]
Inicialización:
Valor inicial de la columna.
Incremento:
Es el incremento de columna entre registros. Puede ser
positivo o negativo.
Ejemplo :
Se considera id_dis es la clave principal y campo autonumérico de la tabla Distrito.
Create table Distrito
(id_dis int not null primary key identity(1,1), -- Inicia en 1 e incrementa en 1, es un campo autonumérico
nom_dis varchar(20) not null,
codPostal char(2) not null)
go
Ejemplo :
Se considera id_dis es la clave principal y campo autonumérico de la tabla Distrito.
Create table Distrito
(id_dis int not null primary key identity(1,1), -- Inicia en 1 e incrementa en 1, es un campo autonumérico
nom_dis varchar(20) not null,
codPostal char(2) not null)
go
jueves, 17 de noviembre de 2016
Programación Orientada a objetos en C# - Control de usuario
Se tiene una aplicación SysDemo en 3 capas. En el cual se crea una carpeta CUsuario y se agrega un control de usuario cboDistrito y luego se agrega un objeto combobox.
En el Control de usuario, se ingresa el siguiente código.
public int xid;
public string Cnx = "Data Source=(local);Initial Catalog=SysMedic;Integrated Security=True;user id=sa; pwd=123";
private void CboDistrito_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection();
cn.ConnectionString = Cnx;
llenarDis();
}
public void llenarDis()
{
comboBox1.ValueMember = "id_dis";
comboBox1.DisplayMember = "nom_dis";
comboBox1.DataSource = CapaNegocio.CNMedico.MostrarReg("distrito");
}
public int iddis
{
get
{
return xid;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
xid = Convert.ToInt32(comboBox1.SelectedValue.ToString());
}
catch { }
}
En la Capa Negocio de la aplicación.
public class CNMedico
{
public static DataTable MostrarReg(string xreg)
{
CDMedico obj = new CDMedico();
return obj.MostrarReg(xreg);
}
}
En la Capa Data de la aplicación
public class CDMedico
{
public DataTable MostrarReg(string xreg)
{
DataTable DtResultado = new DataTable();
SqlConnection SqlCon = new SqlConnection();
try
{
SqlCon.ConnectionString = ClsConexion.Cnx;
SqlCon.Open();
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlCon;
SqlCmd.CommandText = "usp_ListaReg";
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlParameter par1 = new SqlParameter();
par1.ParameterName = "@tabla";
par1.Value = xreg;
SqlCmd.Parameters.Add(par1);
SqlDataAdapter Da = new SqlDataAdapter(SqlCmd);
Da.Fill(DtResultado);
}
catch (Exception ex)
{
}
return DtResultado;
}
El procedimiento almacenado en la base de datos SysMedic
Create Proc usp_ListaReg @tabla varchar(20)
as
Declare @sql varchar(50)
Set @sql ='Select * From ' + @tabla +' order by 2'
Exec (@sql)
En el Control de usuario, se ingresa el siguiente código.
public int xid;
public string Cnx = "Data Source=(local);Initial Catalog=SysMedic;Integrated Security=True;user id=sa; pwd=123";
private void CboDistrito_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection();
cn.ConnectionString = Cnx;
llenarDis();
}
public void llenarDis()
{
comboBox1.ValueMember = "id_dis";
comboBox1.DisplayMember = "nom_dis";
comboBox1.DataSource = CapaNegocio.CNMedico.MostrarReg("distrito");
}
public int iddis
{
get
{
return xid;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
xid = Convert.ToInt32(comboBox1.SelectedValue.ToString());
}
catch { }
}
En la Capa Negocio de la aplicación.
public class CNMedico
{
public static DataTable MostrarReg(string xreg)
{
CDMedico obj = new CDMedico();
return obj.MostrarReg(xreg);
}
}
En la Capa Data de la aplicación
public class CDMedico
{
public DataTable MostrarReg(string xreg)
{
DataTable DtResultado = new DataTable();
SqlConnection SqlCon = new SqlConnection();
try
{
SqlCon.ConnectionString = ClsConexion.Cnx;
SqlCon.Open();
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlCon;
SqlCmd.CommandText = "usp_ListaReg";
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlParameter par1 = new SqlParameter();
par1.ParameterName = "@tabla";
par1.Value = xreg;
SqlCmd.Parameters.Add(par1);
SqlDataAdapter Da = new SqlDataAdapter(SqlCmd);
Da.Fill(DtResultado);
}
catch (Exception ex)
{
}
return DtResultado;
}
El procedimiento almacenado en la base de datos SysMedic
Create Proc usp_ListaReg @tabla varchar(20)
as
Declare @sql varchar(50)
Set @sql ='Select * From ' + @tabla +' order by 2'
Exec (@sql)
Creación de tablas en SQL Server
------------------------------------------------
-- Base de datos : Tienda
-- Tema : Creación de tablas
------------------------------------------------
Use tienda
go
Create table distrito
(id_dis int not null Constraint pk_dis primary key identity(1,1),
nom_dis varchar(20) not null,
codPostal char(2) not null)
go
-- Muestra la estructura de la tabla
-- sp_help es un procedimiento almacenado
sp_help distrito
go
--Lista las tablas de la base de datos Tienda
-- sysobjects es una tabla de sistema
Select * from sysobjects where type='U'
go
-- U -> User table
-- Base de datos : Tienda
-- Tema : Creación de tablas
------------------------------------------------
Use tienda
go
Create table distrito
(id_dis int not null Constraint pk_dis primary key identity(1,1),
nom_dis varchar(20) not null,
codPostal char(2) not null)
go
-- Muestra la estructura de la tabla
-- sp_help es un procedimiento almacenado
sp_help distrito
go
--Lista las tablas de la base de datos Tienda
-- sysobjects es una tabla de sistema
Select * from sysobjects where type='U'
go
-- U -> User table
lunes, 14 de noviembre de 2016
Creación de procedimiento almacenado en Oracle
Para el ingreso de datos la tabla distritos de la base de datos Tienda (Oracle), se construye un procedimiento almacenado.
Create or replace Procedure usp_IngDis (nom varchar2,
cod char)
Is
Begin
Insert into Distrito (nom_dis, codPostal) values (nom, cod);
Commit;
End;
Probar el procedimiento almacenado en sqldeveloper:
call usp_IngDis 'Villa María del Triunfo', '35';
También podemos organizar los procedimientos almacenados en paquetes asociados a la tabla distrito. Un paquete general y un paquete Body (Describe los procedimientos).
Create or replace Package pk_distrito
Is
Procedure usp_IngDis (nom varchar2,
cod char);
End pk_distrito;
Create or replace Package Body pk_distrito
Is
Create or Replace Procedure usp_IngDis (nom varchar2,
cod char)
Is
Begin
Insert into Distrito (nom_dis, codPostal) values (nom, cod);
Commit;
End;
End pk_distrito;
Create or replace Procedure usp_IngDis (nom varchar2,
cod char)
Is
Begin
Insert into Distrito (nom_dis, codPostal) values (nom, cod);
Commit;
End;
Probar el procedimiento almacenado en sqldeveloper:
call usp_IngDis 'Villa María del Triunfo', '35';
También podemos organizar los procedimientos almacenados en paquetes asociados a la tabla distrito. Un paquete general y un paquete Body (Describe los procedimientos).
Create or replace Package pk_distrito
Is
Procedure usp_IngDis (nom varchar2,
cod char);
End pk_distrito;
Create or replace Package Body pk_distrito
Is
Create or Replace Procedure usp_IngDis (nom varchar2,
cod char)
Is
Begin
Insert into Distrito (nom_dis, codPostal) values (nom, cod);
Commit;
End;
End pk_distrito;
Programación java con oracle - Estructura de proyecto Java
Crear un proyecto en Java Application (usando el IDE Netbeans) con el nombre SysTiendaSoft, luego 3 Package (CapaData, CapaEntidad, CapaNegocio o CapaLogica)
- En la carpeta Bibliotecas, adicionar el archivo ojdbc7.jar.
- Crear un JFrame Form en carpeta systiendasoft, con el nombre de FrmDistrito.
- Crear la Java Class en el paquete CapaData.
package CapaData;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class ConectarDB {
private Connection conexion;
public Connection getConexion() {
return conexion;
}
public void setConexion(Connection conexion) {
this.conexion = conexion;
}
public ConectarDB conectar() {
try {
Class.forName("oracle.jdbc.OracleDriver");
String BaseDeDatos = "jdbc:oracle:thin:@localhost:1521:XE";
conexion = DriverManager.getConnection(BaseDeDatos, "TIENDA","1234");
if (conexion != null) {
System.out.println("Conexión correcta !!");
} else {
System.out.println("Conexión errada !!");
}
} catch (Exception e) {
e.printStackTrace();
}
return this;
}
}
- En el paquete CapaNegocio, crear un Java Class, con el nombre de Distrito.
package CapaNegocio;
import CapaData.ConectarDB;
import java.sql.CallableStatement;
public class Distrito {
public void IngresaDis (CapaEntidad.Distrito oDis){
//Conexión con la BD Tienda
ConectarDB obj = new ConectarDB();
obj.conectar();
try{
CallableStatement sentencia = obj.getConexion().prepareCall("{call usp_IngDis(?,?)}");
sentencia.setString(1,oDis.getNomDis());
sentencia.setString(2,oDis.getCodPostal());
sentencia.executeUpdate();
}catch (Exception e){
System.out.print(e.getMessage());
}
}
}
- En el botón Grabar del Jframe Distrito, ingrese el siguiente código.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
CapaEntidad.Distrito reg = new CapaEntidad.Distrito();
reg.setNomDis(txtNom.getText());
reg.setCodPostal(txtCod.getText());
CapaNegocio.Distrito objDistrito = new CapaNegocio.Distrito();
objDistrito.IngresaDis(reg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
Remigio Huarcaya Almeyda
Enlace para iniciar Oracle Express
Puede iniciar Oracle Express con el siguiente link, considerando el ip 127.0.0.1, puerto 8080
http://127.0.0.1:8080/apex/f?p=4950
Remigio Huarcaya Almeyda
http://127.0.0.1:8080/apex/f?p=4950
Remigio Huarcaya Almeyda
viernes, 11 de noviembre de 2016
Creación de tablas en Oracle
A continuación se crea la tabla cliente, zona y vendedor y secuencia para las claves principales con sus triggers respectivos para el incremento automático de la clave principal.
Create table Distrito
(id_dis number not null Primary key,
nom_dis varchar2(25) not null,
codPostal char(2) not null);
Create table Vendedor
(id_ven number not null Primary key,
nom_ven varchar2(25) not null,
ape_ven varchar2(25) not null,
dni_ven char(8) not null,
id_dis number not null,
Constraint fk_vendis Foreign key (id_dis) references distrito (id_dis));
Create sequence sq_iddis;
Create or replace Trigger Tr_dis before Insert on distrito
for each row
begin
select sq_iddis.NextVal Into :new.id_dis from dual;
end;
Create sequence sq_idven;
Create or replace Trigger Tr_ven before Insert on vendedor
for each row
begin
select sq_idven.NextVal Into :new.id_ven from dual;
end;
/*Ingresamos datos*/
Insert into distrito (nom_dis, codpostal) values ('Comas','30');
Insert into distrito (nom_dis, codpostal) values ('Los Olivos','01');
Insert into distrito (nom_dis, codpostal) values ('Rimac','02');
Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Alberto','Huarcaya','78965423',3);
Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Nicolas','Almeida','32165896',1);
commit;
Remigio Huarcaya Almeyda
Create table Distrito
(id_dis number not null Primary key,
nom_dis varchar2(25) not null,
codPostal char(2) not null);
Create table Vendedor
(id_ven number not null Primary key,
nom_ven varchar2(25) not null,
ape_ven varchar2(25) not null,
dni_ven char(8) not null,
id_dis number not null,
Constraint fk_vendis Foreign key (id_dis) references distrito (id_dis));
Create sequence sq_iddis;
Create or replace Trigger Tr_dis before Insert on distrito
for each row
begin
select sq_iddis.NextVal Into :new.id_dis from dual;
end;
Create sequence sq_idven;
Create or replace Trigger Tr_ven before Insert on vendedor
for each row
begin
select sq_idven.NextVal Into :new.id_ven from dual;
end;
/*Ingresamos datos*/
Insert into distrito (nom_dis, codpostal) values ('Comas','30');
Insert into distrito (nom_dis, codpostal) values ('Los Olivos','01');
Insert into distrito (nom_dis, codpostal) values ('Rimac','02');
Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Alberto','Huarcaya','78965423',3);
Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Nicolas','Almeida','32165896',1);
commit;
Remigio Huarcaya Almeyda
jueves, 10 de noviembre de 2016
Conexión con base de datos Oracle
Para realizar una conexión a una base de datos Oracle, utilizaremos el software sqldeveloper.
- Haga doble clic en el programa sqldeveloper.
- Haga clic derecho sobre Conexiones y seleccione Nueva Conexión.
- Ingrese datos generales de la conexión que se indican y luego pulse Probar y Conectar.
- Listar las tablas de la base datos Tienda, que se crean por defecto, con la siguiente instrucción.
- Ya puede crear las tablas en la base de datos Tienda.
Remigio Huarcaya Almeyda
Suscribirse a:
Entradas (Atom)