Lenguaje de manipulación de datos



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

CONSULTAS BASICAS EN SQL SERVER

SQL (Structured Query Language)

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

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

ANSI SQL El lenguaje SQL...2 Componentes del lenguaje SQL...3 Tablas...7 Índices...11 Vistas...13 Consultar datos. SELECT...15

TUTORIAL SQL. Aprendiendo SQL

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.

Trabajos de Ampliación. Bases de datos NoSQL.

Bases de datos relacionales y el modelo entidad-relación

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

T12 Vistas y tablas temporales

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

MANUAL DE AYUDA MODULO TALLAS Y COLORES

1. DML. Las subconsultas

4- Uso de sentencias para el envió y extracción de datos

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

13.1. Tablas dinámicas de Excel

El lenguaje SQL es un lenguaje estándar para el acceso y

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

Consultas con combinaciones

6 - Recuperar algunos registros (where)

Base de datos en Excel

Base de datos relacional

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

Procesador de texto Apunte N 7

Base de Datos Práctica 1.

Recuperador datos externos

- Bases de Datos - - Diseño Físico - Luis D. García

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

Manual de rol gestor de GAV para moodle 2.5

Gestión de Retales WhitePaper Noviembre de 2009

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX

Capítulo 9. Archivos de sintaxis

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

A.1. Definiciones de datos en SQL

Ejercicio de Microsoft Access

Tema 4. Manipulación de datos con SQL

Tecnología de la Información y la Comunicación. Base de datos. Consultas

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

TÉCNICAS DE GESTIÓN ADMINISTRATIVA PARA PEQUEÑAS EMPRESAS

Manual de cuarentena de usuario de Mail Auditor

Transacciones y bloqueos en SQL-Server

Universidad de Zaragoza Manual de Usuario

6- Combinación de tablas

6.1. Conoce la papelera

MANUAL BÁSICO DEL LENGUAJE SQL

Tablas y Campos Nuevos

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

15 CORREO WEB CORREO WEB

/05/2009

Ejercicios - Persistencia en Android: ficheros y SQLite

Trabajar con Consultas.

Sitios remotos. Configurar un Sitio Remoto

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Año: 2008 Página 1 de 31

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

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

Práctica 3. Consultas SQL

CRM para ipad Manual para Usuario

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Operación Microsoft Access 97

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

PS.Vending Almacén Pocket PC

Guía N 1: Fundamentos básicos(i)

Gobierno del Estado de México

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUALITO MS-SQL SERVER

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Combinar correspondencia (I)

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

Manual de usuario de Solmicro BI. Página 1

La ventana de Microsoft Excel

ADMINISTRACIÓN DE BASE DE DATOS

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

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

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

Patrones para persistencia (I) Ingeniería del Software II

Utilidades de la base de datos

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

Cierre y Apertura de ejercicio. Gestión - Contabilidad

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

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Restricciones de Integridad

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

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

Transcripción:

Lenguaje de manipulación de datos Insertar datos. Hasta ahora hemos visto como se almacenan los datos en una base de datos y como consultar esos datos almacenados, pero no hemos visto como almacenar dichos datos. Para almacenar datos en una base de datos debemos insertar filas en las tablas. Para ellos SQL pone a nuestra disposición la sentencia INSERT. Inserción de filas El proceso de inserción de filas consiste en añadir a una tabla una o más filas y en cada fila todos o parte de sus campos. Podemos distinguir dos formas de insertar filas: Inserción individual de filas. Inserción multiple de filas. La sintaxis de la sentencia INSERT es diferente según cual sea nuestro propósito.sólo podremos omitir un campo al efectuar una inserción cuando este acepte valores nulos. Inserción individual de filas Para realizar la inserción individual de filas SQL posee la instrucción INSERT INTO. La inserción individual de filas es la que más comúnmente utilizaremos. Su sintaxis es la siguiente: INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] (<valor1>,<valor2>,...); Como se puede observar la sentencia tiene dos partes claramente diferenciadas, por un lado la propia INSERT INTO seguida de la lista de campos en los que queremos insertar los datos, y por otro la lista de valores que queremos insertar en los campos. La mejor forma de ver esto es a través de un ejemplo. INSERT INTO tcoches (matricula, marca, modelo, color, numero_kilometros) ('M1111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE', 78000);

Nota:Hemos utilizado el color rojo para los datos de tipo texto, entrecomillados con la comilla simple, y el azul para los numericos. Con esta sentencia INSERT creamos un registro en la tabla tcoches con los valores especificados, es decir, la matricula tendrá el valor M-1111-CA, la marca será RENAULT y así sucesivamente. Que ocurriría si ya existiera un coche con la matricula M-1111-CA? Se producirá un error, porque hemos definido la clave primaria en el campo matricula, y como hemos visto la clave primaria debe ser única. Si omitimos algún par " campo-valor " en la sentencia INSERT, pueden ocurrir varias cosas: Que se produzca un error, si el campo no acepta valores nulos. Que se grave el registro y se deje nulo el campo, cuando el campo acepte valores nulos. Que se grave el registro y se tome el valor por defecto, cuando el campo tenga definido un valor por defecto. Que hacer en cada cada momento dependerá del programa. Por ejemplo, la siguiente sentencia creará un registro en la tabla tcoches con el campo numero_kilometros cero, ya que este es su valor por defecto. INSERT INTO tcoches (matricula, marca, modelo, color) ('M1111CA', 'RENAULT', 'MEGANE TR100', 'NEGRO DIAMANTE'); Inserción multiple de filas La sentencia INSERT permite tambien insertar varios registros en una tabla. Pare ello se utiliza una combinación de la sentencia INSERT junto a una sentencia SELECT. El resultado es que se insertan todos los registros devueltos por la consulta. INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] SELECT [(<campo1>[,<campo2>,...])]

FROM <nombre_tabla_origen>; Para poder utilizar la inserción multiple de filas se deben cumplir las siguientes normas: La lista de campos de las sentencias insert y select deben coincidir en número y tipo de datos. Ninguna de las filas devueltas por la consulta debe infringir las reglas de integridad de la tabla en la que vayamos a realizar la inserción. Pongamos un ejemplo, vamos a crear una tabla con las diferentes marcas que tenemos en la base de datos. La sentencia SQL para crear la tabla es la siguiente: CREATE TABLE tmarcas ( codigo integer not null identity(1,1), marca varchar(255), constraint PK_Marcas primary key (codigo) ); Nota: Hemos incluido la función identity para el campo codigo, esta función es propia de SQL Server e indica que el código se genera automáticamente cada vez que se inserta un registro con un valor autonumérico. Praticamente todos los gestores de bases de datos dan la opción del campo autonumerico o incremental, si bien el modo varias. Para SQL Server utilizaremos la funcion identity, para ORACLE las secuencias... Una vez que tenemos creada la tabla de marcas vamos a insetar otro par de registros en la tabla de coches, para ello utilizamos una sentencia insert into para una única fila. INSERT INTO tcoches (matricula, marca, modelo, color) ('M2233FH', 'SEAT', 'LEON FR', 'ROJO'); INSERT INTO tcoches (matricula, marca, modelo, color) ('M1332FY', 'FORD',

'FIESTA', 'GRIS PLATA'); Ahora tenemos tres marcas diferentes en la tabla Coches, y queremos insertarlas en la tabla de marcas, para ello podemos realizar tres inserciones individuales, pero que pasaría si no supiéramos de antemano el número de marcas? y si fueran unas cincuenta marcas?. Nos podriamos pasar el día entero escribiendo sentencias insert into. Afortunadamente podemos realizar una inserción multiple del siguiente modo: INSERT INTO tmarcas (marca) SELECT DISTINCT marca FROM tcoches; Como resultado obtenemos un registro en la tabla tmarcas por cada marca de la tabla tcoches. El campo codigo se ha generado automáticamente ya que está definido como identidad. CODIGO MARCA 1 FORD 2 RENAULT 3 SEAT Demonos cuenta de que el orden de generación no ha sido el mismo que el de inserción, sino que se ha aplicado el orden en el que han sido devueltos los datos por la sentencia SELECT. Ahora deberiamos cambiar los datos de la tabla tcoches, para guardar el código de la marca en lugar de su descripción, pero para ello necesitamos saber como modificar un dato grabado... Es momento de pasar al siguiente punto, la actualización de datos. Borrado de datos. La sentencia DELETE. Para borrar datos de una tabla, debemos utilizar la sentencia DELETE. La sintaxis de la sentencia DELETE es la siguiente: DELETE FROM <nombre_tabla> [ WHERE <condicion>];

El siguiente ejemplo ilustra el uso de la sentencia DELETE. Es buena idea especificar en la sentencia WHERElos campos que forman la clave primaria de la tabla para evitar borrar datos que no queramos eliminar. DELETE FROM tcoches WHERE marca = 'SEAT'; La sintaxis de DELETE varia en Access, siendo necesario el uso del comodín *. DELETE * FROM <tcoches> Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las siguientes consideraciones: Solo podemos borrar datos de una única tabla. Cuando borramos datos de una vista, los estamos borrando también de la tabla. Las vistas son solo una forma de ver los datos, no una copia. Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la sentencia DELETE fallará. La sentencia TRUNCATE Para realizar un borrado completo de tabla debemos considerar la posibilidad de utilizar la sentencia TRUNCATE, mucho más rápida que DELETE. La sintaxis de la sentencia TRUNCATE es la siguiente: TRUNCATE TABLE <nombre_tabla>; El siguiente ejemplo muestra el uso de la sentencia TRUNCATE. TRUNCATE TABLE tcoches; Cuando trabajemos con la sentencia TRUNCATE debemos tener en cuenta las siguientes consideraciones. La sentencia TRUNCATE no es transaccional. No se puede deshacer. La sentencia TRUNCATE no admite clausula WHERE. Borra toda la tabla. No todos los gestores de bases de datos admiten la sentencia TRUNCATE.

Actualización de datos. La sentencia UPDATE. Para la actualización de datos SQL dispone de la sentencia UPDATE. La sentencia UPDATE permite la actualización de uno o varios registros de una única tabla. La sintaxis de la sentencia UPDATE es la siguiente UPDATE <nombre_tabla> SET <campo1> = <valor1> {[,<campo2> = <valor2>,...,<campon> = <valorn>]} [ WHERE <condicion>]; Las siguientes sentencias actualizan los datos de la tabla tcoches con los valores de la tabla tmarca obtenidos anteriormente en la página dedicada a la inserción de datos. SET marca = '1' WHERE marca = 'FORD'; SET marca = '2' WHERE marca = 'RENAULT'; SET marca = '3' WHERE marca = 'SEAT'; No tese que los valores para el campo marca aparecen entrecomillados, ya que es un campo de tipovarchar. Los valores con los que actualicemos los datos deben ser del tipo del campo. Un aspecto a tener en cuenta es que los campos que forman la primary key de una tabla sólo se podrán modificar si los registros no están referenciados en ninguna otra tabla. En nuestro caso sólo podremos modificar la matrícula de un coche si no tiene registros asociados en la tabla talquileres. Esto puede causar poblemas, ya que podríamos habernos equivocado al dar de alta el coche en la tabla tcoches y detectar el error despues de alquilar el coche. En tal caso tendríamos dar de alta un nuevo coche con la matrícula correcta, actualizar los registros de la tabla alquileres y por último borrar el registro erroneo de la tabla tcoches. Este proceso puede ser bastante complicado en el caso de que existiran más relaciones con la tabla. Se podría considerar que la clave primaria de la tabla esta mal definida y que la matrícula no debe ser el elemento que identifique el coche. Una alternativa seria crear un código autonumérico para la tabla tcoches que realizará las veces de clave primaria y crear un índice único para la matrícula, este diseño tambien

tiene sus "pegas", por lo que debemos decidir que modelo utilizar, y seleccionar las claves primarias con sumo cuidado. Uso de subconsultas con UPDATE El uso de subconsultas es una técnica avanzada de consulta que veremos con detalle más adelante, pero que tratamos aquí de forma introductoria. Hasta ahora hemos actualizado los datos con valores que conocemos de antemano, pero qué ocurre cuando esos datos deben tomarse de otra tabla de la base de datos?.podríamos diseñar un programa que recorriera toda la tabla y buscará el valor adecuado para cada registro y lo actualizase. Sin duda es una solución, y en ocasiones casí la única, pero es una solución cara y compleja que además exige que conozcamos algún otro lenguaje de programación. Para estos casos podemos utilizar subconsultas con la sentencia UPDATE. La sintaxis es la siguiente: UPDATE <nombre_tabla> SET <campo1> = <valor1> <subconsulta1> {[,<campo2> = <valor2> <subconsulta2>,..., <campon> = <valorn> <subconsultan>]} [ WHERE <condicion>]; Como puede verse la sintaxis es practicamente igual a la sintaxis del la sentencia UPDATE, con la salvedad de que podemos utilizar subconsultas en lugar de valores al asignar los campos. De forma generica podemos decir que las subconsultas son consultas SELECT incluidas dentro de otra sentencia SQL. Las siguientes sentencias UPDATE son equivalentes: Utilizando sentencias UPDATE normales: SET marca = '1' WHERE marca = 'FORD'; SET marca = '2' WHERE marca = 'RENAULT'; SET marca = '3' WHERE marca = 'SEAT'; Utilizando sentencias UPDATE combinadas con subconsultas: SET marca = (SELECT CODIGO FROM tmarcas WHERE tmarcas.marca = tcoches.marca ) WHERE marca IN ('FORD','RENAULT','SEAT'); Por cada registro de la tabla tcoches se ejecutará la subconsulta, actualizando el campo marca a el valor del código de la marca en la tabla tmarcas.

El uso de subconsultas para actualizar datos tiene algunas limitaciones: La subconsulta sólo puede devover un único campo. La subconsulta sólo puede devolver un sólo registro. El tipo de datos devuelto por la subconsulta debe ser del mismo tipo que el campo al que estamos asignando el valor. No todos los sistemas de bases de datos permiten usar subconsultas para actualizar datos (Access) aunque si una buena parte de ellos (ORACLE, SQL Server, Sybase...) Pero en nuestro ejemplo el campo codigo de la tabla tmarcas es numérico y el campo marca de la tabla tcoches es texto. Por qué funciona? Muy facil, el motor de la base de datos es capaz de convertir el valor numérico a un valor texto de forma automática, si bien esta es una excepción. Ahora que ya tenemos modificado el valor de la marca de los registros, es conveniente modificar su tipo de datos y crear una foreign key contra la tabla tmarcas. Para ello ejecutaremos las siguientes sentencias. ALTER TABLE tcoches alter column marca int not null; La opcion alter column es propia de SQL Server. Para modificar el tipo de datos de una tabla debemos consultar la ayuda del gestor de bases de datos. ALTER TABLE tcoches add constraint FK_Coches_Marcas foreign key (marca) references tmarcas (codigo); Si no recuerda como modificar tablas o crear foreing key pulse AQUÍ. ADO.NET: recuperar datos de SQL Server Este ejemplo muestra cómo leer datos de SQL Server mediante la clase SqlDataReader. Esta clase proporciona una manera de leer una secuencia de sólo avance de los registros de datos de un origen de datos. Si quieres trabajar con bases de datos que tienen interfaces OLE DB o las versiones de SQL Server anteriores a SQL Server 7.0, vea Recuperar datos mediante OLE DB. SqlDataReader se crea llamando al método ExecuteReader del objeto SqlCommand, no a través de la utilización directa del constructor. Mientras que elsqldatareader está en uso, la conexión SqlConnection estará atendiendo SqlDataReader. Mientras que en este estado, no las demás operaciones se pueden realizar en la conexión SqlConnection, aparte de cerrarla. Este es el caso hasta que el método Close de SqlDataReader se llama. C # sqldtreader.aspx SqlDataReader proporciona un medio para leer una secuencia de sólo avance de los registros de datos de una fuente de datos de SQL Server. Para obtener más operaciones interactivas como el desplazamiento, el filtrado, la navegación y la interacción remota, utilice el conjunto de datos. El ejemplo se crea un objeto SqlConnection a la base de datos Northwind. El SqlCommand seleccionar los

elementos de la tabla de empleados entonces se ejecuta mediante el método ExecuteReader SqlCommand. Los resultados de este comando se pasan a la SqlDataReader. MyDataReader SqlDataReader = null; MySqlConnection SqlConnection = new SqlConnection ("server = (local) \ SQLExpress; Integrated Security = SSPI; base de datos = nortes"); MySqlCommand SqlCommand = new SqlCommand ("SELECT EmployeeID, Apellido, Nombre, Título, ReportsTo FROM Employees", MySqlConnection);... mysqlconnection.open (); MyDataReader = mysqlcommand.executereader (CommandBehavior.CloseConnection); C # El ejemplo se lee a través de los datos mediante el método de SqlDataReader Leer y escribir los elementos de datos en la consola. while (mydatareader.read ()) { Console.Write (mydatareader.getint32 (0) + "\ t"); Console.Write (mydatareader.getstring (2) + "" + mydatareader.getstring (1) + "\ t"); Console.Write (mydatareader.getstring (3) + "\ t"); if (mydatareader.isdbnull (4)) Console.Write ("N / A \ n"); más Console.Write (mydatareader.getint32 (4) + "\ n"); } C # Por último, se cierra SqlDataReader, a continuación, la conexión SqlConnection. / / Siempre llamar a Close cuando haya terminado la lectura. mydatareader.close (); / / Cerrar la conexión cuando haya terminado con él. mysqlconnection.close ();