Sei sulla pagina 1di 7

SQL

Fargo
LENGUAJE DE CONSULTA ESTRUCTURADO, en informática, un sub
lenguaje utilizado en bases de datos para consultar, actualizar y manejar
bases de datos relacionales. Se deriva de un proyecto de investigación de
IBM, que creó el "lenguaje estructurado de consulta en inglés" (SEQUEL) en
la década de los setenta. El SQL es un estándar aceptado en productos de
bases de datos. A pesar de que no se trata de un lenguaje de programación
como puedan serlo C o Pascal, puede utilizarse en el diseño de consultas
interactivas y puede incluirse en una aplicación como un conjunto de
instrucciones de manejo de datos. El SQL estándar cuenta también con
elementos destinados a la definición, modificación, control y protección de
los datos. Tanto los usuarios técnicos como los que no lo son pueden utilizar
este lenguaje.
SQL: Siglas del ingles de Lenguage Query System= Sistema de Lenguaje de
Preguntas utilizado generalmente en sistemas administradores de bases de
datos, tanto en Main Frame, como en computadores personales.
SQL es un lenguaje universal dedicado a las bases de datos. Es un lenguaje
de sintaxis simple y muy potente. Mediante él se puede recorrer, modificar o
borrar registros de las tablas de datos.
SQL (Structured Query Language) es un potente lenguaje informático que
cumple las funciones de DDL y DML en los SGBD relacionales. Su origen
está en el lenguaje SEQUEL (Structured English QUEry Language)
desarrollado en IBM en los años 1974-75. Oracle fue el primer fabricante de
sistemas de bases de datos en comercializar una implementación de SQL en
1979. IBM lanzó el producto SQL/DS en 1981 y dos años más tarde el
conocido DB2. Se trata de un lenguaje fuertemente basado en el inglés, que
puede ser utilizado en modo conversacional mediante un intérprete o bien
formando parte de un programa desarrollado en un lenguaje de
programación anfitrión como C, Cobol, etc. (SQL embebido). La
característica relacional más importante de SQL es que permite acceder a
los datos sin necesidad de especificar cómo se ha de realizar dicho acceso
permitiendo así la "navegación automática" por los datos

DML
Fargo
DML (Lenguaje de Manipulación de Datos). Permite la manipulación de las
operaciones de Inserción, Eliminación y Modificación
Comando Permite generar consultas para ordenar, filtrar y
DML extraer datos de la base de datos.
Utilizado para consultar registros de la base de datos que
SELECT
satisfagan un criterio determinado.
Utilizado para cargar lotes de datos en la base de datos en una
INSERT
única operación.
Utilizado para modificar los valores de los campos y registros
UPDATE
especificados.
Utilizado para eliminar registros de una tabla de una base de
DELETE
datos.
DML son las siglas de Data Manipulation Language y se refiere a los
comandos que permiten a un usuario manipular los datos en un repositorio,
es decir, añadir, consultar, borrar o actualizar.En SQL los comandos SELECT,
INSERT, UPDATE y DELETE son comandos DML

Otras ódenes como COMMIT, START TRANSACTION o ROLLBACK están


en el límite de lo que podemos considerar órdenes DML de SQL puesto que
no inciden en la manpilación o consulta de datos pero sí en el proceso en
que esto se realiza.

Por cierto que lo de "START TRANSACTION" no es estándar y depende de la


implementación de SQL (en Sybase si no recuerdo mal, una transacción se
modela poniendo el AUTOCOMMIT a false y tras hacer el COMMIT o
ROLLBACK, a true).
Select * from Clientes; -- Saca todos los datos de la tabla clientes
Select Codigo, Nombre, Direccion from Clientes; -- Sacar los unos datos determinados de la
tabla Clientes
ALIAS
Select Codigo as Clave, Sueldo as "Salario Minimo" -- Pone Alias a los dos campos, apareciendo
Clave y Salario Mínimo
from Clientes;

DISTINCT : Permite evitar que se repitan valores iguales de las columnas especificadas tras la cláusula. Si
en lugar de una se especifica una lista de columnas separadas por comas, se hace referencia a filas en
las que el conjunto de datos de las columnas especificadas sea distinto.
Select distinct Zona from Clientes; -- Saca el campo Zona, pero sin duplicar, un
único valor de cada uno

TABLA DUAL (Variables del sistema)


Select sysdate, user from dual; -- Saca datos del sistema (tabla dual), como
son la fecha del sistema y del usuario.
Select 'Yo soy ' || user || ' Hoy es ' || sysdate -- Concatena la cadena con variables: P.
ejemplo: 'Yo soy XXX Hoy es 10/05/2007'
(Operadores de Comparación)
Select Apellido || ', ' || Nombre, -- Concatena el Apellido y el Nombre, además
filtra a aquellos que sean de la Zona 6
from Clientes
where Zona = 6;
Select Apellido || ', ' || Nombre -- En este caso, concatena Nombre y Apellidos,
pero que la comisión sean diferente a 10
from Clientes
where Comision <> 10;
ANY o SOME
Select Apellido || ', ' || Nombre -- Sacan aquellos datos de clientes cuya
comisión sea menor de cualquiera de ellos
from Clientes
where Comision <= ANY (5, 10, 15, 20);
ALL
Select Apellido || ', ' || Nombre -- Sacan aquellos datos de clientes cuya
comisión sea mayor que todos ellos
from Clientes
where Comision >= ALL (30, 35, 40, 45);
NOT
Select Apellido, Zona -- Mostrarán aquellos datos cuyo zona sea
menor que 15 (es decir, no sea mayor
from Clientes o igual que 15)
where Not (Zona >= 15);

AND
Select Apellido, Nombre -- Sacará los datos que tengan como Nombre
Miguel y como Apellido Alcaraz
from Clientes
where Nombre = 'Miguel'
And Apellido = 'Alcaraz';
OR
Select Apellido, Nombre -- Sacará los datos que tengan como Nombre
Miguel o Francisco
from Clientes
where Nombre = 'Miguel'
Or Nombre = 'Francisco';

IN y NOT IN: Permite buscar entre uno o un conjunto de valores. En este último caso los valores deben
estar separado por comas y encerrados entre parentesis.
Select Apellido, Nombre, Zona -- Mostrará aquellos datos cuya zona sea 2, 4
u8
from Clientes
where Zona In (2, 4, 8);
Select Apellido, Nombre, Zona -- En este caso, mostrará aquellos datos que
no sean 2, 4 u 8
from Clientes
where Zona Not In (2, 4, 8);
BETWEEN
Select Apellido, Nombre, Sueldo -- Muestra los clientes cuyo salario esté
comprendido entre esos valores, ambos incluidos
from Clientes
where Sueldo Between 1800 and 2300;
EXISTS
Select Apellido, Nombre, Zona -- En esta consulta, sacaremos los datos,
únicamente si existe algún dato en la
from Clientes cl -- Select que tenemos en el Where primero.
where exists (select 1 from ForPago fp
where fp.CodForPag = cl.CodForpag
and fp.Tipo = 'GIRO');
IS NULL y IS NOT NULL -- Sacará los datos si el campo Sexo está Null (es
decir, no hay datos)
Select Apellido, Nombre
from Clientes
where Sexo Is Null;
LIKE
Select Apellido, Nombre -- Muestra datos en los que el apellido
empiece por Al y el nombre empiece por M
from Clientes
where Apellido like 'Al%'
and Nombre like 'M%';

ORDER BY: Permite sacar los resultados de forma ordenada. Por defecto, la ordenación será ascendente,
salvo que se emplee el modificador DESC, para especificar una ordenación descendente
Select Apellido, Nombre -- Saca los datos y los ordena por el campo
Apellido
from Clientes
where zona = 5
order by Apellido;
Select Apellido || ' , '|| Nombre as 'Nombre de Empleado' -- En este caso, ordena por Nombre
from Clientes
where zona = 5
order by Nombre;
Select Apellido, Nombre, Salario, CP -- Aquí se ordena por CP descendente,
Apellido Ascendente y por Nombre
from Clientes
where zona in (4, 5, 6)
order by CP desc, Apellido asc, Nombre;
Select distinct 'Zona ' || Zona -- Ordena por una constante más el campo
Zona
from Clientes
order by 'Zona' || Zona;
Select Apellido, Nombre, salario, CP -- En este caso, se ordena por Apellido, CP y
Salario (1, 4, 3)
from Clientes
where zona in (3, 4, 6)
order by 1, 4, 3;

ORDER BY (Ordenando Nulos) :


Select Apellido, Salario, CP -- Saca aquellos apellidos que tengan Martin
en su nombre from Clientes -- Está
ordenado por el CP, pero saca los que sean campos nulos primero
where Apellido like '%Martin%'
order by CP asc nulls first;
CASE
Select Poblacion, Prov, -- En este caso, compara el campo Prov con
una serie de valores
case Prov -- según el valor, se le da un valor (que sería
el nombre de la provincia)
when 3 then 'Alicante' -- Si no está entre los valores, toma el valor
'No tiene provincia'
when 8 then 'Barcelona' -- El dato que sea se asignará a la variable
Provincia
when 28 then 'Madrid'
when 30 then 'Murcia'
else 'No tiene Provincia'
end as Provincia
from Clientes
where Codigo Between 100 and 300;

Select Apellido, Zona, Salario, -- En este caso, se incluye el campo dentro


de cada When, pero el resto es igual
case -- es así, porque ya no se compara por un
número en concreto
when Salario < 6000 then 'Bajo'
when Salario < 10000 then 'Regular'
when Salario >= 10000 then 'Alto'
end as Categoria
from Clientes
where Zona <= 4
order by Apellido;

DDL
Fargo
Comandos DLL
Los comandos DDL son las siglas de Data Definition Language, y se
corresponde con el conunto de órdenes que permiten definir las estructuras
que van a contener los datos en un repositorio. Como concepto, es ajeno a
un tipo de repositorio concreto, ya sea una base de datos relacional, un
OLAP o XML. Un subconjunto de SQL son comandos DDL. Es el formado por
las ódenes CREATE, DROP y ALTER
Comando Descripción

CREATE Utilizado para crear nuevas tablas, stored procedures e índices

DROP Empleado para eliminar tablas, stored procedures e índices

Utilizado para modificar las tablas agregando campos o cambiando la


ALTER
definición de los campos

Create Table: Crea una tabla

CREATE TABLE nombre Tabla


(nombre_campo1 Tipo_de_variable [(tamaño)] [Null/Not Null] [Primay Key] [Check (condición)],
nombre_campo2 Tipo_de_variable [(tamaño)] [Null/Not Null] [Primay Key],
[FOREIGN KEY(Clave Secundaria) REFERENCES Tabla_Primaria(Clave_Primaria_Tabla_Primaria1,
[Clave_Primaria_Tabla_Primaria2)]
[CONSTRAINT pk_NombreRestriccion PRIMARY KEY (clave1, clave2)]
[CONSTRAINT fk_NombreRestriccion FOREIGN KEY (clave secundaria) REFERENCES
TablaPrimaria(ClavePrimaria)]
etc... );
Se puede añadir, como parámetro adicional a las Claves ajenas (Foreign key), la opción ON DELETE
CASCADE para que elimine en cascada los registros si se elimina la clave primaria de la que depende.
Ejemplo

CREATE TABLE Clientes


(
Cli_Cod Integer Not Null Primary Key,
Cli_Descripcion Varchar2(30) Not Null,
Cli_Direccion Varchar2(30) Not Null
);

Existe una variación, que sería la de crear una tabla a partir de una SELECT

CREATE TABLE nombre Tabla


AS
SELECT (Sentencia SQL);

Ejemplo

CREATE TABLE Copia_Clientes


AS
SELECT * FROM Clientes WHERE Modif = 1;

Esto, lo que realiza, es una Select y el resultado de la misma se inserta como una tabla nueva.

Create View: Una vista es simplemente una instrucción archivada de SQL, por lo cual no contiene
datos. Se puede formar a partir de tablas, pero también de otras vistas. Se representa en forma de
tabla, pudiéndose insertar, modificar o borrar información de ellas. Sirve para mostrar ciertos datos a
usuarios, no mostrando otros que por la razón que sean, no queremos que sean accesibles.

CREATE [OR REPLACE] VIEW nombre Tabla


AS
SELECT (Sentencia SQL);

Ejemplo:

CREATE VIEW Consulta_Saldo_vw


AS
SELECT Cl.Codigo, Cl.Nombre, Hi.SaldoAnual
FROM Clientes Cl, Historico Hi
WHERE (cl.codigo = hi.codigo) AND (Hi.SaldoAnual BETWEEN 2000 AND 2500)
ORDER BY CL_SaldoAnual Desc;

Con esto, se generaría la vista, pero no se ejecuta, sino que se guarda con ese nombre
(Consulta_Saldo_vw). Para ejecutar una vista, sería similar al Select de una tabla

SELECT *
FROM nombre Vista;

Ejemplo

SELECT *
FROM Consulta_Saldo_vw;

Create Index: Se utilizan para que las búsquedas por ciertos campos sean más ágiles. No es
recomendable cuando los datos que se muestren sean superiores al 5% del total. El índice puede ser
unívoco (cuando no se admiten campos duplicados en dicho índice) o no unívoco.
CREATE [UNIQUE] INDEX Nombre Indice
ON Nombre de tabla (Nombre del Campo) [ASC/DESC];

Las columnas deben de ir por orden de prioridad.


UNIQUE: Si se emplea,el índice comprobará, e impedirá, que no se introduzca un valor repetido
en la columna con la que está asociado.
ASC/DESC: Indica si el índice lleva orden ascendente o descendente.

Ejemplo

CREATE UNIQUE INDEX ui_Cliente_Nombre


ON Cliente (Cl_Nombre);

Alter Table: Esta instrucción DDL se suele utilizar para cambiar características de las tablas, como
pueden ser insertar campos, modificar campos, añadir restricciones (CHECK, Claves, etc.). Al ser una
función tan diversas, vamos a intentar analizarlas todas:
ADD: Se emplea para añadir un nuevo archivo de control a la base de datos
DROP: Permite borrar un archivo de control
RENAME: Permite renombrar un archivo de control

Añadir Restricción de Clave Primaria: Si no se añade la clave primaria a la hora de crear la tabla, se
puede anexar después.

ALTER TABLE Nombre Tabla


ADD CONSTRAINT Nombre_Restricción
PRIMARY KEY (Nombre de Campo1, Nombre de Campo2, ... etc);

Ejemplo

ALTER TABLE Cliente


ADD CONSTRAINT pk_Codigo_Cliente
PRIMARY KEY (Cl_Cliente);

Añadir Restricción de Clave Secundaria: Se utiliza para definir la relación entre dos tablas. Es
necesario que en la tabla referenciada esté definida la Primary Key, porque la relación se crea entre la
Primary Key de la tabla referenciada y las columnas que indicamos en la cláusula Foreign Key.

ALTER TABLE Nombre Tabla


ADD CONSTRAINT Nombre_Restricción
FOREIGN KEY (Nombre de Campo1, Nombre de Campo 2, .. etc..)
REFERENCES Tabla Referenciada;
Ejemplo
ALTER TABLE Cliente
ADD CONSTRAINT fk_Codigo_Cliente
FOREIGN KEY (Cl_Cliente)
REFERENCES Nominas;

Añadir Campo Nuevo a Tabla: Sirve para añadir un nuevo campo (una nueva columna) a una tabla
ya creada. Debe de tenerse en cuenta que sólo se puede añadir una columna por sentencia.

ALTER TABLE Nombre Tabla


ADD (Nombre_Campo Tipo_de_Variable [(tamaño)] [Null/Not Null])

La restricción NOT NULL sólo puede aplicarse si la tabla está vacía, es decir, aún no tiene ninguna fila.
Para crear una nueva columna con la restricción NOT NULL. Si la tabla ya tiene filas (datos), primero
deberá añadirse la columna sin la restricción, rellenar la columna, y modificarla después para que tenga
la restricción NOT NULL.

Ejemplo

ALTER TABLE Clientes


ADD (Cl_Poblacion Varchar2 (30) );

Modificar Campo de una Tabla: Podemos cambiar alguna de las características de un campo, también
con este comando

ALTER TABLE Nombre Tabla


MODIFY Nombre_Campo Nuevas_Condiciones

No se pueden borrar ni modificar nombres de columnas ya existentes. Sólo se pueden modificar las
variables de tipo carácter a otras variables de tipo carácter si toda la columna está compuesta de NULL,
pero sí está permitido aumentar el tamaño de las variables carácter. Si puede cambiarse el tamaño de
las variables numéricas. Las modificaciones mediante DEFAULT de una columan afectarán sólo a los
datos que se introduzcan después de la modificación, no a laos anteriores.

Ejemplo

ALTER TABLE Clientes


MODIFY Nombre Varchar(30) not null;

En este caso, lo que hemos hecho es cambiar de un tamaño 10 que había en el momento de crear el
campo a uno de tamaño 30, añadiendole también que no se admiten campos nulos en dicho campo.

Otro caso sería poner un campo por defecto, en este cao, quremos que el número de vacantes por
defecto para cualquier curso sea de 20
ALTER TABLE Curso
MODIFY (Vacantes default 20);

Reglas de Validación (Restricción Check): Las reglas de validación son muy importantes porque
permiten establecer una condición a los valores que debe aceptar una columna.

ALTER TABLE Nombre Tabla


ADD CONSTRAINT CK_NombreTabla_NombreCampo
CHECK (Condición);

Ejemplo:

ALTER TABLE Curso


ADD CONSTRAINT CK_Curso_PreCurso
CHECK ( Precurso > 0 );

Alter Constraint : En muchos casos debemos garantizar que los valores de una columna o conjunto de
columnas de una tabla acepten sólo valores únicos

ALTER CONSTRAINT Nombre Tabla


ADD CONSTRAINT Nombre Restricción
UNIQUE (Nombre Campo 1, Nombre Campo 2, ... etc.);

Ejemplo

ALTER TABLE Alumno


ADD CONSTRAINT U_Alumno_NomAlumno
UNIQUE (NomAlumno);

Drop: Este comando se utiliza para eliminar objetos de nuestra base de datos. Se suele utilizar la
palabra Drop, a continuación el nombre del objeto que se desea eliminar (por ejemplo, Table) y por
último, el nombre de dicho objeto (Clientes). Veamos algunos ejemplos:

DROP Nombre_Objeto Nombre_Elemento [CASCADE CONSTRAINTS];

Si se borra una tabla, se borran, a su vez, los índices a ella asociados, vistas, vistas creadas a partir de
dichas vistas, etc.
Si se borra una tabla a la que otras hacen referencia en claves externas habrá que incluir la cláusula
CASCADE CONSTRAINT

Ejemplos:

DROP TABLE Clientes


DROP VIEW Informe_Clientes_vw
DROP INDEX pk_Codigo_Cliente

Potrebbero piacerti anche