Ayudantía de base de datos.
Consultas a la Base de Datos
La sentencia select es usada para consultar la base de datos y recibir los datos
seleccionados que se igualan al criterio que usted haya especificado. He aquí el formato
de una instrucción simple de selección:
select "columna1"[,"columna2",etc] from "Nombre_Tabla"
[where "condición"];
[] = opcional
*El nombre de la Columna que sigue a la palabra clave Select determina qué columnas
serán retornadas en los resultados. Se puede seleccionar tantos Nombres de columna
como quiera, o puede usar un "*" para seleccionar todas las columnas.
*El Nombre_Tabla que sigue a la palabra clave from especifica la tabla que será
consultada para recuperar los resultados deseados.
*La cláusula where (opcional) especifica qué valores de datos o filas serán retornados o
desplegados, basado en el criterio descrito después de la palabra clave where.
Las selecciones condicionales usadas en la cláusula where son:
= Igual
> Mayor que
< Menor que
>= Mayor o igual a
<= Menor o igual a
<> No igual a (Distinto de)
LIKE *Vea la nota siguiente
• El operador de emparejado de patrones LIKE también puede ser usado en
selecciones condicionales con cláusula Where. Like es un operador muy poderoso
que le premite seleccionar sólo las filas que son "tal como" las que usted especificó. El
símbolo porcentaje "%" puede ser usado como un comodín para igualar algún posible
carácter que pueda aparecer después o antes de los caracteres especificados. Por
ejemplo:
Ayudantía de base de datos.
select first, last, city
from empinfo
where first LIKE 'Er%';
La sentencia SQL igualará cualquier nombre inicial (first name) que comience con 'Er'.
Las cadenas sólo deberán incluir comilla simple (p.e.:'Hola').
Otro Ejemplo:
select first, last
from empinfo
where last LIKE '%s';
Esta sentencia igualará cualquier apellido (last name) que finalice en 's'.
select * from empinfo
where first = 'Eric';
Esto sólo seleccionará las filas donde el primer nombre (firt name) sea exactamente igual
a 'Eric'.
Contenido de las Tablas Students y Courses
Tabla STUDENTS
SQL> select * from students;
STUDENTI
D
NAME MAJOR GPA TUTORID
102 Mary CIS 3,1
103 Sue Marketing 2,95 102
104 Tom Finance 3,5 106
105 Alex CIS 2,75 106
106 Sam Marketing 3,25 103
107 Jane Finance 2,9 102
101 Bill CIS 3,45 102
Ayudantía de base de datos.
Tabla COURSES
SQL> select * from courses;
STUDENTID COURSENUMBER COURSENAME SEMESTER YEAR GR
101 CIS3400 DBMS I FALL 1997 B+
101 CIS3100 OOP I SPRING 1999 A-
101 MKT3000 Marketing FALL 1997 A
102 CIS3400 DBMS I SPRING 1997 A-
102 CIS3500 Network I SUMMER 1997 B
102 CIS4500 Network II FALL 1997 B+
103 MKT3100 Advertizing SPRING 1998 A
103 MKT3000 Marketing FALL 1997 A
Ayudantía de base de datos.
Remueva filas duplicadas, antes que los resultados de
la sentencia de selección los retorne, con DISTINCT.
Sintaxis
Selelect DISTINCT columna1[,columna2, columna3, ...]
From Tabla;
Ejemplo
Select DISTINCT CourseName
From courses;
Resultado:
coursename
Advertizing
DBMS I
Marketing
Marketing II
Network I
Network II
OOP I
Si se da cuenta, sólo han aparecido una vez los nombres y no el listado completo que los
incluye n veces y además desordenados.
Definición de Alias o cabeceras de columnas sustitutas,
en una sentencia Select
Ejemplo:
Select DISTINCT CourseName "Nombre Curso"
From Courses;
Resultado:
Nombre Curso
Advertizing
DBMS I
Marketing
Marketing II
Network I
Network II
Ayudantía de base de datos.
OOP I
Ayudantía de base de datos.
Uso de la Cláusula WHERE y
sus operadores
Operadores de Comparación
Operador Descripción
= Igual a
!= <> ^= No igual a
> Mayor que
>= Mayor o Igual que
< Menor que
<= Menor o Igual que
Between... And... Entre dos valores
IN(lista) Igual a algún elemento de la
siguiente lista
IS NULL Es el valor NULL
LIKE Iguala un patrón de caracteres
usando caracteres comodines
Ejemplos
Select CourseName
from Courses
where Year <= 1997;
Resultado
CourseName
DBMS I
Marketing
DBMS I
Network I
Network II
Marketing
Select Name
from Students
where StudentID=101;
Ayudantía de base de datos.
Resultado
studentID name major gpa tutorID
101 Bill CIS 3.45 102
Select StudentID, Coursename
from courses
where semester <> 'FALL';
Resultado
StudentID Coursename
101 OOP I
102 DBMS I
102 Network I
103 Advertizing
103 Marketing II
Uso de Between... And...
Ejemplo
SELECT StudentID, Coursename
FROM courses
WHERE StudentID BETWEEN 101 and 102;
Resultado
StudentID Coursename
101 DBMS I
101 OOP I
101 Marketing
102 DBMS I
102 Network I
102 Network II
Antes de continuar, vamos a agregar la columna BirthDate a la tabla Students, para
almacenar la fecha de nacimiento de nuestros estudiantes.
Alter table Students
Add (BirthDate DATE)
Ayudantía de base de datos.
Luego agregamos los datos:
Update Students Set birthDate = TO_DATE('14-11-1960', 'DD-MM-YYYY')
Where StudentID = 101;
Update Students Set birthDate = TO_DATE('20-10-1964', 'DD-MM-YYYY')
Where StudentID = 102;
Update Students Set birthDate = TO_DATE('16-04-1970', 'DD-MM-YYYY')
Where StudentID = 103;
Update Students Set birthDate = TO_DATE('28-02-1969', 'DD-MM-YYYY')
Where StudentID = 104;
Update Students Set birthDate = TO_DATE('23-05-1975', 'DD-MM-YYYY')
Where StudentID = 105;
Update Students Set birthDate = TO_DATE('18-01-1977', 'DD-MM-YYYY')
Where StudentID = 106;
Update Students Set birthDate = TO_DATE('25-12-1967', 'DD-MM-YYYY')
Where StudentID = 107;
Un ejemplo clásico de selección utilizando la cláusula BETWEEN... AND... es para buscar
tuplas que están entre determindas fechas. Por ejemplo:
Select Name, Major
from Students
Where BirthDate Between '01-01-1965' And '31-12-1975';
Resultado
Name Major
Sue Marketing
Tom Finance
Alex CIS
Jane Finance
Uso del Operador IN
Ejemplo
Select *
from Students
Where StudentID IN (101, 102);
Resultado
studentID name major gpa TutorID BirthDate
Ayudantía de base de datos.
101 Bill CIS 3.45 102 14/11/60
102 Mary CIS 3.1 20/10/64
Seleccionar información usando caracteres
comodines con el operador LIKE
Caracteres comodines
% iguala algún número de caracteres
_ iguala un único carácter
Ejemplos:
Select StudentID, Name
from Students
Where Name Like 'S%';
Resultado:
StudentID Name
103 Sue
106 Sam
Select StudentID, Name
from Students
Where Name Like '%a%';
Resultado
StudentID Name
102 Mary
105 Alex
106 Sam
107 Jane
Select StudentID, Name
from Students
Where StudentID Like '10_';
Ayudantía de base de datos.
Resultado
StudentID Name
101 Bill
102 Mary
103 Sue
104 Tom
105 Alex
106 Sam
107 Jane
Operador NOT se puede usar para anteponerlo antes de los operadores antes
mencionados para invertir el resultado de una consulta.
Utilizando Operador NOT
Select StudentID, Name
from Students
Where Name NOT Like '%a%';
Resultado
StudentID Name
101 Bill
103 Sue
104 Tom
Sin Operador NOT
Select StudentID, Name
from Students
Where Name Like '%a%';
Resultado
StudentID Name
102 Mary
105 Alex
106 Sam
107 Jane
Ayudantía de base de datos.
Cláusula ORDER BY
Ejemplo:
Select *
From Students
Order by BirthDate;
Resultado
studentID name major gpa tutorID BirthDate
101 Bill CIS 3.45 102 14/11/1960
102 Mary CIS 3.1 20/10/1964
107 Jane Finance 2.9 102 25/12/1967
104 Tom Finance 3.5 106 28/02/1969
103 Sue Marketing 2.95 102 16/04/1970
105 Alex CIS 2.75 106 23/05/1975
106 Sam Marketing 3.25 103 18/01/1977
El resultado por defecto es ordenado en forma Ascendente. (De Menor a Mayor)
En orden Descendente (de mayor a menor) se realiza con la siguiente instrucción:
Select *
From Students
Order by BirthDate DESC;
Resultado
studentID name major gpa tutorID BirthDate
106 Sam Marketing 3.25 103 18/01/1977
105 Alex CIS 2.75 106 23/05/1975
103 Sue Marketing 2.95 102 16/04/1970
104 Tom Finance 3.5 106 28/02/1969
107 Jane Finance 2.9 102 25/12/1967
102 Mary CIS 3.1 20/10/1964
101 Bill CIS 3.45 102 14/11/1960
Ayudantía de base de datos.
Operadores Lógicos utilizados
comúnmente en consultas
AND
OR
NOT
Operadores Aritméticos
para consultas
+
-
*
/
Funciones Utilizadas
NVL: Convierte un valor NULO en otro NO NULO para propósitos de realizar cálculos con
campos que puedan tener valores NULOS.
Sintaxis:
NVL(expr1, expr2)
NVL evalúa expr1, si es NOT NULL se retorna dicha expresión, en caso contrario se
retorna el valor contenido en expr2.
Ejemplo de Uso:
Select NombreEmpleado, Cargo, Sueldo, Comision, NVL (SUELDO, 0) +
NVL(Comision, 0)
From Empleados
Where NumDepto = 30;
NombreEmpleado Cargo Sueldo Comision NVL(Sueldo,0) +
NVL(Comision,0)
ALLEN VENDEDOR 1600 300 1900
WARD VENDEDOR 1250 500 1750
Ayudantía de base de datos.
JONES VENDEDOR 2975 2975
MARTIN VENDEDOR 1250 1400 2650
BLAKE ADMINISTRATIVO 2850 2850
SCOTT VENDEDOR 3150 3150
TURNER VENDEDOR 1500 0 1500
Ayudantía de base de datos.
Funciones Numéricas
Función Ejemplo Resultado
MOD MOD(7,5) El resto de dividir 7 en 5, o
sea 2
SQRT SQRT(25) Raíz Cuadrada de 25, es
decir 5
ROUND ROUND(SUELDO, 2) Se redondea la Columna
SUELDO en el digito 2.
Ejemplo ROUND(3.25, 1) da
como resultado 3.3
TRUNC TRUNC(SUELDO, 2) Se trunca SUELDO en el
dígito 2 después de la coma.
Ejemplo, TRUNC(3.25,1) da
como resultado 3.2
POWER POWER(SUELDO,3) Sueldo al Cubo
Más Funciones en SQL
SUM
Se utiliza para realizar una sumatoria sobre una cierta columna determinada dentro de
una instrucción como SELECT.
Sintaxis
SUM([DISTINCT|ALL] n)
Ejemplo
SELECT SUM(sueldo) "Total"
FROM empleados
Resultado
Total
----------
29081
Ayudantía de base de datos.
AVG
Se utiliza para obtener el promedio (AVERAGE) sobre una determinada columna dentro
de una instrucción como SELECT.
Sintaxis
AVG([DISTINCT|ALL] n)
Ejemplo
SELECT AVG(sueldo) "Sueldo Promedio"
FROM empleados;
Resultado:
Sueldo Promedio
------------------
2077.21429
COUNT
Permite realizar el conteo de filas resultantes en una consulta.
Sintaxis
COUNT({* | [DISTINCT|ALL] expr})
Ejemplos
SELECT COUNT(*) "Total"
FROM empleados
Resultado:
Total
----------
18
SELECT COUNT(Trabajo) "Cuantos Empleados"
FROM empleados;
Resultado:
Ayudantía de base de datos.
Cuantos Empleados
------------------
14
SELECT COUNT(DISTINCT Trabajo) "Trabajos"
FROM empleados;
Resultado:
Trabajos
----------------
5
INITCAP
Regresa la primera letra del parámetro en mayúscula y el resto de la palabra en
minúsculas.
Sintaxis
INITCAP (expr)
Ejemplo
SELECT INITCAP(nombre_empl) "Nombre Empleado", trabajo
FROM empleados;
Resultado:
Nombre Empleado Trabajo
----------------------------------------------
Juan administrativo
UPPER
Retorna el contenido del parámetro con todas sus letras en Mayúscula.
Sintaxis
UPPER(expr)
Ayudantía de base de datos.
Ejemplo
SELECT UPPER(nombre_empl) "Nombre Empleado", UPPER (trabajo)
FROM empleados;
Resultado:
Nombre Empleado Trabajo
-------------------------------------------------------
JUAN ADMINISTRATIVO
LOWER
Retorna todos los caracteres de una cadena en minúscula.
Sintaxis
LOWER(expr)
Ejemplo
SELECT LOWER(nombre_empl) "Nombre Empleado", LOWER (trabajo)
FROM empleados;
Resultado:
Nombre Empleado Trabajo
----------------------------------------------
juan administrativo
Ayudantía de base de datos.
SUBSTR
Retorna una subcadena indicada por un carácter de inicio y la cantidad de caracteres que
se copiarán a partir de dicho carácter. En pocas palabras trabaja como la función COPY
de PASCAL o la instrucción MID de VISUAL BASIC.
Sintaxis
SUBSTR(cadena, carácter_inicio, cuántos_se_copian)
Ejemplo
SELECT INITCAP(nombre_empl) "Nombre Empleado",
SUBSTR(INITCAP(trabajo),1,5)
FROM empleados;
Resultado:
Nombre Empleado Trabajo
----------------------------------------------
Juan Admin
LENGTH
Entrega el número de caracteres de una cadena. Funciona tal como lo hace LENGTH de
PASCAL, STRLEN de C o LEN de VISUAL BASIC.
Ejemplo
SELECT LENGTH(nombre_empl) "Numero de Caracteres"
FROM empleados;
Resultado:
Numero de Caracteres
--------------------
4
CLAUSULA GROUP BY
La cláusula GROUP BY se utiliza dentro de instrucciones SELECT y permite realizar
agrupamientos, generalmente con cálculos.
Ejemplo:
Se quiere saber cuántos empleados trabajan en cada departamento de la empresa.
Ayudantía de base de datos.
SELECT Depto, COUNT(*) "Numero de Trabajadores"
FROM EMPLEADOS
GROUP By Depto;
Ayudantía de base de datos.
Resultado:
DEPTO NUMERO DE TRABAJADORES
-------------------------------------------------------------
101 3
102 15
450 13
Ejemplo:
Se quiere conocer el promedio de notas por alumno de la carrera de COMPUTACION.
Esta es toda la tabla:
Nombre NOTA Carrera
-------------------- --------- --------------------
CLAUDIO 5 Computacion
CLAUDIO 4 Computacion
CLAUDIO 6 Computacion
ANDREA 6 Computacion
ANDREA 3 Computacion
ANDREA 7 Computacion
Esta la instrucción de selección:
SELECT SUBSTR(nombre,1,20) "Alumno" , avg(nota) "Promedio"
FROM notas
GROUP BY nombre;
y el siguiente el resultado:
Alumno Promedio
-------------------- ---------
ANDREA 5,3333333
CLAUDIO 5
CLAUSULA HAVING
La cláusula Having sirve para condicionar consultas que utilizan GROUP BY.
Por ejemplo, supongamos que queremos saber el promedio anual del sueldo para todas
los cargos en los cuales hay más de dos empleados.
Ayudantía de base de datos.
SELECT cargo, 12*AVG(sueldo)
FROM empleados
GROUP BY cargo
HAVING COUNT(*) > 2;
Ayudantía de base de datos.
Resultado:
Cargo 12 * AVG(sueldo)
------------------------ -----------------------------
SECRETARIA 124500
VENDEDOR 234500
Dentro de este Tipo de consultas se puede condicionar algunas operaciones como la
sumatoria o incluso el promedio.
Ejemplo:
SELECT NumDEPTO, SUM(sueldo)
FROM empleados
WHERE cargo <> ‘SECRETARIA’
GROUP BY NumDEPTO
HAVING SUM(sueldo) > 80000
ORDER BY SUM(sueldo);
SECUENCIAS
Las secuencias se utilizan para generar números sucesivos. Su uso más común es con
las claves primarias o foráneas cuyos valores requieren ser generados en sucesión y
automáticamente. El caso más común es el tipo de dato AUTONUMERICO de ACCESS.
EJEMPLO:
CREATE SEQUENCE seq_nota
INCREMENT BY 1
START 1;

Trabajando con sql (parte 2)

  • 1.
    Ayudantía de basede datos. Consultas a la Base de Datos La sentencia select es usada para consultar la base de datos y recibir los datos seleccionados que se igualan al criterio que usted haya especificado. He aquí el formato de una instrucción simple de selección: select "columna1"[,"columna2",etc] from "Nombre_Tabla" [where "condición"]; [] = opcional *El nombre de la Columna que sigue a la palabra clave Select determina qué columnas serán retornadas en los resultados. Se puede seleccionar tantos Nombres de columna como quiera, o puede usar un "*" para seleccionar todas las columnas. *El Nombre_Tabla que sigue a la palabra clave from especifica la tabla que será consultada para recuperar los resultados deseados. *La cláusula where (opcional) especifica qué valores de datos o filas serán retornados o desplegados, basado en el criterio descrito después de la palabra clave where. Las selecciones condicionales usadas en la cláusula where son: = Igual > Mayor que < Menor que >= Mayor o igual a <= Menor o igual a <> No igual a (Distinto de) LIKE *Vea la nota siguiente • El operador de emparejado de patrones LIKE también puede ser usado en selecciones condicionales con cláusula Where. Like es un operador muy poderoso que le premite seleccionar sólo las filas que son "tal como" las que usted especificó. El símbolo porcentaje "%" puede ser usado como un comodín para igualar algún posible carácter que pueda aparecer después o antes de los caracteres especificados. Por ejemplo:
  • 2.
    Ayudantía de basede datos. select first, last, city from empinfo where first LIKE 'Er%'; La sentencia SQL igualará cualquier nombre inicial (first name) que comience con 'Er'. Las cadenas sólo deberán incluir comilla simple (p.e.:'Hola'). Otro Ejemplo: select first, last from empinfo where last LIKE '%s'; Esta sentencia igualará cualquier apellido (last name) que finalice en 's'. select * from empinfo where first = 'Eric'; Esto sólo seleccionará las filas donde el primer nombre (firt name) sea exactamente igual a 'Eric'. Contenido de las Tablas Students y Courses Tabla STUDENTS SQL> select * from students; STUDENTI D NAME MAJOR GPA TUTORID 102 Mary CIS 3,1 103 Sue Marketing 2,95 102 104 Tom Finance 3,5 106 105 Alex CIS 2,75 106 106 Sam Marketing 3,25 103 107 Jane Finance 2,9 102 101 Bill CIS 3,45 102
  • 3.
    Ayudantía de basede datos. Tabla COURSES SQL> select * from courses; STUDENTID COURSENUMBER COURSENAME SEMESTER YEAR GR 101 CIS3400 DBMS I FALL 1997 B+ 101 CIS3100 OOP I SPRING 1999 A- 101 MKT3000 Marketing FALL 1997 A 102 CIS3400 DBMS I SPRING 1997 A- 102 CIS3500 Network I SUMMER 1997 B 102 CIS4500 Network II FALL 1997 B+ 103 MKT3100 Advertizing SPRING 1998 A 103 MKT3000 Marketing FALL 1997 A
  • 4.
    Ayudantía de basede datos. Remueva filas duplicadas, antes que los resultados de la sentencia de selección los retorne, con DISTINCT. Sintaxis Selelect DISTINCT columna1[,columna2, columna3, ...] From Tabla; Ejemplo Select DISTINCT CourseName From courses; Resultado: coursename Advertizing DBMS I Marketing Marketing II Network I Network II OOP I Si se da cuenta, sólo han aparecido una vez los nombres y no el listado completo que los incluye n veces y además desordenados. Definición de Alias o cabeceras de columnas sustitutas, en una sentencia Select Ejemplo: Select DISTINCT CourseName "Nombre Curso" From Courses; Resultado: Nombre Curso Advertizing DBMS I Marketing Marketing II Network I Network II
  • 5.
    Ayudantía de basede datos. OOP I
  • 6.
    Ayudantía de basede datos. Uso de la Cláusula WHERE y sus operadores Operadores de Comparación Operador Descripción = Igual a != <> ^= No igual a > Mayor que >= Mayor o Igual que < Menor que <= Menor o Igual que Between... And... Entre dos valores IN(lista) Igual a algún elemento de la siguiente lista IS NULL Es el valor NULL LIKE Iguala un patrón de caracteres usando caracteres comodines Ejemplos Select CourseName from Courses where Year <= 1997; Resultado CourseName DBMS I Marketing DBMS I Network I Network II Marketing Select Name from Students where StudentID=101;
  • 7.
    Ayudantía de basede datos. Resultado studentID name major gpa tutorID 101 Bill CIS 3.45 102 Select StudentID, Coursename from courses where semester <> 'FALL'; Resultado StudentID Coursename 101 OOP I 102 DBMS I 102 Network I 103 Advertizing 103 Marketing II Uso de Between... And... Ejemplo SELECT StudentID, Coursename FROM courses WHERE StudentID BETWEEN 101 and 102; Resultado StudentID Coursename 101 DBMS I 101 OOP I 101 Marketing 102 DBMS I 102 Network I 102 Network II Antes de continuar, vamos a agregar la columna BirthDate a la tabla Students, para almacenar la fecha de nacimiento de nuestros estudiantes. Alter table Students Add (BirthDate DATE)
  • 8.
    Ayudantía de basede datos. Luego agregamos los datos: Update Students Set birthDate = TO_DATE('14-11-1960', 'DD-MM-YYYY') Where StudentID = 101; Update Students Set birthDate = TO_DATE('20-10-1964', 'DD-MM-YYYY') Where StudentID = 102; Update Students Set birthDate = TO_DATE('16-04-1970', 'DD-MM-YYYY') Where StudentID = 103; Update Students Set birthDate = TO_DATE('28-02-1969', 'DD-MM-YYYY') Where StudentID = 104; Update Students Set birthDate = TO_DATE('23-05-1975', 'DD-MM-YYYY') Where StudentID = 105; Update Students Set birthDate = TO_DATE('18-01-1977', 'DD-MM-YYYY') Where StudentID = 106; Update Students Set birthDate = TO_DATE('25-12-1967', 'DD-MM-YYYY') Where StudentID = 107; Un ejemplo clásico de selección utilizando la cláusula BETWEEN... AND... es para buscar tuplas que están entre determindas fechas. Por ejemplo: Select Name, Major from Students Where BirthDate Between '01-01-1965' And '31-12-1975'; Resultado Name Major Sue Marketing Tom Finance Alex CIS Jane Finance Uso del Operador IN Ejemplo Select * from Students Where StudentID IN (101, 102); Resultado studentID name major gpa TutorID BirthDate
  • 9.
    Ayudantía de basede datos. 101 Bill CIS 3.45 102 14/11/60 102 Mary CIS 3.1 20/10/64 Seleccionar información usando caracteres comodines con el operador LIKE Caracteres comodines % iguala algún número de caracteres _ iguala un único carácter Ejemplos: Select StudentID, Name from Students Where Name Like 'S%'; Resultado: StudentID Name 103 Sue 106 Sam Select StudentID, Name from Students Where Name Like '%a%'; Resultado StudentID Name 102 Mary 105 Alex 106 Sam 107 Jane Select StudentID, Name from Students Where StudentID Like '10_';
  • 10.
    Ayudantía de basede datos. Resultado StudentID Name 101 Bill 102 Mary 103 Sue 104 Tom 105 Alex 106 Sam 107 Jane Operador NOT se puede usar para anteponerlo antes de los operadores antes mencionados para invertir el resultado de una consulta. Utilizando Operador NOT Select StudentID, Name from Students Where Name NOT Like '%a%'; Resultado StudentID Name 101 Bill 103 Sue 104 Tom Sin Operador NOT Select StudentID, Name from Students Where Name Like '%a%'; Resultado StudentID Name 102 Mary 105 Alex 106 Sam 107 Jane
  • 11.
    Ayudantía de basede datos. Cláusula ORDER BY Ejemplo: Select * From Students Order by BirthDate; Resultado studentID name major gpa tutorID BirthDate 101 Bill CIS 3.45 102 14/11/1960 102 Mary CIS 3.1 20/10/1964 107 Jane Finance 2.9 102 25/12/1967 104 Tom Finance 3.5 106 28/02/1969 103 Sue Marketing 2.95 102 16/04/1970 105 Alex CIS 2.75 106 23/05/1975 106 Sam Marketing 3.25 103 18/01/1977 El resultado por defecto es ordenado en forma Ascendente. (De Menor a Mayor) En orden Descendente (de mayor a menor) se realiza con la siguiente instrucción: Select * From Students Order by BirthDate DESC; Resultado studentID name major gpa tutorID BirthDate 106 Sam Marketing 3.25 103 18/01/1977 105 Alex CIS 2.75 106 23/05/1975 103 Sue Marketing 2.95 102 16/04/1970 104 Tom Finance 3.5 106 28/02/1969 107 Jane Finance 2.9 102 25/12/1967 102 Mary CIS 3.1 20/10/1964 101 Bill CIS 3.45 102 14/11/1960
  • 12.
    Ayudantía de basede datos. Operadores Lógicos utilizados comúnmente en consultas AND OR NOT Operadores Aritméticos para consultas + - * / Funciones Utilizadas NVL: Convierte un valor NULO en otro NO NULO para propósitos de realizar cálculos con campos que puedan tener valores NULOS. Sintaxis: NVL(expr1, expr2) NVL evalúa expr1, si es NOT NULL se retorna dicha expresión, en caso contrario se retorna el valor contenido en expr2. Ejemplo de Uso: Select NombreEmpleado, Cargo, Sueldo, Comision, NVL (SUELDO, 0) + NVL(Comision, 0) From Empleados Where NumDepto = 30; NombreEmpleado Cargo Sueldo Comision NVL(Sueldo,0) + NVL(Comision,0) ALLEN VENDEDOR 1600 300 1900 WARD VENDEDOR 1250 500 1750
  • 13.
    Ayudantía de basede datos. JONES VENDEDOR 2975 2975 MARTIN VENDEDOR 1250 1400 2650 BLAKE ADMINISTRATIVO 2850 2850 SCOTT VENDEDOR 3150 3150 TURNER VENDEDOR 1500 0 1500
  • 14.
    Ayudantía de basede datos. Funciones Numéricas Función Ejemplo Resultado MOD MOD(7,5) El resto de dividir 7 en 5, o sea 2 SQRT SQRT(25) Raíz Cuadrada de 25, es decir 5 ROUND ROUND(SUELDO, 2) Se redondea la Columna SUELDO en el digito 2. Ejemplo ROUND(3.25, 1) da como resultado 3.3 TRUNC TRUNC(SUELDO, 2) Se trunca SUELDO en el dígito 2 después de la coma. Ejemplo, TRUNC(3.25,1) da como resultado 3.2 POWER POWER(SUELDO,3) Sueldo al Cubo Más Funciones en SQL SUM Se utiliza para realizar una sumatoria sobre una cierta columna determinada dentro de una instrucción como SELECT. Sintaxis SUM([DISTINCT|ALL] n) Ejemplo SELECT SUM(sueldo) "Total" FROM empleados Resultado Total ---------- 29081
  • 15.
    Ayudantía de basede datos. AVG Se utiliza para obtener el promedio (AVERAGE) sobre una determinada columna dentro de una instrucción como SELECT. Sintaxis AVG([DISTINCT|ALL] n) Ejemplo SELECT AVG(sueldo) "Sueldo Promedio" FROM empleados; Resultado: Sueldo Promedio ------------------ 2077.21429 COUNT Permite realizar el conteo de filas resultantes en una consulta. Sintaxis COUNT({* | [DISTINCT|ALL] expr}) Ejemplos SELECT COUNT(*) "Total" FROM empleados Resultado: Total ---------- 18 SELECT COUNT(Trabajo) "Cuantos Empleados" FROM empleados; Resultado:
  • 16.
    Ayudantía de basede datos. Cuantos Empleados ------------------ 14 SELECT COUNT(DISTINCT Trabajo) "Trabajos" FROM empleados; Resultado: Trabajos ---------------- 5 INITCAP Regresa la primera letra del parámetro en mayúscula y el resto de la palabra en minúsculas. Sintaxis INITCAP (expr) Ejemplo SELECT INITCAP(nombre_empl) "Nombre Empleado", trabajo FROM empleados; Resultado: Nombre Empleado Trabajo ---------------------------------------------- Juan administrativo UPPER Retorna el contenido del parámetro con todas sus letras en Mayúscula. Sintaxis UPPER(expr)
  • 17.
    Ayudantía de basede datos. Ejemplo SELECT UPPER(nombre_empl) "Nombre Empleado", UPPER (trabajo) FROM empleados; Resultado: Nombre Empleado Trabajo ------------------------------------------------------- JUAN ADMINISTRATIVO LOWER Retorna todos los caracteres de una cadena en minúscula. Sintaxis LOWER(expr) Ejemplo SELECT LOWER(nombre_empl) "Nombre Empleado", LOWER (trabajo) FROM empleados; Resultado: Nombre Empleado Trabajo ---------------------------------------------- juan administrativo
  • 18.
    Ayudantía de basede datos. SUBSTR Retorna una subcadena indicada por un carácter de inicio y la cantidad de caracteres que se copiarán a partir de dicho carácter. En pocas palabras trabaja como la función COPY de PASCAL o la instrucción MID de VISUAL BASIC. Sintaxis SUBSTR(cadena, carácter_inicio, cuántos_se_copian) Ejemplo SELECT INITCAP(nombre_empl) "Nombre Empleado", SUBSTR(INITCAP(trabajo),1,5) FROM empleados; Resultado: Nombre Empleado Trabajo ---------------------------------------------- Juan Admin LENGTH Entrega el número de caracteres de una cadena. Funciona tal como lo hace LENGTH de PASCAL, STRLEN de C o LEN de VISUAL BASIC. Ejemplo SELECT LENGTH(nombre_empl) "Numero de Caracteres" FROM empleados; Resultado: Numero de Caracteres -------------------- 4 CLAUSULA GROUP BY La cláusula GROUP BY se utiliza dentro de instrucciones SELECT y permite realizar agrupamientos, generalmente con cálculos. Ejemplo: Se quiere saber cuántos empleados trabajan en cada departamento de la empresa.
  • 19.
    Ayudantía de basede datos. SELECT Depto, COUNT(*) "Numero de Trabajadores" FROM EMPLEADOS GROUP By Depto;
  • 20.
    Ayudantía de basede datos. Resultado: DEPTO NUMERO DE TRABAJADORES ------------------------------------------------------------- 101 3 102 15 450 13 Ejemplo: Se quiere conocer el promedio de notas por alumno de la carrera de COMPUTACION. Esta es toda la tabla: Nombre NOTA Carrera -------------------- --------- -------------------- CLAUDIO 5 Computacion CLAUDIO 4 Computacion CLAUDIO 6 Computacion ANDREA 6 Computacion ANDREA 3 Computacion ANDREA 7 Computacion Esta la instrucción de selección: SELECT SUBSTR(nombre,1,20) "Alumno" , avg(nota) "Promedio" FROM notas GROUP BY nombre; y el siguiente el resultado: Alumno Promedio -------------------- --------- ANDREA 5,3333333 CLAUDIO 5 CLAUSULA HAVING La cláusula Having sirve para condicionar consultas que utilizan GROUP BY. Por ejemplo, supongamos que queremos saber el promedio anual del sueldo para todas los cargos en los cuales hay más de dos empleados.
  • 21.
    Ayudantía de basede datos. SELECT cargo, 12*AVG(sueldo) FROM empleados GROUP BY cargo HAVING COUNT(*) > 2;
  • 22.
    Ayudantía de basede datos. Resultado: Cargo 12 * AVG(sueldo) ------------------------ ----------------------------- SECRETARIA 124500 VENDEDOR 234500 Dentro de este Tipo de consultas se puede condicionar algunas operaciones como la sumatoria o incluso el promedio. Ejemplo: SELECT NumDEPTO, SUM(sueldo) FROM empleados WHERE cargo <> ‘SECRETARIA’ GROUP BY NumDEPTO HAVING SUM(sueldo) > 80000 ORDER BY SUM(sueldo); SECUENCIAS Las secuencias se utilizan para generar números sucesivos. Su uso más común es con las claves primarias o foráneas cuyos valores requieren ser generados en sucesión y automáticamente. El caso más común es el tipo de dato AUTONUMERICO de ACCESS. EJEMPLO: CREATE SEQUENCE seq_nota INCREMENT BY 1 START 1;