miércoles, 26 de junio de 2013

CONSULTAS EN UNA BASE DE DATOS



1. Busca como se utiliza el comando SELECT.  Explicalo mediante 3 ejemplos diferentes que incluyan una tabla y la información arrojada después de realizar la consulta.


2. Aplica las instrucciones vistas para consultar los apellidos de las personas presentes en el ejercicio de la clase anterior.


3. Piensa y escribe como podría ser la consulta para que solo se muestren las personas cuyo apellido empieza por la letra G (para hacerlo debes buscar como se utiliza la palabra WHERE)


4. Para que sirve la palabra FROM presente en las consultas?


5. Los resultados de una consulta pueden ordenados utilizando el comando ORDER BY y definiendo algún criterio de ordenación. Busca ejemplos de como se puede utilizar este comando y explica como puedes ordenar la lista de apellidos de la Z a la A.


6. Busca como podemos hacer para crear una tabla en una base de datos utilizando comandos SQL.


7. Busca como podemos hacer para  escribir registros en una tabla utilizando instrucciones de SQL.


8. Busca algunos comandos adicionales de SQL y explica su funcionalidad.



solución

1. Empezaremos por estudiar la sentencia SELECT, que permite recuperar datos de una o varias tablas. La sentencia SELECT es con mucho la más compleja y potente de las sentencias SQL. Empezaremos por ver las consultas más simples, basadas en una sola tabla.
Esta sentencia forma parte del DML (lenguaje de manipulación de datos), en este tema veremos cómo seleccionar columnas de una tabla, cómo seleccionar filas y cómo obtener las filas ordenadas por el criterio que queramos.

El resultado de la consulta es una tabla lógica, porque no se guarda en el disco sino que está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular.

Cuando ejecutamos la consulta se visualiza el resultado en forma de tabla con columnas y filas, pues en la SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas queremos seleccionar de la tabla origen.







2.La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT.  Habitualmente no deseamos obtener toda la información existente en la tabla, sino que queremos obtener sólo la información que nos resulte util es ese momento. La cláusula WHERE filtra los datos antes de ser devueltos por la consulta.
  
  En nuestro ejemplo, si queremos consultar un coche en concreto debemos agregar una cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo, para que la consulta devuelva sólo los datos del coche con maricula M-1525-ZA debemos ejecutar la siguiente sentencia:

SELECT matricula,
                marca,
                modelo,
                color,
                numero_kilometros,
                num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA';
             Cuando en una cláusula where queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.


SELECT 
matricula,
             marca,
             modelo,
             color,
             numero_kilometros,
             num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA'
        OR matricula = 'M-2566-AA' ;


SELECT 
matricula,
             marca,
             modelo,
             color,
             numero_kilometros,
             num_plazas
FROM tCoches
WHERE NOT matricula = 'M-1525-ZA'  ;


SELECT DISTINCT
 marca,
                                  modelo
FROM tCoches;
    También podríamos haber implicado la consulta a través del uso del comodín de campos, el asterisco "*".
PARTE
DESCRIPCIÓN
tabla1,tabla2
Nombres de las tablas cuyos registros se combinan.
campo1,campo2
Nombres de los campos que se combinan. Si no son numéricos, los campos deben ser del mismotipo de datos y contener la misma clase de datos, pero pueden tener nombres distintos.
opcomp
Cualquier operador de comparación relacional: "=", "<", ">", "<=", ">=" o "<>".
ON tabla1.campo1opcomp tabla2.campo2
PARTE
DESCRIPCIÓN
tabla1,tabla2
Nombres de las tablas cuyos registros se combinan.
campo1,campo2
Nombres de los campos que se combinan. Estos campos deben ser del mismo tipo de datos y contener la misma clase de datos, pero pueden tener nombres distintos.
opcomp
Cualquier operador de comparación relacional: "=", "<", ">", "<=", ">=" o "<>".



4. Y llegamos a la última cláusula de una consulta SQL: ORDER BY, que permite ordenar las filas de resultado por una o más columnas. Esta cláusula no se presenta en última instancia por casualidad, sino por que siempre irá al final de una consulta y el motor SQL también será la última cosa que haga, a efectos lógicos, antes de devolver el resultado. 
Una última cláusula implica una última pregunta de construcción: ¿Cómo deben ordenarse los datos resultantes?

Supongamos que queremos obtener una lista ordenada de los empleados por sueldo, de modo que primero este situado el de menor salario y por último el de mayor:
CÓDIGO: SELECCIONAR TODO
  select NOMBRE,APELLIDOS,SALARIO
    from EMPLEADOS
order by SALARIO




Observamos como introduciendo la cláusula ORDER BY e indicando la columna por la que ordenar, el resultado viene ordenado de forma ascendente (ASC), es decir, de menor a mayor. ¿Y si queremos ordenar a la inversa, de mayor a menor? Bien, en ese caso se debe indicar que la ordenación es descendente (DESC). Veamos esto tomando como patrón la consulta anterior:
CÓDIGO: SELECCIONAR TODO
  select NOMBRE,APELLIDOS,SALARIO
    from EMPLEADOS
order by SALARIO desc




Por tanto si seguido del campo por el que queremos ordenar indicamos ASC, o bien no indicamos nada, la ordenación se hará de forma ascendente, mientras que si indicamos DESC, se hará de forma descendente.
* * *

Veamos un ejemplo donde se ordena por más de un campo. Tomemos por ejemplo la tabla MASCOTAS, y obtengamos una lista de los perros que han pasado por el centro, de modo que primero aparezcan las bajas, y al final las altas, o perros que siguen en el centro. Además queremos que en segundo término la lista este ordenada por nombre:
CÓDIGO: SELECCIONAR TODO
  select *    from MASCOTAS
  where ESPECIE = 'P'order by ESTADO desc, NOMBRE asc




* * *

Veamos un poco como resuelve esto el motor SQL. No vamos a entrar en los algoritmos de ordenación que usa, entre otras cosas porque tampoco los conozco, pero si quiero trazar, como hemos venido haciendo a lo largo del curso, lo que el motor SQL hace. En la consulta anterior el motor SQL recorre la tabla MASCOTAS y selecciona aquellos registros en que el campo ESPECIE contiene una "P", ignorando el resto. De los registros que satisfacen la cláusula WHERE tomará todos los campos, puesto que se ha indicado un asterisco en la cláusula SELECT, y una vez ha recorrido toda la tabla y tiene el resultado, lo ordenará según se indica en la cláusula ORDER BY.

Lo que debe quedar claro es que la ordenación, a efectos lógicos, se realiza siempre al final de todo, sobre las filas de resultado, al margen de la tabla, y siempre lo hará así por muy extensa y compleja que sea una consulta. La ordenación es lo último de lo último que realiza el motor SQL. Y como la ordenación se realiza sobre las filas de resultado, existen otras formas de indicar que columnas van a establecer la ordenación. Podemos por ejemplo hacer referencia a la columna por el orden que ocupa en la cláusula SELECT, por ejemplo:

En esta consulta estamos indicando que ordene por el tercer campo de la clausula SELECT:
CÓDIGO: SELECCIONAR TODO
  select ID_EMPLEADO , NOMBRE , APELLIDOS
    from EMPLEADOS
order by 3




Para ordenar se puede indicar indistintamente el alias con el que se ha rebautizado la columna, o el campo de tabla tenga o no tenga alias.
CÓDIGO: SELECCIONAR TODO
  select NOMBRE as NAME, APELLIDOS as SURNAMES, SALARIO as SALARY
    from EMPLEADOS
order by SURNAMES


Resultado:


De todos modos se recomienda usar para indicar la columna por la que se quiere ordenar, los nombres de tabla, por dos razones.
  1. Si usamos alias y este cambia, se debe modificar la cláusula ORDER BY
  2. Si usamos posición de columna y se añaden o se eliminan campos de la cláusula SELECT, es posible que se deba modificar la cláusula ORDER BY

* * *

Resumen

La cláusula ORDER BY permite establecer el orden de las filas de resultado en función de las columnas que se indiquen en dicha cláusula:
CÓDIGO: SELECCIONAR TODO
order by CAMPO_1 , CAMPO_2 , ... , CAMPO_N


Para ordenar en forma descendente por una columna debemos indicar a continuación del nombre de la columna la palabra clave DESC. Para hacerlo de forma ascendente no hace falta indicar nada, si se quiere enfatizar se usa la palabra clave ASC.
CÓDIGO: SELECCIONAR TODO
order by CAMPO_1 desc , CAMPO_2 desc , ... , CAMPO_N asc


Para hacer referencia a una columna en la clausula ORDER BY, es indiferente usar el alias de una columna, que el orden de la columna en la clausula SELECT, que el nombre de campo de la tabla. Sin embargo se recomienda hacer esto último para minimizar fuentes de error.





5.

Las tablas son la estructura básica donde se almacena la información en la base de datos. Dado que en la mayoría de los casos, no hay forma de que el proveedor de base de datos sepa con antelación cuales son sus necesidades de almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted mismo. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de toda la información, es importante incluir la sintaxis CREATE TABLE en esta guía de referencia.
Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede pensarse como la representación de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la información del cliente, las columnas pueden incluir información tal como Primer Nombre, Apellido, Dirección, Ciudad, País, Fecha de Nacimiento y demás. Como resultado, cuando especificamos una tabla, incluimos los títulos de columna y los tipos de datos para esta columna en particular.
Entonces ¿Qué son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podría ser un entero (tal como 1), un número real (tal como 0,55), una línea (tal como 'sql'), una fecha/expresión de tiempo (tal como '25-ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que ‘First_Name’ es de char(50) tipo – lo que significa que es una línea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia específica de base de datos.
La sintaxis SQL para CREATE TABLEes
CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... )
Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaríamos
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)
A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue “[valor] Predeterminado” luego de la instrucción de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna “Address” como “Desconocida” y Ciudad como “Mumbai”, ingresaríamos
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Mumbai',
Country char(25),
Birth_Date date)

6.
Esta es la forma más sencilla y habitual de usar las órdenes SQL.
Normalmente usaremos este tipo de instrucciones para cargar los datos en un DataTable (si trabajamos con ADO.NET o en un Recordset si trabajamos con ADO o DAO).
Por ejemplo:
SELECT * FROM Clientes WHERE Provincia = 'Madrid'
Este código SQL selecciona los registros de la tabla Clientes que residan en Madrid.
Los campos que devolvería serían todos, ya que hemos indicado * después de SELECT.

Si sólo queremos que devuelva los datos contenidos en los campos Nombre, Apellidos y NIF haríamos esto otro:
SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid'
TIP:
Por rendimiento, es recomendable devolver sólo los campos que realmente necesitamos en lugar de devolver todos los campos.

Clasificar los datos seleccionados (ORDER BY) (02/May/04)
También podemos indicar que esos datos se devuelvan clasificados por cualquier campo, por ejemplo por los Apellidos de forma ascendente (la forma predeterminada):

SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos
Pero si queremos los datos de mayor a menor (descendente), le añadimos la instrucción DESC después del campo por el que queremos clasificar:

SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC
O si queremos que la clasificación se haga usando dos campos, esos campos los indicaremos separados por comas:

SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos, Nombre
Y si queremos que el orden sea descendente, le añadimos a continuación la instrucción DESC detrás de cada campo:

SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC, Nombre DESC
También podemos clasificar en distinto orden los campos indicados tras ORDER BY, por ejemplo:

SELECT * FROM Clientes ORDER BY Apellidos DESC, Nombre ASC, NIF DESC
.

Indicar el número máximo de filas a devolver (TOP) (02/May/04)
Al realizar una selección de datos clasificados (usando ORDER BY), podemos indicar el número de filas (registros) máximos que queremos devolver, para ello indicaremos TOP y el número de filas o el porcentaje de filas a devolver:
Con las siguientes instrucciones se devolverán los primeros 50 registros (si los hay) que cumplan las condiciones indicadas:

SELECT TOP 50 Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC
TOP no diferencia filas que sean iguales, es decir, si la fila 50 y la 51 tienen los mismos Apellidos, devolverá 51.
En este otro ejemplo, se devolverá el 20% de las filas que coincidan con las instrucciones SQL indicadas:

SELECT TOP 20 PERCENT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC
Nota:
Dependiendo de que estemos usando DAO o ADO el número de filas devueltas puede que sea distinto de cuando usamos ADO.NET, al menos en una misma tabla, usando TOP 150, con ADO me devolvía 151 filas y con ADO.NET me devolvía 150.
No se si es que TOP se comporta de forma diferente en ADO.NET
.

Actualizar los datos según un criterio (UPDATE) (02/May/04)
Si lo que quieres es actualizar el contenido de un campo cuando se cumpla un criterio indicado, en lugar de recorrer todas las filas, podemos usar UPDATE / SET, por ejemplo:

UPDATE Clientes SET NPr = 28 WHERE Provincia = 'Madrid'

Esto hará que se asigne un valor 28 al campo NPr de todos los clientes que cumplan lo que se indica después de WHERE, es decir que cumplan el criterio indicado.
También podemos indicar (después de SET) varios campos a actualizar, separándolos por comas:

UPDATE Clientes SET NPr = 28, Patrón = 'San Isidro' WHERE Provincia = 'Madrid'

Una vez ejecutadas estas instrucciones SQL no se podrá deshacer los cambios, al menos si estamos trabajando con Recordsets DAO o ADO, ya que si trabajamos con ADO.NET, esos datos sólo se harán permanentes al actualizar "físicamente" los datos con el DataAdapter.
.

Eliminar los datos según un criterio (DELETE) (02/May/04)
De la misma forma que podemos actualizar la información mediante un criterio WHERE, podemos eliminar los registros de forma "masiva" usando la instrucción DELETE.
Por ejemplo para eliminar todos los Clientes de Madrid:

DELETE * FROM Clientes WHERE Provincia = 'Madrid'
 
Nota:
Ni que decir tiene que este tipo de instrucciones SQL hay que usarla con muchísima precaución, ya que si la tabla está ligada a otra, también se perderán los datos relacionados.
Y una vez eliminados los datos... ya no se pueden recuperar.
El uso de DELETE no elimina la tabla, aunque se eliminaran todos los registros.
.

En esta página te mostraré algunas instrucciones SQL que te permitirán manejar datos de forma más o menos fácil o al menos te servirán como punto de referencia cuando necesites hacer algo en concreto.
Algunas de estas instrucciones (u órdenes) servirán tanto para bases de datos del tipo Access como de SQL Server (e incluso otros proveedores de datos), en la medida de lo posible, intentaré indicar si hay alguna restricción para algunos de los proveedores.
También intentaré informarte cómo usar esas instrucciones, ya que algunas simplemente servirán para seleccionar datos y otros harán cambios en las tablas afectadas.
Los ejemplos principalmente serán para usar con ADO.NET, pero en otras ocasiones también serán válidas para ADO e incluso para DAO, en estos casos es posible que existan otros links (enlaces) a las páginas de ADO y DAO "normales", las que están en la sección de VB.
Si no se indica nada (sobre todo si no hay ejemplos de código), las instrucciones SQL indicadas serán válidas tanto para DAO, ADO y ADO.NET y para bases de Access o SQL Server
 
Nota:
El que se llame órdenes SQL (o instrucciones SQL), no quiere decir que sólo sean válidos para bases de datos SQL Server, ya que el "lenguaje" SQL es un estándar (o casi) que se usa para manejar los datos de cualquier base de datos, (al menos las de Access y SQL Server).
    
Además, podemos utilizar tantas condiciones como queramos, utilizando los operadores lógicos AND y OR . El siguiente ejemplo muestra una consulta que devolverá los coches cuyas matriculas sean M-1525-ZA o bien M-2566-AA.
    
Además una condición WHERE puede ser negada a través del operador lógico NOT. La siguiente consulta devolverá todos los datos de la tabla tCohes menos el que tenga matricula M-1525-ZA.

   Podemos tambien obtener las diferentes marcas y modelos de coches ejecutando la consulta.
   
 La ver los valores distintos. En el caso anterior se devolveran lpalabra clave DISTINCT indica que sólo queremos os valores distintos del par formado por los campos marca y modelo.

3.  La palabra clave FROM  indica que los datos serán recuperados de la tabla coches. Podríamos haber especificado mas de una tabla, pero esto se verá en el apartado de consultas combinadas.
Volver al principio VOLVER AL PRINCIPIO
Usar nombres sustitutos para orígenes de datos
Puede usar un nombre diferente para hacer referencia a una tabla en una instrucción SELECT mediante un alias de tabla en la cláusula FROM. Un alias de tabla es un nombre que se asigna a un origen de datos en una consulta cuando se usa una expresión como un origen de datos, o para que sea más fácil escribir y leer la instrucción SQL. Esto puede ser muy útil si el nombre del origen de datos es largo o difícil de escribir, especialmente cuando hay varios campos de distintas tablas que tienen el mismo nombre.
Por ejemplo, si desea seleccionar datos de dos campos, ambos con el nombre ID, uno de los cuales procede de la tabla tblCliente y el otro de la tabla tblPedido, la cláusula SELECT podría parecerse a:
SELECT [tblCliente].[ID], [tblPedido].[ID]
Al usar alias de tabla en la cláusula FROM, puede hacer que sea más fácil escribir la consulta. Así, la cláusula FROM podría ser similar a:
FROM [tblCliente] AS [C], [tblPedido] AS [P]
A continuación, puede usar estos alias de tabla en la cláusula SELECT de esta manera:
SELECT [C].[ID], [P].[ID]

 NOTA   Cuando se usa un alias de tabla, puede hacer referencia a la tabla en la instrucción SQL mediante el alias o mediante el nombre completo de la tabla.
Volver al principio VOLVER AL PRINCIPIO
Combinar datos relacionados
Cuando necesite combinar pares de registros de dos orígenes de datos en un registro único en los resultados de una consulta, puede realizar una combinación. Una combinación es una operación SQL que especifica cómo se relacionan dos orígenes de datos y si se deben incluir los datos de un origen si no hay ningún dato correspondiente desde el otro origen.
Para combinar la información de dos orígenes de datos, debe realizar una operación de combinación en el campo que tienen en común. Cuando los valores almacenados en este campo coinciden, los datos de los registros se combinan en los resultados.
Además de la combinación de datos, también se puede usar una combinación para especificar si se incluirán registros de cualquier tabla en el caso de que no haya ningún registro correspondiente en la tabla relacionada.
Por ejemplo, supongamos que desea usar los datos de dos tablas en una consulta: tblCliente y tblPedido. Las dos tablas tienen un campo, IDCliente, que identifica a un cliente. Cada uno de los registros de la tabla tblCliente puede tener uno o más registros correspondientes en la tabla tblPedido y los valores correspondientes pueden estar determinados por los valores del campo IDCliente.
Si desea combinar las tablas de modo que la consulta combine los registros de las tablas y excluya registros de cada tabla si no hay ningún registro correspondiente en la otra tabla, la cláusula FROM puede ser similar a (se agregó un salto de línea aquí para mejorar la legibilidad):
FROM [tblCliente] INNER JOIN [tblPedido]

 ON [tblCliente].[IDCliente]=[tblPedido].[IDCliente]
En Microsoft Office Access, las combinaciones se producen en la cláusula FROM de una instrucción SELECT. Hay dos tipos de combinaciones: combinaciones internas y combinaciones externas. En las siguientes secciones se explican estos dos tipos de combinaciones.
Combinaciones internas
Las combinaciones internas son el tipo de combinación más común. Cuando se ejecuta una consulta con una combinación interna, los únicos registros que se incluyen en los resultados de la consulta son los registros en los que existe un valor común en las dos tablas combinadas.
Una combinación interna tiene la siguiente sintaxis (se agregó un salto de línea aquí para mejorar la legibilidad):
FROM tabla1 INNER JOIN tabla2
 ON tabla1.campo1 opcomp tabla2.campo2
En la siguiente tabla se describen las diferentes partes de una operación INNER JOIN.
Combinaciones externas
Las combinaciones externas son similares a las combinaciones internas porque indican a una consulta cómo combinar información a partir de dos orígenes. Son diferentes ya que también especifican si se incluirán datos donde no hay ningún valor común. Las combinaciones externas son direccionales: se puede especificar si incluir todos los registros del primer origen de datos especificado en la combinación (denominada combinación izquierda o left join), o incluir todos los registros del segundo origen de datos en la combinación (denominada combinación derecha o right join).
Una combinación externa tiene la siguiente sintaxis:
FROM tabla1 [ LEFT | RIGHT ] JOIN tabla2
En la siguiente tabla se describen las diferentes partes de las operaciones LEFT JOIN y RIGHT JOIN.
 7.A continuación se presenta una descripción breve de algunos de los comando ofrecidos 
por ORACLE en su herramienta SQL, para la manipulación y definición de objetos en 
la base de datos. 
Mayor información en: 
Manuales de ORACLE para SQL (comandos, funciones, etc.)
Oracle10g SQL Reference PDF 
Comandos para la definición de objetos (DDL):
Como su nombre lo índica, estos comandos, permiten definir objetos esto significa: 
crear, borrar o alterar los ya existentes. 
Creación de una tabla:
CREATE TABLE nom_tabla (nom_col1 tipo_dato1 [NOT NULL],nom_col2 
tipo_dato2, … ); 
Borrar una tabla:
DROP TABLE nom_tabla [cascade constraint]; 
Creación de una Vista:
Son otros elementos importantes y muy útiles para realizar consultas, la sintaxis básica 
para crear una vista es: 
CREATE VIEW nom_vista AS SELECT nom_col1 …FROM nom_tabla1 …; 
Creación de una secuencia:
CREATE SEQUENCE nom_secuencia [INCREMENT BY integer] [START WITH 
integer] [MAXVALUE integer | NOMAXVALUE] [MINVALUE integer | 
NOMINVALUE] [CYCLE | NOCYCLE] [CACHE integer | NOCACHE] [ORDER | 
NOORDER] 
Creación de un Constraint:
Los constraints puede ser creados en el momento en el que se crea la tabla (Caso a.) o 
después de su creación. Estos pueden ser: Llaves Primarias
Llaves Foráneas
Condiciones de chequeo
Evitar registros duplicados
Llave Primaria:
La columna 1 corresponde a la llave primaria, este método sólo se utiliza cuando la 
llave primaria está compuesta por una sola columna. 
CREATE TABLE nom_tabla (nom_col1 tipo_dato1 primary key,nom_col2 
tipo_dato2 , … ); 
La columna 1 corresponde a la llave primaria y se le desea dar un nombre al 
constraint.
CREATE TABLE nom_tabla (nom_col1 tipo_dato1 CONSTRAINT nom_primary_key 
PRIMARY KEY,nom_col2 tipo_dato2, … ); 
La llave primaria está compuesta por dos columnas -columna 1 y 2.
CREATE TABLE nom_tabla (nom_col1 tipo_dato1, nom_col2 tipo_dato2 , … 
CONSTRAINT nom_primary_key PRIMARY KEY (nom_col1, nom_col2)); 
La llave primaria está compuesta por dos columnas -columna 1 y 2, y se va a crear 
posterior a la creación de la tabla.
ALTER TABLE nom_tabla ADD CONSTRAINT nom_primary_key PRIMARY KEY ( 
nom_col1, nom_col2); 
Para habilitar un Constraint ya creado, usted puede dar el siguiente comando:
ALTER TABLE nom_tabla ENABLE CONSTRAINT nom_constraint ; 
Para deshabilitar ya creado, usted puede dar el siguiente comando:
ALTER TABLE nom_tabla DISABLE CONSTRAINT nom_constraint ; 
Llave Foránea:
La columna 1 corresponde a una llave foránea.
CREATE TABLE nom_tabla (nom_col1 tipo_dato1 REFERENCES 
nom_tabla_referencia,nom_col2 tipo_dato2, … ); 
Las columnas 1 y 2 forman una llave foránea y se le quiere asociar un nombre al 
constraint.
CREATE TABLE nom_tabla (nom_col1 tipo_dato1,nom_col2 tipo_dato2, 
…,CONSTRAINT nom_llave_foránea FOREIGN KEY (nom_col1, nom_col2) 
REFERENCES nom_tabla_referencia (col1_tabla_referencia, 
col2_tabla_referencia); La llave foránea está compuesta por dos columnas -columna 1 y 2-, y se va a crear 
posterior a la creación de la tabla.
ALTER TABLE nom_tabla ADD CONSTRAINT nom_llave_foránea FOREIGN KEY 
(nom_col1, nom_col2) REFERENCES nom_tabla_referencia 
(col1_tabla_referencia, col2_tabla_referencia); 
Constraints de Chequeo:
La columnas 1 debe ser mayor que cero.
CREATE TABLE nom_tabla ( nom_col1 tipo_dato1 CHECK 
(nom_col1>0),nom_col2 tipo_dato2 , … ); 
Valores no duplicados:
CREATE TABLE nom_tabla (nom_col1 tipo_dato1 UNIQUE,nom_col2 
tipo_dato2, … ); 
Adición de una columna:
Cuando se desea adicionar una columna a una tabla ya existente: ALTER TABLE 
nom_tabla ADD (nom_col1 tipo_dato1, nom_col2 tipo_dato2, …); 
Cambiar el tipo de dato de una columna en una tabla ya existente
ALTER TABLE nom_tabla MODIFY (nom_col1 nuevo_tipo_dato1, …); 
Comandos para la manipulación de objetos (DML):
Como su nombre lo índica, este es un lenguaje que permite manipular los objetos, esto 
significa: consultar, insertar, borrar y actualizar. 
Consultar información:
SELECT nombre_columnas FROM nombre_tablas [WHERE condición | GROUP BY 
nombre_columnas_grupo HAVING condición] ORDER BY
nombre_columnas_que_definen_el_orden 
Consultar el valor de una secuencia
Su siguiente valor “nextval” y su valor actual luego de utilizar nextval “currval” 
SELECT nombre_secuencia.nextval FROM dual; 
Consultar información en forma recursiva:
SELECT LPAD('',2*(level-1)) || nom_col1, nom_col2 FROM nombre_tabla 
[WHERE condición ] [START WITH condicion] CONNECT BY condición 
NOTA:Recuerde que si está haciendo una consulta recursiva, no puede tener un join, ni 
hacer la consulta sobre una vista que sea el resultado de un join.
LEVEL: Es una columna que indica el nivel de recursión en el cual se encuentra 
un registro dado.
Insertar información:
INSERT INTO nombre_tabla [(nombre_columnas)] VALUES (val_col1, 
val_col2, …); 
Borrar información:
DELETE nombre_tabla [WHERE condición]; 
Actualizar información:
UPDATE nombre_tabla SET col1 = nuevo_valor1, col2 = nuevo_valor2 WHERE 
condicion] 



No hay comentarios:

Publicar un comentario