Sentencias Select

11

Click here to load reader

Transcript of Sentencias Select

Page 1: Sentencias Select

Erik SacreBases de Datos

MANIPULACION DE DATOS

• En una Base de Datos Relacional, los datos se manipulan con las siguientes sentencias:

• Insert: Permite insertar registros o tuplas

• Delete: Permite eliminar registros o tuplas

• Update: Permite modificar registros o tuplas

• Select: Permite consultar registros o tuplas.

Page 2: Sentencias Select

Erik SacreBases de Datos

Sentencia SELECT

• Es la sentencia nativa de SQL para recuperar datos de una base de datos relacional. Es una sentencia muy poderosa y depende su efectividad de una correcta definición de las tablas de la Base de Datos.

Page 3: Sentencias Select

Erik SacreBases de Datos

SELECT

Sentencia “SELECT” ResultadoTable_2

T2_a1T2_a2

<pk>

Table_3

T3_a1T3_a2

<pk>

Table_1

T1_a1T1_a2

<pk>

T1_a1

T3_a2

T2_a2

Page 4: Sentencias Select

Erik SacreBases de Datos

Algunas propiedades

(Proyección): Permite escoger algunas columnas de la tabla indicada. Se eliminan las tuplas duplicadas. El resultado tiene k columnas.

(Selección): Permite seleccionar sólo algunas filas de una tabla; c es una expresión (condición).

k1 a,..,a

)R(

)R(c

Page 5: Sentencias Select

Erik SacreBases de Datos

Aplicación de SELECTA_C

TenerCorresponder

ALUMNOS

ALU_CODIGOALU_NOMBRE

<pi> Characters (10)Variable characters (20)

<M><M>

Identifier_1 <pi>

CARRERAS

CAR_CODIGOCAR_NOMBRE

<pi> Characters (5)Variable characters (25)

<M><M>

Identifier_1 <pi>

FK_ALUMNOS_RELATIONS_CARRERAS

Corresponder

Tener

ALUMNOS

ALU_CODIGOALU_CARALU_NOMBRE

CHAR(10)CHAR(5)VARCHAR2(20)

<pk><fk>

CARRERAS

CAR_CODIGOCAR_NOMBRE

CHAR(5)VARCHAR2(25)

<pk>

CARRERASCar_codigo Car_Nombre

101 Civil102 Ejecución301 Comercial302 Educación

ALUMNOSAlu_Codigo Alu_Nombre Alu_Car

1 Pedro 1012 Juan 3013 Diego 1024 María 1025 Carla 302

Page 6: Sentencias Select

Erik SacreBases de Datos

Create Table del ejemplocreate table ALUMNOS ( ALU_CODIGO CHAR(10) not null, ALU_CAR CHAR(5) not null, ALU_NOMBRE VARCHAR2(20) not null, constraint PK_ALUMNOS primary key (ALU_CODIGO));create table CARRERAS ( CAR_CODIGO CHAR(5) not null, CAR_NOMBRE VARCHAR2(25) not null, constraint PK_CARRERAS primary key (CAR_CODIGO));alter table ALUMNOS add constraint FK_ALUMNOS_RELATIONS_CARRERAS foreign

key (ALU_CAR) references CARRERAS (CAR_CODIGO);

Page 7: Sentencias Select

Erik SacreBases de Datos

Sentencia Básica SELECT

SELECT <Campos a desplegar>FROM <Tablas involucradas>WHERE <Condición de enlace de tablas y criterio de selección>GROUP BY <Criterio de agrupación>HAVING <Criterio de selección de los resultados del Select>ORDER BY <Criterio de orden de los resultados>;

nombre

alumnos

Rut_alumno = ’11.123.234-K’

No corresponde, Rut = PK

No corresponde, Rut = PK

No corresponde, Rut = PK

Page 8: Sentencias Select

Erik SacreBases de Datos

Sentencia Básica SELECT

SELECT <Campos a desplegar>FROM <Tablas involucradas>WHERE <Condición de enlace de tablas y criterio de selección>GROUP BY <Criterio de agrupación>HAVING <Criterio de selección de los resultados del Select>ORDER BY <Criterio de orden de los resultados>;

Edad, count(*) as cantidad

alumnos

Edad > 18 and edad <21

edad

Cantidad > 1

edad

Page 9: Sentencias Select

Erik SacreBases de Datos

CARRERASCar_codigo Car_Nombre

101 Civil102 Ejecución301 Comercial302 Educación

ALUMNOSAlu_Codigo Alu_Nombre Alu_Car

1 Pedro 1012 Juan 3013 Diego 1024 María 1025 Carla 302

Query1Alu_Nombre Car_NombrePedro CivilJuan ComercialDiego EjecuciónMaría EjecuciónCarla Educación

EJEMPLO GRAFICO 1

Tablas

SELECT ...

RESULTADO

SELECT Carreras.Car_Nombre, Alumnos.Alu_NombreFROM Carreras, AlumnosWHERE Carreras.Car_Codigo = Alumnos.Alu_Car

Page 10: Sentencias Select

Erik SacreBases de Datos

Query2Car_Nombre CantidadCivil 1Comercial 1Educación 1Ejecución 2

CARRERASCar_codigo Car_Nombre

101 Civil102 Ejecución301 Comercial302 Educación

ALUMNOSAlu_Codigo Alu_Nombre Alu_Car

1 Pedro 1012 Juan 3013 Diego 1024 María 1025 Carla 302

Tablas

SELECT ...SELECT Carreras.Car_Nombre, Count(*) as CantidadFROM Carreras, AlumnosWHERE Carreras.Car_Codigo = Alumnos.Alu_CarGROUP BY Carreras.Car_NombreORDER BY Carreras.Car_Nombre;

EJEMPLO GRAFICO 2

Page 11: Sentencias Select

Erik SacreBases de Datos

Consideraciones

• Para referenciar a todos los registros de una tabla, se usa el símbolo *.

• Para referenciar un campo de una tabla se usa la sintáxis: tabla.campo (ejemplo: alumnos.rut).

• Para recopilar datos provenientes de dos o más tablas, no necesariamente debe existir una relación entre las tablas.