Sie sind auf Seite 1von 27

SQL: Structured Query Language.

Base de Datos vberatto@ubiobio.cl

SQL: Strutured Query Language


Originalmente diseado por la IBM. Standar ANSI/ISO SQL:1999. SQL es el lenguaje ms usado en los DBMS relacionales y tiene varias funcionalidades:

Lenguaje de definicin (DDL):Este subconjunto del SQL sirve para crear, eliminar y modificar las definiciones de tablas y vistas. Lenguaje de manipulacin (DML): Este subconjunto del SQL sirve para realizar consultas, insertar, eliminar y modificar tuplas. Triggers y restricciones de integridad: Los triggers son acciones ejecutadas por el DBMS cuando ciertos cambios en la BD cumplen las condiciones especificadas en el trigger.

Definicin de Objetos

Definicin de Objetos

Se debe especificar nombre de la tabla, nombre de columnas y tipo de datos de las columnas. Especificar si las columnas permiten nulos. Sintaxis:

CREATE TABLE nombre_tabla ( nombre_columna_1 tipo_dato NOT NULL/NULL, nombre_columna_2 tipo_dato NOT NULL/NULL, ... nombre_columna_n tipo_dato NOT NULL/NULL, primary key (nombre_columna1,.., nombre_columna_n), foreign key (nombre_columna_i) references tabla_ref(atributo_ref))

Precauciones
Las primeras tablas que se crean son las que NO tienen claves forneas. Los atributos que son claves forneas deben mantener el dominio, es decir, tener el mismo tipo de dato. Para listar las tablas creadas SELECT tablename FROM pg_tables WHERE schemaname = 'public'

Tipos de Datos
Texto: char(n) o varchar (n), donde n es el largo de la cadena de caracteres. Nmero: integer, numeric (p,n), donde p es la precisin y n la escala Fecha: Date Hora: Time

Definicin de Objetos

Eliminacin: Al eliminar una tabla se remueve su definicin y todos sus datos. Sintaxis:
DROP TABLE nombre_tabla

Integridad de Datos

CHECK
Utilizado en Instrucciones INSERT y UPDATE Puede Referenciar otras columnas de la tabla
Ejemplo
ALTER TABLE alumno ADD CONSTRAINT ch_sexo CHECK (sexo IN (F,M))

Integridad de Datos

PRIMARY KEY
Slo una PRIMARY KEY por tabla compuesta por uno o varios atributos. Sus valores son nicos No se permiten valores nulos Crea un ndice nico en la columna especificada. Ejemplo
ALTER TABLE alumno ADD CONSTRAINT pk_rut PRIMARY KEY (rut)

Integridad de Datos

FOREIGN KEY
Debe referenciar una PRIMARY KEY Entrega una integridad referencial a una o mas columna Los usuarios deben tener permisos de SELECT a las tablas referenciadas
Ejemplo
ALTER TABLE alumno ADD CONSTRAINT fk_alumno_carrera FOREIGN KEY (carrera) REFERENCES carrera(cod_crr)

Definicin de Objetos

Agregar Columna

ALTER TABLE nombre_tabla ADD nombre_columna tipo_dato

Eliminar Columna

ALTER TABLE nombre_tabla DROP nombre_columna

Agregar Restriccin

ALTER TABLE nombre_tabla ADD CONSTRAINT nombre Definicin

Eliminar Restriccin

ALTER TABLE nombre_tabla DROP CONSTRAINT nombre

Manipulacin de Objetos
Consultas, Insercin, Modificacin y Eliminacin de Tuplas.

Insercin de Datos

Existen tres formas de insertar datos a una tablas Sin conocer el orden de los atributos.
INSERT INTO Tabla (COLUMNA_1,, COLUMNA_N) VALUES (Dato_1, , Dato_n)

Conociendo el orden de los atributos.


INSERT INTO Tabla VALUES (Dato_1, , Dato_n)

Modificacin de Datos

Sintaxis:

UPDATE nombre_tabla SET atributo_1 = valor1, ..., atributo_n = valorn WHERE condiciones de bsqueda condicion generalme es la clave primaria. Ej: rut = 16.852.156-0

Eliminacin de Datos

Sintaxis:

DELETE FROM nombre_tabla WHERE restriccin

FROM indica qu tabla ser modificada

Consultas

Una consulta bsica tiene la forma:

SELECT [DISTINCT|ALL] lista-seleccin FROM lista(tablas,vistas) WHERE condicin


DISTINCT|ALL son opsionales

Cada consulta debe tener una clusula SELECT y otra FROM, pero la clusula WHERE es opcional.

Consultas Bsicas
SELECT [DISTINCT|ALL] lista-seleccin FROM lista(tablas,vistas) WHERE condicin

En condicin se pueden encontrar los operadores de comparacin {=, <,<= ,>,>= , <> (distinto)}, que forman predicados built-in. Por ejemplo nombre=Juan o edad<=30

Consultas

Considerar el siguiente esquema


ID Nombre Apellido Edad

Alumno

1
2 3

Pedro
Juan Marta

Gmez
Muoz

46
25

Figueroa 34

Mario

Gonzlez 27

Consultas Bsicas

Para la unin de operadores built-in se utilizan conectores lgicos, AND (y) - OR (o).
SELECT NOMBRE, APELLIDO, EDAD
FROM ALUMNO WHERE EDAD>30 AND APELLIDO =GOMEZ

Nombre Pedro

Apellido Gmez

Edad 46

Consultas Bsicas
SELECT NOMBRE, APELLIDO, EDAD FROM ALUMNO WHERE EDAD>30 OR APELLIDO =GOMEZ

Nombre Apellido Edad Pedro Marta Gmez 46 Figueroa 34

Uso de Join

Para poder realizar consultas a ms de una tabla, se deben realizar una condicin donde se igualen las clave primaria de una de ellas y la clave fornea de la otra tabla.

SELECT columnas FROM tabla1, tabla2 WHERE tabla1.columna= tabla2.columna

Uso de Join
Si

se tiene el siguiente esquema:


Alumno (IdA, Nombre, Edad), Curso (IdC, Nombre, Profesor), Nota (IdA, IdC, Cal)

Si deseo conocer el nombre del curso y nombre del alumno de los curso que toma cada uno de los alumnos

SELECT Curso.Nombre , Alumno.Nombre FROM Curso, Alumno, Nota WHERE Curso.Idc=Nota.IdC AND Alumno.IdA =Nota.IdA

Operadores

IN: Forma una condicin donde se sabe que valores exactos se deben cumplir. Es decir verifica si un elemento esta en un conjunto dado, los que pueden ser valores o el resultado de una consulta

SELECT columnas FROM tablas WHERE nombre_columna IN (valor1,.. , valorn) SELECT Nombre, Apellido, Edad FROM ALUMNO WHERE Nombre IN (Pedro,Mario);

Operadores

BETWEEN: Permite seleccionar un conjunto de datos de acuerdo a un determinado rango

SELECT columnas FROM tablas WHERE nombre_columna BETWEEN valor1 AND valor2
SELECT Nombre, Apellido, Edad FROM ALUMNO WHERE Edad BETWEEN 20 AND 35;

Operadores

LIKE: Permite hacer una bsqueda basada en un patrn. Un _ representa un carcter y % n-caracteres.

SELECT columnas FROM tablas WHERE nombre_columna LIKE (patron)


SELECT Nombre, Apellido, Edad FROM ALUMNO WHERE Nombre LIKE (%am%);

Consultas con Agregacin

SQL soporta cinco operaciones de agregacin:


COUNT([DISTINCT] A): Entrega el nmero de valores (si se utiliza DISTINCT valores nicos) que tiene la columna A.
SUM([DISTINCT] A): Entrega la suma de todos los valores (si se utiliza DISTINCT valores nicos) que tiene la columna A. AVG([DISTINCT] A): Entrega el promedio de todos los valores (si se utiliza DISTINCT valores nicos) que tiene la columna A. MIN([DISTINCT] A): Entrega el valor mnimo de todos los valores que tiene la columna A. MAX([DISTINCT] A): Entrega el valor mximo de todos los valores que tiene la columna A.

Consulta con Agregacin

Sintaxis

SELECT [DISTINCT|ALL] lista-seleccin, agregacin FROM lista(tablas,vistas) WHERE condicin GROUP BY lista-seleccin HAVING condicin de agregacin
SELECT AVG(Edad) as Promedio_Edad FROM ALUMNO; SELECT Nombre_Asig, Count(*) as Promedio_Edad FROM ALUMNO A,CURSA C, ASIGNATURA AS WHERE A.RUT=C.RUT AND AS.COD_AS=C.COD_AS GROUP BY Nombre_Asig HAVING count(*)> 2;

Das könnte Ihnen auch gefallen