DESARROLLO WEB EN ENTORNO SERVIDOR



Documentos relacionados
Desarrollo Web en Entorno Servidor

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

CONSULTAS BASICAS EN SQL SERVER

Manejo de Transacciones

T12 Vistas y tablas temporales

Consultas con combinaciones

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

SQL (Structured Query Language)

8 SQL SERVER 2008 RA-MA

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

SQL Los fundamentos del lenguaje

Base de datos relacional

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Base de datos Lenguaje SQL

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

MANUAL BÁSICO DEL LENGUAJE SQL

SQL Server FEMEPA SQL Server 2000

Tema 33. El lenguaje SQL

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

EL ENTORNO DE TRABAJO SQL ORACLE

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

MANUALITO MS-SQL SERVER

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Restricciones (constraints) FOREIGN KEY

1. DML. Las subconsultas

6- Combinación de tablas

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Revista Electrónica Granma Ciencia. Vol.10, No.2, Mayo - Agosto de 2006 ISSN X

Oracle Básico PL/SQL

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

Bases de Datos 2. Teórico

Tema 4. Manipulación de datos con SQL

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Bases de Datos Relacionales

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

Unidad. Lenguaje SQL. (Structured Query Language)

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Modelos y Bases de Datos

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Manual de NetBeans y XAMPP

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Base de Datos Práctica 1.

Trabajos de Ampliación. Bases de datos NoSQL.

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

ÍNDICE PRIMERA PARTE... 17

ADMINISTRACIÓN DE BASE DE DATOS

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

A.1. Definiciones de datos en SQL

Bases de datos: Sistemas de bases de datos:

Acceso a bases de datos MySQL con PHP

Lenguaje SQL para Novatos

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Grupo Kybele, Pág. 1

Práctica 3. Consultas SQL

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Guía práctica de SQL

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

Tema: Disparadores Parte I.

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

Base de datos I Facultad de Ingeniería. Escuela de computación.

BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

Tema 6. Transacciones y seguridad

Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3

CONTROL DE ACCESO. curso 2008

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

Curso de MySQL y Java

Asignatura: Administración de Bases de Datos. Pedro P. Alarcón Cavero

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

PRÁCTICA B2. Definición y modificación de datos en SQL

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Bases de Datos: Structured Query Language (SQL)

Un ejemplo teórico de trigger podría ser éste:

M. C. Gustavo Alfonso Gutiérrez Carreón

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Tutorial Oracle SQL Developer 1.2.1

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

APÉNDICE SQL (Structures Query Language)

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Conceptos Avanzados de Bases de datos

Select table data Insert table data Update table data Delete table data Create table

Nociones de performance

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

Oracle Database 10g: Taller de Administración I 1-2

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Sql Basico. Seminar Introduction

De uno a uno : Ejemplo de una llave primaria a otra llave primaria De uno a muchos : Ejemplo de una llave primaria a una Regular o Foránea.

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Transcripción:

DESARROLLO WEB EN ENTORNO SERVIDOR CAPÍTULO 6: Utilización de técnicas de acceso a datos Marcos López Sanz Juan Manuel Vara Mesa Jenifer Verde Marín Diana Marcela Sánchez Fúquene Jesús Javier Jiménez Hernández Valeria de Castro Martínez

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); 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, contraseña ); 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, contraseña ); o MS Access: Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); Connection conexion=drivermanager.getconnection ("jdbc:odbc:driver={microsoft Access Driver (*.mdb)};dbq=ruta_bd"); 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","contraseña"); 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=contraseña o SQL Server: conexion.open Driver={SQL Server}; Server=nombre_servidor; Database=Nombre_db; Uid=Nombre_usuario; Pwd=contraseña 6

Conectar con una base de datos ASP: o Oracle: conexion.open Provider=MSDAORA.1;Password=contaseña;User ID=nombre_usuario;Data Source=data.world o MS Access: conexion.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= nombre_bd 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]); 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) 9

Sentencias de definición 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) 10

Sentencias de definición 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 11

Sentencias de definición de datos (DDL) Las opciones que se pueden añadir: o Añadir 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 12

Sentencias de definición de datos (DDL) Añadir una restricción: 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 ) 13

Sentencias de definición 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 ) 14

Sentencias de definición 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_restricción UNIQUE(nombre_columna1,...) Otras: 1. ALTER TABLE nombre_tabla ADD UNIQUE(nombre_columna1) 2. ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restricción UNIQUE(nombre_columna1,...) 15

Sentencias de definición 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 ) 16

Sentencias de definición 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_restricción PRIMARY KEY (nombre_columna1,...) Otras: 1. ALTER TABLE nombre_tabla ADD PRIMARY KEY (nombre_columna1) 2. ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restricción PRIMARY KEY (nombre_columna1,...) 17

Sentencias de definición 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 ) 18

Sentencias de definición 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_restricción 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_restricción FOREIGN KEY(nombre_columna)REFERENCES nombre_tabla2(pk_tabla2,...) 19

Sentencias de definición 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 20

Sentencias de definición de datos (DDL) o CHECK (establece la condición que debe cumplir un campo): MySQL: CREATE TABLE nombre_tabla( nombre_columna1 tipo1, ) nombre_columna2 tipo2,... nombre_columnan tipon, CHECK(condición) 21

Sentencias de definición de datos (DDL) SQL Server: CREATE TABLE nombre_tabla( nombre_columna1 tipo1 CHECK(condición), 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_restricción CHECK(condición1 AND...) 22

Sentencias de definición de datos (DDL) Otras: 1.ALTER TABLE nombre_tabla ADD CHECK(condición) 2.ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restricción CHECK(condición1 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) ) 23

Sentencias de definición 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, ) 24

Sentencias de definición 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,...) 25

Sentencias de definición de datos (DDL) Eliminar una restricción: 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 26

Sentencias de definición 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 27

Sentencias de definición de datos (DDL) o CHECK: SQL Server/Oracle/MS Access: ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_restricción Crear una vista: CREATE VIEW nombre_vista AS SELECT nombre_columna1,... FROM nombre_tabla WHERE condición Eliminar una vista: DROP VIEW nombre_vista 28

Sentencias de definición 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 29

Sentencias de control de datos (DCL) Añadir 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} 30

Sentencias de manipulación 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 31

Sentencias de manipulación 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 32

Sentencias de manipulación de datos (DML) o DISTINCT: consulta sólo 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 condición. 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] 33

Sentencias de manipulación de datos (DML) o UNION: une el resultado de realizar varias consultas de selección. 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 34

Sentencias de manipulación 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 mostrarán 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 35

Sentencias de manipulación 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 mostrarán 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 36

Sentencias de manipulación 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 SELECT INTO: 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 37

Sentencias de manipulación de datos (DML) o BETWEEN: se utilizan en la condición de las consultas de selección con la cláusula WHERE para seleccionar sólo aquellos campos que estén 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 condición de las consultas de selección con la cláusula WHERE. Este operador hace que la consulta devuelva el resultado, sólo si la columna especificada en la condición toma un valor de los múltiples valores especificados con el operador IN. SELECT nombre_columna1,... FROM nombre_tabla WHERE nombre_columna IN (valor1, valor2,...) 38

Sentencias de manipulación de datos (DML) o TOP: especifica el número de filas que debe devolver una consulta. SQL Server/MS Access: SELECT TOP número [PERCENT] nombre_columna1,... FROM nombre_tabla MySQL: SELECT nombre_columna1,... FROM nombre_tabla LIMIT número Oracle: SELECT nombre_columna1,... FROM nombre_tabla WHERE ROWNUM <= número 39

Sentencias de manipulación 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 patrón 40

Sentencias de manipulación de datos (DML) o PATRONES: se utilizan para sustituir uno o más caracteres cuando realizamos búsquedas dentro de la base de datos. Es decir, que se utilizan cuando queremos que una consulta nos devuelva sólo ciertas filas en las que el valor que toma un campo de una columna cumpla una cierta estructura. 41

Sentencias de manipulación de datos (DML) Patrón Descripción Ejemplo % _ [lista_caracteres] Sustituye a cero o más caracteres. Sustituye sólo a un carácter. Sólo un carácter de los que estén en la lista. Campos que empiecen por es: es%. Campos que empiecen por ho tengan un carácter y después a. Lo cumpliría la cadena hola ho_a. %[nl]% lo cumplirían cadenas como mano o palo. [^lista_caracteres] o [ lista_caracteres] Sólo un carácter de los que no estén en la lista. %[^nl]% o %[!nl]% lo cumplen cadenas como paso. 42

Utilización del conjunto resultado Una vez ejecutadas las sentencias en la base de necesitamos obtener la información resultante. En JSP la información se almacena en una estructura llamada ResultSet: o Almacena todos los registros o filas resultantes de la ejecución de una sentencia SQL. o Proporciona acceso a los datos de dichos registros a partir de una serie de métodos: getdouble(), getfloat(), getstring(), getint(), next(), etc. o Contiene un puntero que señala al registro actual y que lo utiliza para acceder al resto de registros que almacena. 43

Utilización del conjunto resultado En PHP existen métodos para recorrer la estructura que devuelve la ejecución de una sentencia SQL. Destacar los siguientes: mysql_fetch_row(), mysql_fetch_array(), mysql_result() y my mysql_free_result(). 44

Utilización del conjunto resultado En ASP la información se almacena en una estructura llamada RecordSet: o Se comporta igual que la estructura ResultSet de JSP. o Métodos más utilizados son: EOF, MoveNext, MoveFirst, MovePrevious y MoveLast. 45

Cerrar conexión de la base de datos ASP: conexion.close() Set rs=nothing Set conexion=nothing JSP: rs.close(); st.close(); conexion.close(); PHP: o o mysql_free_result($result); mysql_close($conector); 46

Transacciones Son un conjunto de instrucciones que se ejecutan de manera atómica, es decir como si fuera una sola instrucción 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 debería poder deshacer o revertir. o Consistencia: la base de datos debe quedarse en un estado consistente y coherente al finalizar la transacción. 47

Transacciones o Aislamiento: los datos modificados durante una transacción 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 transacción se almacenarán de forma permanente. 48

Transacciones Existen dos formas de finalizar una transacción: o Commit: finaliza la transacción de forma exitosa y hace permanentes los cambios realizados. o Rollback: aborta la transacción porque algunas de las instrucciones que la componen se ha ejecutado y ha fallado. Esta instrucción deshace todos los cambios temporales que se pudieran haber hecho en la base de datos. 49

Transacciones MS Access: BEGIN TRANSACTION Sentencia1_SQL Sentencia2_SQL... ROLLBACK [WORK TRANSACTION] COMMIT [WORK TRANSACTION] SQL Server: BEGIN TRAN TRANSACTION [nombre_transacción] Sentencia1_SQL Sentencia2_SQL... ROLLBACK TRAN TRANSACTION [nombre_transacción punto_recuperación] [WORK] COMMIT TRAN TRANSACTION [nombre_transacción] [WORK] 50

Transacciones Oracle: Sentencia1_SQL Sentencia2_SQL... ROLLBACK [WORK] [TO SAVEPOINT nombre TO punto_recuperación] COMMIT [WORK] MySQL: START {TRANSACTION BEGIN [WORK]} Sentencia1_SQL Sentencia2_SQL... ROLLBACK [WORK][TO SAVEPOINT nombre TO punto_recuperación] COMMIT [WORK] 51

Transacciones Definir puntos de recuperación: o SQL Server: SAVE TRAN TRANSACTION punto_recuperación o Oracle/MySQL: SAVEPOINT nombre Borrar puntos de recuperación en MySQL: RELASE SAVEPOINT punto_recuperación 52

Serialización/ Niveles de aislamiento Problemas: o Lectura sucia: esta situación se da cuando una transacción T1 modifica los datos que lee T2, y luego se hace un rollback de T1.Por lo tanto T2 ha leído unos datos que no existen. o Lectura no repetible: en una transacción 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 faltarán datos con respecto a la lectura anterior. 53

Serialización/ Niveles de aislamiento o Lectura fantasma: Es parecida a la anterior, ya que en una transacción T1 queremos leer dos veces los mismos datos, pero entre ambas lecturas T2 en vez de eliminar añade algunos datos. Esto provoca que al leer por segunda vez nos encontremos tuplas que anteriormente no existían. 54

Serialización/ Niveles de aislamiento Solución: niveles de aislamiento. o Serializable. Si aplicamos el nivel serializable podremos ver la base de datos antes o después de la ejecución de una transacción, pero nunca mientras se está realizando. Por lo tanto da la sensación de que las instrucciones se ejecutan una detrás de otra. Esto sólo 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 sólo la lectura de los datos que han sido confirmados mediante la realización de un commit de otra transacción. 55

Serialización/ Niveles de aislamiento o Repeatable read. Este nivel en cambio evita la lectura no repetible. Es igual que Read commited añadiéndole la restricción de que todo lo que veamos en una lectura inicial de una transacción debemos poder verlo en lecturas posteriores. o Read uncommited. Si una transacción se ejecuta con este nivel de aislamiento puede ver las modificaciones realizadas por otra transacción, sean actualizaciones, borrados o inserciones a pesar de no haber hecho un commit. 56

Serialización/ 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 57

Serialización/ 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} 58

Otros orígenes 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 línea y las columnas por un separador (en general suele utilizarse, ). Los ficheros XML se utilizan hoy en día para el intercambio de información estructurada y está basado en un lenguaje de etiquetas. 59

Otros orígenes 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. 60

Otros orígenes 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. 61

Otros orígenes 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 información que este contiene. o Para trabajar con ficheros CSV hay que crear un objeto CsvWriter para escribir en ellos y CsvReader para leerlos. 62

Otros orígenes de datos o Existen también métodos 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 métodos para trabajar con objetos DOM. 63