BASE DE DATOS BASE DE DATOS ¿QUÉ ES UNA BASE DE DATOS? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Actualmente la mayoría de las bases de datos están en formato digital, lo que implica que se hayan desarrollado herramientas para su manejo. BASE DE DATOS ¿QUÉ ES UN SISTEMA DE GESTIÓN DE BASE DE DATOS? Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Es decir, sirven de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. También suelen llamarse motores de bases de datos, y cada uno tiene un lenguaje y características propias. Por ejemplo: MySQL, PostgreSQL, Acces, Microsoft SQLServer, Oracle. BASE DE DATOS BASES DE DATOS RELACIONALES Y NO RELACIONALES Las bases de datos pueden basar su estructura en diferentes modelo, que definen cómo organizar la información. Vamos a ver base de datos que utilizan un modelo relacional ( 1970, Edgar Frank Codd, de los laboratorios IBM). Su idea fundamental es el uso de "relaciones". Existen base de datos no relacionales, cuya estructura se basa en otros modelos (no relacionales), por ejemplo: Base de datos documentales, base de datos en grafo, clave/valor, multi-valor, orientada a objetos y tabular. BASE DE DATOS RELACIONALES MODELO DE ENTIDAD RELACIÓN Los diagramas o modelos entidad-relación (denominado por su siglas, ERD “Diagram Entity relationship”) son una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades. BASE DE DATOS RELACIONALES DIAGRAMA DE ENTIDAD RELACIÓN BASE DE DATOS RELACIONALES MODELO DE ENTIDAD RELACIÓN Un modelo de Entidad/relación se representan los datos mediante: - Entidades - Atributos - Relaciones Existen otras características que a veces es necesario tener en cuenta: como entidades débiles y fuertes. Si un atributo identifica de forma única a una entidad, esta será su clave primaria. Y se subraya en el diagrama. BASE DE DATOS RELACIONALES ESTRUCTURA DE UNA BASE DE DATOS Por consiguiente una base de datos posee el siguiente orden jerárquico: - Tablas - Campos - Registros - Lenguaje SQL BASE DE DATOS RELACIONALES ESTRUCTURA DE UNA BASE DE DATOS El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. Este lenguaje nos permite realizar consultas a nuestras bases de datos para mostrar, insertar, actualizar y borrar datos. BASE DE DATOS RELACIONALES LENGUAJE DE DEFINICIÓN DE DATOS (DDL) Modifican la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE. LENGUAJE DE MANIPULACIÓN DE DATOS (DML) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos: INSERT, UPDATE, DELETE BASE DE DATOS RELACIONALES - SQL Veamos un ejemplo: Lo primero que debe hacerse es crear la base de datos y luego dentro crear las tablas con sus correspondientes atributos. Antes de empezar a crear una base de datos comprueba si existe alguna base de datos con el nombre que vas a crear. Revisa esto con la sentencia SHOW: mysql> show databases; BASE DE DATOS RELACIONALES - SQL Crear la base de datos: mysql> create database sample; Para seleccionar la base de datos tienes que introducir el siguiente ejemplo: mysql> USE sample; Database changed Aquí sample es la database (base de datos) que tu quieres seleccionar. El comando USE no necesita un punto y coma al final. BASE DE DATOS RELACIONALES - SQL Crear la base de datos: Puedes usar el siguiente comando para ver la actual base de datos a la que estás conectado: mysql> select database(); +------------+ | database() | +------------+ | sample | +------------+ BASE DE DATOS RELACIONALES - SQL Eliminar la base de datos: Las bases de datos pueden ser reemplazadas o eliminadas usando la sentencia DROP. El siguiente ejemplo elimina la base de datos de muestra. mysql> drop database sample; Query OK, 1 row affected (0.05 sec) El ejemplo eliminará permanentemente la base de datos. BASE DE DATOS RELACIONALES - SQL Creando tablas: Una vez que has seleccionado la base de datos, podemos empezar a crear tablas. La sintaxis de Create es CREATE TABLE tableName ( fieldName1 dataType(size) [NULL | NOT NULL] fieldName2 dataType(size) [NULL | NOT NULL] ); BASE DE DATOS RELACIONALES - SQL Clave primaria: La PRIMARY KEY está especificada después de definir los campos en el ejemplo siguiente: CREATE TABLE student ( studID INT UNSIGNED AUTO_INCREMENT, name VARCHAR(30), PRIMARY KEY(studID) ); BASE DE DATOS RELACIONALES - SQL Clave primaria: También podemos crear una clave primaria compuesta. Una clave primaria compuesta es cuando más de un campo es usado para identificar únicamente un registro. Vamos a crear una tabla para mantener los detalles de student en una clase. mysql> create table student(studid int(10), name varchar(20), address varchar(40), phone int(10)); Query OK, 0 rows affected (0.05 sec) BASE DE DATOS RELACIONALES - SQL Borrando tablas : La sentencia DROP es usada para borrar una o más tablas completamente de la base de datos. La sintaxis es DROP TABLE tbl_name El ejemplo siguiente borrar la tabla student mysql> drop table student; Query OK, 0 rows affected (0.00 sec) BASE DE DATOS RELACIONALES - SQL INSERT es usado para insertar nuevas filas o datos en una tabla existente. La sintaxis de Insert es INSERT INTO tbl_name VALUES[(col_name,...)]; El siguiente ejemplo añadirá los valores como studid, nombre, notas, dirección y número de Teléfono en la tabla student. mysql> insert into student values(1, "steve", 100, "5th cross street", 2456987); Query OK, 1 row affected (0.01 sec) BASE DE DATOS RELACIONALES - SQL INSERT STATEMENT FOR MULTIPLE ROWS : Podemos insertar múltiples filas en una tabla usando una sentencia simple INSERT. La Sintaxix es INSERT INTO tbl_name(col_name1, col_name2,...) VALUES(expr1, expr2,.....;), (expr1a, expr2a,.....;) BASE DE DATOS RELACIONALES - SQL Ejemplo: mysql> insert into student(studid,name,marks,address,phone) values(3,'michael',75,'edinburgh',2598234), (4,'jack',82,'victoria street',2436821), (5,'anne',100,'downing street',2634821); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 BASE DE DATOS RELACIONALES - SQL CONTANDO FILAS: La sintaxis es SELECT COUNT(*) from tbl_name; Ejemplo : mysql> select count(*) from student; +----------+ | count(*) | +----------+ | 5| +----------+ 1 row in set (0.00 sec) BASE DE DATOS RELACIONALES - SQL SELECCIONAR DATOS: Para ver todos los datos de la tabla, usamos el ejemplo siguiente. mysql> select * from student; BASE DE DATOS RELACIONALES - SQL +--------+---------+-------+------------------+---------+ | studid | name | marks | address | phone | +--------+---------+-------+------------------+---------+ | 1 | steve | 100 | 5th cross street | 2456987 | | 2 | david | 98 | welling street | 547896 | | 3 | michael | 75 | edinburgh | 2598234 | | 4 | jack | 82 | victoria street | 2436821 | | 5 | anne | 100 | downing street | 2634821 | | 6 | steve | 75 | downing street | 2874698 | | 7 | anne | 80 | edinburgh | 2569843 | | 8 | mille | 98 | victoria street | 1236547 | +--------+---------+-------+------------------+---------+ 8 rows in set (0.00 sec) BASE DE DATOS RELACIONALES - SQL OTRAS SENTENCIAS: - LIMIT - ORDER BY - GROUPBY - WHERE - LIKE OR NOT LIKE - UPDATE - DELETE - JOINS