0% encontró este documento útil (0 votos)
191 vistas12 páginas

Taller SQL para Principiantes

Este documento presenta una introducción a los comandos SQL para Oracle, incluyendo consultas simples y con condiciones, funciones como SELECT, WHERE, ORDER BY, JOIN, y la creación y modificación de tablas. Explica cómo seleccionar, insertar, actualizar y eliminar datos, y cómo trabajar con datos, fechas y cadenas. También cubre la creación de scripts, el control de transacciones, y el uso de restricciones como claves primarias y foráneas.

Cargado por

Victor Cortes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
191 vistas12 páginas

Taller SQL para Principiantes

Este documento presenta una introducción a los comandos SQL para Oracle, incluyendo consultas simples y con condiciones, funciones como SELECT, WHERE, ORDER BY, JOIN, y la creación y modificación de tablas. Explica cómo seleccionar, insertar, actualizar y eliminar datos, y cómo trabajar con datos, fechas y cadenas. También cubre la creación de scripts, el control de transacciones, y el uso de restricciones como claves primarias y foráneas.

Cargado por

Victor Cortes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Taller de Bases de Datos

Comandos SQL Oracle


Prof. Vctor Valenzuela Ruz
Introduccin a consultas
Consultas simples:
SELECT campo FROM tabla;
Consulta simple con condicin:
SELECT campo1, campo2, FROM tablaDeArticulos WHERE precio>10;
Consultas con subconsultas:
SELECT precio FROM tablaDeArticulos WHERE referencia = (SELECT referencia
FROM tablaDeReferencias WHERE nombreArticulo = patinete )
Operadores: +, -, *, /
12*(sal+100)
Alias: Renombra encabezado, pone nombres a las columnas resultantes de una consulta
{SELECT ename Nombre trabajador, sal Salario FROM trabajadores;}
Concatenacin: || Concatena columnas o cadenas.
{SELECT ename||job Empleados;}
{SELECT ename || es un || job Detalles;}
Filas Duplicadas: distinct no muestra duplicadas, despus de SELECT
{SELECT distinct deptno, job;}
Visualizar estructura completa de una tabla: desc
{desc dept;}
Ficheros:
sav[e] guarda consulta
{sav archiv.sql}
@ ejecuta consultas en fichero / sta[rt] ejecuta consultas en fichero
{@ arciv.sql}
ed[it] permite editar fichero
{ed archiv.sql}

Operador WHERE: Restringe la consulta a las filas que cumple una condicin
FROM emp WHERE job=CLERK (CASE SENSITIVE!!)
Operadores comparacin: =, >, >=, <, <=, <>
{SELECT campo FROM table WHERE salario>=200;}
{WHERE hiredate < 01-01-95;}
{WHERE hiredate > 01-JAN-95;}
Operadores comparacin 2: BETWEEN..AND.., IN(list), LIKE, IS NULL
BETWEEN:
{ WHERE salario BETWEEN 100 AND 150;}
IN:
{mgr IN (7902, 7566);} {WHERE ename IN (FORD , ALLEN)}
LIKE: Comodin % representa 0 o N caracteres. Comodin _ representa exactamente 1
caracter.
{WHERE ename LIKE _S%}
ESCAPE: Interpreta _ literal.
{WHERE ename LIKE %\_% ESCAPE \';}
IS NULL: Si un valor es nulo . Atencion, NULL! =0!!
{WHERE mgr IS NULL;}
Operadores Lgicos: AND, OR, NOT
{WHERE job NOT IN (CLERK, MANAGER); job NOT LIKE %A_';}
Ordenar: ORDER BY (columna/alias). Ordenar de forma ascendente o descendente:
ORDER BY (columna/alias) [ASC/DESC]
ORDER BY hiredate desc; ORDER BY deptno, sal desc;
Funciones de caracteres:
LOWER/UPPER: Convierte a minusculas/maysculas
lower(JOB) -> job
ename=upper(blake);
INITCAP: Primera letra mayusculas resto minusculas
Initcap(JOB) -> Job
CONCAT: Concatena (como |)
SUBSTR: Devuelve los caracteres seleccionados de una cadena de la cadena
LENGTH: Devuelve nmero caracteres
INSTR: Devuelve posicin del caracter en la cadena
LPAD: Rellena cadena por la derecha con el car seleccionado
TRIM: Elimina caracteres del principio o del final

Funciones Numricas:
Round: Redondea al decimal especificado
round(45.926, 2) -> 45.93
Trunc: Trunca en le decimal especificado
trunc(45.926, 2) -> 45.92
Mod: Devuelve el resto de la divisin
mod(1600, 300) -> 100
mod(sal, comm) -> Calcula el RATIO
Fechas:
sysdate: devuelve fecha y hora actual
num + fecha = fecha
fecha num = fecha
fecha fecha = dias
num/24 + fecha = agrega horas
{SELECT (sysdate-hiredate)/7 SEMANAS}
Conversin:
to_char: to_car(date, fmt), (hiredate, fmDD)
fm: elimina espacios en blanco
to_number: to_number(char)
to_date: Guarda datos en formato de fecha
to_date(char[, fmt])
to_date(07/05/1984)
SELECT to_char(sysdate,MM) FROM dual;
Elementos:
YYYY: Ao numrico
YEAR: Ao letras
MM: Mes numrico
MONTH: Mes letras
DY: Abreviatura 3 letras da
DAY: Nombre completo
Hora: HH24:MI:SS AM -> 15:45:32 PM
Aadir cars: DD of MONT -> 12 of October
N dia en letras: ddspth -> fourteenth
NVL: Convierte un nulo a un valor
nvl(comm, 0), nvl(job, No Job), nvl(hiredate,01-JAN-97)
{SELECT ename, nvl(to_car(mgr), No Manager) FROM emp;}

DECODE: Funcin de CASE


SELECT job, sal,
decode(job, ANALYST, sal*1.1, CLERK, sal*2, sal)
FROM emp;
Funciones de grupo:
AVG: Media
COUNT: Cantidad de filas
MAX: Valor mximo
MIN: Valor mnimo ignorando nulos
STDDEV: Desviacin ignorando nulos
SUM: Suma de valores ignorando nulos
VARIANCE: Varianza ignorando nulos
Nota: Se pueden utilizar sin aparecer en SELECT
SELECT deptno FROM emp GROUP BY deptno HAVING MAX(sal)>1

Ver tablas creadas:


{SELECT * FROM data_dictionary}
Dnde data_dictionary puede ser:
DBA_TABLES: Contiene todas las tablas de la base de datos
ALL_TABLES: Contiene todas las tablas accesibles por el usuario (las propias ms las
que tiene permisos sobre ellas)
USER_TABLES: Contiene totas las tablas del usuario
DBA_SEGMENTS: Contiene todos los segmentos de la base de datos, esto incluye
tablas, ndices y segmentos de rollback entre otros.
SELECT * FROM USER_TABLES;
Insertar registros en una tabla: Caracteres y fechas entre comillas simples
{INSERT INTO tabla [] VALUES []}
INSERT INTO tab (dnum, depnam, hiredate, usr_actual)
VALUES (50, DEVELOPMENT, SYSDATE, USERID);
Insertar registros nulos:
INSERT INTO dept VALUES (70, FINANCE, NULL);
Creacin de Scripts: Los scripts nos permiten crear sencillas aplicaciones para aadir
datos de forma sencilla a nuestra base de datos.
{ACCEPT variable PROMPT texto a mostrar INSERT INTO tabla [] VALUES[&variable]}
4

ACCEPT id PROMPT Introduce el ID de usuario:


ACCEPT last_name prompt Introduce apellido del usuario:
ACCEPT first_name prompt Introduce nombre del usuario:
INSERT INTO my_employee (id, LAST_NAME, FIRST_NAME, USERID)
VALUES (&id, &last_name, &first_name, substr(&first_name,1,1) ||
substr($last_name,1,7));
Insertar registros de otra tabla:
{INSERT INTO tabla [] select()}
INSERT INTO managers(id, name, salary, hiredate)
SELECT empno, ename, sal, hiredate FROM emp WHERE job = MANAGER
Modificacin de registros:
{UPDATE tabla SET column = value where}
UPDATE emp SET deptno = 20 WHERE empno = 7782;
UPDATE emp SET (job,deptno) = (SELECT job, deptno from)
Eliminar registros:
{DELETE FROM tabla WHERE condicin}
DELETE FROM department WHERE dname = DEVELOPMENT
DELETE FROM employee WHERE deptno = (SELECT deptno from)
Control transacciones:
COMMIT: Confirmar cambios realizados en la base de datos
ROLLBACK: Deshacer todos los cambios realizados en la base de datos
SAVEPOINT nombre: Crear punto de guardado
ROLLBACK TO nombre: Volver a punto de guardado
Creacin de tablas:
{CREATE TABLE tabla (columna tipo(longitud), columna..)}
Tipos: NUMBER, VARCHAR2, DATE, NUMBER(dcimal,digit)
CREATE TABLE dept (deptno NUMBER(2) NOT NULL, name VARCHAR2(50));
Crear tabla a partir de otra (por subconsulta):
{CREATE TABLE tabla AS SELECT}
CREATE TABLE departamento AS SELECT empno, ename Nombre Departamento,
sal FROM dept;
5

Alter table (Modificar tabla)


-Aadir columnas:
{ALTER TABLE tabla ADD (columna1 tipo(), columna2 tipo());}
ALTER TABLE dept add (job VARCHAR2(9));
-Modificar columnas existentes:
{ALTER TABLE tabla MODIFY (col1 tipo() [DEFAULT expr]);}
ALTER TABLE empl modify (name VARCHAR2(50) DEFAULT Nom);
Nota: Solo se puede cambiar de tipo si el atributo est vaco. Solo se puede decrementar
la precisin si no es inferior al contenido con longitud mxima.
Eliminar columna:
{ALTER TABLE tabla DROP COLUMN columna;}
ALTER TABLE dept DROP COLUMN dname;
ALTER TABLE dept DROP (dname, director,);
Atributos nicos (no se puede repetir su valor):
ALTER TABLE dept
ADD(
UNIQUE (nombre),
UNIQUE (direccion)
);
ALTER TABLE dept ADD UNIQUE(nombre, direccion,) -La combinacin de las dos
debe ser nica
Eliminacin de restriccin UNIQUE:
ALTER TABLE dept DROP UNIQUE(nombre)
ALTER TABLE dept DROP UNIQUE(nombre, direccin,) -Si se crea UNIQUE
compleja (varios atributos), se debe eliminar por completo
Notificar columna como no usada:
{ALTER TABLE tabla SET UNUSED (columna)}
ALTER TABLE dept SET UNUSED (loc);
Eliminar columnas marcadas como no usadas:
{ALTER TABLE tabla DROP UNUSED COLUMNS;}

ALTER TABLE dept DROP UNUSED COLUMNS;


Trabajo con claves primarias:
ALTER TABLE tabla ADD PRIMARY KEY (col1, col2);
ALTER TABLE dept DROP PRIMARY KEY [CASCADE]; CASCADE si hay foraneas
apuntando a ella
ALTER TABLE dept DISABLE PRIMARY KEY [CASCADE];
ALTER TABLE dept ENABLE PRIMARY KEY;
Trabajo con claves forneas:
ALTER TABLE compra ADD(
FOREIGN KEY(farmacia) REFERENCES farmacia(idfarmacia),
FOREIGN KEY(medicamento) REFERENCES medicamentos(idmedicamento)
)
DROP CONSTRAINT fk_compra_farmacia. NO se puede con DROP FOREIGN
KEY(atrib). Se debe especificar el nombre de la fk. Para ello, es necesario crearlas con
CONSTRAINT tal y como se muestra a continuacin
Trabajo con CONSTRAINTS:
ALTER TABLE compra
ADD(
CONSTRAINT fk_compra_farmacia FOREIGN KEY (farmacia) REFERENCES
farmacias(idfarmacia),
CONSTRAINT fk_compra_medicamento FOREIGN KEY (medicamento)
REFERENCES medicamentos(idmedicamento)
)
ALTER TABLE compra DROP CONSTRAINT fk_compra_farmacia;
ALTER TABLE compra DISABLE CONSTRAINT pk_farmacias;
ALTER TABLE compra ENABLE CONSTRAINT pk_farmacias;
DROP CONSTRAINT fk_compra_farmacia.
Renombrar columnas:
ALTER TABLE table RENAME COLUMN col_inicial to col_final;
Modificar nombre de objeto (tabla, vista):
{RENAME tabla/vista TO tabla/vista}
RENAME dept TO departmento;
Eliminar tabla:
{DROP TABLE table;}
7

DROP TABLE dept;


Eliminar todos los registros (TRUNCAR):
{TRUNCATE TABLE tabla;}
TRUNCATE TABLE dept;
Aadir comentarios a una tabla:
{COMMENT ON TABLE/COLUMN table/columna IS comentario';}
COMMENT ON TABLE emp IS Employee Infromation
COMMENT ON COLUMN TABLE.column IS comentario
COMMENT ON COLUMN emp.ename IS Nombre trabajador
Constraints (restricciones)
Definicin de constraints
{CREATE TABLE tabla
(columna tipo() [default expr] CONSTRAINT [nombre] tipo (columna));}
-Nivel de tabla:
CREATE TABLE emp(
(empno NUMBER(4),
ename VARCAHR2(10),
deptno NUMBER(2),
CONSTRAINT emp_empno_pk
PRIMARY KEY (empono));
Nivel de columna:
CREATE TABLE emp(
(empno NUMBER(4) [CONSTRAINT emp_empno_nn] NOT NULL,
ename VARCAHR2(10),
deptno NUMBER(2) NOT NULL);
Constraints (tipos y situacin):
NOT NULL (Nivel de columna)
CREATE TABLE emp(
(empno NUMBER(4) [CONSTRAINT emp_empno_nn] NOT NULL,
ename VARCAHR2(10),
deptno NUMBER(2) NOT NULL);
8

UNIQUE (Columna o tabla)


CREATE TABLE dept
(dname VARCHAR(14),

CONSTRAINT dept_dname_uk UNIQUE(dname));


PRIMARY KEY (Columna o tabla) -> PK lleva implcito UNIQUE
CREATE TABLE dept
(deptno NUMBER(2),

CONSTRAINT dept_deptno_pk PRIMERY KEY (deptno));


FOREIGN KEY (Columna o tabla)
CREATE TABLE emp
(ename VARCAHR2(10) NOT NULL,
deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)


REFERENCES dept (deptno));
CHECK -Condicion- (Columna o tabla)
CREATE TABLE emp
(deptno NUMBER(2),
CONSTRAINT emp_deptno_ck CHECK (deptno between 10 and 99));
Aadir CONSTRAINT (restriccin) a tabla existente:
{ALTER TABLE tabla add/modify [CONSTRAINT CONSTRAINT] type (col);}
Podemos aadir restriccin NOT NULL con MODIFY
Podemos aadir o borrar CONSTRAINTs pero NO modificar. Para modificar
eliminar y volver a crear
ALTER TABLE emp add CONSTRAINT emp_mgr_fk
FOREING KEY(mgr) REFERENCES emp(empno);
Eliminacin de restricciones (CONSTRAINTs):
{ALTER TABLE tabla DROP CONSTRAINT CONSTRAINT;}
ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk;
Borrar CONSTRAINT PK y (FK de tabla dependiente de otra usando-CASCADE-)
9

{ALTER TABLE tabla DROP primary key CASCADE;}


ALTER TABLE dept DROP primary key cascade;
Eliminacin de restricciones en cascada: Es usado para eliminar PK u otras con
dependencias
{ALTER TABLE tabla DROP (constraint) cascade CONSTRAINT;}
ALTER TABLE dept DROP (deptno) cascade CONSTRAINTS;
Desactivar constraint:
{ALTER TABLE tabla DISABLE CONSTRAINT constraint [CASCADE];}
ALTER TABLE emp disable CONSTRAINT emp_empno_pk CASCADE;
Activar constraints:
{ALTER TABLE tabla ENABLE CONSTRAINT CONSTRAINT;}
ALTER TABLE emp ENABLE CONSTRAINT emp_empno_pk;
Creacin de vistas:
{CREATE VIEW vista AS SELECT}
[with check option CONSTRAINT CONSTRAINT]
[with read only]
CREATE view empvu10 as select empno n empleado,
job from emp where deptno=10;
Modificacin de vistas:
{CREATE OR REPLACE VIEW vista [(colname, colname, colname)] as select}
Nota: Los alias de columna se puede poner en SELECT o en CREATE
CREATE or replace view empvu10
(employee_number, employee_name, job_title)
as select empno, ename, job from emp where deptno = 10;
Creacin vistas complejas con funciones de grupo para ver 2 tablas:
{CREATE view dept_sum_vu (name, minsal, maxsal, avgsal)
as select d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)
from emp e, dept d where e.deptno = d.deptno group by d.dname}

10

With check option:


CREATE or replace view vista as select
with check option CONSTRAINT CONSTRAINT
With read only:
CREATE or replace view vista as select
with read only;
Nota: En este caso no podemos quitar, insertar o modificar la vista
Eliminacin de vistas:
{DROP view vista;}
Creacin de vistas inline:
{SELECT FROM tabla a(SELECT) b where}
SELECT tablaA.ename, tablaA.sal, tablaA.deptno, tablaB.maxsal
from emp tablaA, (select deptno, max(sal) from emp group by deptno) tablaB
where tablaA.deptno = tablaB.deptno and tablaA.sal < tablaB.maxsal
Obtener los N primeros/ltimos datos de una tabla (Top-N):
{SELECT ROWNUM [as alias] FROM (SELECT FROM tabla WHERE ORDER BY
Top-NCol)
where ROWNUM <= N}
SELECT ROWNUM as RANKING, ename, sal
from (select ename, sal from emp order by sal desc)
where rownum <=3;
Creacin de secuencias:
CREATE/ALTER sequence nombre_secuencia
increment by n
start with n (no en ALTER)
maxvalue n
minvalue n
cycle (continua generando despues de max)
cache n (memoria oracle);
Insertar valores de una secuencia en una tabla:
INSERT INTO tabla (valorActual, valorSiguiente)
VALUES (secuencia.currval, secuencia.nextval)
11

Eliminar secuencias:
{DROP sequence secuencia;}
Crear ndices:
{CREATE index indice on tabla (col, col+10, upper(ename))}
Eliminar ndices:
{DROP index ndice}
Crear sinonimos:
{CREATE [public] SYNONYM sinonimo FOR objecto}
CREATE public synonym dept for sis228.dept
Eliminar sinnimos:
{DROP SYNONYM sinnimo}

12

También podría gustarte