elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 88
441  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Sugerencia en el foro de Base de Datos en: 5 Noviembre 2009, 21:51 pm
bueno, era una sugerencia nada mas, si no es necesario pues que bien.

Saludos
442  Programación / Bases de Datos / Iniciando en base de datos. en: 5 Noviembre 2009, 21:44 pm
Citar
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.

Seguir leyendo...

Existen programas denominados Sistemas de Gestion de Base de Datos (SGBD) que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.

Entre los mas conocidos estan:

Mysql, Postgresql, Firebird, SQLite.
Oracle, Microsoft SQL Server, Open Access, # Advantage Database, dBase, FileMaker, Fox Pro, IBM DB2 Universal Database (DB2 UDB), IBM Informix, Interbase de CodeGear, filial de Borland, MAGIC, Paradox, PervasiveSQL, Progress (DBMS), Sybase ASE, Sybase ASA, Sybase IQ, WindowBase, IBM IMS Base de Datos Jerárquica, CA-IDMS, entre otros.

¿Por que utilizar una Base de Datos?

  • Es Compacto: No hacen falta archivos de papeles que pudieran ocupar mucho espacio.
  • Es Rápido: La máquina puede obtener y modificar datos con mucha mayor velocidad que un ser humano. Así es posible satisfacer con rapidez consultas de casos particulares, del momento, sin necesidad de búsquedas visuales o manuales que refieren mucho tiempo.
  • Es menos Laborioso: Se elimina gran parte del tedio de manera archivos a mano. Las tareas mecánicas siempre serán mejor realizadas por las maquinas.
  • Es Actual: Se dispone en cualquier momento de información precisa y al día.
  • Cómoda: Al tener la información en un mismo sitio, ahorraremos tiempo y trabajo.

Otras ventajas de las bases de datos

  • Disminuir la Redundancia
  • Compartición de Datos
  • Posibilidad de aplicar restricciones de seguridad
  • Posibilidad de mantener la integridad

Para conocer mas a fondo los mas utilizados, veremos los manuales.

Manual Mysql:

http://downloads.mysql.com/docs/refman-5.0-es.a4.pdf
PHP & MySQL Everyday Apps for Dummies
:http://www.4shared.com/file/73791776/6113812a/PHP__MySQL_Everyday_Apps_for_Dummies.html

Manual Postgresql:

http://palomo.usach.cl/Docs/postgres/Postgres-User.pdf

Manual de Oracle:

http://www.jorgesanchez.net/bd/oracleSQL.pdf
http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf

Manual de referencia SQL Server:

http://www.lsgames.com/tmp/Manual%20de%20Referencia%20-%20SQL%20Server.pdf
http://gamp.c.u-tokyo.ac.jp/~ueda/varilex/art/manual.pdf
Microsoft SQL Server 2005 for Dummies
:http://www.4shared.com/file/73770632/45c3304/Microsoft_SQL_Server_2005_Reporting_Services_for_Dummies.html

Manual Informix:

Ejercicios Access:

http://difusion.osi.iteso.mx/pdfs/Access_I.pdf
Access Forms & Reports for Dummies:
:http://www.4shared.com/file/73692405/6cf48445/Access_Forms__Reports_for_Dummies.html

Ejercicios Resueltos:

http://epcc.unex.es/modules.php?op=modload&name=Downloads&file=index&req=descargar&lid=3008
http://superalumnos.net/files/EjerciciosSQL.pdf



Mysql por Consola

Arranque como usuario:

Código
  1. mysql –u usuario –p clave

En el caso  en el que el servidor no se encuentre en el ordenador que estamos trabajando el orden de uso será:

Código
  1. mysql –h nombre_host –u usuario –p clave

Consultas generales sobre las bases de datos
 
Mostrar las bases de datos:

Código
  1. SHOW DATABASES;

Mostrar las bases de datos seleccionadas:

Código
  1. SELECT DATABASES();

Mostrar las tablas que contiene una base de datos:

Código
  1. SHOW TABLES;

Seleccionar una base de datos:

Código
  1. USE nombre_base;

Describir la estructura de campos de una tabla:

Código
  1. DESCRIBE nombre_tabla;

Creación de bases de datos, tablas y registros:
 
Crear una base de datos:

Código
  1. CREATE DATABASE nombre_base;

Creación de una tabla:

Código
  1. CREATE [TEMPORARY] TABLE [IF no EXISTS] nombre_tabla (nombre_campo tipo[color=red](1)[/color] opciones[color=red](2)[/color] cláusulas[color=red](3)[/color], ..., [último campo]  );

[temporary] -->  la tabla existirá mientras exista la conexión con el cliente actual o hasta que se emita la instrucción drop table.
 
[if no exist] --> si existe la tabla no se crea una nueva.

(1)

Las posibles opciones de tipo de campo son:

tinyint --> 1 byte
smallint --> 2 byte
mediumint --> 3 byte
int --> 4 byte
bigint --> 8 byte
float --> 4 byte
double --> 8 byte
decimal --> variable
char(n) --> cadena de caracteres de longitud fija
varchar(n) --> cadena de caracteres de longitud variables
tinyblob --> objeto binario largo (muy pequeño)
blob --> objeto binario largo (pequeño)
mediumblob --> objeto binario largo (medio)
longblob --> objeto binario largo (grande)
tinytext --> cadena de texto muy pequeña
text --> cadena de texto pequeña
mediumtext --> cadena de texto media
longtext --> cadena de texto larga
enum --> una enumeración
set --> un conjunto
date --> valor fecha (aaaa-mm-dd)
time --> valor de hora (hh-mm-ss)
datetime --> valor de fecha y hora 
timestamp --> valor de lapso de tiempo (aaaammddhhmmss)
year --> valor de año
 
(2)

Las posibilidades del apartado opciones son:

Generales:
null --> admite valores nulos
no null --> rechaza dejar el campo en blanco
default --> permite establecer un valor por defecto
 
Columnas numéricas:
auto_increment --> para generar identificadores únicos o valores en serie.
unisgned --> rechazo de valores negativos
 
Cadena:
binary --> trata los valores como cadenas binarias (campos char y varchar)
       
(3)

Cláusulas:

primary key --> columna indexada para búsqueda rápida. Clave principal, solo puede haber una.
unique --> crea un índice con valores únicos
index, key --> son sinónimos y crean índices que pueden contener valores repetidos.

Inserción de registros en una base de datos:
 
Código
  1. INSERT [LOW_PRIORITY | DELAYED][IGNORE][INTO] nombre_tabla forma_introducción(1)

I. LOW_PRIORYTY  |  DELAYED: la  primera de las opciones hace que la inserción sea
postergada hasta que ningún cliente utilice la tabla. La segunda genera una cola de
introducción de registros, que se añadirán a la tabla cuando esta quede libre de usuarios.
 
II. IGNORE: se desechan las filas que duplican valores para claves únicas.

III. INTO: se requiere en versiones 3.22.5.
 
(1)Las formas de introducción son:

(lista_columnas) VALUE (lista_valores_o_expresión)
(lista_columnas) SELECT (opción_de_recuperación)
SET (nombre_columna=expresion, ....)

Uso de una base de datos
 
Código
  1. USE DATABASE;

Consulta de una base de datos:
 
La forma general del comando de consulta es:
 
Código
  1. SELECT  opciones (1)
  2. lista (2)
  3. cláusulas (3);

 
(1) Tipos de opciones permitidas:
 
all --> provoca el regreso de todas las filas
distinct, distinctrow --> especifican que las líneas duplicadas deben ser eliminadas
high_prioruty --> da mayor prioridad a la instrucción en el caso de espera.
sql_byg_result, sql_small_result --> especifican que el conjunto de resultados será mas largo o más corto
straignt_join --> fuerza a las tablas a unirse en el orden citado en la cláusula from
 
(2) Lista --> especifica las columnas que deben devolverse, el símbolo “*” especifica que deben extraerse todas las columnas. La separación entre los diferentes nombres de  columnas se hacen con el símbolo “,”.
 
(3)Cláusulas (en caso de haber varias cláusulas deben seguir el orden expuesto en la lista):
 
Intro outfile ‘nombre_fichero’ opciones --> El resultado de la consulta es transferido a un fichero, paro lo cual debemos tener privilegio de crear el fichero y además este no debe existir. 

Las opciones de importanción son las siguientes:

Código
  1. [FIELDS [terminate BY ‘cadena’]
(a)

Código
  1. [opcionally] [ENCLOSED BY ‘carácter’]
(b)

Código
  1. [escape BY ‘carácter’]
(c)

Código
  1. [LINES TERMINATED BY ‘carácter’]
(d)
 
a)especifica el carácter o caracteres que delimitan valores dentro de la línea
 
b)especifica un carácter  entrecomillado que se  quita del final del campo de valores.

OPTIONALLY establece que los valores solamente se entrecomillan para las columnas char y varchar.
 
c)Se utiliza para especificar el carácter de escape especial
 
d)Especifica un carácter o caracteres que determinan el final de la línea.
 
Los caracteres especiales son los siguientes:

-\0  ascii 0
-\b retroceso
-\n línea nueva
-\r retorno de carro
-\s espacio
-\t tabulación
-\’ comilla simple
-\” comilla doble
-\\ barra inversa
 
from  tabla-tablas  --> especifica una o varias tablas desde las que se obtendrán las filas.
Existen varias posibilidades de unión de tablas (mirar libro de mysql).
 
where expresión --> establece una expresión que se aplica a las filas seleccionadas
 
group by  lista_columnas -->  agrupa filas del conjunto de resultados de acuerdo con  las
columnas citadas.
 
having  expresión --> especifica una expresión secundaria para limitar filas después de
satisfechas las condiciones expuestas en la cláusula where.
 
order by entero_unsigne|nombrecoluma|fórmula --> indica como se va a clasificar el conjunto de resultados. Las posibilidades son:
 
asc – ascendente
desc – descendente
rand() – orden aleatorio
 
procedure  nombre_procedimiento -->  indica un nombre de procedimiento al que serán enviados los datos antes de su salida.



Practicas | Ejercicios de referencia:

Tabla de referencia:



* Obtener los apellidos de los empleados.

Código
  1. SELECT Apellidos FROM EMPLEADOS

*Obtener los apellidos de los empleados sin repeticiones.

Código
  1. SELECT DISTINCT Apellidos FROM EMPLEADOS

*Obtener todos los datos de los empleados que trabajan para el departamento 14

Código
  1. SELECT * FROM EMPLEADOS WHERE Departamento = 14

*Obtener todos los datos de los empleados que trabajan para el departamento 37 y
para el departamento 77

Código
  1. SELECT * FROM EMPLEADOS
  2. WHERE Departamento = 37 OR Departamento = 77
  3.  

Código
  1. SELECT * FROM EMPLEADOS
  2. WHERE Departamento IN (37,77)
  3.  

*Obtener todos los datos de los empleados cuyo apellido comience por ’P’

Código
  1. SELECT * FROM EMPLEADOS
  2. WHERE Apellidos LIKE ’P%’
  3.  

*Obtener el presupuesto total de todos los departamentos.

Código
  1. SELECT SUM(Presupuesto) FROM DEPARTAMENTOS

*Obtener el numero de empleados en cada departamento.

Código
  1. SELECT Departamento, COUNT(*)
  2. FROM EMPLEADOS
  3. GROUP BY Departamento
  4.  

*Obtener un listado completo de empleados, incluyendo por cada empleado los datos
del empleado y de su departamento.

Código
  1. SELECT *
  2. FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
  3. ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
  4.  

*Obtener un listado completo de empleados, incluyendo el nombre y apellidos del
empleado junto al nombre y presupuesto de su departamento.

Código
  1. SELECT EMPLEADOS.Nombre, Apellidos, DEPARTAMENTOS.Nombre, Presupuesto
  2. FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
  3. ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
  4.  

Código
  1. SELECT E.Nombre, Apellidos, D.Nombre, Presupuesto
  2. FROM EMPLEADOS E INNER JOIN DEPARTAMENTOS D
  3. ON E.Departamento = D.Codigo
  4.  

*Obtener los nombres y apellidos de los empleados que trabajen en departamentos
cuyo presupuesto sea mayor de 60.000

Código
  1. SELECT EMPLEADOS.Nombre, Apellidos
  2. FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
  3. ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
  4. AND DEPARTAMENTOS.Presupuesto > 60000
  5.  

Código
  1. SELECT Nombre, Apellidos FROM EMPLEADOS
  2. WHERE Departamento IN
  3. (SELECT Codigo FROM DEPARTAMENTOS WHERE Presupuesto > 60000)
  4.  

*Obtener los datos de los departamentos cuyo presupuesto es superior al presupues-
to medio de todos los departamentos.

Código
  1. SELECT *
  2. FROM DEPARTAMENTOS
  3. WHERE Presupuesto >
  4. (
  5. SELECT AVG(Presupuesto)
  6. FROM DEPARTAMENTOS
  7. )
  8.  

*Obtener los nombres (unicamente los nombres) de los departamentos que tienen
mas de dos empleados.

Código
  1. SELECT Nombre FROM DEPARTAMENTOS
  2. WHERE Codigo IN
  3. (
  4. SELECT Departamento
  5. FROM EMPLEADOS
  6. GROUP BY Departamento
  7. HAVING COUNT(*) > 2
  8. )

Código
  1. SELECT DEPARTAMENTOS.Nombre
  2. FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
  3. ON Departamento = Codigo
  4. GROUP BY DEPARTAMENTOS.Nombre
  5. HAVING COUNT(*) > 2
  6.  

*Aplicar un recorte presupuestario del 10 % a todos los departamentos.

Código
  1. UPDATE DEPARTAMENTOS SET Presupuesto = Presupuesto * 0.9

*Reasignar a los empleados del departamento de investigacion (codigo 77) al depar-
tamento de informatica (codigo 14).

Código
  1. UPDATE EMPLEADOS SET Departamento = 14 WHERE Departamento = 77

*Despedir a todos los empleados que trabajan para el departamento de informatica (codigo 14).

Código
  1. DELETE FROM EMPLEADOS
  2. WHERE Departamento = 14
  3.  

*Despedir a todos los empleados que trabajen para departamentos cuyo presupuesto
sea superior a los 60.000

Código
  1. DELETE FROM EMPLEADOS
  2. WHERE Departamento IN
  3. (
  4. SELECT Codigo FROM DEPARTAMENTO
  5. WHERE Presupuesto >= 60000 )
  6.  

*Despedir a todos los empleados.

Código
  1. DELETE FROM EMPLEADOS

Hago una pausa cuando tocamos la eliminación de registros, segun mi criterio, jamas debemos eliminar los registros, personas, productos, nada.

Para esto en nuestra tabla debemos incrementar un campo denominado "estado" que especifique 2 valores, 1 por activo otro por eliminado.

Y al momento de "eliminar un registro" debemos hacer simplemente un UPDATE cambiando el estado, y cuando se listen los productos o personas deberemos incrementar en la consulta AND estado = 'Activo'.

Esto para conservar todos los registros, muchas empresas lo hacen.

Sigue en construcción...
443  Foros Generales / Sugerencias y dudas sobre el Foro / Sugerencia en el foro de Base de Datos en: 5 Noviembre 2009, 20:20 pm
Hola, sin desestimar a nuestro amigo Nakp, me atrevo a sugerir a ^TiFa^ como segundo moderador de dicho foro, ambos haran un gran trabajo, al menos ^TiFa^  :xD

Saludos
444  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Aumento de Mods Globales? :P en: 31 Octubre 2009, 14:13 pm
Sabia que no tenia que iniciar un post yo, ya que alguien mas se daria cuenta :P
445  Programación / PHP / Re: Petición a API XML en: 29 Octubre 2009, 23:00 pm
WHK siempre posteando codigo seguro, aun no me acostumbro a hacerlo :P
446  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿UN ERROR HA OCURRIDO? en: 29 Octubre 2009, 20:58 pm
como se hace eso?.


En el navegador:

Herramientas --> Limpiar información privada --> Selecciona cookies y deselecciona lo demas. --> clic o enter :xD

Eso con el Mozilla F
447  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿UN ERROR HA OCURRIDO? en: 29 Octubre 2009, 20:42 pm
Limpia los datos privados de tu navegador y asunto arreglado.
448  Programación / PHP / Re: Optimizacion de codigo PHP. en: 29 Octubre 2009, 16:43 pm
Pues la tercera opción me parece ideal.
Aunque hay que aclarar que optimizar código no necesariamente significa reducir lineas de código :P
449  Programación / PHP / Re: Guardar imagenes en Mysql en: 29 Octubre 2009, 16:41 pm
Guardar la imagen dentro del site, y guardar su ruta en la bd.
450  Seguridad Informática / Nivel Web / Re: Backdoor nativo en SMF 2.0 en: 28 Octubre 2009, 17:00 pm
Buen trabajo.!
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 88
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines