Es el lenguaje más utilizado en bases de datos relacionales.pdf
Document Details
Uploaded by LighterTheme9174
Unpamplona
Tags
Full Transcript
SQL (Structured Query Language – Lenguaje de consulta estructurado) Es el lenguaje por excelencia para crear y manipular bases de datos relacionales. Permite ser ejecutado directamente dentro de un entorno de trabajo, o puede ser incrustado dentro del código de un programa escrito en otro lenguaje....
SQL (Structured Query Language – Lenguaje de consulta estructurado) Es el lenguaje por excelencia para crear y manipular bases de datos relacionales. Permite ser ejecutado directamente dentro de un entorno de trabajo, o puede ser incrustado dentro del código de un programa escrito en otro lenguaje. Es principalmente declarativo pero también tiene características procedimentales. El lenguaje SQL se introdujo como lenguaje de consulta del Sistema R. Posteriormente, varios sistemas comerciales lo adoptaron como lenguaje para sus bases de datos. Las sentencias SQL pueden ser clasificadas en dos grupos: DDL (Data Definition Languaje - lenguaje de definición de datos): las sentencias DDL son aquellas utilizadas para la creación de una base de datos y todos sus componentes: tablas, índices, relaciones. Se utilizan para darle estructura a las tablas de la base de datos. (create, alter, drop) DML (Data Manipulation Languaje - lenguaje de manipulación de datos): las sentencias DML son aquellas utiliza das para insertar, borrar, modificar y consultar los datos de una base de datos. (select, insert, update, delete, truncate) DCL (Database Control Language) Lenguaje de control de datos: GRANT, DENY, REVOKE TCL (Transaction Control Language) Lenguaje de control de transacción: COMMIT, ROLLBACK, SAVEPOINT Tipos de Sistemas de bases de datos: OLTP: OnLine Transactional Processing DW: DataWarehouse DSA: Data-staging área ETL: Extract, Transform and Load Arquitectura SQL Appliance Box Nube Sistemas de bases de datos en SQL Server: Master Model Tempdb Msdb Resource MySQL – Bases de Datos mysql: es la base de datos de sistema que contiene tablas con la información requerida por MySQL server nformation_schema: permite el acceso a la metadata de la base de datos performance_schema: es una característica que permite monitorear la ejecución de MySQL Server a bajo nivel Sys: conjunto de objetos que ayudan al DBA y a los desarrolladores a interpreter los datos colectados por el performance_schema Archivos fisicos: el path por defecto para los datos es: /var/lib/mysql o Cada directorio corresponde a una base (de Sistema o de Usuario) o Logs o InnoDB tablespaces y logs En MySQL Esquema es un sinónimo de Base de Datos. Tipos de datos: Se pueden agrupar en: Numéricos exactos (Enteros y de punto fijo) Numéricos aproximados Fecha y Hora Cadenas de caracteres Cadenas de caracteres Unicode Cadenas Binarias Otros Creación y eliminación de tipos de datos definidos por el usuario: Create type ssn From varchar(11) not null; Drop type ssn; Directrices para especificar tipos de datos Si la longitud de la columna varía, utilice uno de los tipos de datos variables Para tipos de datos numéricos, use los decimales más frecuentes Para la moneda utilice el tipo de datos money (en SQL Server, en MySQL DECIMAL(19,4) ) No utilice float y real como claves principales Crear tabla: CREATE TABLE ``( Nombre_atributo tipo_dato null_notnull) Eliminar tabla DROP TABLE nombre_tabla Generación de valores de columnas: En SQL Server se usa Identity, se usa la función NEWID y el tipo de dato uniqueidentifier (estas dos se usan juntas): CREATE TABLE Customer (CustID int IDENTITY(1,1), CustName char(30) NOT NULL) CREATE TABLE Customer (CustID uniqueidentifier NOT NULL DEFAULT NEWID(), CustName char(30) NOT NULL) En MySQL se usa AUTO_INCREMENT UUID() CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT) Insertar datos: INSERT INTO tabla (name) --> aca ponemos que columnas vamos a completar VALUES (‘dog’), (‘cat’) Constraints / Restricciones Ayudan a mantener la integridad de los datos. Son reglas que los datos deben cumplir. Se definen en el modelo de datos y el sistema de gestión de base de datos se encarga de que se cumplan. Tipos de datos. Si un atributo está definido como fecha, sólo aceptará como valores fechas que sean válidas. Si el campo puede tomar valores indefinidos (NULL). Clave primaria, que es un identificador unívoco de cada registro (tupla), y por lo tanto no admiten valores indefinidos (NULL). Las claves candidatas son otro tipo de restricción que también colaboran con la integridad de datos. Las claves foráneas permiten cumplir con la regla de integridad referencial. Una clave foránea es un atributo, o un conjunto de atributos, que referencian a una clave primaria o candidata de otra tabla (o la tabla misma) Pueden cambiarse sin volver a crear una tabla Requieren comprobación de errores en aplicaciones y transacciones Comprueban los datos existentes o Restricciones DEFAULT: Sólo se aplica a las instrucciones INSERT y sólo una restricción DEFAULT por columna. No se puede utilizar con la propiedad IDENTITY o el tipo de datos rowversion. Permite que se especifiquen algunos valores proporcionados por el sistema (en SQL Server) o Restricciones CHECK Se utilizan con las instrucciones INSERT y UPDATE. Pueden hacer referencia a otras columnas en la misma tabla, no pueden contener subconsultas y puede haber varias por campo o Restricciones PRIMARY KEY: Sólo una restricción PRIMARY KEY por tabla, los valores deben ser exclusivos, no se permiten valores nulos. Crea un índice exclusivo en las columnas especificadas o Restricciones UNIQUE: Permite un valor nulo y varias restricciones por tabla definidas en una o mas columnas y exigida con un índice único. Unique Vs Primary Key: La diferencia entre ambos es que la clave primaria no acepta valores null, mientras que una clave única sí las acepta. Y la otra diferencia es que una tabla solo puede definir una sola clave primaria, mientras que podemos definir varias claves únicas. o Restricciones FOREIGN KEY Deben hacer referencia a una clave primaria o unique, proporcionan integridad referencial de varias columnas y no crea indices automaticamente. Los usuarios deben tener permisos select o references → Integridad referencial: NO ACTION, Cascada, Default, NULL Deshabilitación de la comprobación de las restricciones en los datos existentes: Se aplica a las restricciones CHECK y FOREIGN KEY Utilice la opción WITH NOCHECK cuando agregue una restricción nueva Utilizar si los datos existentes no cambian Se pueden cambiar los datos existentes antes de agregar restricciones Deshabilitación de la comprobación de las restricciones al cargar datos nuevos Se aplica a las restricciones CHECK y FOREIGN KEY Utilizar si: los datos cumplen las restricciones o si carga datos nuevos que no cumplen las restricciones Operadores de condicion: Clausula Where o Between o In o Like o Not Orden: por defecto, SQL procesa los operadores AND antes de los operadores OR. Para ilustrar cómo funciona esto, veamos el siguiente ejemplo. Concatenación: La concatenación consiste en encadenar diferentes palabras o caracteres. T-SQL proporciona el operador de signo más (+), la función CONCAT y la función CONCAT_WS para concatenar cadenas. MySQL solo permite concatenar usando CONCAT y CONCAT_WS Reglas de agrupamiento: Cada columna no calculada que aparece en el SELECT debe aparecer también en el GROUP BY. No se pueden utilizar alias en el HAVING Se pueden utilizar alias en el ORDER BY Sólo se pueden utilizar campos calculados en el HAVING Se deben utilizar alias de campos calculados o campos reales en el ORDER BY Subconsultas: Las subconsultas son consultas embebidas dentro de otras consultas. Se utilizan para obtener información de una tabla basada en información de otra tabla. Para dividir una consulta compleja en varios pasos, las tablas generalmente deben tener alguna relación entre ellas. Se usan en SELECT, FROM, WHERE, HAVING Clasificación de subconsultas: Según la cantidad esperada de valores que puede devolver una subconsulta, se las puede clasificar en: o Escalar (Un solo valor) o Multivaluada (Múltiples Valores) o Expresión de Tabla (Múltiples valores en una Tabla Derivada) Según la dependencia de la consulta principal, se las puede clasificar en: Autocontenida Correlacionada Subconsultas autocontenidas: son independientes de la consulta principal a la que pertenecen, pueden ejecutarse de forma independiente. Por lo tanto, son simples para probar, ya que pueden probarse por separado Subconsultas autocontenidas escalares: dado que devuelve un único valor y es independiente de la consulta principal, puede aparecer en cualquier lugar de la consulta principal en que se necesite como en el SELECT o WHERE. Si una subconsulta escalar no devuelve ningún valor, devuelve NULL, por lo tanto, el predicado evalúa una comparación con NULL, que da como resultado Desconocido y por lo tanto la consulta principal no devuelve resultados. Subconsultas autocontenidas multivaluadas: son consultas que devuelven múltiples valores para una misma columna. Los resultados de estas subconsultas deben evaluarse con predicados como IN. El formato de un predicado utilizando IN es: [NOT] IN () El predicado devuelve verdadero si la expresión escalar coincide con alguno de los valores devueltos por la subconsulta. Subconsultas correlacionadas: Las subconsultas correlacionadas son subconsultas en las que se hace referencia a atributos que forman parte de la consulta principal. Esto significa que la subconsulta es dependiente de la consulta principal y no puede ser ejecutada de manera independiente. Lógicamente, es como si la subconsulta es evaluada por cada fila de la consulta principal. EXISTS: También contamos en SQL con el predicado EXISTS, que devuelve verdadero (true) en caso de que la subconsulta devuelva alguna fila, de lo contrario devuelve falso (false). El formato de un predicado utilizando EXISTS es: [NOT] EXISTS () Not in Vs Not exists: Si ejecutamos nuevamente las consultas, la de NOT EXISTS devuelve el mismo resultado. La de NOT IN no, ¿por qué? Poque la diferencia se da por la lógica de tres estados. La expresión val IN (val1, val2, …, NULL) nunca puede devolver FALSE. Sólo puede devolver TRUE o DESCONOCIDO. Por lo tanto, la expresión val NOT IN (val1, val2, …, NULL) sólo puede devolver NOT TRUE o NOT DESCONOCIDO, ninguno de los cuales es TRUE JOINS: - CROSS (todos con todos) - INNER los que coinciden - OUTER o Left join o Right Join o Full outer join