1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez...

47
1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE TABLAS MySQL: INSTALACIÓN WIN Y ACCESO A TRAVES DE PHP

Transcript of 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez...

Page 1: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

1

SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS

RELACIONALES

COMERCIO ELECTRÓNICO

Cristina Sánchez

Julia Sigles

PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE TABLAS

MySQL: INSTALACIÓN WIN Y ACCESO A TRAVES DE PHP

Page 2: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

2

Índice• Introducción• Propiedades de lso RDBMS• PostgrSQL

– Instalación en Linux– Comentarios– Crear una tabla– Insertar datos en una tabla– Extraer datos de una tabla– Otras Instrucciones útiles

• MySQL– Instalación en Windows– Aspectos de configuración– Instrucciones básicas de manipulación de tablas– Ejemplo creación de BD– Ejemplo de consulta de la BD desde la Web con PHP– Ejemplo de introducción de datos a la BD desde la web

con PHP

Page 3: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

3

Introducción

• Por lo general, todo e-comercio necesita almacenar los datos de sus clientes y pedidos para posteriormente ser servidos.

• Una posibilidad seria escribir los pedidos en archivos (método de archivos planos), usando funciones como fopen(), fwrite(), fgets(), readfile(), feof(), fclose(), etc. Tiene limitaciones en aspectos como el tamaño del archivo, la difícil búsqueda de un registro, en accesos simultáneos, imposible aplicar diferentes niveles de acceso, etc.

• Cuando se trata de un gran número de pedidos lo mejor es usar un sistema de administración de base de datos relacional (basada en tablas) como MySQL o PostgreSQL.

• Otra posibilidad para un sistema sencillo que no necesite base de datos completa es la nueva extensión SQLite de PHP, que es una interfaz SQL a un archivo plano. http://sqlite.org

Page 4: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

4

Propiedades de los RDBMS

Los sistemas de administración de bases de datos implementan todas la funciones necesarias en un sistema de almacenamiento:

1. Proporcionan acceso más rápido a los datos que los archivos planos. MySQL es uno de los más rápidos.

2. Resulta sencillo consultarlos para extraer conjuntos de datos que se correspondan con determinados criterios.

3. Incorporan mecanismos integrados para resolver el problema de accesos simultáneos para que los programadores no tengan que preocuparse.

4. Proporcionan acceso aleatorio a los datos.

5. Incorporan sistemas de privilegios.

Page 5: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

5

PostreSQL

Page 6: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

6

PostgreSQL PostgreSQL es un servidor de base de datos relacional libre bajo la licencia BSD. Es una alternativa a otros sistemas de bases de datos de código abierto (como MySQL, Firebird y MaxDB), así como sistemas propietarios como Oracle o DB2.

Algunas de sus principales características son:

– Claves ajenas también denominadas llaves ajenas o llaves Foráneas (foreign keys)

– Disparadores (triggers)

– Vistas

– Integridad transaccional

– Acceso concurrente multiversión (no se bloquean las tablas, ni siquiera las filas, cuando un proceso escribe)

– Capacidad de albergar programas en el servidor en varios lenguajes.

– Herencia de tablas

– Tipos de datos y operaciones geométricas

Page 7: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

7

Instalación de PostgreSQL en Linux

Nota: Caso para sistema operativo Debian GNU/Linux.

1. Descargar del sitio oficial de PostgreSQL http://www.postgresql.org/download/ los fuentes.

2. Suponiendo que el archivo *.tar.bz2 lo colocamos en /usr/local/, lo descomprimimos:

SERVER:~# cd /usr/local SERVER:/usr/local# bzcat postgresql-8.0.4.tar.bz2 | tar -xvf –

3. Creamos el Makefile, compilamos y copiamos los ejecutables a los lugares apropiados:

SERVER:/usr/local# cd postgresql-8.0.4SERVER:/usr/local/postgresql-8.0.4# ./configureSERVER:/usr/local/postgresql-8.0.4# makeSERVER:/usr/local/postgresql-8.0.4# make install

En este momento ya tenemos instalado PostgreSQL.

Page 8: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

8

Instalación de PostgreSQL en Linux

4. Para ejecutar el servidor de bases de datos, es requisito indispensable que no corra como root, así que primero crearemos un usuario de sistema llamado postgres:

SERVER:~# useradd postgres

Configuramos en el archivo /etc/passwd la línea del usuario que acabamos de crear:

postgres:x:1001:1001::/var/pgsql/data:/bin/bash

Le asignamos un password al usuario con el comando passwd y luego agregamos en el archivo /etc/group el grupo que le asignamos en el /etc/passwd (en este caso 1001):

postgres:x:1001:

Page 9: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

9

Instalación de PostgreSQL en Linux

5. Creamos un clúster de bases de datos de PostgreSQL, que contendrá las bases de datos que vayamos creando. Al momento de inicializar un clúster de bases de datos de PostgreSQL se tiene que indicar el directorio donde se desea que se cree. El propietario de ese directorio tiene que ser un usuario que no sea root. Como nosotras indicamos en el /etc/passwd que el HOME del usuario postgres es /var/pgsql/data, siguiendo con esa lógica, vamos a indicar que ése sea el directorio donde se localice el clúster de bases de datos. Entonces creamos el directorio y le cambiamos de propietario:

SERVER:~# mkdir -p /var/pgsql/dataSERVER:~# chown postgres /var/pgsql/data

Ahora nos cambiamos al usuario postgres e inicializamos el clúster de bases de datos con el comando initdb:

SERVER:~# su - postgrespostgres@SERVER:~$ /usr/local/pgsql/bin/initdb -D /var/pgsql/data

Page 10: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

10

Instalación de PostgreSQL en LinuxNos aparece una ejecución como la siguiente:The files belonging to this database system will be owned by user "postgres". This user must also own the server process.

The database cluster will be initialized with locale C.

fixing permissions on existing directory /var/pgsql/data ... ok creating directory /var/pgsql/data/global ... ok creating directory /var/pgsql/data/pg_xlog ... ok creating directory /var/pgsql/data/pg_xlog/archive_status ... ok creating directory /var/pgsql/data/pg_clog ... ok creating directory /var/pgsql/data/pg_subtrans ... ok creating directory /var/pgsql/data/base ... ok creating directory /var/pgsql/data/base/1 ... ok creating directory /var/pgsql/data/pg_tblspc ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 1000 ...Success. You can now start the database server using:

/usr/local/pgsql/bin/postmaster -D /var/pgsql/dataor

/usr/local/pgsql/bin/pg_ctl -D /var/pgsql/data -l logfile start

Page 11: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

11

Instalación de PostgreSQL en Linux

6. El siguiente paso es inicializar el servidor de bases de datos. Antes agregamos unas líneas al archivo ‘.bash_profile’ del usuario postgres, para evitar tener que escribir todo el path del clúster de BD cada vez que inicializamos el servidorBD, y para agregar a nuestro path el directorio donde están los comandos de postgres:

PGDATA=/var/pgsql/data PATH=/usr/local/pgsql/bin:$PATH export PATH PGDATA

Como el HOME que le asignamos al usuario postgres es /var/pgsql/data , el archivo ‘.bash_profile’ deberá crearse en este directorio.

Como usuario postgres inicializamos el servidor de bases de datos con el comando pg_ctl:

postgres@SERVER:~$ pg_ctl start postmaster starting postgres@SERVER:~$ LOG: database system was shut down at 2006-03-09 17:21:57 CST LOG: checkpoint record is at 0/A38A34 LOG: redo record is at 0/A38A34; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 544; next OID: 17230 LOG: database system is ready

Ahora PostgreSQL está en funcionamiento.

Page 12: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

12

Instalación de PostgreSQL en Linux

7. Para conectarse a un servidor de base datos PostgreSQL se utiliza el comando psql. Se le pueden pasar muchos parámetros a este comando de la forma psql [OPTIONS]... [DBNAME [USERNAME]]. Para empezar, nos conectamos al nuevo servidor que acabamos de crear, y una vez dentro, le asignamos un password al usuario con privilegios de postgres:

postgres@SERVER:~$ psql template1Welcome to psql 8.0.4, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit

template1=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'secret'; ALTER USER

template1=# \q

‘template1’ es el nombre de una de las dos bases de datos que por defecto se encuentran en el database cluster. Entre otras cosas, la base template1 se utiliza cuando uno crea una base de datos nueva.

Para salir de la terminal de PostgreSQL se utiliza el comando \q .

Page 13: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

13

Instalación de PostgreSQL en Linux

8. Si nos conectamos por segunda vez, vemos que no nos pide el password. Esto se debe a que existe un archivo de configuración llamado ‘pg_hba.conf’ en el que se determina quién, cómo y a qué, se puede acceder de nuestro servidor de BD, y por defecto está definido de forma que se aceptan todas las conexiones locales sin necesidad de password.

Si por ejemplo, sólo queremos aceptar conexiones locales y del host con IP 192.168.1.68 ( donde se hospedaría el servidor web y la aplicación PHP que realiza las conexiones con el servidor de BD), y además usar encriptación MD5 en la autenticación…, el archivo pg_hba.conf contendría las siguientes líneas:

# TYPE DATABASE USER CIDR-ADDRESS METHOD local all all md5 host all all 192.168.1.68 255.255.255.255 md5 host all all 0.0.0.0 0.0.0.0 reject

Page 14: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

14

Instalación de PostgreSQL en Linux

Tras cualquier cambio de configuración, es preciso reiniciar el servidor DB.

Podemos especificar al mismo tiempo el nombre del archivo en el que guardará la bitácora (log). El nombre del archivo se lo pasamos como parámetro al comando pg_ctl (por ejemplo log_2006-03-09):

postgres@SERVER:~$ pg_ctl stop

LOG: received smart shutdown request

LOG: shutting down

waiting for postmaster to shut down....LOG: database system is shut down done

postmaster stopped

postgres@SERVER:~$ pg_ctl start -l log_2006-03-09

postmaster starting

Page 15: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

15

Instalación de PostgreSQL en Linux

9. Otro archivo de configuración importante es ‘postgresql.conf’.

En este archivo se puede configurar el puerto por el que escuchará el servidor, el número máximo de conexiones que permitirá, el uso de los recursos de sistema, las bitácoras, etc.

Los parámetros comentados tienen valores por defecto. Para cambiarlos, solo hay que descomentar la línea y asignar el valor deseado. Sin olvidar reiniciar posteriormente.

Para las versiones 7.x de PostgreSQL, si se desea aceptar conexiones TCP/IP, se tiene que especificar en este archivo la línea tcpip_socket = true.

Page 16: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

16

Instalación de PostgreSQL en Linux

10. Para conectarse desde otro host a nuestro servidorDB, éste ha de tener instalado el cliente de PostgreSQL.

Supongamos que la dirección IP del servidorDB al que queremos acceder es 192.168.1.67.

Para conectarnos a la base de datos ‘BDphp’ del servidorDB, mediante el usuario de postgress ‘cris’ desde el host cliente, basta con ejecutar la instrucción:

user@HOSTX:~$ psql -h 192.168.1.67 BDphp cris

En lugar de especificar la IP, también se puede utilizar el nombre de dominio del servidor.

Page 17: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

17

Comentarios

• Para los que les guste trabajar más con interfaz gráfica y no desde shell, existe ‘pgadmin’, es como una mezcla entre el Enterprise Manager y el Query Analyzer de MS SQL Server. http://www.pgadmin.org/

• También se dispone de la aplicación ‘phpPgAdmin’, que es muy similar en funcionalidad a phpMyAdmin.

• Para realizar conexiones utilizando ODBC, existe ‘psqlODBC’.

Page 18: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

18

Creación de una tabla con PostgreSQL

• Una vez creada la base de datos, se pueden crear las tablas que la componen de la siguiente manera:

CREATE TABLE nombre_tabla (

nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]

[ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]... ]

[ , [ vínculo_de tabla] ... ] )

Nombre_columna: es el nombre de la columna que compone la tabla. Hay que tener en cuenta que la longitud de los identificadores de columna no debe tener más de 18 caracteres.

Page 19: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

19

Creación de una tabla con PostgreSQL

• Tipo_columna: es la indicación del tipo de dato que la columna podrá contener.

• Los principales tipos son:

1. CHARACTER(n) -> cadena de longitud fija con exactamente n caracteres

2. CHARACTER VARYING(n) -> cadena de longitud variable con un máximo de n caracteres

3. INTEGER -> Un número entero con signo.

4. SMALLINT -> Un número entero con signo y una precisión que no sea superior a INTEGER.

5. FLOAT(p) ->Un número con coma móvil y una precisión p

6. DECIMAL(p,q)-> Un número con coma fija de por lo menos p cifras y signo.

7. INTERVAL->Un periodo de tiempo

8. DATE, TIME y TIMESTAMP -> Un instante temporal preciso

Page 20: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

20

• Cláusula_defecto: indica el valor por defecto que tomará la columna si no se le asigna uno en el momento en que se crea la línea.

• Vínculos_de_columna: son vínculos de integridad que se aplican a cada columna en concreto.

1. NOT NULL indica que la columna no puede tomar el valor NULL.

2. PRIMARY KEY indica que la columna es la llave primaria de la tabla.

• Vínculo_de_tabla: son vínculos de integridad que se pueden referir a más columnas de la tabla

Creación de una tabla con PostgreSQL

Page 21: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

21

Creación de una tabla con PostgreSQL

A continuación, mostramos como crear una tabla de dos columnas llamada ejemplo:

CREATE TABLE Ejemplo (

ID INTEGER PRIMARY KEY,=> ID indica la llave primaria de la relación de tipo INTEGER.

type CHAR(18) NOT NULL

=> Es un atributo donde hay un vínculo de no nulidad, es de tipo CHAR(18));

Page 22: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

22

Inserción de datos en una tabla con PostgreSQL

• Para añadir una linea nueva a una tabla utilizaremos INSERT:

INSERT INTO nombre_tabla [ ( lista_campos ) ] VALUES ( lista_valores )

Nombre_tabla es el nombre de la tabla donde hay que incluir la nueva línea.

Lista_campos son los nombres de los campos a los que hay que asignar un valor, separados entre sí por una coma. Los campos no incluidos en la lista tomarán su valor por defecto o NULL.

Lista_valores valores que se asignaran a los campos de la tabla en el orden y número especificados.

Page 23: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

23

• Aqui, mostramos dos ejemplos de inserción en dos tablas distintas:

INSERT INTO Persona VALUES ( 1, 'Agosti', 'Maristella' );INSERT INTO Persona VALUES ( 2, 'Benfante', 'Lucio' );INSERT INTO Persona VALUES ( 3, 'Melucci', 'Massimo' );INSERT INTO Persona VALUES ( 4, 'Spaccapietra', 'S.' );INSERT INTO Persona VALUES ( 5, 'Maryansky', 'F.' );

INSERT INTO Autor VALUES ( 2, 1 );INSERT INTO Autor VALUES ( 2, 2 );INSERT INTO Autor VALUES ( 2, 3 );

Inserción de datos en una tabla con PostgreSQL

Page 24: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

24

Extracción de datos de una tabla.

• Las instrucciones que utilizamos para extraer datos de las tablas son:

SELECT [ ALL | DISTINCT ] lista_elementos_selecciónFROM lista_referencias_tabla[ WHERE expresión_condicional ][ GROUP BY lista_columnas ][ HAVING expresión_condicional ][ ORDER BY lista_columnas ]

Para comprender mejor el funcionamiento anterior, lo que haremos será aplicar la función anterior en unas tablas.

Page 25: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

25

En este primer ejemplo, lo que se hace es extraer de una tabla llamada Personas los apellidos y ordenarlos alfabéticamente.

Caso 1:

SELECT apellidos FROM Personas ORDER BY apellidos

La opción DISTINCT sirve para diferencia los casos donde nos encontremos con dos apellidos iguales. De esta manera no habrán problemas de líneas duplicadas.

SELECT DISTINCT apellidos FROM Personas ORDER BY apellidos

apellidos ----------------------------

Agosti Batini Bayer Benfante Carey Cochowsky DeWitt Kim Knuth

Extracción de datos de una tabla.

Page 26: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

26

• En este ejemplo, utilizando la tabla Personas, creamos una nueva que contiene solo los apellidos que empiezan por ‘B’.

SELECT * FROM Personas WHERE apellidos LIKE 'B%‘

El comparador LIKE permite una comparación de caracteres.La nueva tabla es como la siguiente:

• Otro ejemplo sencillo es éste, lo único que hace es contar el número de líneas que tiene la tabla llamada Publicación.

SELECT COUNT(*) FROM Publicacion

count-----12

Page 27: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

27

• MODIFICAR GRUPO — Instrucción para añadir usuarios o eliminarlos de un grupo.

MODIFICAR GRUPO nombre AÑADIR USUARIO nombre de usuario [, ... ] MODIFICAR GRUPO nombre

ELIMINAR USUARIO nombre de usuario [, ... ]

• MODIFICAR TABLA — Modificar una tabla.

MODIFICAR TABLA tabla [ * ] AÑADIR [ COLUMNA ] columna tipo MODIFICAR TABLA tabla [ * ] MODIFICAR [ COLUMNA ] columna { SET DEFAULT valor | DROP DEFAULT } MODIFICAR TABLA tabla [* ] RENOMBRAR [ COLUMNA ] columna A nueva columna MODIFICAR TABLA tabla RENOMBRAR A nueva tabla

• MODIFICAR USUARIO — Modificar la información de la cuenta de un usuario

MODIFICAR USUARIO nombre de usuario [ WITH PASSWORD 'palabra clave' ] [ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ] [ VALID UNTIL 'abstime' ]

• CREATE GROUP — Crea un grupo nuevo

CREATE GROUP name [ WITH [ SYSID gid ] [ USER username [, ...] ] ]

• CREAR USUARIO — La utilizamos para crear un nuevo usuario en la BD.

CREAR USUARIO nombre de usuario [ CON [ SYSID uid ] [ PASSWORD 'palabra clave' ] ] [CREARDB | NOCREARDB ] [ CREARUSUARIO | NOCREARUSUARIO ] [ EN EL GRUPO nombre de grupo [,...] ] [ VALIDO HASTA 'abstime' ]

Algunas instrucciones útiles:

Page 28: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

28

• DELETE — Para borrar una fila de una tabla

DELETE FROM table [ WHERE condition ]

• DROP DATABASE — Instrucción para eliminar una base de datos existente

DROP DATABASE name • DROP GROUP — Para eliminar un grupo

DROP GROUP name

• GRANT — Otorga privilegios de acceso a un usuario, a un grupo o a todos los usuarios

GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } • INSERT — Inserta filas nuevas en una tabla

INSERT INTO table [ ( column [, ...] ) ] { VALUES ( expression [, ...] ) | SELECT

query }

Algunas instrucciones útiles:

Page 29: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

29

• ROLLBACK — Interrumpe la transacción en curso

ROLLBACK [ WORK | TRANSACTION ]

• TRUNCATE — Vacía una tabla

TRUNCATE [ TABLA ] NOMBRE

• UPDATE — Substituye los valores de una columna en la tabla UPDATE tabla SET columna = expresión [, ...] [ FROM lista ] [ WHERE condición ]

• VACUUM — Limpia y analiza una base de datos Postgres

VACUUM [ VERBOSE ] [ ANALYZE ] [ tabla ] VACUUM [ VERBOSE ] ANALYZE [ tabla

[ (columna [, ...] ) ] ]

Podemos encontrar mas instrucciones en la siguiente dirección URL:http://es.tldp.org/Postgresql-es/web/navegable/user/user.html

Algunas instrucciones útiles:

Page 31: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

31

Instalación de MySQL en Windows XP

1. Descargar Mysql (4 o 5) de http://www.mysql.com/.

2. Descomprimir el ‘.zip’ y ejectuar Setup.exe:

El instalador es un asistente InstallShield convencional.

Page 32: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

32

Instalación de MySQL en Windows XP

El directorio de instalación predeterminado será C:\mysql, podéis cambiarlo una vez instalado pero con algunos pasos adicionales (temas de path en my.ini) para asegurar que todo funciona.

Page 33: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

33

Instalación de MySQL en Windows XP

• En la configuración de NT/2000/XP el nombre del servidor es ‘mysqld-nt’ y normalmente se instala como servicio (se ejecuta de fondo, automáticamente al encender el equipo, para dar servicio a otros programas):

cd c:\mysql\bin

Mysql-nt –install

Service successfully installed

• Se puede iniciar y detener el servicio MySQL desde la línea de comandos con:

NET START mysql

NET STOP mysql o mysqladmin shutdown

• Para probar si MySQL funciona o no, ejectar:C:/mysql/bin/mysqlshow

Page 34: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

34

Aspectos de configuración MySQL

• Configurar la ruta para poder usar las utilidades de línea de comandos:

Inicio -> Configuración -> Panel de control -> Sistema -> Operaciones avanzadas -> Variables de entorno: pulsar dos veces sobre PATH añadid ‘;’ a la ruta actual y detrás escribid ‘c:\mysql\bin -> Aceptar. Al reiniciar el equipo accederemos a MySQL sólo escribiendo ‘mysql’

• Eliminar el usuario anónimo. La configuración predeterminada de MySQL permite que cualquier usuario acceda al sistema sin proporcionar user o password. Debe borrarse el usuario anónimo. Abrid una línea de comandos e introducid:

C:\mysql\bin\mysqluse mysqldelete from user where User=‘’;quit;C:\mysql\bin\mysqladmin reload

• Definir la contraseña raíz. La cuenta de superusuario todavía no tiene contraseña. Configuradla:

C:\mysql\bin\mysqladmin –u root password tu_passwordC:\mysql\bin\mysqladmin –u root –h nombre_host password tu_password

A partir de ahora para cualquier instrucción deberéis indicar el user y os pedirá el password :C:\mysql\bin\mysqladmin –u root –p reload (luego os pide el password)

Page 35: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

35

Aspectos de configuración MySQL

• En el archivo de configuración de MySQL se indica la ubicación de los archivos de cabecera, las bibliotecas de MySQL y otras preferencias para nuestro sistema en particular. Según cómo, será necesario que modifiquéis algún parámetro de este archivo.

• Por ejemplo: hay que tener en cuenta que el número de conexiones simultáneas a MySQL es limitado, para rechazar las solicitudes de nueva conexión en momentos de mucho tráfico y evitar el uso de todos los recursos del equipo. Para determinar este parámetro hay que modificar:

‘MaxClients’ en ‘httpd.conf’ de Apache‘max_connections’ en ‘my.conf’ de MySQL.(o my.cnf o

my.cfg )

Page 36: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

36

Instrucciones básicas de manipulación de tablas

• Añadir datos:INSERT [INTO] tabla [(columna1, columna2, columna3, …)] VALUES (valor1, valor2, valor3, …);

• Recuperar datos:SELECT [opciones] elementos

[INTO detalles_archivo]

FROM tablas

[WHERE condiciones] -> con criterios específicos

[GROUP BY tipo_grupo] -> desde varias tablas

[HAVING definición_de_dónde]

[ORDER BY tipo_orden] -> con un orden dado (alfabeticamente según nombre)

[LIMIT criterios_límite] -> especificar fílas que deberían devolverse

[PROCEDURE nombre_proced (argumentos)]

[opciones_bloqueo];

• Actualizar registros:UPDATE [LOW_PRIORITY] [IGNORE] nombretabla

SET columna1=expresión1 ,columna2=expresión2 ,…

[WHERE condición]

[ORDER BY criterios_de_orden]

[LIMIT número]

Page 37: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

37

Instrucciones básicas de manipulación de tablas

• Eliminar registros de la base de datosDELETE [LOW_PRIORITY] [QUIK] [IGNORE] FROM tabla

[WHERE condición] [LIMIT número]

[ORDER BY orden_columnas]

[LIMIT número]

• Eliminar tabla

DROP TABLE nombre_tabla;

• Eliminar base de datos

DROP DATABASE nombre_db;

•Para más información consultar http://www.ansi.org o http://www.mysql.com.

Page 38: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

38

EJEMPLO DE CREACIÓN DE UNA BASE DE DATOS SENCILLA

Not null -> todas las filas de la tabla deben contener un valor

Auto-increment -> al dejar el campo en blanco al insertar filas genera automáticamente un valor de identificación exclusivo (una unidad mayor que el valor máximo incluido en la columna).

Primary key -> la columna se tratará como la clave principal de la tabla.

Page 39: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

39

Page 40: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

40

EJEMPLO DE CONSULTA A LA BASE DE DATOS DESDE LA WEB CON

PHP• Los pasos básicos de una secuencia de comandos

para acceder a una base de datos desde la Web son:

1. Comprobar y filtrar los datos procedentes del usuario.

2. Configurar una conexión a la BD pertinente.

3. Consultar la base de datos.

4. Recuperar los resultados.

5. Presentar los resultados al usuario.

Page 41: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

41

1. Comprobar y filtrar los datos entrantes.

Es necesario asegurase de que los parámetros introducidos por el usuario, que vamos a pasar a la BD, estén en el formato adecuado para que sean interpretados correctamente. Por ello, deberemos:

a) Eliminar los espacios en blanco que pudiera haber introducido el usuario, al principio o al final del término, mediante la función trim():

$searchterm= trim($searchterm);

b) Verificar que el usuario ha introducido todos los términos necesarios:if (!$searchtype || !$searchterm){

mensaje de error y abortar}

c) Comprobar si está activa la función que añade comillas automáticamente o no,’get_magic_quotes_gpc()’. (Cuando se pasa una $variable como parámetro se hace entre comillas, no obtendríamos el resultado deseado si la variable no tuviera o tuviera doble comillas.)

Page 42: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

42

2. Configurar una conexión• La librería ‘mysqli’ de PHP5 permite usar una sintaxis orientada a objetos o

procedimientos para conectarse a la BD de MySQL. Explicaremos el método basado en procedimientos cuya sintaxis es más parecida a la usada por las otras versiones de php.

• Establecimiento de la conexión con el servidor MySQL:

@ $db=mysqli_connect(‘nombre_host’,’user’,’password’,’nombre_BD’);

Esta función devuelve un puntero que representa la conexión a la base de datos. El operador de supresión de errores ‘@’ al inicio de la instrucción sirve para tratarlos con ‘elegancia’.

Hemos especificado la BD a usar, pasando su nombre como parámetro a la función ‘mysqli_connect()’. Podríamos, más adelante, cambiar de base de datos predeterminada con la función:

mysqli_select_db($db,’nombre_bd’)

• Comprobar el intento de conexión:if (mysqli_connect_errno()){ mensaje de error y abortar} La función usada en la condición retorna ‘0’ si no se da error o el ‘nº de error’ correspondiente en caso contrario.

Page 43: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

43

3. Consultar la base de datos

• Para empezar se configura la consulta deseada:

$query=“ select * from books where “.$searchtype.” like '% “.$searchterm.” %’”;

=> Buscar, en la BD ‘books’, el valor introducido por el usuario ‘$searchterm’ en el campo escogido por el mismo ‘$searchtype’.

• A continuación ejecutamos la consulta pasando como parámetros, la variable $query que la contiene, y el link de la BD:

$result = mysqli_query($db, $query);

Esta función, devuelve un identificador de resultado que es almacenado en la variable $result para ser usado más adelante. En caso de fallo, la función devuelve false.

Page 44: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

44

4. Recuperar resultados de consulta

Existe un conjunto de funciones para dividir los resultados del identificador de resultados de varias formas. El identificador de resultados es la clave para acceder a las filas devueltas por la consulta.

• Si queremos obtener el número de filas devueltas por la consulta, basta con ejecutar la siguiente función :

$num_results = mysqli_num_rows($result);

• Además podemos obtener el valor de los diferentes campos de cada fila usando la función:

$row = mysqli_fetch_assoc($result);Esta función toma cada fila del conjunto de resultados y devuelve la fila como matriz, con cada clave en forma de nombre de atributo y cada valor con su valor correspondiente en la matriz. Para acceder al campo y mostrarlo usamos:

echo stripslashes($row[‘author’]);

También se puede usar otra función que retorna una matriz enumerada en lugar de con claves con nombre:

mysqli_fetch_row($result); Los valores de atributo se enumerarán en cada uno de los valores de matriz $row[0], $row[1], etc.

Page 45: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

45

5. Desconectar de la base de datos

• Para liberar el conjunto de resultados:

mysqli_free_result($result) ;

• Para cerrar la conexión de BD:

mysqli_close($db) ;

Estos pasos no resultan imprescindibles ya que se cierran de todos modos cuando una secuencia de comandos finaliza su ejecución, pero siempre es recomendable hacerlo.

Page 46: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

46

EJEMPLO DE INSERCIÓN DE NUEVA INFORMACIÓN A LA BASE DE DATOS

DESDE LA WEB CON PHP• La inserción de nuevos elementos en una base es similar al

caso anterior:

– Establecimiento de conexión– Envío de ‘consulta’– Comprobación resultados

Simplemente se usa INSERT en vez de SELECT, en la consulta.

Veamos un ejemplo en el que insertaremos un nuevo libro a la base de datos.

Page 47: 1 SISTEMAS DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES COMERCIO ELECTRÓNICO Cristina Sánchez Julia Sigles PostgreSQL: INSTALACIÓN LINUX Y MANEJO DE.

47

Puntos a destacar

• Es aconsejable comprobar que todos los campos del formulario se han rellenado.

• También la aplicación del formato correcto para su inserción en la BD, mediante la función addslashes().

• El precio es una variable flotante, hay que filtrar todos los caracteres extraños (y símbolos de moneda) que pudieran introducirse en este campo, mediante ‘doubleval()’.

• Con la instrucción SELECT se usa la función mysqli_num_rows() para obtener el nº de filas que devuelve. Con INSERT,DELETE y UPDATE hay que usar mysqli_affected_rows().