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.
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.
* * *
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
|
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.
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.
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.
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