Вы находитесь на странице: 1из 11

SQL FUNDAMENTAL

Sql lenguaje estndar de consultas yadministracin de Base de datos. Sql es utilizado por programadores, administradores de base de datos y usuarios. Arquitectura SQL se puede categorizar en: SQLCategory Data Manipulation Languaje (DML) Description Data manipulation language (DML) statements access and manipulate data in existing schema objects. These statements do not implicitly commit the current transaction. The data manipulation language statements are:
CALL DELETE EXPLAIN PLAN INSERT LOCK TABLE MERGE SELECT UPDATE

Data definition language (DDL) statements let you to perform Data DefinitionLanguage these tasks: Create, alter, and drop schema objects (DDL) Grant and revoke privileges and roles Analyze information on a table, index, or cluster Establish auditing options Add comments to the data dictionary

The DDL statements are: ALTER ... (All statements beginning with ALTER)
ANALYZE ASSOCIATESTATISTICS AUDIT COMMENT CREATE ... (All statements beginning with CREATE) DISASSOCIATESTATISTICS DROP ... (All statements beginning with DROP) FLASHBACK ... (All statements beginning with FLASHBACK) GRANT NOAUDIT PURGE RENAME REVOKE TRUNCATE UNDROP

Transaction Control

Transaction control statements manage changes made by DML statements. The transaction control statements are: COMMIT ROLLBACK SAVEPOINT SET TRANSACTION

All transaction control statements, except certain forms of the COMMIT and ROLLBACK commands

Session control

Session control statements dynamically manage the properties of a user session. These statements do not implicitly commit the current transaction. PL/SQL does not support session control statements. The session control statements are:
ALTER SESSION SET ROLE The single system control statement, ALTERSYSTEM, dynamically manages the properties of an Oracle Database instance. This statement does not implicitly commit the current transaction and is not supported in PL/SQL

System control

Fuente del cuadro: http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_1001.htm#i20 99257

Herramientas SQL: SQL*PLUS


SQL*Plus est disponible en todas las plataformas en las que se ejecuta Oracle. Se sirve con el cliente de Oracle. Tambin est presente en el servidor. Se puede ejecutar cualquier comando de base de datos o bloque PL/SQL en SQL*Plus (siempre que se disponga de permisos).

Cuando se inicia SQL*Plus, se abre una ventana que nos pide el usuario, la contrasea y la cadena de conexin. La cadena de conexin es el alias de la base de datos.

Si omitimos esta cadena, SQL*Plus intenta conectarse a la base de datos local definida en la variable ORACLE_SID. Una vez que entramos en el programa podemos cambiar de conexin ejecutando: CONNECT <USERNAME>/<PASSWORD>@<CONNECTSTRING> <CONNECTSTRIG> = alias de Base de datos. Si omitimos la contrasea, nos aparecer el pedido de ingreso de la misma:

Si omitimos la cadena de conexin, se intentar conectar a una base de datos local. Para salir de SQL*Plus, debemos utilizar el comando EXIT.

Tambin es posible invocar SQL*Plus con el comando sqlplus: SQLPLUS<USERNAME>/<PASSWORD>@<CONNECTSTRING> Ejemplos: SQL>SELECT800 - 400 FROM dual;

Consiguiendo Informacin con el Comando DESCRIBE


Con el comando DESCRIBE se pude conseguir informacin acerca de los objetos de las base de datos.

Ejemplos: SQL>DESCRIBE hr.countries;


Name Type Nullable Default Comments ------------ ------------ -------- ------- -----------------COUNTRY_ID CHAR(2) Primary key of countries table. COUNTRY_NAME VARCHAR2(40) Y Country name REGION_ID NUMBER Y Region ID for the country. Foreign key to region_id column in the departments table. SQL>

Tipos de Datos de Oracle CHAR(<size>) : <size> puede almacenar desde 1 byte a un mximo 2000
bytes. Por defecto el tamao es 1 byte.

VARCHAR2(<size>):<size> puede almacenar hasta 4000 bytes, no posee


tamao por defecto.

NUMBER (<p>, <s>) :<p> es la precisin y <s> es la escala.


<p> puede almacenar entre 1 y 38 y la <s> tiene un rango entre -84 y 127. La precisin y escala puede ser emitida y almacenan el mximo valor permitido. La escala redondea el valor despus del punto decimal a <s>dgitos. Ejemplo NUMBER (5,2) su rango de valores es desde -999.99 hasta 999.99. Oracle redondeara nmero insertados con una escala menor que el nmero insertado. Ejemplo NUMBER (4,2) si inserta el valor 12.125 el valor ser 12.13.

Si el valor excede la precisin, sin embargo, Oracle retornara un error. Ejemplo no se pude insertar 123.1 dentro NUMBER (4,2). Si la escala es negativa, el nmero es redondeado a la izquierda de la coma decimal. Ejemplo en NUMBER (5,2), si se trata de insertar 12345.345 el valor ser 12300, si se trata de insertar 1234.567 el valor ser 1234.600, o si se trata de insertar 12345678 el valor sea un error (s-(-p) = s + p = 5+2 = 7). Si se especifica una escala que es superior al valor de la precisin, la precisin define el nmero de dgitos a la derecha del punto decimal despus de ceros. Ejemplo NUMBER (3,5) el rango de valores es -0.00999 hasta 0.00999; esto requiere dos ceros (<s>-<p>) con 5 dgitos despus de los ceros. Ejemplo NUMBER (4,5) y si se inserta 0.01234567 el valor ser 0.01235.

DATE: Almacena informacin de la fecha y tiempo. El componente del tiempo


del tipo de dato DATE tiene una resolucin de 01 segundo menos. El valor ocupado y almacenado es de 7 bytes. La siguiente informacin est contenida en cada dato de tipo DATE: - Century - Year - Month - Day - Hour - Minute - Second Los valores insertados o actualizados en DATE son convertidos de nmeros y letras a un dato de tipo DATE usando la funcin TO_DATE. El formato por defecto es: DD-MON-YY. Si se ingresa tiempo el formato es HH:MM:SS siendo 00:00:00 la media noche. La funcin SYSDATE retorna la fecha actual y el tiempo del sistema (servidor).

TIMESTAMP [<precisin>]:Almacena la fecha y tiempo con precisin


fraccional para los segundos, con una precisin de 9 dgitos y por defecto 6 dgitos. La funcin SYSTIMESTAMP retorna la fecha actual y el tiempo del sistema (servidor).

Operadores y Literales Operadores Aritmticos + * /

Operador de concatenacin - || Precedencia de operadores


Precedencia
1 2 3 4

Operador
(),[] -,+ *, / ||

Literales
Son valores que representan un valor fijo. Hay cuatro tipos de literales: Textos Literales. Deben ser encerrados entre simples cuotes de marca ('). Oracle trata a todos los literales de tipo texto como valores de tipo CHAR para comparacin. Simples cuotes de marca pueden ser incluido dentro de un literal tipo texto pero debe ser precedido de otro simple coute de marca. Ejemplo: 'The Quick Brown Fox' 'That man ''s suit is black' 'And I quote: "This will never do."' Alternativamente, se puede usar Q o q, el cual provee un rango delimitadores. La sintaxis Q/q es: [Q|q]' <quote_delimiter><text literal><quote_delimiter>' Ejemplo: q'<The Quick Brown Fox>' Q'# Than man's suite is "black"#' LiteralesNumericos. 24, -456, 24.0, -324.65, 22E-10, 2f, -32.1D Literal Datetime. DATE '2008-03-24' '2008-03-24 03:25:34.123 -7:00'

Escribiendo Simples Consultas. Usando la declaracin SELECT.


SELECT * FROM HR.jobs; SELECT job_title, min_salary FROM HR.jobs;

Alias de Nombres de Columna.


SELECT job_title, min_salary AS "Minimun Salary" FROM HR.jobs; SELECT job_title, min_salary "Minimun Salary" FROM HR.jobs; SELECT job_title, min_salaryMinimun_Salary FROM HR.jobs;

Asegurando Unicidad.
SELECT DISTINCT department_id FROM HR.employees; SELECT DISTINCT department_id, first_name FROM HR.employees;

La tabla DUAL.Es una tabla ficticia para todos los usuarios en la base de
datos, es utilizado para variables del sistema o evaluar expresiones. SELECT SYSDATE FROM dual; SELECT 'Today is '|| SYSDATE FROM dual;

Limitando Filas. Se puede utilizar la clausula WHERE para limitar el


nmero de filas.

Operadores de Comparacin.
Igualdad: = Inigualdad: !=, <> Menorque: < Mayor que: > Menor o igualque: <= Mayor o igualque: >= SELECT first_name, FROM employees WHERE commission_pct<= .15; ANY o SOME SELECT first_name, FROM employees WHERE department_id<= ANY(10,15,20,25);

ALL SELECT first_name, FROM employees WHERE department_id>= ALL(80,90,100);

Operadores Lgicos. Cuando un operador lgico es aplicado a NULL, el


resultado es UNKNOWN NOT AND OR

Otros Operadores
IN NOT IN SELECT first_name, FROM employees WHERE department_id IN (80,90,100); BETWEEN SELECT first_name, last_name, salary FROM hr.employees WHERE salary BETWEEN 5000 AND 6000; EXIST. Este operador siempre debe estar seguido de un query IS NULL IS NOT NULL LIKE. Este operador utiliza patrones de bsquedausando por ejemplo el carcter % SELECT first_name, last_name FROM hr.employees WHERE first_name LIKE 'Su%' AND last_name NOT LIKE 'S%'; Igual SONIC1, ULTRASONI21 TIME, LIME %SONIC1, %SONI91 CRIME_FILE, TIME_POLE No Igual SONICS1, SONI315 IME, CRIME SONIC1, ULTRASONIC1 CRIMESPILE, CRIME_ALE

Patron %SONI_1 _IME \%SONI_1 ESCAPE '\' %ME\___LE ESCAPE '\'

Regla de precedencia de Operadores

SELECTlast_name,salary,department_id,job_id,commission_pct FROM employeesWHERElast_name like '%a%' and salary >department_id * 200orjob_id in ('MK_REP','MK_MAN') and commission_pct is not null

Ordenando Filas. Orderby


SELECT *|{[DISTINCT] column|expression[alias],} FROM table [WHERE condition(s)] [ORDER BY {col(s)|expr|numeric_pos} [ASC|DESC] [NULLS FIRST|LAST]];

ASC DESC SELECT first_name, last_name, salary FROM hr.employees WHERE department_id = 90 ORDER BY ASC last_name; SELECT DISTINCT 'Region' || region_id FROM hr.countries ORDER BY 'Region' || region_id

NULLS FIRST NULLS LAST SELECT last_name, commission_pctFROM employees WHERE last_name LIKE R%ORDER BY commission_pct ASC, last_name DESC;

La Expresin CASE. Deriva de la expresin IF THEN ELSE, con un


mximo numero de argumentos de 255 Tipo 1 CASE <expression> WHEN <compare value> THEN <return value> [ELSE <returnvalue>] END SELECT country_name, region_id, CASE region_idWHEN 1 THEN Europe WHEN 2 THEN America WHEN 3 THEN Asia ELSE Other END Continent FROM countries WHERE country_name LIKE I%;

Tipo 2 CASE WHEN <condition> THEN <return value> [ELSE <returnvalue>] END SELECT first_name, department_id, salary, CASE WHEN salary < 6000 THEN Low WHEN salary < 10000 THEN Medium WHEN salary >= 10000 THEN High END Category FROM employees WHERE department_id<= 30 ORDER BY first_name;

Aceptando Valores en Tiempo de Ejecucin. Un Ampersand (&)


seguido por una variable exige y acepta valores en tiempo de ejecucin. SELECT department_name FROM departments WHERE department_id = &dept;

Un punto (.) es usado para anexar o concatenar inemediatamente despus de sustituir la variable.

SELECT job_id, job_title FROM jobs WHERE job_id = &JOB._REP

Вам также может понравиться