jueves, 22 de mayo de 2008

Comandos INSTR, UPPER, ROUND, etc...

Todas las palabras en minuscula.


LOWER (columna/expre)


SELECT LOWER (apellido)

From actores;



Todas las palabras en mayuscula


UPPER (columna/expre)


SELECT nombre, apellido

From actors

Where nombre=upper (‘brando’);



Primera letra de cada palabra en mayuscula


Initcap (columna/expre)


Select initcap (nombre)

From actores;



Junta dos cadenas de caracteres


CONCAT


Select concat (ename,job)

From emp;



Substrate unos caracteres de la cadena de caracteres.


SUBSTR:


SELECT SUBSTR (ename,2,3)

From emp:



Cuenta los caracteres


LENGTH


Select length (ename)

From emp;



Devuelve la posicion de la letra en numeros


INSTR


SELECT job,instr (job,’E’)

From emp;



Da el resto de la division


MOD


SELECT ename, job, mod (sal, 2)

FROM emp;



Devuelve la diferencia de meses


SELECT empno, hiredate, sysdate, months_between (sysdate, hiredate) resultado

FROM emp;



Añade meses


SELECT empno, hiredate, ADD_MONTHS (hiredate, 8) FECHA_NUEVA

From emp;



Ultimo dia del mes


SELECT ename, hiredate, last_day (hiredate)

FROM emp;


Muestra el siguiente dia


SELECT ename, hiredate,

next_day (hiredate, 'MARTES')

FROM emp;



Redondea al año.


SELECT hiredate,

ROUND (hiredate, 'year')

from emp;



select empno, to_char (hiredate, 'MON')

FROM emp;


SELECT ename, hiredate

FROM emp

WHERE hiredate=to_date ('Febrero 22, 1981','Month dd, YYYY');


Convierte valores de fecha a numeros y numeros a fechas.

SELECT empno FROM emp

WHERE empno=TO_NUMBER(7839);


TO_NUMBER

TO_DATE



Es como un if, una condición, el else sería la o.

DECODE


SELECT job, sal, DECODE (job, ‘ANALYST’, ‘sal*1.1, ‘CLERK’ , SAL*1.16)

FROM emp;



ANIDAMIENTO DE FUNCIONES

SELECT ename, NVL (TO_CHAR (mgr), ‘No Manager’)

FROM emp

WHERE mgr IS NULL;


LPAD: Rellena La cadena por la derecha con el carácter ‘string’ hasta un total de n posiciones.


Justifica a la derecha el valor del carácter


LPAD(sal,10,*)


******5000


ROUND: Redondea la columna, expresión o valor a n posiciones decimales, si se omite n, no se redondea con lugares decimales, si n es negativo, los números a la izquierda del punto decimal se redondean.


La función ROUND redondea la columna, expresión o valor a n lugares decimales, si el segundo argumento es 0 o falta, el valor se redondea a cero lugares decimales. Si el segundo argumento es 2, el valor se redondea a dos lugares decimales. Si el segundo argumento es 2, el valor se redondea a dos lugares decimales a la izquierda.


La función ROUND también puede utilizarse con funciones de fecha.


Select ROUND (45.923,2

), ROUND (45.923,0), ROUND (45.923,-1)

FROM SYS.DUAL;


Redondea el valor que hay antes de la coma, y lo de después de la coma, es el numero de posiciones que movemos la coma, redondea para arriba o para abajo, según el valor.

lunes, 12 de mayo de 2008

Operadores aritmeticos, valor null, alias, concateniacion y desc.

Uso de operadores aritméticos

En una columna podemos usar una operación y que en la columna salga el resultado, con un ejemplo se ve muy claro.

SELECT sal, sal + 300
FROM emp;

el resultado que nos dará sera en resumen lo siguiente:

SAL .........SAL + 300
-----------------------
5000 ........5300
2850 .........3150
...

Lo mismo con el resto de operadores aritméticos, solo tenemos que tener en cuenta que la multiplicación y la división tienen prioridad sobre la suma y la resta, los operadores de la misma prioridad se evalúan de izquierda a derecha, y los paréntesis pueden ser usados para cambiar la prioridad de evaluación y para clarificar las sentencias.


El valor NULL

Este es un valor inaccesible, sin valor, desconocido.
NULL no es lo mismo que cero o espacio en blanco, es un valor vacío.

Lo que quiere decir que cualquier operación que se haga con un valor NULL devolverá NULL.


El uso de Alias.

Podemos renombrar el nombre de alguna columna asignándoles un alias.

Se utiliza con el comando AS después del nombre de la columna y a continuación el alias, si hacemos pruebas podemos ver que si a continuación no usamos el AS también surge efecto.

SELECT ename AS name, sal salary
FROM emp;

quedaría así:

name salary
-------------------------------
...
...


La concatenación

Esta representada por dos barras verticales ||
Concatena columnas o cadenas de caracteres con otras columnas.
Crea una columna resultado que es una expresión de tipo carácter.

Por ejemplo:

SELECT ename || job AS "Employee"
FROM emp;

Employee
-------------------------
KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER

teniendo en cuenta que ename es KING y su job es PRESIDENT podemos ver como se juntan, como se concatenan.

También podemos usarlo de otra forma, insertando texto entre ellos, por ejemplo

SELECT ename || ' trabaja de ' || job
FROM emp;

ENAME JOB
-------------------------
KING trabaja de PRESIDENT
BLAKE trabaja de MANAGER
CLARK trabaja de MANAGER


Para acabar con este apartado, veremos como visualizar una especie de descripción de cualquier tabla que tengamos en nuestro SQL, se utiliza el comando DESC nombredelatabla pongamos un ejemplo:

DESC dept

y saldrá la descripción de la tabla desc, no hace falta cerrarlo con punto y coma.

domingo, 11 de mayo de 2008

Primeros pasos, select, distinct, from

Empezaremos con lo más basico en SQL y poco a poco iremos avanzando a niveles superiores, recuerdo que es para empezar de cero, no hace falta tener ningun tipo de conocimiento en SQL.

Para trabajar con los mismos ejemplos tenemos que insertar en nuestro SQL las siguientes tablas, muy sencillo... copiamos y pegamos las siguientes tablas:


create table emp
(EMPNO NUMBER(4) not null,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) not null);

create table dept
(DEPTNO NUMBER(2) not null,
DNAME VARCHAR2(14),
LOC VARCHAR2(13));

create table salgrade
(GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER);

INSERT INTO emp
VALUES (7839, 'KING', 'PRESIDENT', NULL, '17-NOV-1981', 5000, NULL, 10);
INSERT INTO emp
VALUES (7698, 'BLAKE', 'MANAGER', 7839, '01-MAY-1981', 2850, NULL, 30);
INSERT INTO emp
VALUES (7782, 'CLARK', 'MANAGER', 7839, '09-JUN-1981', 1500, NULL, 10);
INSERT INTO emp
VALUES (7566, 'JONES', 'MANAGER', 7839, '02-ABR-1981', 2975, NULL, 20);
INSERT INTO emp
VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '28-SEP-1981', 1250, 1400, 30);
INSERT INTO emp
VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '20-FEB-1981', 1600, 300, 30);
INSERT INTO emp
VALUES (7844, 'TURNER', 'SALESMAN', 7698, '08-SEP-1981', 1500, 0, 30);
INSERT INTO emp
VALUES (7900, 'JAMES', 'CLERK', 7698, '03-DIC-1981', 950, NULL, 30);
INSERT INTO emp
VALUES (7521, 'WARD', 'SALESMAN', 7698, '22-FEB-1981', 1250, 500, 30);
INSERT INTO emp
VALUES (7902, 'FORD', 'ANALYST', 7566, '03-DIC-1981', 3000, NULL, 20);
INSERT INTO emp
VALUES (7369, 'SMITH', 'CLERK', 7902, '17-DIC-1980', 800, NULL, 20);
INSERT INTO emp
VALUES (7788, 'SCOTT', 'ANALYST', 7566, '09-DIC-1982', 3000, NULL, 20);
INSERT INTO emp
VALUES (7876, 'ADAMS', 'CLERK', 7788, '12-ENE-1983', 1100, NULL, 20);
INSERT INTO emp
VALUES (7934, 'MILLER', 'CLERK', 7782, '23-ENE-1982', 1300, NULL, 10);

INSERT INTO dept
VALUES (10, 'ACCOUNTING','NEW YORK');
INSERT INTO dept
VALUES (20, 'RESEARCH','DALLAS');
INSERT INTO dept
VALUES (30, 'SALES','CHICAGO');
INSERT INTO dept
VALUES (40, 'OPERATIONS','BOSTON');

INSERT INTO salgrade
VALUES (1, 700, 1200);
INSERT INTO salgrade
VALUES (2, 1201, 1400);
INSERT INTO salgrade
VALUES (3, 1401, 2000);
INSERT INTO salgrade
VALUES (4, 2001, 3000);
INSERT INTO salgrade

VALUES (5, 3001, 9999);



Empezaremos con lo más basico en SQL y poco a poco iremos avanzando a niveles superiores, recuerdo que es para empezar de cero, no hace falta tener ningun tipo de conocimiento en SQL.

La sentencia SELECT

Una sentencia SELECT recupera información de la base de datos.

Ejemplo, cojemos los salarios (sal) de la tabla emp:

SELECT sal
FROM emp;


SELECT identifica qué columnas
FROM identifica qué tablas.

En resumen, seleccionamos la columna con el SELECT, y con el FROM indicamos donde esta esa columna, en este caso, el nombre de la tabla es emp.

Para finalizar y que se ejecute tenemos que insertar al final punto y coma, para indicar a SQL que hemos acabado.

Con un DISTINCT haremos que omita los resultados repetidos

Ejemplo:

SELECT DISTINCT sal
FROM emp;

Seleccionara los salarios sin repetir ninguno, de la tabla emp, y finalizamos con un punto y coma.


REGLAS DE LAS SENTECIAS SQL:

  • Los comandos no son case sensitive, es decir, da igual si escribimos minusculas o manyusculas, pero escribiré los comandos en mayusculas para que se vea más claro.
  • Los comandos pueden estar en una o varias lineas.
  • Las palabras clave no se pueden abreviar o dividir.
  • Las clausulas normalmente se escriben en distintas lineas.

Para practicar se pueden hacer los siguientes ejemplos con nuestras tablas escritas arriba:

SELECT *
FROM dept;

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

SELECT deptno, loc
FROM dept;

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

SELECT DISTINCT deptno, loc
FROM dept;

Instalar SQL

Para descargarnos oracle data base entramos en:

http://www.oracle.com/technology/software/products/database/index.html

Aceptamos la licencia y descargamos.

Una vez instalado entramos en:

Ejecutar Linea de Comandos SQL, y introducimos el comando " conn system " para entrar en modo SQL, introducimos la contraseña que nos ha pedido en la instalación y acabamos.

viernes, 9 de mayo de 2008

Que es SQL

El SQL (Structured query language), lenguaje de consulta estructurado, es un lenguaje surgido de un proyecto de investigación de IBM para el acceso a bases de datos relacionales. Actualmente se ha convertido en un estándar de lenguaje de bases de datos, y la mayoría de los sistemas de bases de datos lo soportan, desde sistemas para ordenadores personales, hasta grandes ordenadores.

Por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que puede variar de un sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que conozca un SQL concreto.

Como su nombre indica, el SQL nos permite realizar consultas a la base de datos. Pero el nombre se queda corto ya que SQL además realiza funciones de definición, control y gestión de la base de datos.