BBDD_2024_Unidad05_Pres1_6f4fb498ffa0be6c222a7075790dd343.pdf

Full Transcript

Base de Datos 1 Unidad 5 SQL Historia 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. El nombre SQL está formado por las iniciales de Structured Query Language (Lenguaje de...

Base de Datos 1 Unidad 5 SQL Historia 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. El nombre SQL está formado por las iniciales de Structured Query Language (Lenguaje de consultas estructuradas). Si bien el SQL está definido como un estándar, las bases de datos relacionales tienen sus extensiones propietarias y variaciones. ANSI/ISO Año Comentarios 1986 Primera publicación hecha por ANSI. Confirmada por ISO en 1987. 1989 Revisión menor, el agregado más importante fueron las restricciones de integridad. Adoptado como FIPS 127-1. 1992 Revisión mayor (ISO 9075) 1999 Expresiones regulares, consultas recursivas (para relaciones jerárquicas), triggers y algunas características orientadas a objetos. 2003 Introduce algunas características de XML, cambios en las funciones, estandarización del objeto sequence y de las columnas auto numéricas. 2006 ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras de importar y guardar datos XML en una base de datos SQL, manipulándolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML. Además, proporciona facilidades que permiten a las aplicaciones integrar dentro de su código SQL el uso de XQuery, lenguaje de consulta XML publicado por el W3C (World Wide Web Consortium) para acceso concurrente a datos ordinarios SQL y documentos XML. 2008 Permite el uso de la cláusula ORDER BY fuera de las definiciones de los cursores. Incluye los disparadores del tipo INSTEAD OF. Añade la sentencia TRUNCATE 2011 Soporte para bases de datos temporales (cronológicas). Mejoras en las funciones de ventana y cláusula FETCH 2016 Búsqueda de patrones, funciones de tabla polimórficas y compatibilidad con los ficheros JSON. 2019 Arrays Multidimensionales (SQL/MDA) 2023 Se agrega el tipo JSON (SQL/Foundation); Se agrega parte 16, Property Graph Queries (SQL/PGQ) Categorías de instrucciones DML (Database Manipulation Language o Lenguaje de manipulación de datos): SELECT, INSERT, UPDATE, DELETE, TRUNCATE DDL (Database Definition Language o Lenguaje de definición de datos): CREATE, ALTER, DROP DCL (Database Control Language o Lenguaje de control de datos): GRANT, DENY, REVOKE TCL (Transaction Control Language o Lenguaje de control de transacciones): COMMIT, ROLLBACK, SAVEPOINT Cliente / Servidor Sistemas de Gestión de Bases de Datos Relacionales MS SQL Server MySQL Oracle Database MariaDB IBM DB2 PostgreSQL SAP ASE (ex Sybase) SQLite SQL Azure Amazon RDS Google Cloud SQL Tipos de Sistemas de Bases de Datos OLTP: OnLine Transactional Processing DW: DataWarehouse DSA: Data-staging área ETL: Extract, Transform and Load SQL Server – Ediciones Principales Enterprise: Edición completa, con performance para aplicaciones de misión crítica y con requerimientos de inteligencia de negocios. Provee los más altos niveles de servicio y performance. Standard: Administración de datos central y capacidad para inteligencia de negocios para aplicaciones que no sean de misión crítica con el mínimo de recursos de IT Developer: Versión con todas las características orientada a desarrolladores, que permite desarrollar, probar y demostrar aplicaciones basadas en software SQL Server. Web: Versión especial para proveedores de hosting. Express: Nivel básico y gratuita. Ideal para el aprendizaje y construcción de aplicaciones de escritorio o pequeños servidores. Permite hasta 10 GB de almacenamiento. https://learn.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql- server-2022 SQL Server SQL Server SQL Server Características SQL Server Enterprise Standard Express Developer Máximo del SO 24 4 Máximo del SO Número máximo de núcleos Máximo del Sistema Máximo del Sistema Memoria: Tamaño máximo de pool 128 GB 1410 MB Operativo Operativo de buffer por instancia Máximo del Sistema Máximo del Sistema Memory: Máximo segmento chache 32 GB 352 MB Operativo Operativo Columnstore por instancia Memoria: Máximo memoria Máximo del Sistema Máximo del Sistema optimizada para datos por base de 32 GB 352 MB Operativo Operativo datos 524 PB 524 PB 10 GB 524 PB Tamaño máximo de base de datos Sí Sí Sí No Derecho de uso en producción MySQL – Ediciones MySQL Community Edition: Versión gratuita. Licencia GPL. El soporte lo brinda la comunidad. Ediciones Comerciales: Brindan acceso a soporte de Oracle 24x7, y otras características comerciales. MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition Arquitectura SQL (ABC) APPLIANCE (APARATO) BOX (CAJA) CLOUD (NUBE) Instancias SQL Server - Bases de Datos MySQL – Bases de Datos mysql: es la base de datos de sistema que contiene tablas con la información requerida por MySQL server information_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 SQL Server – Archivos Físicos de las Bases de Datos de Usuario MySQL – Archivos físicos El path por defecto para los datos es: /var/lib/mysql Cada directorio corresponde a una base (de Sistema o de Usuario) Logs InnoDB tablespaces y logs SQL Server – Esquemas y objetos MySQL - Esquemas En MySQL Esquema es un sinónimo de Base de Datos. Objetos de base de datos Índice agrupado Anderson Anderson Procedimiento PK Barr FK almacenado Desencade-... UpdatePhone nador EmpNum LastName FirstName CtryCode Extension LastMod integer longstring varchar(20) char(2) char(6) longstring 10191 Labrie Angela FR x19891 \HR\KarlD 10192 Labrie Eva FR x19433 \HR\KarlD 10202 Martin Jose SP x21467 \HR\AmyL EmployeePhoneView Comprobar SELECT lastname, firstname, extension FROM employee x##### Referencia a los objetos de SQL Server Nombres completos servidor.baseDeDatos.esquema.objeto Nombres parcialmente especificados El servidor predeterminado es la instancia actual del servidor local La base de datos predeterminada es la base de datos actual El esquema predeterminado es dbo CREATE TABLE Northwind.dbo.OrderHistory... Autenticación de inicio de sesión AUTENTICACIÓN SQL Server comprueba la conexión de confianza Grupo o usuario de Windows Windows Server SQL Server O BIEN SQL Server comprueba el nombre Cuenta de inicio de y la contraseña sesión de SQL Server Validación de permisos 2 3 1 Permisos correctos; se ejecuta el comando El usuario de la base de datos ejecuta el comando SQL Server comprueba los permisos SELECT * FROM Members Permisos incorrectos; Devuelve Error MySQL – Autenticación de usuarios MySQL (interna) Externa External Authentication for LDAP Native Kerberos Authentication External Authentication for Windows External Authentication for PAM Tipos de Datos https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types- transact-sql https://dev.mysql.com/doc/refman/8.0/en/data-types.html 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 Tipos de Datos – Enteros SQL Server MySQL bigint: -2^63 a 2^63-1 bigint: -2^63 a 2^63-1 bit: 1, 0 o NULL int: -2,147,483,648 a int: -2^31 (-2,147,483,648) a 2,147,483,647 2^31-1 (2,147,483,647) mediumint: -8,388,608 a smallint: -2^15 (-32,768) a 8,388,607 2^15-1 (32,767) smallint: --32,768 a 32,767 tinyint: 0 a 255 tinyint: 0 a 255 Tipos de Datos – Punto Fijo SQL Server MySQL decimal (p,s): p de 1 a 38. s de 0 decimal (p,s): p de 1 a 65. s de 0 ap ap money: - numeric: equivalente a decimal 922,337,203,685,477.5808 a 922,337,203,685,477.5807 numeric: equivalente a decimal smallmoney: - 214,748.3648 a 214,748.3647 Tipos de Datos – Números aproximados SQL Server MySQL float (n): n de 1 a 53, siendo n la float (n): n de 0 a 23 cantidad de bits usados para la double(n): n de 24 a 53 mantisa. - 1.79E+308 a -2.23E- 308, 0 y 2.23E-308 a 1.79E+308 real: float(24) Tipos de Datos – Fecha y Hora SQL Server MySQL date: YYYY-MM-DD. De 0001-01-01 hasta 9999-12- date: YYYY-MM-DD. De 1001-01-01 hasta 9999-12- 31 31 datetime2: YYYY-MM-DD hh:mm:ss[.fracción de datetime: De 1001-01-01 hasta 9999-12-31 y segundo]. De 0001-01-01 hasta 9999-12-31 y 00:00:00.000000 hasta 23:59:59.999999 00:00:00 hasta 23:59:59.9999999 time: hh:mm:ss[.nnnnnnn] De -853:59:59.000000 datetime: De 1 de Enero de 1753 hasta 31 de a 838:59:59.000000 Diciembre de 9999 y 00:00:00 hasta 23:59:59.997 timestamp: De 1970-01-01 00:00:01.000000 a datetimeoffset: YYYY-MM-DD 2038-01-19 03:14:07.999999 hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]. El offset va de -14:00 hasta +14:00 year: De 1901 a 2155, o 0000 smalldatetime: De 1900-01-01 hasta 2079-06-06 y 00:00:00 hasta 23:59:59 time: hh:mm:ss[.nnnnnnn] De 00:00:00.0000000 hasta 23:59:59.9999999 Tipos de Datos – Cadenas de caracteres SQL Server MySQL char(n): n de 1 a 8000. Longitud fija. char(n): n de 0 a 255. Longitud fija. text: será removido. No usar longtext: longitude máxima de varchar(n | max): n de 1 a 8000. 4.294.967.295 o 4GB (232 – 1) bytes Longitud variable mediumtext: longitud máxima de 16.777.215 (224 – 1) bytes text(n): longitud máxima de 65535 (216 - 1) bytes tinytext: longitud máxima 255 (28 - 1) bytes varchar(n | max): n de 1 a 65535. Longitud variable Tipos de Datos – Cadenas de caracteres Unicode SQL Server MySQL nchar(n): n de 1 a 4000. No maneja tipos diferenciados, si no que permite utilizar los mismos tipos, diferenciando la Longitud fija. Soporta caracteres capacidad de manejar caracteres UNICODE mediante la utilización de CHARACTER SET, por Unicode ejemplo: ntext: será removido. No usar CREATE TABLE t ( nvarchar(n | max): n de 1 a c1 VARCHAR(20) CHARACTER SET utf8, 4000. Longitud variable c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs ); Tipos de Datos – Cadenas Binarias SQL Server MySQL binary(n): n de 1 a 8000. cadena binaria de binary(n): similar a char, pero almacena cadena longitud fija binaria image: será removido. No usar blob(n): longitud máxima 65.535 (216 – 1) bytes. Cada blob es almacenado usando un prefijo de 2 varbinary(n): n de 1 a 8000. cadena binaria de bytes que indica la cantidad de bytes en el valor. longitud variable longblob: columna blob con longitud máxima de 4.294.967.295 o 4GB (232 – 1) bytes. Usa prefijo de 4 bytes. mediumblob: columna blob con longitud máxima de 16.777.215 (224 – 1) bytes. Usa prefijo de 3 bytes. tinyblob: columna blob con longitud máxima de 255 (28 – 1) bytes varbinary(n): similar a varchar, pero almacena cadena binaria Otros Tipos de Datos SQL Server MySQL cursor: permite almacenar el resultado de una JSON consulta o tabla y ser recorrido Spatial Types hierarchyid: representa posición en una jerarquía sql_variant: permite almacenar distintos tipos de datos variant table: se utiliza como almacenamiento temporal rowversion: número binario único generado automáticamente por la base de datos uniqueidentifier: cadena única de 16 bytes xml: almacena datos XML Spatial Types: Geométricos y Geográficos Creación CREATE TYPE ssn FROM varchar(11) NOT NULL ; Eliminación 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 Creación de una tabla NULL o Nombre de columna Tipo de datos NOT NULL CREATE TABLE dbo.Categories (CategoryID int IDENTITY(1,1) NOT NULL, CategoryName nvarchar(15) NOT NULL, Description nvarchar(100) NULL, Picture varbinary(max) NULL) Eliminación de una tabla DROP TABLE tabla Generación de valores de columnas SQL Server MySQL Uso de la propiedad Identity AUTO_INCREMENT Uso de la función NEWID y el UUID() tipo de datos uniqueidentifier Uso de la propiedad Identity Requisitos para utilizar la propiedad Identity Sólo se permite una columna de identidad por tabla Utilizar con tipos de datos integer, numeric y decimal Recuperar información acerca de la propiedad Identity Utilizar IDENT_SEED e IDENT_INCR para información de definición Utilizar @@identity para determinar el valor más reciente IDENTITY [ (seed , increment) ] CREATE TABLE Customer (CustID int IDENTITY(1,1), CustName char(30) NOT NULL) Usando AUTO_INCREMENT CREATE TABLE animals ( +----+---------+ id MEDIUMINT NOT NULL | id | name | AUTO_INCREMENT, +----+---------+ name CHAR(30) NOT NULL, | 1 | dog | PRIMARY KEY (id) | 2 | cat | ); | 3 | penguin | INSERT INTO animals (name) | 4 | lax | VALUES | 5 | whale | ('dog'),('cat'),('penguin'), ('lax'),('whale'),('ostrich’); | 6 | ostrich | +----+---------+ SELECT * FROM animals; Uso de la función NEWID y el tipo de datos uniqueidentifier Estas características se utilizan juntas Asegurar valores únicos globales Utilizar con la restricción DEFAULT CREATE TABLE Customer (CustID uniqueidentifier NOT NULL DEFAULT NEWID(), CustName char(30) NOT NULL) CustID CustName ------------------------------------ ------------------------------ F74E709D-DBDF-4007-AEF6-132989EBA5A0 Wartian Herkku FA6AE901-A306-44F5-A86E-CECE87505F1C Wellington Importadora 3A77CBF1-CCC5-4FF4-8E3D-40E4AA258F92 Cactus Comidas para Ilevar D14CB8BE-E92A-47AE-BF39-211374DFCA81 Ernst Handel 0B14C0BD-C80A-4B49-AAE0-7F47B674B843 Maison Dewey Agregar y quitar columnas AGREGAR ALTER TABLE CategoriesNew ADD Commission money null Customer_name Sales_amount Sales_date Customer ID Commission QUITAR ALTER TABLE CategoriesNew DROP COLUMN Sales_date Tipos de integridad de datos Integridad de dominio (columnas) Integridad de entidad (filas) Integridad referencial (entre tablas) 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 conjunto de atributos, que referencian a una clave primaria (o candidata) de otra tabla (o podría ser de la misma tabla). Utilizar CREATE TABLE o ALTER TABLE Puede agregar restricciones a una Creación de tabla con datos existentes restricciones Puede aplicar restricciones a una sola columna o a varias columnas Una sola columna, se llama restricción de columna Varias columnas, se llama restricción de tabla Consideraciones para el uso de restricciones Pueden cambiarse sin volver a crear una tabla Requieren comprobación de errores en aplicaciones y transacciones Comprueban los datos existentes Tipos de restricciones Restricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial 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. Restricciones DEFAULT Sólo se aplica a las instrucciones INSERT 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) USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName Restricciones CHECK Se utilizan con las instrucciones INSERT y UPDATE Pueden hacer referencia a otras columnas en la misma tabla No pueden contener subconsultas Puede haber varias por campo USE Northwind ALTER TABLE dbo.Employees ADD CONSTRAINT CK_birthdate CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate()) 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 USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT PK_Customers PRIMARY KEY (CustomerID) Restricciones UNIQUE Permite un valor nulo Permite varias restricciones UNIQUE en una tabla Definidas con una o más columnas Exigida con un índice único USE Northwind ALTER TABLE dbo.Suppliers ADD CONSTRAINT U_CompanyName UNIQUE (CompanyName) Restricciones FOREIGN KEY Deben hacer referencia a una restricción PRIMARY KEY o UNIQUE Proporcionan integridad referencial de una o de varias columnas No crean índices automáticamente Los usuarios deben tener permisos SELECT o REFERENCES en las tablas a las que se hace referencia Usa sólo la cláusula REFERENCES en la tabla de ejemplo USE Northwind ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES dbo.Customers(CustomerID) Integridad Referencial Restringir (NO ACTION) Cascada Default NULL FOREIGN KEY SQL Server MySQL FOREIGN KEY ( column [ ,...n FOREIGN KEY [index_name] ] ) (col_name,...) REFERENCES REFERENCES tbl_name referenced_table_name [ ( (col_name,...) ref_column [ ,...n ] ) ] [ON DELETE reference_option] [ ON DELETE { NO ACTION | [ON UPDATE reference_option] CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | reference_option: CASCADE | SET NULL | SET RESTRICT | CASCADE | SET NULL DEFAULT } ] | NO ACTION | SET DEFAULT Integridad referencial en cascada NINGUNA CASCADA Customers Customers ACCIÓN CustomerID (PK) CustomerID (PK) 1 1 INSERT new UPDATE CustomerID CustomerID CASCADA Orders CustomerID (FK) Orders 2 CustomerID (FK) UPDATE old CustomerID to new CustomerID Customers CustomerID (PK) 3 DELETE old CustomerID 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 USE Northwind ALTER TABLE dbo.Employees WITH NOCHECK ADD CONSTRAINT FK_Employees_Employees FOREIGN KEY (ReportsTo) REFERENCES dbo.Employees(EmployeeID) 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 Carga datos nuevos que no cumplen las restricciones USE Northwind ALTER TABLE dbo.Employees NOCHECK CONSTRAINT FK_Employees_Employees Northwind DER Diccionario de Datos CATEGORIES = @CategoryID + CategoryName + Description + Picture CUSTOMERDEMOGRAPHICS = @CustomerTypeID + CustomerDesc CUSTOMERS = @CustomerID + CompanyName + ContactName + ContactTitle + Address + City + Region + PostalCode + Country + Phone + Fax EMPLOYEES = @EmployeeID + LastName + FirstName + Title + TitleOfCourtesy + BirthDate + HireDate + Address + City + Region + PostalCode + Country + HomePhone + Extension + Photo + Notes + Photopath ORDER DETAILS = UnitPrice + Quantity + Discount ORDERS = @OrderID + OrderDate + RequiredDate + ShippedDate + Freight + ShipName + ShipAddress + ShipCity + ShipRegion + ShipPostalCode + ShipCountry PRODUCTS = @ProductID + ProductName + QuantityPerUnit + UnitPrice + UnitsInStock + UnitsOnOrder + ReorderLevel + Discontinued REGION = @RegionID + RegionDescription SHIPPERS = @ShipperID + CompanyName + Phone SUPPLIERS = @SupplierID + CompanyName + ContactName + ContactTitle + Address + City + Region + PostalCode + Country + Phone + Fax + HomePage TERRITORIES = @TerritoryID + TerritoryDescription DDL – CREATE TABLE La sintaxis básica es: CREATE TABLE < tabla > ( atributo1 dominio1 [NOT NULL],... , atributoN dominioN [NOT NULL]); DDL – DROP TABLE La sintaxis básica es: DROP TABLE [IF EXISTS] < tabla > DDL – ALTER TABLE La sintaxis básica para agregar un campo es: ALTER TABLE < tabla > ALTER COLUMN (atributo1 dominio1 [NOT NULL]...) ALTER TABLE < tabla > DROP COLUMN (atributo1) ALTER TABLE < tabla > ADD (atributo1 dominio1 [NOT NULL]...) ALTER TABLE < tabla > ADD/DROP (restricción...) DDL – ALTER TABLE - Restricciones [ CONSTRAINT nombre_restriccion ] { [ NULL | NOT NULL ] { PRIMARY KEY | UNIQUE } | [ FOREIGN KEY (columna/s)] REFERENCES [ esquema. ] tablareferenciada [ ( columnareferenciada/s ) ] [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] | CHECK ( expresión_logica ) } DDL – ALTER TABLE - Restricciones CREATE TABLE Person.ContactBackup (ContactID int) ; GO ALTER TABLE Person.ContactBackup ADD CONSTRAINT FK_ContactBackup_Contact FOREIGN KEY (ContactID) REFERENCES Person.Person (BusinessEntityID) ; GO ALTER TABLE Person.ContactBackup DROP CONSTRAINT FK_ContactBackup_Contact ; GO DROP TABLE Person.ContactBackup ; NULL y la lógica de tres valores OR Verdadero Falso Desconocido Verdadero Verdadero Verdadero Verdadero Falso Verdadero Falso Desconocido Desconocido Verdadero Desconocido Desconocido AND Verdadero Falso Desconocido Verdadero Verdadero Falso Desconocido Falso Falso Falso Desconocido Desconocido Desconocido Desconocido Desconocido NOT Verdadero Falso Falso Verdadero Desconocido Desconocido Comentarios -- # Ejemplo -- Comentario # Comentario ANSI Sí No No SQL Server Sí No Sí Oracle Sí No Sí MySQL Sí Sí Sí Los espacios en blanco y los saltos de línea son ignorados por los intérpretes SQL, así que se pueden utilizar libremente para darle mayor claridad y ESPACIOS EN legibilidad a las consultas. BLANCO Y EL PUNTO Y El indicador de finalización de una consulta es el punto y coma (;). En COMA algunas herramientas puede omitirse (como en el SQL Managment Studio), pero en otras es fundamental (como en SQLCMD). SENSIBILIDAD A MAYÚSCULAS Y MINÚSCULAS SQL no es case-sensitive, esto quiere decir que se pueden escribir las consultas indistintamente en mayúsculas o minúsculas. Sin embargo, es una práctica habitual utilizar los comandos y palabras reservadas en MAYÚSCULAS. Los nombres definidos por el usuario, como nombres de tablas y nombres de campos, pueden ser case-sensitive o no, dependiendo del sistema operativo utilizado y la configuración del sistema de gestión de base de datos. Recuperación de Datos Ejemplo DML SELECT * FROM Region; SELECCIONANDO TODAS LAS SELECT * COLUMNAS Y TODAS LAS FILAS FROM dbo.Region; SINTAXIS SELECT tabla.* SELECT Region.* FROM tabla; FROM Region; -- O SELECT * RegionID RegionDescription FROM tabla; ----------- ------------------------------------------------- - 1 Eastern 2 Western 3 Northern 4 Southern EJEMPLOS DML SELECCIONANDO COLUMNAS ESPECÍFICAS SELECT FirstName, LastName SINTAXIS FROM Employees; SELECT tabla.nombre_columna1, tabla.nombre_columna2 FirstName LastName FROM tabla; ---------- -------------------- -- O Nancy Davolio SELECT Andrew Fuller nombre_columna1, nombre_columna2 Janet Leverling Margaret Peacock FROM tabla; Steven Buchanan Michael Suyama Robert King Laura Callahan Anne Dodsworth EJEMPLO DML SELECT FirstName, LastName ORDENANDO REGISTROS FROM Employees Se utiliza la cláusula ORDER BY de la ORDER BY LastName; sentencia SELECT. ORDENANDO POR UNA COLUMNA FirstName LastName SINTAXIS ---------- -------------------- SELECT columna1, columna2 Steven Buchanan Laura Callahan FROM tabla Nancy Davolio ORDER BY columna1; Anne Dodsworth Andrew Fuller Robert King Janet Leverling Margaret Peacock Michael Suyama EJEMPLO DML SELECT Title, FirstName, LastName ORDENAR POR VARIAS COLUMNAS FROM Employees SINTAXIS ORDER BY Title, LastName; SELECT columna1, columna2 FROM tabla Title FirstName LastName ORDER BY columna1, columna2; ------------------------------ ---------- -------------------- Inside Sales Coordinator Laura Callahan Sales Manager Steven Buchanan Sales Representative Nancy Davolio Sales Representative Anne Dodsworth Sales Representative Robert King Sales Representative Janet Leverling Sales Representative Margaret Peacock Sales Representative Michael Suyama Vice President, Sales Andrew Fuller EJEMPLO DML ORDENAR POR POSICIÓN DE LA COLUMNA SINTAXIS SELECT Title, FirstName, LastName SELECT columna1, columna2 FROM Employees FROM tabla ORDER BY 1, 3; ORDER BY posicion_columna1, posicion_columna2; Title FirstName LastName ------------------------------ ---------- -------------------- Inside Sales Coordinator Laura Callahan Sales Manager Steven Buchanan Sales Representative Nancy Davolio Sales Representative Anne Dodsworth Sales Representative Robert King Sales Representative Janet Leverling Sales Representative Margaret Peacock Sales Representative Michael Suyama Vice President, Sales Andrew Fuller Ejemplo DML clave ASC. Para ordenar en orden descendente se utiliza DESC SELECT Title, FirstName, LastName SINTAXIS FROM Employees SELECT columna1, columna2 ORDER BY Title ASC, LastName FROM tabla DESC; ORDER BY posicion_columna1 DESC, Title FirstName LastName posicion_columna2 ASC; ------------------------------ Inside Sales Coordinator ---------- Laura -------------------- Callahan Sales Manager Steven Buchanan Sales Representative Michael Suyama Sales Representative Margaret Peacock Sales Representative Janet Leverling Sales Representative Robert King Sales Representative Anne Dodsworth Sales Representative Nancy Davolio Vice President, Sales Andrew Fuller Recuperación de datos Recuperar datos de tablas mediante la instrucción SELECT Filtrar los datos Dar formato al conjunto de resultados Como se procesan las consultas Como se ordenan La cláusula WHERE y los símbolos operadores La cláusula WHERE se utiliza para obtener filas específicas de la tabla. Puede contener una o más condiciones que especifican cuáles son las filas que deben ser devueltas. Sintaxis SELECT columna1, columna2 FROM tabla WHERE condiciones; Uso de los operadores de comparación = Igual a No Igual a > Mayor que < Menor que OPERADORES >= Mayor o igual que = 'N'; menor que FirstName LastName ---------- -------------------- Margaret Peacock Michael Suyama SELECT CustomerID, CompanyName, Region FROM Customers; SELECT CustomerID, CompanyName, Region FROM Customers WHERE Region = 'WA’; SELECT CustomerID, CompanyName, Region FROM Customers WHERE Region 'WA’; ¿Y los 60 que faltan? Se dice que un valor el nulo (NULL) cuando el campo no tiene un valor asignado. No es lo mismo que una cadena vacía. Lo que significa es que el Verificando campo no tiene ningún valor asignado. por NULL Para verificar si una columna tiene valor nulo no se utiliza el operador “=”, en su lugar se utiliza la expresión IS NULL. Verificando por NULL SELECT FirstName, LastName FROM Employees WHERE Region IS NULL; FirstName LastName ---------- -------------------- Steven Buchanan Michael Suyama Robert King Anne Dodsworth Verificando por NOT NULL SELECT FirstName, LastName FROM Employees WHERE Region IS NOT NULL; FirstName LastName ---------- -------------------- Nancy Davolio Andrew Fuller Janet Leverling Margaret Peacock Laura Callahan

Use Quizgecko on...
Browser
Browser