jueves, 17 de marzo de 2016

SQL FOREIGN KEY Constraint

SQL FOREIGN KEY Constraint

A FOREIGN KEY in one table points to a PRIMARY KEY in another table.
Let's illustrate the foreign key with an example. Look at the following two tables:
The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
The "Orders" table:
O_IdOrderNoP_Id
1778953
2446783
3224562
4245621
Note that the "P_Id" column in the "Orders" table points to the "P_Id" column in the "Persons" table.
The "P_Id" column in the "Persons" table is the PRIMARY KEY in the "Persons" table.
The "P_Id" column in the "Orders" table is a FOREIGN KEY in the "Orders" table.
The FOREIGN KEY constraint is used to prevent actions that would destroy links between tables.
The FOREIGN KEY constraint also prevents invalid data from being inserted into the foreign key column, because it has to be one of the values contained in the table it points to.

SQL FOREIGN KEY Constraint on CREATE TABLE

The following SQL creates a FOREIGN KEY on the "P_Id" column when the "Orders" table is created:
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
To allow naming of a FOREIGN KEY constraint, and for defining a FOREIGN KEY constraint on multiple columns, use the following SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

SQL FOREIGN KEY Constraint on ALTER TABLE

To create a FOREIGN KEY constraint on the "P_Id" column when the "Orders" table is already created, use the following SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
To allow naming of a FOREIGN KEY constraint, and for defining a FOREIGN KEY constraint on multiple columns, use the following SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

To DROP a FOREIGN KEY Constraint

To drop a FOREIGN KEY constraint, use the following SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

martes, 15 de marzo de 2016

El uso de Listas en Java

El uso de listas en Java es una forma útil de almacenar y manipular grandes volúmenes de datos, tal como haríamos en una matriz o arreglo, pero con una serie de ventajas que hacen de este tipo de variables las preferidas para el procesamiento de grandes cantidades de información.
Las listas en Java son variables que permiten almacenar grandes cantidades de datos. Son similares a los Array o a las MatricesSin embargo, conversando con mi amigo Aristides Villarreal (miembro de Netbeans Dream Team y uno de los mejores programadores en Java en la actualidad) me dice que las nuevas tendencias en la programación van orientadas hacia el uso de Listas para el manejo de grandes volúmenes de datos. De hecho Java 8, dentro de sus nuevas herramieintas de programación (específicamente las expresiones Lambda), posee muchas funcionalidades interesantes implementando listas, lo cuales nos permitirá lograr muchas cosas fabulosas de una manera mucho más rápida y fácil de lo que haríamos antes (sin embargo, esto es contenido para otro post).
Esto me ha llevado a buscar formas de agregar las Listas en Java a mis herramientas de programación. En realidad no soy muy bueno utilizando este tipo de variables ya que apenas estoy empezando a utilizarlas, pero siento la necesidad de compartir lo poco que sé ya que con ello ayudo a otras personas a la vez que fabrico mi propio cuaderno de apuntes para futuras auto consultas.
Algo que me llama mucho la atención de las listas en Java es el hecho de que no es necesario establecer un tamaño específico para la variable, a diferencia de las tradicionales matrices o arreglos. Las listas son sumamente versátiles y mucho más fáciles de manejar que otros tipos de variables de agrupación de datos.
Entonces… ¿cómo declaramos una lista? Pues seguimos la siguiente estructura:
Este tipo de lista puede almacenar cualquier tipo de dato, pero este enfoque ya ha quedado obsoleto. Se prefiere que se designe el tipo de dato que se va a almacenar. Entonces para declarar una lista donde guardaremos datos tipo String, hacemos lo siguiente:
Con  nuestra lista creada podemos empezar a introducir datos en ella.
Supongamos que queremos agregar los siguientes nombres: Juan, Pedro, José, María, Sofía.
Hacemos lo siguiente:
Es posible además agregar el índice en el que queremos agregar dicho elemento. Podemos obtener la cantidad de elementos que posee la lista:
Para consultar la lista se utiliza:
Donde 0 es el índice en el que se encuentra la información que queremos. En este caso, el índice 0 vendría siendo Pedro.
Si queremos eliminar determinado elemento:
Donde nuevamente el 0 representa el índice que queremos eliminar. Otra forma de eliminar un registro es por su nombre:
Si deseamos imprimir en consola los elementos de la lista:
Esto nos producirá la siguiente salida:
listas en java
También podemos imprimir todos los elementos de la lista de forma individual con la ayuda de un ciclo for.
listas en java
También podríamos usar un iterador para recorrer la lista e imprimir todos sus valores:
Para eliminar todos los elementos de la lista usamos:
Si deseamos saber si nuestra lista contiene algún elemento utilizamos:
Esto nos devolverá un true o un false. En caso de que contenga algún elemento podemos verificar si entre esos elementos tenemos alguno en específico. Por ejemplo si queremos saber si en nuestra lista está escrito el nombre de José, utilizamos:
Esto también nos devolverá un true o un false. Y si por alguna razón queremos modificar algún dato de nuestra lista, por ejemplo el índice 1 que contiene el nombre de Pedro, utilizamos el siguiente método:
Habremos cambiado el nombre en el índice 1 (Pedro) por el nuevo nombre (Félix).
Si queremos extraer una lista que contenga los nombres entre un índice y otro podemos utilizar:
Veamos el siguiente ejemplo:
listas en java
El resultado de esto es:
listas en java
Nótese que se transforman los elementos desde el índice inicial (0) hasta el elemento anterior al índice final (2), despreciando el elemento que se encuentra en el índice final.
Estos son los usos elementales que le podemos dar a las listas. En próximos aportes estaré explicando cómo crear listas de más de una dimensión y el uso de expresiones Lambda, en Java 8.
Por lo pronto espero que esta información sea de utilidad para ustedes.
Saludos.
Fuente: