Está en la página 1de 7

SQL (STRUCTURED QUERY LANGUAGE)

SENTENCIAS DDL(DATA DEFINITION LANGUAGE)


- CREATE
- ALTER
- DROP

SENTENCIAS DML (DATA MANIPULATION LANGUAGE)


- INSERT
- UPDATE
- DELETE

SENTENCIAS DQL (DATA QUERY LANGUAGE)


- SELECT
--------------------------------------------------------------------------
SETENCIAS DQL (DATA QUERY LANGUAGE) (LENGUAJE DE RECUPERACIÓN/CONSULTA DE DATOS)

La sentencia principal para recuperación de datos es la sentencia SELECT con todos


sus comodines, permite recuperar CUALQUIER DATO desde la BD.

SINTAXIS DE SELECT:

SELECT * FROM COLUMNA1, COLUMNA2, ..., COLUMNA_N

FROM TABLA(S)
-WHERE CONDICION(ES)
-GROUP BY COLUMNA(S)
-HAVING CONDICION_GRUPO
-ORDER BY COLUMNA(S)
---------------------------------------------------------------------------
EJERCICIO
En una oficina trabajan muchos empleados, pero un empleado trabaja solo en una
oficina.

CONNECT SYSTEM;
CREATE USER EMPRESA IDENTIFIED BY EMP123;
---------------------------------------------------------------------------
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO EMPRESA;
---------------------------------------------------------------------------
DISCONNECT
CONNECT EMPRESA
--------------------------------------------------------------------------

CREATE TABLE OFICINAS


(
ID_OFI VARCHAR (5) PRIMARY KEY,
NOM_OFI VARCHAR (20) NOT NULL,
PISO_UBI_OFI NUMBER CHECK(PISO_UBI_OFI BETWEEN 1 AND 5),
DERC_OFI VARCHAR (20)
);

CREATE TABLE EMPLEADOS


(
CED_EMP VARCHAR (10) PRIMARY KEY,
NOM_EMP VARCHAR (10) NOT NULL,
APE_EMP VARCHAR (10) NOT NULL,
DIR_EMP VARCHAR (10) NOT NULL,
TEL_EMP VARCHAR (10) NOT NULL,
CAR_EMP VARCHAR (10) CHECK(CAR_EMP IN('GERENTE','SECRETARIA',
'CONTADOR','CONSERJE','VENDEDOR')),
SUE_EMP NUMBER(7,2) CHECK(SUE_EMP BETWEEN 500 AND 2000),
COM_EMP NUMBER(5,2) CHECK((COM_EMP >=0) AND (COM_EMP<=90)),
FEC_NAC_EMP DATE NOT NULL,
FEC_ING_EMP DATE NOT NULL,
EST_CIV_EMP VARCHAR (1) CHECK(EST_CIV_EMP IN('S','C','V','D','U')),
NUM_CAR_FAM NUMBER (1) CHECK(NUM_CAR_FAM BETWEEN 0 AND 5),
CORR_EMP VARCHAR (30) NOT NULL UNIQUE,
SUPERVISOR REFERENCES EMPLEADOS (CED_EMP),
ID_OFI_PER VARCHAR (5) NOT NULL REFERENCES OFICINAS(ID_OFI)
);
----------------------------------------------------------------------
INSERT INTO OFICINAS
VALUES ('OFI01','VENTAS',2,'A CLIENTES');
INSERT INTO OFICINAS
VALUES ('OFI02','COMPRAS',3,'A PROVEEDORES');
INSERT INTO OFICINAS
VALUES ('OFI03','PUBLICIDAD',4,NULL);
-------------------------------------------------------------------
INSERT INTO EMPLEADOS
VALUES
('1801','JUAN','MORALES','ATOCHA','083004127','GERENTE',1700.25,50,'12/10/1980','15
/10/2015','C',2,'jm@yahoo.es',NULL,'OFI01');

INSERT INTO EMPLEADOS


VALUES
('1802','ANA','REYES','FICOA','083456127','SECRETARIA',1200.25,50,'12/02/1990','15/
02/2015','S',1,'ar@yahoo.es','1801','OFI01');

INSERT INTO EMPLEADOS


VALUES
('1803','JORGE','AUZ','PRADERA','08377127','VENDEDOR',700.25,30,'12/10/1970','13/02
/2000','D',4,'jA@yahoo.es','1801','OFI01');

INSERT INTO EMPLEADOS


VALUES
('1804','KARLA','SANCHEZ','MIRAFLOES','08389127','VENDEDOR',750.25,30,'12/10/1970',
'13/02/2000','D',4,'KM@yahoo.es','1801','OFI02');
--------------------------------------------------------------------------
SET LINESIZE500; ==> PARA ANCHAR EL SQL
---------------------------------------------------------------------------
SENTEMCIAS SELECT

1. RECUPERACION TOTAL DE INFORMACION

- Mostrar todas los datos de la tabla OFICINAS


El comodin * significa todas las columnas

SELECT *
FROM OFICINAS;
-----------------------------------------------------------------------------
2. RECUPERACION DE COLUMNAS ESPECIFICAS

- Mostrar el nombre, apellido y seuldo de los empleados

SELECT NOM_EMP, APE_EMP, SUE_EMP


FROM EMPLEADOS;
- Mostrar la cedula. apellido, cargo, sueldo y comision de los empleados

SELECT CED_EMP, APE_EMP, CAR_EMP, SUE_EMP, COM_EMP


FROM EMPLEADOS;
----------------------------------------------------------------------------
3. RECUPERACION DE COLUMNAS CALCULADAS
Se puede crear PSEUDOCOLOMNAS (COLUMNA VIRTUAL QUE NO EXISTE EN LA BD) si no que
son columnas resultados de operaciones en la BD.
¿Para que se hace esto?
Para reportas ciertos calculos o informacion implicita en la BD

- Mostrar la cedula, nombre, apellido, sueldo y el sueldo anual de los empeados.

SELECT CED_EMP, NOM_EMP, APE_EMP, SUE_EMP, SUE_EMP*12


FROM EMPLEADOS;
----------------------------------------------------------------------------
4. USO DE ENCABEZADOS O ALIAS PARA LAS COLUMNAS
Se puede utilizar nombres alternativos(alias) o encabezados para las columnas de
una sentencia SELECT, el alias aparece solo en el reporte, no cambia el nombre en
la BD fisica.

- Mostrar la cedula, nombre, apellido, sueldo y el sueldo anual de los empeados.

SELECT CED_EMP CEDULA, NOM_EMP NOMBRE, APE_EMP APELLIDO, SUE_EMP SUELDO, SUE_EMP*12
SUELDO_ANUAL
FROM EMPLEADOS;

* EN OTROS SGBS:

SELECT CED_EMP AS CEDULA, NOM_EMP AS NOMBRE, APE_EMP AS APELLIDO, SUE_EMP AS


SUELDO, SUE_EMP*12 AS SUELDO_ANUAL
FROM EMPLEADOS;

SI EL ALIAS TIENE MAS DE UNA PALABRA O UN ESPACIO EN BLANCO DEBE IR ENTRE COMILLAS
("").

SELECT CED_EMP CEDULA, NOM_EMP NOMBRE, APE_EMP APELLIDO, SUE_EMP SUELDO, SUE_EMP*12
"SALARIO ANUAL"
FROM EMPLEADOS;

- Mostrar el nombre, apellido y el salario bonificado(que sera el sueldo mas la


comision)

SELECT NOM_EMP, APE_EMP, SUE_EMP, COM_EMP ,SUE_EMP + COM_EMP "SALARIO BONIFICADO"


FROM EMPLEADOS;

SELECT NOM_EMP NOMBRE, APE_EMP APELLIDO, SUE_EMP SUELDO, COM_EMP COMISION, SUE_EMP
+ COM_EMP "SALARIO BONIFICADO"
FROM EMPLEADOS;
----------------------------------------------------------------------------------
PARA CONCATENAR CARACTERES EN UN REPORTE SE UTILIZA || (CTRL+ALT+124)

SELECT NOM_EMP|| ' ' ||APE_EMP||' ES UN ' ||CAR_EMP|| ' Y GANA ' || SUE_EMP AS
"INFORMACION DE EMPLEADOS"
FROM EMPLEADOS;
--------------------------------------------------------------------------------
5. ARITMETICA DE FECHAS
*TRES REGLAS SIMPLES:

FECHA - FECHA = NUMERO_DE_DIAS


25 DE JUNIO - 20 DE JUNIO = 5 DIAS

FECHA - NUMERO = FECHA


21 DE JUNIO - 1 = 20 DE JUNIO

FEHCA + NUMERO = FECHA


21 DE JUNIO + 1 = 22 DE JUNIO
------------------------------------------------------
- Mostrar la cedula, nombre, apellido, cargo y edad de los empleados

SELECT CED_EMP, NOM_EMP, APE_EMP, CAR_EMP, (SYSDATE - FEC_NAC_EMP)/365


FROM EMPLEADOS;

FUNCIONES PARA DECIMALES:

1. TRUNC (COLUNMAS/EXPRESION, cant_de_decimales)


Trunca al inmediato inferior segun el numero de decmales

SELECT CED_EMP, NOM_EMP, APE_EMP, CAR_EMP, TRUNC((SYSDATE - FEC_NAC_EMP)/365 , 1)


FROM EMPLEADOS;

2. ROUND (COLUNMAS/EXPRESION, cant_de_decimales)


Redondea al inmediato superioR segun el numero de decmales

------------------------------------------------------------------------------

----- USO DE LA CLAUSULA WHERE ------

La seccion WHERE permite establecer condiciones que deben cumplir las filas para
ser tomadas como resultado de una sentencia SELECT.
Unicamente aparecen en el reporte las filas que cumplan las condiciones.

Para establecer condiciones se utilizan los operadores de comparación.


1. = IGUAL
2. <= MENOR O IGUAL
3. < MENOR QUE
4. >= MAYOR O IGUAL
5. > MAYOR QUE
6. <> DIREFENTE

- Mostrar el nombre, apellido, cargo y sueldo de los empleados con el cargo de


VENDEDOR.

SELECT NOM_EMP, APE_EMP, CAR_EMP, SUE_EMP


FROM EMPLEADOS
WHERE CAR_EMP = 'VENDEDOR';

- Mostrar el nombre, apellido y la direccion de los empleados que NO vivan en la


direccion PRADERA

SELECT NOM_EMP, APE_EMP, DIR_EMP


FROM EMPLEADOS
WHERE DIR_EMP <> 'PRADERA';

- Mostrar el nombre, apellido y la direccion de los empleados que SI vivan en la


direccion PRADERA
SELECT NOM_EMP, APE_EMP, DIR_EMP
FROM EMPLEADOS
WHERE DIR_EMP = 'PRADERA';
-------------------------------------------------------------------------------
- Mostrar el nombre, apellido, cargo y sueldo de los empleados que ganes mas de mil
dolares

SELECT NOM_EMP, APE_EMP, CAR_EMP, SUE_EMP


FROM EMPLEADOS
WHERE SUE_EMP > 1000;
-----------------------------------------------------------------------
-------- USO DE OPERADORES LOGICOS (AND, OR, NOT)---------------

1. OPERADOR AND
Obligan que todas las condiciones unidas por AND se cumplan.
Las filas que cumplan todas la condiciones de AND se reflejará en el reporte.

- Mostrar nombre, apellido, cargo y sueldo de los empleados con el cargo de


vendedor que ganen mas de 600 dolares

SELECT NOM_EMP, APE_EMP, CAR_EMP, SUE_EMP


FROM EMPLEADOS
WHERE CAR_EMP = 'VENDEDOR' AND SUE_EMP > 600;

- Mostrar la cedula, apellido, edad y la cantidad de cargas de los empleados que


tengan menos de 3 cargas que tengas mas de 25 años de edad

SELECT CED_EMP CEDULA,


APE_EMP APELLIDO,
TRUNC((SYSDATE - FEC_NAC_EMP)/365 , 1) AS EDAD,
NUM_CAR_FAM CARGAS
FROM EMPLEADOS
WHERE NUM_CAR_FAM < 3 AND TRUNC((SYSDATE - FEC_NAC_EMP)/365 , 1) > 25;

- Mostrar la cedula, nombre, apellido, direccion, sueldo, comision, antiguedad,


correro de los empleados que NO vivan en miraflores que ganas entre 500 y 1900
dolares y que su comision sea mayor a 10 dolares, y que tengan entre 3 y 10 años de
antiguedad en la empresa

SELECT CED_EMP CEDULA,


NOM_EMP NOMBRE,
APE_EMP APELLIDO,
DIR_EMP DIRECCION,
SUE_EMP SUELDO,
COM_EMP COMISION,
TRUNC((SYSDATE - FEC_ING_EMP)/365,1) ANTIGUEDAD ,
CORR_EMP CORREO
FROM EMPLEADOS
WHERE DIR_EMP <> 'MIRAFLOES'
AND SUE_EMP >= 500 AND SUE_EMP <=1900
AND COM_EMP > 10
AND (SYSDATE - FEC_ING_EMP)/365 >= 3 AND (SYSDATE - FEC_ING_EMP)/365 <=10;
-----------------------------------------------------------------------------------
-

DEBER:
INSERTAR 1 OFICINAS MAS
INSERTAR 5 EMPLEADOS POR CADA OFICINA (TOTAL 20)

También podría gustarte