Vous êtes sur la page 1sur 63

DESARROLLO WEB

EN ENTORNO SERVIDOR

CAPTULO 6:
Utilizacin de tcnicas de acceso a datos

Marcos Lpez Sanz


Juan Manuel Vara Mesa
Jenifer Verde Marn
Diana Marcela Snchez Fquene
Jess Javier Jimnez Hernndez
Valeria de Castro Martnez
Conectar con una base de datos

PHP:
o MySQL 4.1 y posteriores:
$conector=mysqli_connect($host, $user, $password [,dbname]);

o MySQL 4.0 y anteriores:


$conector=mysql_connect($host, $user, $password);
mysql_select_db($dbname);

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 2
Conectar con una base de datos

JSP:
o MySQL:
<%@page import=java.sql.* %>
<%
Connection conexion=null;
Statement st=null;
Class.forName(org.gjt.mm.mysql.Driver);
conexion=DriverManager.getConnection(jdbc:mysql://localhost/
directorios..., nombre_usuario,contrasea);
%>

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 3
Conectar con una base de datos

JSP:
o SQL Server:
Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);
Connection conexion=DriverManager.getConnection(
dbc:sqlserver://localhost;databaseName=ruta_bd,
nombre_usuario,contrasea);

o MS Access:
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
Connection conexion=DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};DBQ=ruta_bd");

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 4
Conectar con una base de datos

JSP:
o Oracle:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conexion =
DriverManager.getConnection("jdbc:oracle:thin:@miservidor:
puerto:esquema","usuario","contrasea");

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 5
Conectar con una base de datos

ASP:
o MySQL:
<%
Dim conn
Set conexion=Server.CreateObject(ADODB.connection)
conexion.open Driver={MySQL}; Server=nombre_servidor;
Port=puerto; Database=Nombre_db; Uid=Nombre_usuario;
Pwd=contrasea
%>

o SQL Server:
conexion.open Driver={SQL Server}; Server=nombre_servidor;
Database=Nombre_db; Uid=Nombre_usuario; Pwd=contrasea

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 6
Conectar con una base de datos

ASP:
o Oracle:
conexion.Open Provider=MSDAORA.1;Password=contasea;User
ID=nombre_usuario;Data Source=data.world

o MS Access:
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
nombre_bd

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 7
Ejecutar sentencias de base de datos

PHP:
o MySQL 4.1 y posteriores:
$result=mysqli_query($conector,$sentencia[,$modo_resultado]);

o MySQL 4.0 y anteriores:


$result=mysql_query($sentencia[,$conector]);

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 8
Ejecutar sentencias de base de datos

JSP:
st=conexion.createStatement();
ResultSet rs= st.executeQuery(sentencia);

int n=st.executeUpdate(sentencia);

ASP:
Set rs = conexion.Execute(sentencia)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 9
Sentencias de definicin de datos (DDL)

Crear una BD:


CREATE DATABASE nombre_db

Borrar una BD:


DROP DATABASE nombre_db

Crear una tabla:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 10
Sentencias de definicin de datos (DDL)

Borrar una tabla:


DROP TABLE nombre_tabla

Borrar contenido de una tabla:


TRUNCATE TABLE nombre_tabla

Modificar una tabla:


ALTER TABLE nombre_tabla opciones

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 11
Sentencias de definicin de datos (DDL)

Las opciones que se pueden aadir:


o Aadir una columna a una tabla:
ADD COLUMN nombre_columna tipo

o Eliminar una columna de una tabla:


DROP COLUMN nombre_columna

o Modificar el tipo de una columna:


ALTER COLUMN nombre_column tipo_nuevo

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 12
Sentencias de definicin de datos (DDL)

Aadir una restriccin:


o NOT NULL (campo obligatorio y que no puede
contener un valor nulo):

CREATE TABLE nombre_tabla(


nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 13
Sentencias de definicin de datos (DDL)

o UNIQUE (campo cuyo valor debe ser nico):


MySQL:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
UNIQUE(nombre_columna1)
)

SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL UNIQUE,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 14
Sentencias de definicin de datos (DDL)

MySQL/SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
CONSTRAINT nombre_restriccin UNIQUE(nombre_columna1,...)
)

Otras:
1. ALTER TABLE nombre_tabla ADD UNIQUE(nombre_columna1)

2. ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restriccin


UNIQUE(nombre_columna1,...)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 15
Sentencias de definicin de datos (DDL)

o PRIMARY KEY(clave primaria de una tabla):


MySQL:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
PRIMARY KEY(nombre_columna1)
)

SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT PRIMARY KEY,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 16
Sentencias de definicin de datos (DDL)

MySQL/SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
CONSTRAINT nombre_restriccin PRIMARY KEY
(nombre_columna1,...)
)

Otras:
1. ALTER TABLE nombre_tabla ADD PRIMARY KEY (nombre_columna1)

2. ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restriccin


PRIMARY KEY (nombre_columna1,...)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 17
Sentencias de definicin de datos (DDL)

o FOREIGN KEY(clave ajena de una tabla):


MySQL:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
FOREIGN KEY(nombre_columna) REFERENCES nombre_tabla2(PK_tabla2)
)

SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2 FOREIGN KEY REFERENCES
nombre_tabla2(PK_tabla2),
...
nombre_columnaN tipoN
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 18
Sentencias de definicin de datos (DDL)

MySQL/SQL Server/Oracle/MS Access:


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
CONSTRAINT nombre_restriccin FOREIGN KEY
(nombre_columna) REFERENCES nombre_tabla2(PK_tabla2,...))

Otras:
1. ALTER TABLE nombre_tabla1 ADD FOREIGN
KEY(nombre_columna)REFERENCES nombre_tabla2(PK_tabla2)

2. ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restriccin


FOREIGN KEY(nombre_columna)REFERENCES
nombre_tabla2(PK_tabla2,...)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 19
Sentencias de definicin de datos (DDL)

o DEFAULT (campo con valor por defecto):


CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2 DEFAULT valor,
...
nombre_columnaN tipoN
)

Otras:
MySQL:
ALTER TABLE nombre_tabla
ALTER nombre_columna SET DEFAULT valor

SQL Server/Oracle/MS Access:


ALTER TABLE nombre_tabla
ALTER COLUMN nombre_columna SET DEFAULT valor

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 20
Sentencias de definicin de datos (DDL)

o CHECK (establece la condicin que debe cumplir


un campo):

MySQL:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
CHECK(condicin)
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 21
Sentencias de definicin de datos (DDL)

SQL Server:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 CHECK(condicin),
nombre_columna2 tipo2,
...
nombre_columnaN tipoN
)
MySQL/SQL Server/Oracle/MS Access:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
CONSTRAINT nombre_restriccin CHECK(condicin1 AND ...)
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 22
Sentencias de definicin de datos (DDL)

Otras:
1.ALTER TABLE nombre_tabla ADD CHECK(condicin)
2.ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restriccin
CHECK(condicin1 AND )

o AUTO_INCREMENT (crear ndice que se


autoincrementa):

MySQL:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 NOT NULL AUTO_INCREMENT,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
PRIMARY KEY(nombre_columna1)
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 23
Sentencias de definicin de datos (DDL)

SQL Server:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 PRIMARY KEY IDENTITY,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
)

MS Access:
CREATE TABLE nombre_tabla(
nombre_columna1 tipo1 PRIMARY KEY AUTOINCREMENT,
nombre_columna2 tipo2,
...
nombre_columnaN tipoN,
)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 24
Sentencias de definicin de datos (DDL)

Oracle:
CREATE SEQUENCE nombre_seq MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

INSERT INTO nombre_tabla (nombre_columna1,...)VALUES


(nombre_secuencia.nextval,valor2,...)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 25
Sentencias de definicin de datos (DDL)

Eliminar una restriccin:


o UNIQUE:
MySQL:
ALTER TABLE nombre_tabla DROP INDEX nombre_columna

SQL Server/Oracle/MS Access:


ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_columna

o PRIMARY KEY:
MySQL:
ALTER TABLE nombre_tabla DROP PRIMARY KEY
SQL Server/Oracle/MS Access:
ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_columna

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 26
Sentencias de definicin de datos (DDL)

o FOREIGN KEY:
MySQL:
ALTER TABLE nombre_tabla DROP FOREIGN KEY nombre_columna

SQL Server/Oracle/MS Access:


ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_columna

o DEFAULT:
MySQL:
ALTER TABLE nombre_tabla ALTER nombre_columna DROP DEFAULT

SQL Server/Oracle/MS Access:


ALTER TABLE nombre_tabla ALTER COLUMN nombre_columna DROP
DEFAULT

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 27
Sentencias de definicin de datos (DDL)

o CHECK:
SQL Server/Oracle/MS Access:
ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_restriccin

Crear una vista:


CREATE VIEW nombre_vista AS SELECT nombre_columna1, ...
FROM nombre_tabla WHERE condicin

Eliminar una vista:


DROP VIEW nombre_vista

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 28
Sentencias de definicin de datos (DDL)

Crear un ndice en una tabla:


1. CREATE INDEX nombre_ndice ON TABLE nombre_tabla(nombre_columna)
2. CREATE UNIQUE INDEX nombre_ndice ON TABLE
nombre_tabla(nombre_columna)

Eliminar un ndice en una tabla:


o MS Access:
DROP INDEX nombre_ndice ON nombre_tabla
o SQL Server:
DROP INDEX nombre_tabla.nombre_ndice
o DB2/Oracle:
DROP INDEX nombre_ndice
o MySQL:
ALTER TABLE nombre_tabla DROP INDEX nombre_ndice

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 29
Sentencias de control de datos (DCL)

Aadir permisos:
GRANT privilegio1,... [(nombre_columna,...)] ON nombre_objeto TO
{nombre_usuario| PUBLIC | nombre_rol}

Eliminar permisos:
REVOKE privilegio1,... [(nombre_columna,...)] ON nombre_objeto FROM
{nombre_usuario/s| PUBLIC | nombre_rol/es}

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 30
Sentencias de manipulacin de datos (DML)

Insertar datos en una tabla:


1. INSERT INTO nombre_tabla VALUES(valor1, valor2,...)
2. INSERT INTO nombre_tabla (nombre_columna1,nombre_columna2,...)
VALUES(valor1, valor2,...)

Borrar datos de una tabla:


DELETE FROM nombre_tabla WHERE nombre_columna operador valor

Borrar todos los datos de una tabla:


1. DELETE FROM nombre_tabla
2. DELETE * FROM nombre_tabla

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 31
Sentencias de manipulacin de datos (DML)

Actualizar campos de una tabla:


UPDATE nombre_tabla SET nombre_columna1=valor1,
nombre_columna2=valor2,... WHERE nombre_columna operador valor

Consultas:
o SELECT FROM: consulta el valor de determinadas
columnas de una tabla.
1. SELECT nombre_columna1,... FROM nombre_tabla
2. SELECT * FROM nombre_tabla

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 32
Sentencias de manipulacin de datos (DML)

o DISTINCT: consulta slo los valores de las columnas


especificadas de una tabla, cuyo valor no se repite.
SELECT DISTINCT nombre_columna1,... FROM nombre_tabla

o WHERE: consulta los campos de una columna que


cumplan cierta condicin.
SELECT nombre_columna1,... FROM nombre_tabla WHERE nombre_columna
operador valor

o ORDER BY: consulta los campos especificados de


una tabla devolviendo el resultado ordenado.
SELECT nombre_columna1,... FROM nombre_tabla ORDER BY
nombre_columna1,... [ASC | DESC]

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 33
Sentencias de manipulacin de datos (DML)

o UNION: une el resultado de realizar varias consultas


de seleccin.
SELECT nombre_columna1,... FROM nombre_tabla1 UNION SELECT
nombre_columna1,... FROM nombre_tabla2

o INNER JOIN: devuelve las filas cuando al menos


existe una coincidencia en ambas tablas.
SELECT nombre_columna1,... FROM nombre_tabla1 INNER JOIN
nombre_tabla2 ON nombre_tabla1.nombre_columna=
nombre_tabla2.nombre_columna

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 34
Sentencias de manipulacin de datos (DML)

o LEFT JOIN: devuelve todas las filas de la tabla de la


izquierda (nombre_tabla1), e incluso cuando no coincide
con la tabla de la derecha (nombre_tabla2). No se
mostrarn las columnas de la derecha que no
coincidan con las de la izquierda.

SELECT nombre_columna1,... FROM nombre_tabla1 LEFT JOIN


nombre_tabla2 ON nombre_tabla1.nombre_columna=
nombre_tabla2.nombre_columna

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 35
Sentencias de manipulacin de datos (DML)

o RIGHT JOIN: devuelve todas las filas de la tabla de la


derecha (nombre_tabla2), e incluso cuando no coincide
con la tabla de la izquierda (nombre_tabla1). No se
mostrarn las columnas de la izquierda que no
coincidan con las de la derecha.

SELECT nombre_columna1,... FROM nombre_tabla1 RIGHT JOIN


nombre_tabla2 ON nombre_tabla1.nombre_columna=
nombre_tabla2.nombre_columna

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 36
Sentencias de manipulacin de datos (DML)

o FULL JOIN: devuelve todas las filas de las dos tablas.


SELECT nombre_columna1,... FROM nombre_tabla1 FULL JOIN
nombre_tabla2 ON nombre_tabla1.nombre_columna=
nombre_tabla2.nombre_columna

o SELECTINTO: se utiliza para crear copias de


seguridad (backup) de las tablas.
SELECT nombre_columna1,... INTO nombre_tabla_copia [IN
nombre_bd_externa] FROM nombre_tabla_original

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 37
Sentencias de manipulacin de datos (DML)

o BETWEEN: se utilizan en la condicin de las consultas de


seleccin con la clusula WHERE para seleccionar slo
aquellos campos que estn dentro de un rango de valores.
SELECT nombre_columna1,... FROM nombre_tabla WHERE nombre_columna
BETWEEN valor1 AND valor2

o IN: el operador IN se utiliza en la condicin de las


consultas de seleccin con la clusula WHERE. Este
operador hace que la consulta devuelva el resultado, slo
si la columna especificada en la condicin toma un valor
de los mltiples valores especificados con el operador IN.
SELECT nombre_columna1,... FROM nombre_tabla WHERE nombre_columna
IN (valor1, valor2,...)

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 38
Sentencias de manipulacin de datos (DML)

o TOP: especifica el nmero de filas que debe devolver una


consulta.

SQL Server/MS Access:


SELECT TOP nmero [PERCENT] nombre_columna1,... FROM
nombre_tabla

MySQL:
SELECT nombre_columna1,... FROM nombre_tabla LIMIT nmero

Oracle:
SELECT nombre_columna1,... FROM nombre_tabla WHERE ROWNUM <=
nmero

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 39
Sentencias de manipulacin de datos (DML)

o ALIAS: son nombres abreviados que se le pueden


asignar a columnas o tablas para utilizarlos dentro de
la misma consulta.
SELECT nombre_columna...FROM nombre_tabla AS alias_tabla
SELECT nombre_columna AS alias_columna FROM nombre_tabla

o LIKE: este operador se utiliza para buscar


determinados patrones en las columnas
especificadas en una tabla.
SELECT nombre_columna1,... FROM nombre_tabla WHERE nombre_columna
LIKE patrn

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 40
Sentencias de manipulacin de datos (DML)

o PATRONES: se utilizan para sustituir uno o ms


caracteres cuando realizamos bsquedas dentro de
la base de datos. Es decir, que se utilizan cuando
queremos que una consulta nos devuelva slo ciertas
filas en las que el valor que toma un campo de una
columna cumpla una cierta estructura.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 41
Sentencias de manipulacin de datos (DML)

Patrn Descripcin Ejemplo

Sustituye a cero o ms Campos que empiecen por es:


%
caracteres. es%.

Campos que empiecen por ho


tengan un carcter y despus a.
_ Sustituye slo a un carcter. Lo cumplira la cadena hola
ho_a.

Slo un carcter de los que estn %[nl]% lo cumpliran cadenas


[lista_caracteres]
en la lista. como mano o palo.

[^lista_caracteres] o Slo un carcter de los que no %[^nl]% o %[!nl]% lo cumplen


[lista_caracteres] estn en la lista. cadenas como paso.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 42
Utilizacin del conjunto resultado

Una vez ejecutadas las sentencias en la base de


necesitamos obtener la informacin resultante.

En JSP la informacin se almacena en una estructura


llamada ResultSet:
o Almacena todos los registros o filas resultantes de la
ejecucin de una sentencia SQL.
o Proporciona acceso a los datos de dichos registros a partir
de una serie de mtodos: getDouble(), getFloat(),
getString(), getInt(), next(), etc.
o Contiene un puntero que seala al registro actual y que lo
utiliza para acceder al resto de registros que almacena.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 43
Utilizacin del conjunto resultado

En PHP existen mtodos para recorrer la


estructura que devuelve la ejecucin de una
sentencia SQL.

Destacar los
siguientes: mysql_fetch_row(),
mysql_fetch_array(), mysql_result() y my
mysql_free_result().

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 44
Utilizacin del conjunto resultado

En ASP la informacin se almacena en una


estructura llamada RecordSet:

o Se comporta igual que la estructura ResultSet de


JSP.

o Mtodos ms utilizados son: EOF, MoveNext,


MoveFirst, MovePrevious y MoveLast.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 45
Cerrar conexin de la base de datos

ASP:
conexion.close()
Set rs=nothing
Set conexion=nothing

JSP:
rs.close();
st.close();
conexion.close();

PHP:
o mysql_free_result($result);
o mysql_close($conector);

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 46
Transacciones

Son un conjunto de instrucciones que se ejecutan


de manera atmica, es decir como si fuera una sola
instruccin o sentencia SQL.

Deben cumplir las siguientes propiedades del test


ACID:
o Atomicidad: el grupo de sentencias debe comportarse
como un todo o ninguno. Si alguna de ellas no se
pudiera ejecutar se debera poder deshacer o revertir.

o Consistencia: la base de datos debe quedarse en un


estado consistente y coherente al finalizar la transaccin.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 47
Transacciones

o Aislamiento: los datos modificados durante una


transaccin no deben ser visibles para otros usuarios
hasta que esta no finalice y se hayan realizado todos
los cambios de manera definitiva.

o Permanencia: los efectos de una transaccin se


almacenarn de forma permanente.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 48
Transacciones

Existen dos formas de finalizar una transaccin:


o Commit: finaliza la transaccin de forma exitosa y hace
permanentes los cambios realizados.
o Rollback: aborta la transaccin porque algunas de las
instrucciones que la componen se ha ejecutado y ha
fallado. Esta instruccin deshace todos los cambios
temporales que se pudieran haber hecho en la base
de datos.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 49
Transacciones

MS Access:
BEGIN TRANSACTION
Sentencia1_SQL
Sentencia2_SQL
...
ROLLBACK [WORK|TRANSACTION]
COMMIT [WORK|TRANSACTION]

SQL Server:
BEGIN TRAN|TRANSACTION [nombre_transaccin]
Sentencia1_SQL
Sentencia2_SQL
...
ROLLBACK TRAN|TRANSACTION [nombre_transaccin|
punto_recuperacin]|[WORK]
COMMIT TRAN|TRANSACTION [nombre_transaccin] | [WORK]

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 50
Transacciones

Oracle:
Sentencia1_SQL
Sentencia2_SQL
...
ROLLBACK [WORK] [TO SAVEPOINT nombre|TO punto_recuperacin]
COMMIT [WORK]

MySQL:
START {TRANSACTION|BEGIN [WORK]}
Sentencia1_SQL
Sentencia2_SQL
...
ROLLBACK [WORK][TO SAVEPOINT nombre |TO punto_recuperacin]
COMMIT [WORK]

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 51
Transacciones

Definir puntos de recuperacin:


o SQL Server:
SAVE TRAN|TRANSACTION punto_recuperacin

o Oracle/MySQL:
SAVEPOINT nombre

Borrar puntos de recuperacin en MySQL:


RELASE SAVEPOINT punto_recuperacin

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 52
Serializacin/ Niveles de aislamiento

Problemas:
o Lectura sucia: esta situacin se da cuando una
transaccin T1 modifica los datos que lee T2, y luego se
hace un rollback de T1.Por lo tanto T2 ha ledo unos datos
que no existen.

o Lectura no repetible: en una transaccin T1 queremos


leer dos veces los mismos datos, pero entre ambas
lecturas T2 elimina algunos datos. Esto provoca que
tengamos resultados distintos en cada una de las lecturas,
ya que en la segunda lectura nos faltarn datos con
respecto a la lectura anterior.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 53
Serializacin/ Niveles de aislamiento

o Lectura fantasma: Es parecida a la anterior, ya que


en una transaccin T1 queremos leer dos veces los
mismos datos, pero entre ambas lecturas T2 en vez
de eliminar aade algunos datos. Esto provoca que al
leer por segunda vez nos encontremos tuplas que
anteriormente no existan.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 54
Serializacin/ Niveles de aislamiento

Solucin: niveles de aislamiento.


o Serializable. Si aplicamos el nivel serializable podremos ver la
base de datos antes o despus de la ejecucin de una
transaccin, pero nunca mientras se est realizando. Por lo
tanto da la sensacin de que las instrucciones se ejecutan una
detrs de otra. Esto slo es aplicable al usuario que lo elige, es
decir que otro usuario puede tener definido otro nivel de
aislamiento. Este es el nivel que viene por defecto en las base
de datos.

o Read commited. Este nivel evita la lectura sucia permitiendo


slo la lectura de los datos que han sido confirmados mediante
la realizacin de un commit de otra transaccin.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 55
Serializacin/ Niveles de aislamiento

o Repeatable read. Este nivel en cambio evita la


lectura no repetible. Es igual que Read commited
aadindole la restriccin de que todo lo que veamos
en una lectura inicial de una transaccin debemos
poder verlo en lecturas posteriores.

o Read uncommited. Si una transaccin se ejecuta


con este nivel de aislamiento puede ver las
modificaciones realizadas por otra transaccin, sean
actualizaciones, borrados o inserciones a pesar de no
haber hecho un commit.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 56
Serializacin/ Niveles de aislamiento
Nivel Lectura Sucia Lectura No Repetible Lectura Fantasma

Serializable NO NO NO

Repeteable Read NO NO SI

Read Commited NO SI SI

Read Uncommited SI SI SI

Snapshot NO NO NO

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 57
Serializacin/ Niveles de aislamiento

MySQL:
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL READ UNCOMMITED|
READ COMMITED|SERIALIZABLE| REPETEABLE READ

SQL Server:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED| READ
COMMITED|SERIALIZABLE| REPETEABLE READ | SNAPSHOT

Oracle:
SET TRANSACTION ISOLATION LEVEL {READ COMMITED | SERIALIZABLE}

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 58
Otros orgenes de datos

Se pueden trabajar con ficheros: CSV, XML y fichero de texto.

Los ficheros CSV son documentos de formato abierto para


representar datos en forma de tabla y que pueden ser
procesados en Excel. En estos ficheros separan las filas por
saltos de lnea y las columnas por un separador (en general
suele utilizarse ,).

Los ficheros XML se utilizan hoy en da para el intercambio de


informacin estructurada y est basado en un lenguaje de
etiquetas.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 59
Otros orgenes de datos

Funciones en PHP para trabajar con ficheros:


o fopen: abre un fichero.
o fclose: cierra un fichero.
o fread: lee un fichero.
o fwrite: escribe en un fichero.
o feof: indica el final del fichero.
o fgetcsv: lee un fichero CSV.
o fputcsv: escribe un fichero CSV.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 60
Otros orgenes de datos

Trabajar en ASP con ficheros:


1. Crear el objeto File System:
Set fs=Server.CreateObject("Scripting.FileSystemObject")

2. Utilizar las funciones disponibles: OpenTextFile(),


CreateTextFile(), Close(), Read(), Write(), etc.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 61
Otros orgenes de datos

Trabajar en JSP con ficheros:


o Para trabajar con ficheros de texto hay que crear un
fichero si este no existe (File), un objeto PrintWriter para
escribir en l y/o un objeto BufferedReader si lo que
queremos es leer la informacin que este contiene.

o Para trabajar con ficheros CSV hay que crear un


objeto CsvWriter para escribir en ellos y CsvReader para
leerlos.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 62
Otros orgenes de datos

o Existen tambin mtodos para facilitar el trabajo con


ficheros en JSP.

Otro tipo de ficheros son los XML para trabajar con ellos
se convierte este en un objeto DOM que permita
recorrer la estructura en forma de rbol. Existen
mtodos para trabajar con objetos DOM.

Desarrollo web en entorno servidor


M. Lpez, J. M. Vara, J. Verde, D. M. Snchez, J. J. Jimnez, V. de Castro
Captulo 6 Utilizacin de tcnicas de acceso a datos 63

Vous aimerez peut-être aussi