DATE El dato es un dato fecha. Almacena una fecha y una hora. La fecha parte se basa en el número de días desde el 1 de enero de 4712 aC. El tiempo se basa en el número de segundos desde mediados de la noche.
Un campo de fecha se declara como una variable seguida por el nombre DATE palabra clave:
v_date_field DATE;
No hay "correcto" el formato de una fecha. El formato está determinada por varios factores. En la base de datos, se puede establecer que la NLS_DATE_FORMAT. Independientemente de cómo se establece el valor por defecto en su base de datos, siempre debe asegurarse de que explícitamente el uso de un formato de fecha al convertir la máscara.
Voy a cubrir funciones de la conversión de todos los tipos de datos en un futuro artículo, pero creo que esto es importante. Si necesita comparar una fecha para un literal, asegúrese de usar un formato de fecha máscara. Usted podría decir:
WHERE date_field = '01-01-1999'
O usted podría decir:
WHERE date_field = to_date('01-01-1999', 'DD-MM-YYYY')
Y eso nos lleva a la razón por la que utilizar un DATE lugar de un personaje o de un campo numérico. Yo estoy a menudo preguntó acerca de las mejores prácticas, con fechas y horas. Por alguna razón, nunca he entendido, algunas personas consideran que el almacenamiento de las fechas y horas como el número de caracteres y es mejor que la de Oracle que permite que los datos que manejan en un formato nativo. Llámame vago, pero si Oracle puede hacerlo por mí, voy a dejarlo.
A modo de ejemplo, digamos que usted desea añadir 1 día a la fecha. Si esa fecha se almacena en un personaje sobre el terreno, usted tendría que hacer algún tipo de transformación y manipulación de lograr eso. Si usamos una fecha sobre el terreno, es tan fácil como date_field + 1. ¿Cómo lograr la adición de una hora? El uso de un tipo de la fecha, no puedo añadir date_field + 1 / 24. Es decir, añadir un 1 a 1 día y obtener añadir 1/24th de un día llegar hasta 1 hora. Para añadir 2 horas, yo añadiría date_field + 2 / 24. ¿Cómo hacerlo con un carácter sobre el terreno?
Reconozco si almacena los datos en un campo numérico, que puede ser más fácil de almacenar como un personaje. En ese caso, la adición de 1 día o 1 hora podría ser bastante fácil. Pero, ¿cómo se puede añadir 3 meses? Con un campo de fecha, se utiliza add_months (date_field, 3). ¿Cómo restar 3 meses? Con un campo de fecha, se utiliza add_months (date_field, -3). ¿Cómo obtener el último día del mes en un campo de fecha? Con un campo de fecha, se puede decir last_day (date_field). La lista va en un sobre.
Aquí está una de las normas más importantes que usted puede aprender acerca de cómo utilizar una base de datos. Si puede hacerlo por ti, y mucho. Si se trata de la fecha o la hora, por no hablar de que la gestión de la base de datos para usted. Gastar su tiempo escribiendo aplicaciones, y no bajo nivel de apoyo rutinas.
Algunas normas acerca de la fecha en que las matemáticas son cuando usted restar una fecha a partir de la fecha, se obtiene un número de días. Al restar el número de una fecha, se obtiene una fecha menos de la fecha de inicio. Cuando se añade un número a la fecha, se obtiene una fecha posterior a la fecha de inicio. No se puede añadir una fecha a fecha.
Saturday, October 13, 2007
¿Cuál es la FECHA Dato?
Saturday, October 6, 2007
El usar NVL2
NVL2 es una pequeña función aseada del SQL que pienso soy underused. Se parece a mí que podría tener un nombre mejor.
El formato es NVL2 (expr1, expr2, expr3). Qué lo hace es si expr1 es NULL, él vuelve expr3. Si expr1 NOT NULL, vuelve expr2.
IF la declaración para hacer igual parecería:
IF expr1 IS NULL
THEN
expr3
ELSE
expr2
END IF
Tiendo para conseguir expr2 y expr3 al revés cada vez que utilizo esta función. No soy seguro porqué. Conjeturo que resuelvo mentalmente expresiones del non-NOT antes NO de expresiones.
Tan si funcionaste esta escritura:
SELECT nvl2('ABC', 'DEF', 'GHI')
FROM DUAL
/SELECT nvl2(NULL, 'DEF', 'GHI')
FROM DUAL
/
Conseguirías esta salida:
NVL
---
DEF
1 row selected.
NVL
---
GHI
1 row selected.
Posted by
LewisC
at
5:09 PM
1 comments
Labels: aprender el oráculo, NVL2, oracle, sql
Quitar los espacios después de TO_CHAR con el modificante del formato de FM
Hoy, voy a darte una extremidad de Oracle para conseguir librado de espacios después de que hayas utilizado TO_CHAR:
Si funciono esta escritura:
select to_char(1234.89, '$999,990.00') num_format
from dual
/
select to_char(SYSDATE, 'Day, Month DD, YYYY') date_format
from dual
/
Consigo:
NUM_FORMAT
------------
$1,234.89
1 row selected.
DATE_FORMAT
-----------------------------
Friday , August 14, 2006
1 row selected.
¿Notas el plomo el espaciar en la primera declaración y el espaciamiento impar en el segundo?
Eso puede ser molesto. Conseguir libró de él, uso justo el modificante de la máscara del formato de FM.
Ahora puedo funcionar esto:
Y consigo:
NUM_FORMAT
------------
$1,234.89
1 row selected.
DATE_FORMAT
-----------------------------
Friday, August 14, 2006
1 row selected.
Posted by
LewisC
at
5:02 PM
0
comments
Labels: format, format modifier, mask, oracle, to_char
Monday, October 1, 2007
¿Cuál es la diferencia entre el SQL y PL/SQL?
¿Cuál es SQL?
El SQL se compone de DML y de DDL. DML son las palabras claves que utilizas tener acceso y manipular a datos, por lo tanto la lengua de manipulación de datos conocida. DDL son las palabras claves que utilizas crear objetos tales como opiniónes, tablas y procedimientos, por lo tanto el idioma de definición de datos conocido. Los ejemplos de DML son SELECT, UPDATE, INSERT, MERGE, DELETE, etc. Los ejemplos de DDL son CREATE TABLE, ALTER VIEW, CREATE OR REPLACE PROCEDURE, el etc.
Ejemplo DDL:
CREATE TABLE whatever (
column1 NUMBER NOT NULL PRIMARY KEY,
column2 VARCHAR2(10),
column3 DATE );
Ejemplo DML:
INSERT INTO whatever (column1, column2, column3)
VALUES (1, 'Text Data', sysdate );
SELECT column1, column2, column3
FROM whatever;
COMMIT;
¿Cuáles son comandos del SQL?
Los comandos del SQL son los comandos que no son realmente una parte del estándar del SQL pero son apoyados por las herramientas que apoyan el SQL. Por ejemplo, el SQL*Plus ha estado alrededor de un de largo plazo y muchas herramientas que permiten el scripting también permiten comandos del SQL*Plus. Cuando alguien me pregunta acerca de un comando del SQL, primero clarifico si el medio una palabra clave del SQL o un comando del SQL*Plus (o un poco de otra herramienta).
Los comandos del SQL se significan generalmente de ayudar a formato para hacer salir: La BREAK, BTITLE, COLUMN, PRINT o ellos se significan para crear o para almacenar datos o las escrituras: COMPUTE, DEFINE, STORE, SAVE. Hay también los comandos que obran recíprocamente con la base de datos: SHUTDOWN, CONNECT, COPY. Y hay por lo menos uno que obra recíprocamente con datos: XQUERY.
Tan cuando oyes a alguien referir a un comando del SQL, primero preguntar si realmente significan el SQL o si significan la herramienta del SQL ellos están utilizando.
¿Cuál es PL/SQL?
La respuesta rápida es de la guía del usuario de PL/SQL:
PL/SQL, extensión procesal de Oracle del SQL, es un lenguaje de programación fourth-generation avanzado (4GL). Ofrece características de la software-ingeniería tales como encapsulación de datos, sobrecargar, tipos de la colección, excepciones, y ocultar de la información. PL/SQL también apoya prototyping y el desarrollo rápidos con la integración apretada con el SQL y la base de datos de Oracle.
¿Pero qué ese medio? La llave aquí es las palabras: extensión procesal del SQL. PL/SQL es una lengua procesal como C++, Java, ADA, etc. Si tiene variables y declaraciones de la variable, los controles condicionales como IF y CASE. Tiene estructuras de colocación tales como LOOP, FOR LOOP y WHILE LOOP. PL/SQL utiliza el SQL para utilizar, para manipular y para ahorrar datos a la base de datos.
Si deseara crear mis el propios, muy corto, definición de PL/SQL sería ésta: PL/SQL es el lenguaje de programación nativo de Oracle que proporciona el desarrollo base de datos-céntrico del uso. Puede llamar nativo el SQL estático y proporciona métodos múltiples de llamar el SQL dinámico.
Ejemplo PL/SQL:
BEGIN
-- A PL/SQL cursor
FOR c1 IN (
SELECT * FROM whatever ) -- This is SQL called by PL/SQL
LOOP
DBMS_OUTPUT.PUT_LINE( 'Column1 is: ' || TO_CHAR(c1.column1) ||
', Column2 is: ' || c1.column2 ||
', Column3 is: ' || TO_CHAR(c1.column3 ) );
END LOOP;
END;
Y ahora la respuesta a la pregunta principal: ¿cuál es la diferencia entre el SQL y PL/SQL? El SQL es una lengua orientada los datos para los sistemas que seleccionan y de manipulaciones de datos. PL/SQL es una lengua procesal para crear usos. No tienes normalmente un “uso del SQL”. Tienes normalmente un uso que utilice el SQL y una base de datos emparentada en el back-end. PL/SQL puede ser la lengua del uso apenas como Java o poder de PHP. El SQL puede ser la fuente de los datos para tus pantallas, Web pages e informes. PL/SQL pudo ser la lengua que utilizas construir, ajustar a formato y exhibir esas pantallas, Web pages e informes.
Pensar en él tienen gusto de esto: El código que hace tu función del programa es PL/SQL. El código que manipula los datos es SQL DML. El código que crea objetos almacenados de la base de datos es SQL DDL. DDL compila el código que se escribe en PL/SQL. PL/SQL puede llamar el SQL para realizar la manipulación de datos. Los comandos que ajustaron a formato la salida de una herramienta no se relacionan con el SQL estándar o con PL/SQL.
Posted by
LewisC
at
5:22 PM
0
comments
Labels: aprender el oráculo, diferencia, oracle, pl/sql, sql
Saturday, September 29, 2007
El SQL básico ensambla
El primeros nos ensamblan cubrirán se llaman un equijoin, también llamado un interno ensamblan. Aquí es donde una columna (o las columnas múltiples) en dos o más tablas empareja. Por nuestro ejemplo:
SELECT emp.ename, dept.dname
FROM emp JOIN dept
ON emp.deptno = dept.deptno
/
Qué este selecto dice es seleccionar la columna del ename de la tabla del emp junto con la columna del dname en la tabla del departamento. Ensamblar el emp y el departamento comparando las columnas del deptno en cada uno para la igualdad.
Puedo pensar en por lo menos tres otras maneras de escribir esta pregunta en Oracle, pero creo que ésta es la manera más clara y más intuitiva de hacer tan. Puedes también ver la pregunta antedicha escrita como esto:
SELECT emp.ename, dept.dname
FROM emp INNER JOIN dept
ON emp.deptno = dept.deptno
/
Oracle omite automáticamente el JOIN a INNER para no requerir la palabra clave INNNER. Son la misma pregunta, aunque. Apenas prefiero no mecanografiar la palabra clave INNER.
Y cómo limitamos esto apenas al departamento de las SALES:
SELECT emp.ename, dept.dname
FROM emp JOIN dept
ON emp.deptno = dept.deptno
WHERE dept.dname = 'SALES'
/
Esto está consiguiendo útil ahora. La autorización, nos dejó volver a todos los empleados en las OPERATIONS del departamento.
SELECT emp.ename, dept.dname
FROM emp JOIN dept
ON emp.deptno = dept.deptno
WHERE dept.dname = 'OPERATIONS'
/
Uh, oh. No conseguimos ninguna fila vuelta. Si nos referimos de nuevo a nuestra pregunta anterior, podemos ver que hay un dname de operaciones, pero no tenemos ningún empleado en ese departamento. ¿Cómo podemos conseguir detrás un expediente con el dname? Necesitamos un OUTER JOIN. Un externo ensambla dice Oracle volver las filas a la izquierda o derecho (de la cláusula del JOIN) aunque no hay filas.
SELECT emp.ename, dept.dname
FROM emp RIGHT OUTER JOIN dept
ON emp.deptno = dept.deptno
WHERE dept.dname = 'OPERATIONS'
/
Notan que agregué la palabra clave RIGHT OUTER a la cláusula del JOIN. Eso dice que la vuelta las filas a la JOIN (en este caso DEPT) aunque allí no es ninguna fila a la izquierda (en este caso EMP).
Podríamos reescribir la pregunta como tal:
SELECT dept.dname, emp.ename
FROM dept LEFT OUTER JOIN emp
ON dept.deptno = emp.deptno
WHERE dept.dname = 'OPERATIONS'
/
En este caso, pusimos el DEPT a la izquierda y utilizamos un LEFT OUTER ensamblamos para conseguir los mismos resultados.
Sunday, September 23, 2007
¿Cuál es un tipo de datos VARCHAR2?
VARCHAR2
VARCHAR2 es la secuencia del workhorse mecanografía adentro la base de datos de Oracle. VARCHAR2 es una secuencia de la longitud variable que debe tenerlo es longitud máxima declarada antes de usar. En Oracle 10g, una columna VARCHAR2 puede ser hasta 4000 octetos y puede ser hasta 32767 octetos en un programa de PL/SQL.
VARCHAR2 puede almacenar cualquier tipo de datos no-binarios. Dependiendo de la lengua definida en la base de datos (doble o multibyte), el número real de caracteres puede ser menos que el número de octetos. Por ejemplo, si la lengua requiere tres octetos por carácter, puedes almacenar más serías 32767 divididos por 3 caracteres.
Para declarar un VARCHAR2, puedes especificar el número de octetos o el número de caracteres. Especificar el número de caracteres si utilizas un juego de caracteres del multi-octeto. Si no, especificar los octetos.
Un declaración parece esto: VARCHAR2 (30) que declararían una secuencia de 30 octetos y son equivalentes a VARCHAR2 (BYTE 30). Declarar una cadena de caracteres 30, utilizar: VARCHAR2 (CHAR 30). En el juego de caracteres utilizo, VARCHAR2 (30), VARCHAR2 (BYTE 30) y VARCHAR2 (CHAR 30) almacenará exactamente el mismo número de caracteres.
En mis bases de datos, utilizo VARCHAR2 casi exclusivamente. La única vez que no utilizo VARCHAR2 es si necesito una secuencia grande (opinión para los documentos y tales) cuando utilizaré un CLOB. Cubriré CLOBs en el futuro.
Si necesito una variable de PL/SQL que sea más grande de 4000 octetos, sin embargo declararé a veces un LONG. UN PL/SQL LONG es sinónimo con VARCHAR2 (32760). No utilizo deseo en tablas mientras que CLOBs está mucho mejor. UN LONG en una tabla no es sinónimo con VARCHAR2 en todos.
Posted by
LewisC
at
9:37 AM
0
comments
¿Cuál es Oracle?
¿Conjeturo que la primera pregunta está realmente, “cuál es una base de datos”? Una base de datos es una recogida de datos organizada. Los datos pueden ser textuales, como datos de la orden o del inventario, o pueden ser los cuadros, los programas o todo lo demás que se pueden almacenar en una computadora en forma binaria.
Una base de datos emparentada almacena los datos bajo la forma de tablas y columnas. Una tabla es la categoría de datos, como empleado, y las columnas son información sobre la categoría, como nombre o la dirección.
Algunas bases de datos tienen sistemas mínimos de la característica y almacenan solamente datos, mientras que otras incluyen lenguajes de programación, instalaciones y utilidades para apoyar usos del empresa-nivel como ERP y el almacenamiento de los datos. Oracle es la base de datos #1 y tiene la característica más avanzada fijada.
Oracle se compone de un sistema de procesos que funcionan en tu sistema operativo. Estos procesos manejan cómo se almacenan los datos y cómo están alcanzados. Cubriré estos procesos detalladamente en el futuro; pero para ahora nosotros apenas necesitamos entender que Oracle sea un programa que está funcionando en el fondo, está manteniendo tus datos para ti y está calculando hacia fuera donde debe ir en tu impulsión dura.
En casi todas las bases de datos emparentadas, los datos están alcanzados con el SQL, o el lenguaje de interrogación estructurado, y Oracle no es ninguna excepción. El SQL permite que SELECT tus datos, nuevos expedientes del INSERT, que UPDATE expedientes existentes y que DELETE expedientes que deseas conseguir librado de. El SQL se puede encajar en otras idiomas o puedes funcionar las escrituras del SQL directamente contra la base de datos.
PL/SQL es la extensión de lengua procesal al SQL. PL/SQL es un lenguaje de programación como C, Java o PASCAL. En el mundo de Oracle, no hay manera mejor de tener acceso a tus datos por dentro de un programa. El SQL se puede encajar nativo en programas de PL/SQL. Utilizaré el SQL y PL/SQL muy pesadamente en mis artículos futuros.
PL/SQL es una lengua característica-rica engranada hacia usos de la base de datos que se convierten. PL/SQL es la lengua procesal de la base de datos, pero es también la lengua procesal para la mayor parte de las herramientas de Oracle. Los programas que funcionan dentro de la base de datos se llaman los procedimientos almacenados. Estos procedimientos almacenados son casi siempre PL/SQL, pero se pueden escribir en Java.
Posted by
LewisC
at
9:32 AM
0
comments
Labels: definición, oracle, sql