SQL: structured Query Language Paul Leger http://pleger.cl
El siguiente material es muy bueno para aprender SQL http://csrg.inf.utfsm.cl/~jfuentes/_build/html/
SQL Un lenguaje para interactuar con base de datos a través de motores de base de datos Un lenguaje de dominio especifico (DSL) Es posible insertar, consultar, borrar y modificar datos Es posible crear, borrar, modificar (alterar) esquemas de una base de datos
Traducción del AR a SQL AR lenguaje conceptual/teórico SQL lenguaje concreto (¡SQL No es el único!, ej. QBE, SchemeQL)
SQL2: Extensión de SQL SQL intenta ser una implementación concreta de Algebra Relacional Algebra Relacional no incluye la creación de tablas, agregar registros SQL-92 (1992): Agrega estos y otros componentes Las última revisión fue sacada SQL-2008
ADVERTENCIA: ¡Cada motor tienen sus versiones de SQL con sutiles diferencias!
Crear Tablas (DDL) CREATE TABLE Arrendatario( RUT_A INTEGER NOT NULL, Nombre VARCHAR(255), Apellido VARCHAR(255), PRIMARY KEY (RUT_A)) CREATE TABLE Casa( RUT INTEGER NOT NULL, Id_casa INTEGER NOT NULL, Numero INTEGER, Calle VARCHAR(255), Comuna VARCHAR(255), PRIMARY KEY (Id_casa), //pueden agregar otros campos FOREIGN KEY(RUT) REFERENCES Dueno (RUT_D)) //referencia a otra tabla con un campo
¡NOTA: Hay muchas maneras para crear tablas! Luego veremos esas
Insertar datos INSERT INTO nombre_tabla(atributo_1,...,atributo_n) VALUES (dato_1,...,dato_n) Insert into Dueno values(123,»Paul»,»Leger») NOTA: Si se insertan los datos en el orden que se encuentran definidos en la tablas, se pueden omitir la declaración de campos NOTA: Si hay campos que pueden ser nulos u pueden tener valores por defecto y uno no desea insertarlos, entonces debe explícitamente escribir que campos vamos a utilizar
Proyección / Select SELECT [distinct] [campos,*] from [TABLE] Ejemplos: Select * from Dueno Select Nombre, Apellido from Dueno Select distinct Nombre from Dueno
Renombrar Una relación: Un Atributo: Select D.Rut_D From Dueno as D Un Atributo: Select Rut_D as Rut From Dueno Relación con sus campos (¡¡No siempre soportado!!): Select Rut From Dueno AS D(Rut, Nombre, Apellido)
Selección Se «where» para llevar a cabo la operación de selección Select * from Dueno where Nombre = «Homero» NOTA: Es sensible a mayúsculas. Por ejemplo, «Homero» es diferente a «homero» Select Rut_D as Rut, nombre as prenom from dueno where prenom=«Homero» NOTA: puedes usar «prenom» o «nombre» en la consulta Select * from Arrienda where deuda > 0 Nota 1: puede user operadores de comparación (ej. or, and) Nota 2: «<>» es para distinto «!=«
Producto Cartesiano Select * from Arrienda, Casa Select * from Arrienda, Casa where Casa.id_casa = Arrienda.id_casa Select * from Arrienda As A, Casa as C where C.id_casa = A.id_casa
Natural Join Es similar al natural join visto en clases Select * from Dueno Natural Join Casa Select * from Dueno Natural Join Casa where numero = 409
¡Quedan otros!