Introducción Curso profesional de SQL. Las bases de datos relacionales se han convertido en el mecanismo de almacenamiento de datos más común para las aplicaciones computacionales modernas. Los lenguajes de programación como Java, C y COBOL, y los lenguajes interpretados de programación como Perl, VBScript y JavaScript muy a menudo acceden a las fuentes de datos para poder recuperar o modificar los datos. Muchas de estas fuentes de datos son administradas a través de un sistema de administración de bases de datos relacionales (RDBMS), como Oracle, Microsoft SQL Server, MySQL y DB2, que tiene como base el Lenguaje de Consulta Estructurado (SQL) para crear y alterar los objetos de la base de datos, agregar datos y eliminarlos de la base de datos, modificar datos que han sido agregados a esa base de datos y, por supuesto, recuperar datos almacenados en la base de datos para su desplegado y procesamiento. SQL es el lenguaje más ampliamente implementado para las bases de datos relacionales. De la misma manera que las matemáticas son el lenguaje de la ciencia, SQL es el lenguaje de las bases de datos relacionales. SQL no solamente permite administrar los datos dentro de la base de datos, sino también manejar la base de datos en sí. Utilizando las instrucciones SQL, es posible acceder a una base de datos SQL directamente al utilizar una aplicación cliente interactiva o a través de un lenguaje de programación de aplicación o lenguaje interpretado. Sin importar cuál sea el método que se utilice para acceder a una fuente de datos, es obligatoria una buena base acerca de cómo escribir instrucciones SQL para poder acceder a los datos relacionales. Este curso de SQL, te proporciona esa base. Se describen todos los tipos de instrucciones que soporta SQL y se explica cómo son utilizadas para administrar bases de datos y sus datos. A través del trabajo con este curso, usted construirá fuertes cimientos en SQL básico y obtendrá un profundo entendimiento de cómo utilizar SQL para acceder a los datos en su base de datos relacional. Módulos del curso 1. Diagrama Entidad Relación Diagrama Entidad Relación Un diagrama o modelo entidad–relación es una herramienta para el modelado de datos que permite representar las entidades relevantes de un sistema de información, así como sus interrelaciones y propiedades. 1.1. ¿Qué es una base de datos? 1.2. Características de una base de datos. 1.2.1. Capacidad de acceso 1.2.2. Versatilidad 1.2.3. Integridad 1.2.4. Seguridad y privacidad 1.2.5. Mínima redundancia 1.3. Gestor de base de datos. 1.3.1. Un DBMS – SGBD: es un software que nos permite administrar una BD, para realizar las siguientes tareas: Crear Modificar Actualizar Borrar Poblar Seleccionar Gestionar privilegios 1.3.2. Tipo de SGBD están: Relacionales MySQL Sql Server Oracle PostgreSQL DB2 Informix No Relacionales mongoDB FireBase CouchDB Neo4j Cassandra 1.3.3. Fases de diseño de una BD Diseño conceptual- Modelo E-R (MER) Diseño lógico Diseño físico 1.4. Elementos del Diagrama ER. 1.4.1. Diagrama del modelo entidad- relación Que es el modelo E-R Es una herramienta para el modelado de datos que permiten representar las entidades relevantes de un sistema de información, así como sus interrelaciones y propiedades. 1.4.2. Componentes del modelo entidad- relación Entidad Representa un objeto/elemento del universo de discurso (del problema a resolver). Se representa por medio de un rectángulo y dentro el nombre de la entidad Entidad débil Representa un objeto/elemento del universo de discurso (del problema a resolver), pero que necesita de una relación con otra entidad para su identificación. Se representa por medio de un doble rectángulo y dentro el nombre de la entidad Relación Representa el tipo de relación entre entidades. Se representa por medio de un rombo y dentro el nombre de la entidad Relación con dependencia de identificación: Representa el tipo de relación que identifica la dependencia entre entidades. Se representa por medio de un doble rombo y dentro el nombre de la entidad Rol Es la representación de la unión entre relaciones y las entidades (conector) Se representa por medio de una línea Atributos Representan las características de las entidades. Se representa por medio de un circulo u ovalo y dentro el nombre de la entidad 1.5. Tipos de atributos. Atributo simple o monovaluado Únicamente puede almacenar un único valor. Se representa por medio de un circulo sin rellenar. Atributo identificador principal Atributo principal de la entidad, que no se puede repetir. Se representa por medio de un circulo relleno Atributo identificador alternativo Similar al atributo principal, es decir otro atributo que no se repetirá. Se representa por medio de un circulo relleno a la mitad Atributo multivaluado Este atributo puede contener varios valores (por ejemplo, podemos tener varios teléfonos). Se representa por medio de un doble circulo Atributo opcional Este atributo alberga datos que son opcionales (email). Se representa por medio de un circulo punteado Atributo compuesto Este atributo se obtiene de unir diferentes valores en uno solo. Se representa por medio de 3 círculos (como la carita de Mickey mouse) 1.6. Restricciones de cardinalidad. Tipo de correspondencia de cardinalidades Número máximo de ejemplares de una entidad asociados a una combinación de ejemplares de las otras entidades en la interrelación, que puede ser 1:N, 1:1 o N:N Cardinalidades Máximas y Mínimas Son el número máximo y mínimo de ejemplares de una entidad que puede relacionarse con un único ejemplar de la otra entidad que participa en la interrelación. Se representa como (0,1), (1,1),(0,N),(1,N) y se sitúa en la línea que conecta la entidad con el rombo que representa el tipo de interrelación 1.7. Ejemplo MER. En una escuela, las facultades son dirigidas por un decano y a su vez, un decano dirige una facultad. Cada facultad cuenta con una serie de docentes, pero cada docente solo puede pertenecer a una facultad. Cada docente dicta varias asignaturas, asimismo una misma asignatura la pueden dictar diferentes docentes. Los estudiantes inscriben las asignaturas que les corresponde cada semestre. De la facultad interesa saber cuál es su nombre, ubicación, id, teléfonos y opcionalmente correo, de los decanos se requiere la cedula, nombres, apellidos y celular. De los docentes se debe registrar la cedula, nombres, apellidos y celular; cada asignatura tiene un código, nombre y número de créditos, y de los estudiantes se debe registrar identificación, nombres, apellidos y dirección de residencia. Teniendo esta información realice el diagrama de entidad – relación (puedes realizarlo en Hoja de papel, Herramienta Lucidchart, Herramienta Día,etc) SOLUCION Entidades: Decano (cedula, nombres, apellidos y celular) Facultad (nombre, ubicación, id, teléfonos y opcionalmente correo) Facultad (cedula, nombres, apellidos y celular) Asignatura (un código, nombre y número de créditos) Estudiante (registrar identificación, nombres, apellidos y dirección de residencia) 1.8. Ejemplo MER diagrama. 1.9. Traducción de MER a MR. 1.10. Restricciones. Restricción nulo: No permite que el valor del atributo sea nulo Restricción de identidad No permite tener dos valores repetidos en las claves primarias Restricción de integridad de entidad No permite tener valores nulos en la clave primaria Restricción de integridad referencial No permite tener valores en la clave foránea que no existan en la clave primaria. Sin embargo, si permite tener valores nulos en la clave foránea Restricción de clave alterna No permite valores repetidos en la clave alterna Restricción de dominio Los datos deben ser del dominio especifico. Ejemplo: dominio de los números enteros comprendidos entre 0 y 18. 1.11. Examen 1. 1) ¿Cuál de las siguientes define una base de datos? a) Conjunto de información organizada de cualquier manera. b) Información almacenada. c) Almacenada en un medio electrónico/digital y organizada. 2) ¿Requisitos que debe cumplir una base de datos relacional? a) Acceso a todos los usuarios, integra, versátil. b) Mayor redundancia, capacidad de acceso e integra. c) Versatilidad, mínima redundancia, integridad, etc. 3) ¿En qué nos ayuda un sistema gestor de base de datos (SGBD)? a) Crear una base de datos no relacional. b) Administrar una base de datos. c) Es la manera en representar el modelo entidad relación. 4) ¿Cuáles son los componentes del modelo entidad-relación? a) Funciones y métodos. b) Atributos, entidades y relación. c) Cardinalidades, funciones y entidades. 5) ¿Cuál de los siguientes conceptos define una entidad? a) Representa un elemento/objeto del universo de discurso. b) Es la relación entre entidades. c) Representa las características de una entidad. 2. Conceptos básicos SQL En este módulo vamos empezar a ver un poco de la sintaxis del lenguaje SQL el cual es un estándar para cualquier SGBD, sin embargo, vamos a demostrar cual es la permitida por MSSQL, una vez que hayamos entendido los conceptos anteriores, comenzaremos a escribir nuestras primeras sentencias, tales como crear bases de datos y tablas, acceder a la base de datos, y algunos otros temas que están dentro de este módulo. 2.1. Creación de una Base de Datos. Créate database NOMBRE_DE_LA_BASE_DE_DATOS; 2.2. Acceder a una Base de Datos. Use NOMBRE_DE_LA_BASE_DE_DATOS; 2.3. Creación de una Tabla Créate table NOMBRE_DE_LA_TABLA (CAMPO1 TIPO_DATO TAMAÑO, CAMPO2 TIPO_DATO TAMAÑO,); 2.4. Ingresar Registros Insert into NOMBRE_DE_LA_TABLA (CAMPO1, CAMPO2,…) values (valor-Campo1, Valor_Campo2,…); 2.5. Examen 2 1) ¿Cuál de las siguientes sentencias es la correcta para crear una base de datos desde un query? a) CREATE DATA BASE test b) CREATE DATABASE “test” c) CREATE DATABASE test 2) ¿Cuál de las siguientes nomenclaturas de nombramiento son las más usadas? a) Camel Case y Snake case b) Camel case c) Snake case d) Sólo mayúsculas e) Sólo minúsculas 3) ¿Cuál es el query correcto para conectarse a una base de datos? a) USER nombre_bd b) USE nombre_bd c) CONNECT nombre_bd 4) ¿De qué manera deben ser nombradas las tablas? a) Singular b) Plural c) Singular y con números 5) ¿Cuántos registros pueden ser insertados al ejecutar el comando INSERT INTO? a) Un sólo registro a la vez b) Dos registros a la vez c) De uno a muchos registros a la vez 3. Tipo de datos y comandos para recuperar, borrar y actualizar registros En esta ocasión analizaremos los tipos de datos que permite MSSQL, a pesar que muchos tipos de datos son permitidos por cualquier gestor, hay algunos que cada motor maneja de una forma diferente, nosotros vamos a enfocarnos en lo que usa MSSQL, además, conocer nuevas sentencias que nos permiten mostrar información de nuestras tablas con condiciones que brindemos, así como los operadores que son utilizados como los relacionales, aritméticos y lógicos, entre otros temas interesantes y de gran importancia para las bases de datos. 3.1. Tipos de Datos. 3.1.1. Definición El tipo de dato de una columna define qué valor tiene la columna. El nombre del tipo de dato depende del gestor de BD que se esté utilizando. Cada columna de una tabla debe tener un nombre y un tipo de dato, y el desarrollador es quien debe decidir qué tipo de datos será almacenado en esa columna. 3.1.2. Tipos de datos CADENA NUMERICO DATE 3.2. Recuperar algunos campos. La sentencia SELECT es usada para seleccionar datos de una BD. Los datos devueltos se almacenan en una tabla de resultado, denominados result-set: SELECT columna1, columna2 FROM nombre_tabla; 3.3. Cláusula WHERE. La cláusula WHERE es utilizada para filtrar registros. Extrae solo esos registros que cumplen con una condición especifica: SELECT columna1, columna2 FROM nombre_tabla WHERE condición; 3.4. Operadores Relacionales. Los operadores relacionales (o comparación) nos permiten comparar dos expresiones, que pueden ser variables, valores de campos, etc. Y son los siguientes: = igual != , <> distinto < menor > mayor >= mayor o igual <= menor o igual 3.5. Operadores Aritméticos. 3.6. Operadores Lógicos. 3.7. Borrar registros. DELETE es utilizado para eliminar registros existentes en una tabla. DELETE FROM nombre_tabla WHERE condición; 3.8. Actualizar registros. La sentencia UPDATE es usada para modificar registros existentes en una tabla UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2 WHERE condición; 3.9. Valores nulos. Un campo con valor NULL es un campo que no tiene valor. Tal vez puede ser un campo opcional de una tabla, además, es posible insertar o actualizar un registro sin agregar ningún valor a ese campo: SELECT nombre_columnas FROM nombre_tabla WHERE nombre_columna IS NULL; 3.10. Campo con autoincremento. Un autoincremento un número único a ser generado automáticamente cuando un nuevo registro es insertado en la tabla, conmunmente este seria el campo PRIMARY KEY. En SQL Server se utiliza el keyword IDENTITY: CREATE TABLE personas (id int IDENTITY(1,1) PRIMARY KEY, apellido varchar (255) NOT NULL, nombre varchar(255), edad int ); 3.11. 1) Examen 3. Es la sentencia utilizada para realizar filtrado de la información con base en una o más condiciones. d) e) f) g) DELETE WHERE INSERT UPDATE 2) ¿Cuál de las siguientes opciones son los operadores relacionales (comparación)? h) + – * / i) = <> <= >= j) AND OR 3) Esta sentencia que nos permite eliminar registros. k) l) m) n) DROP DELETE UPDATE SELECT 4) ¿Qué representa un valor nulo? o) Es igual a cero p) Es igual a un espacio q) No contiene valor 5) Define los valores de que una columna puede tener. r) Nombre de la tabla s) Tipos de datos t) Cantidad de columnas de una tabla 6) Esta sentencia se encarga de obtener la información de una base de datos. u) WHERE v) UPDATE w) SELECT x) INSERT 4. Operadores aritméticos y relacionales Para este módulo conoceremos más temas útiles en MSSQL como truncar tablas, crear tablas calculadas. Además, hacer el ordenamiento de la proyección y el uso de más condiciones que pueden realizarse por rangos o patrones, y una breve introducción a las funciones de agrupación. 4.1. Truncate table. Comando usado para remover todos los registros de una tabla, muy parecido al comando DELETE TRUNCATE TABLE [Database] [Esquema] nombre_tabla 4.2. Columnas calculadas. Un campo calculado es un un campo virtual que no podría estar realmente almacenado en la tabla, y que usa los valores de otros campos para calcular el valor que tendrá en ese momento y que se podrá visualizar en la fila o en alguna otra tabla que se cree momentáneamente, tiene algunas limitaciones para su uso: no se pueden utilizar restricciones como DEFAULT, FORENS_KEY, NOT NULL CREATE TABLE dbo.Factura ( Id_Factura int IDENTITY (1,1) NOT NULL Cantidad smallint, Precio money, Total AS Cantidad * Precio) Este es el campo calculado 4.3. Ordenar registros. Para ordenar registros usamos la palabra clave ORDER BY, usa los complementos ASC(ascendente) y DESC (Descendente) SELECT Column1, Column 2,… FROM Nombre_Tabla ORDER BY Column1, Column2,… ; 4.4. Operador between. Para Seleccionar Valores dentro de un rango determinado usamos el operador BETWEEN, los valores pueden ser números, Textos o fechas, su sintaxis es: SELECT column1, column2,.. FROM Nombre_tabla WHERE Column1 BETWEEN Valor1 AND valor2; 4.5. Operador in. El operador IN, nos permite especificar multiples valores en un WHERE, su sintaxis es: SELECT Column1,column2,… FROM Nombre_Tabla WHERE Column IN (Valor1, Valor2,…) 4.6. Búsqueda de patrones. Operador LIKE, usado para extraer información que cumpla cierto patrón usado con la cláusula WHERE,y usa algunos comodines Como “%” y “_” su sintaxis es SELECT column1,Column2,… FROM Nombre_tabla Where Column LIKE patrón; 4.7. Contar, promedio y sumar. Funciones COUNT retorna el número de filas que cumple un criterio. La Función AVG retorna la media de un valor numérico y la Función SUM que nos retorna el total de una suma de un valor numérico. su sintaxis es SELECT COUNT (Column) FROM Nombre_tabla WHERE Condición: SELECT AVG (Column) FROM Nombre_tabla WHERE Condición: 4.8. Examen 4 1) ¿Cuál es el comando para eliminar la data contenida de una tabla? a) Drop b) Truncate c) Delete 2) De las siguientes palabras claves, ¿cuál es el correcto para ordenar un result-set? a) orderby b) ORDER c) ORDER BY 3) Mencione el tipo de ordenamiento predeterminado. a) Descendiente b) Ascendiente 4) La palabra clave para obtener datos de un rango determinado es BETWEEN. a) Verdadero b) Falso 5) Esta palabra clave es similar a usar múltiples OR en una sentencia. a) b) c) d) IN BETWEEN ORDER BY TRUNCATE 6) ¿Cuáles son los comodines usados en la búsqueda de patrones con la palabra clave LIKE? a) Porcentaje y guion bajo (%/_) b) Símbolo de monetario y gato ($/#) c) Porcentaje y símbolo gato (%/#) d) Guion bajo y símbolo monetario (_/$) 5. Funciones de agrupamiento. El módulo de funciones de agrupamiento nos dará un entendimiento de cómo agrupar registros, ver registros duplicados, además de la cláusula TOP que nos permite mostrar una cantidad de registros según nuestras necesidades e indicaciones brindadas en las condiciones al realizar nuestra proyección. 5.1. ¿Qué son las funciones de agrupamiento? 5.2. Agrupar registros. 5.3. Seleccionar grupos. 5.4. Registros duplicados. 5.5. Cláusula Top. 5.6. Examen 5. 1) La cláusula GROUP BY sirve para ordenar registros de una tabla de manera descendente o ascendente. a) Verdadero b) Falso 2) Son cláusulas que son utilizadas junto a GROUP BY a) Funciones de agregación y la cláusula WHERE b) Funciones de agregación y la cláusula HAVING c) WHERE, HAVING y funciones de agregación 3) ¿Cuál de las siguientes es la sintaxis correcta GROUP BY? a) SELECT … FROM … GROUP BY … WHERE b) SELECT … FROM … GROUP BY … HAVING c) SELECT … FROM … HAVING … GROUP BY 4) ¿Es la cláusula utilizada como condicional al utilizar las funciones de agregación? a) WHERE b) IF c) HAVING 5) ¿Para qué es utilizada la cláusula TOP? a) Para mostrar los registros de arriba b) Para mostrar los últimos registros c) Para mostrar la cantidad de registros indicados 6. Índices En este módulo aprenderemos y analizaremos qué es un índice, cómo crear índices agrupados y no agrupados, así como eliminar estos índices y mirar los planes de ejecución que se crean y permanecen almacenados en la cache, y el porqué del uso de los índices y su funcionamiento dentro de las bases de datos. 6.1. Definición de un índice Sirve para obtener la información de una consulta de una manera más rápida (usada para tablas con muchísimos registros), existen 2 tipos de índices columnares e índices de filas 6.2. Limpiar cache y planes de ejecución. Para borrar la Cache y los planes de ejecución del MMSQL en el servidor, debemos ejecutar los siguientes comandos: DBCC FREEPROCCACHE WITH NO_INFOMSGS; DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS; 6.3. Índices agrupados y no agrupados. 6.4. Eliminar índices. 6.5. Examen 6. 7. Estructura de una tabla. 8. Introducción a Transact SQL. 9. Examen para certificación