Crear Modelos de Datos
El lenguaje SQL se utiliza para la descripción del modelo de datos, y para la modelización de consultas y acciones sobre la base de datos. En esta unidad didáctica el objetivo es obtener un modelo de datos robusto y bien definido, para ello se utiliza el lenguaje DDL (Data Description Language).
Objetivos
- Saber cómo conectarse a una base de datos Postgres
- Descripción del modelo de Datos (DDL)
Clases
- Introducción a SQL:
- Lenguaje SQL
- Pequeña Historia (Investigación: 70s (SEQUEL/2), Producción: 80s (SQL))
- Standards: ANSI X3.135 (1986), ISO (1987), SQL1 (1989), SQL2 (1992), SQL3 (1999) pero NINGUN SGBDR los cumple totalmente (el más cercano es Postgres)
- Características: declarativo (importa el qué no el como), ejemplo ("select nombre from alumnos where id=120")
- Palabras Reservadas (tokens: palabras reservadas e Identificadores)
- Tipos de Instrucciones (Lenguajes):
- Estructura de una sentencia SQL (SQL Statements): comando, expresiones, cláusula, operador y funciones de agregado
- Comando: describe la acción a realizar (por ejemplo SELECT)
- Palabras reservadas: comandos y símbolos especiales: (*, ', ")
- Constantes: cadena ('cadena de texto'), numeros (15 o 14.34 o 14e+8), fechas ('2004-01-02'), boolean ( true/false, t/f) etc
- Expresiones: identificadores y operadores ( por ejemplo 15.4*2 ó 15.4 > 4 )
- Operadores: relaciona un identificador con un valor (aritméticos y lógicos)
- Cláusula: describe completamente el comando (FROM alumnos)
- Comando Básico (por ejemplo SELECT)
- Ayuda Interactiva: \help SELECT
- Envíar el comando al SGBDR: \g ó más útil ; (punto y coma)
- Uso de la palabra reservada AS (nombre de salida)
- Sintaxis (no está completa):
SELECT * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ]
- Ejemplos:
SELECT id, num FROM paquetes; UPDATE alumnos SET nombre = 'Manuel'; CREATE TABLE prueba (id integer, nombre varchar(80)); INSERT INTO inventario VALUES ('0385121679', true);
- Conectarse a un SGBDR: utilizando consola (psql) y Modo SQL Emacs
- Qué es una base de datos y qué es una tabla
- Sintaxis comando: (psql --help) Ejemplo: psql -h HOST -d BASEDATOS -U USUARIO; Listado de BD: psql -l
- Pidiendo ayuda: \? (comandos de consola), \h (ayuda sobre SQL), \g (ejecutar consultas, vale ";"), \q (salir de consola)
- Algunos Comandos útiles: \l, \d, \dt, \d tabla ...
- Trabajo con la consola de Emacs
- Configurar Emacs: M-x customize-options (sql-postgres-options, sql-user, sql-postgres-program)
- SQL Buffer (M-p, M-n, M-r, M-s)
- Modo SQL (C-c C-r, C-c C-b) - Ligado a un buffer interactivo
- Lenguaje SQL
- Comenzando a usar SQL
- Uso de la Sintaxis de SQL:
- En mayúsculas: palabras reservadas
- En minúsculas: expresiones
- Entre Corchetes [ ]: opcional
- Entre Llaves { }: obligatorio
- Tres puntos: repetir anterior
- Con Operador | : Opciones Excluyentes
- Creación de Datos (DDL)
- Creando Tablas
- CREATE TABLE (tabla, atributos, dominios)
- Tipos de Datos
- SQL: lenguaje fuertemente tipado (control de tipos de datos)
- Tipos básicos (estándares): boolean, caracteres (char, varchar), numeros ( integer, real, numeric(p,s) ) y Tiempo (date, time, timestamp)
- Tipo de Datos Serial: identificadores únicos
- Ejemplos de Constantes: String, Integer y Boolean
- Forzar el tipo: operador ::. Ejemplo: select 15::real;
- En realidad hay muchos tipos de datos (Data Types) URLs, geometría, etc: Ver con \dT en consola
- DROP TABLE (borrar tablas)
- Entender la sintaxis (\help comando SQL)
- Restricciones (Constraints)
- Sobre los campos (column constraint): NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, check. Por ejemplo:
create table prueba (ejemplo_campo integer default 9, otro_ejemplo varchar(80) not null)
- Con otras tablas (table_constraint): FOREIGN KEY, REFERENCES. Por ejemplo:
create table prueba (ejemplo_clave_ajena integer references usuarios (dni) )
- Añadir restricciones (table_constraint) a la tabla ya creada
- Sobre los campos (column constraint): NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, check. Por ejemplo:
- Creando Tablas
- Manipulación Básica de Datos (DML)
- ¿Qué es?
- Consultas (SELECT). Ojo a: AS output_name, FROM from_item, WHERE condition). Ejemplo: SELECT id AS Codigo, nombre AS "Nombre Completo" FROM alumnos WHERE id > 5;
- Insertar Datos (INSERT INTO). Ojo a la colocación de paréntesis. Ejemplo: INSERT INTO alumnos (id,nombre,apellido) VALUES (87,'Pepe','Perez');
- Operadores Comparación: aritméticos (>, <, =, OR, AND ...), caracteres (LIKE, expresiones regulares ~)
- Uso de la Sintaxis de SQL:
- Ejercicio: Realizar un modelo de datos
- Mayor profundidad sobre los comandos
- Sintaxis CREATE TABLE
- Explicación Column Constraint
- Explicación Table Constraint
- Control de datos de entrada: check (expresion)
- Sintaxis ALTER TABLE
- Sintaxis CREATE SEQUENCE
- Sintaxis CREATE TABLE
- Repaso y crear nuevo modelo de datos (II)
Actividades
- Introducción a SQL
- Conexión a una Base de Datos Postgres
- Saber Manejar la consola en línea de comandos (psql)
- Saber Manejar la conexión con Emacs (comando sql-postgres)
- Manejo básico de SQL
- Uso y Manejo de la consola para ejecutar comandos
- Uso de la sentencia SELECT para jugar con los tipos de datos, números y cadenas de texto
- Entender la estructura de los comandos
- Conexión a una Base de Datos Postgres
- Uso de SQL
- Entender la sintaxis de la ayuda de SQL, utilizando el comando \h seguido del comando SQL
- Conocer las sentencias de creación de un modelo de datos y su sintaxis
- Crear y Borrar Tablas con soltura.
- Insertar datos en las tablas
- Ejecutar Consultas Básicas (SELECT) (Ver el contenido de la tabla, ver datos, AS, FROM, WHERE )
- Crear un modelo de datos SQL sobre un ejercicio (mini-banco) (utilizar E/R, esquema conceptual o cualquier técnica) (Dos Clases)
- Crear Tablas, diferentes tipos de datos y diferentes restricciones a nivel de tabla y a nivel de columna
- Cambiar el nombre a la tabla, quitar/añadir campos, etc
- Crear un modelo de datos SQL sobre un ejercicio (Lineas de Metro) (utilizar E/R, esquema conceptual o cualquier técnica) (Dos Clases)
- Entender un modelo de datos escrito por otro programador. Si tienes mucho interés puedes ver el código original
Duración del Curso
El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.
Recursos a Utilizar
- Cursos de SQL:
- de LDP en Español. Es un curso completo sobre BD, revisar la parte de SQL
- de Claudio Casares. Está muy completo y sencillo para aprender.
- de Aula Clic. Está muy bien, aunque particularizado para Access 2000
- Tutoriales (Películas Flash, en inglés): Secuencias e Integridad Referencial
- Todo lo que hay que saber (inglés):
- Libro Practical PostgreSQL
- SQL for Web Nerds de Philip Greenspun