- Crear una Tabla
- Introducir datos
- Consultar datos
- Modificar datos
- Eliminar
Crear una Tabla
CREATE TABLE cliente(
DNI varchar(9) primary key,
nombre varchar2(20),
apellidos varchar2(30),
telefono varchar2(12),
email varchar2(100),
direccion varchar2(100));
Una tabla esta dividida en diferentes campos o datos que pueden ser de varios tipos, eso quiere decir que un campo de una tabla puede tener un valor: numerico, cadena, fecha, etc...
Para diferenciar este tipo de valor SQL Oracle tiene definidos una serie de tipos para los datos de una tablas
- CHAR: Cadena de un valor fijo. Si le indicamos que la cadena es de 20 caracteres, aunque el valor del campo tenga un solo caracter el valor del campo sera de 20.
- VARCHAR2: Cadena de un valor dinamico hasta un maximo indicado. Esto nos quiere decir que si se define el campo de 20 caracteres y se introduce un valor de 2 caracteres el tamaño del campo será de 2 caracteres en vez de 20.
- NCHAR y NCHAR2: Este tipo de valor es parecido al varchar. La diferencia entre el varchar y nchar es que estos últimos soportan mas tipos de caracteres.
- CLOB y NCLOB: Permiten introducir caracteres, de 4Gb hasta un maximo de 128GB .
- LONG: Parecido a los dos anteriores. Con una capacidad maxima de 2GB.
- NUMER(precisión, escala): Este tipo recoge números, se le puede indicar:
- PRECISION: Numero de dígitos
- Escala: Numero de decimales
- ejemplo: precio numer(4,2) --> Valores de 4 digitos y 2 decimales
- INTEGER: Números enteros
- DECIMAL: Números con decimales
- FLOAT: Números con decimales
- REAL: Números con decimales
- DATE: fecha
- TIMESTAMP: fecha y hora
- RAW y LONG RAW: Guarda valores cuyo tipo de datos son propios de lo que se guarda (no es de tipo numerico o de caracter), estos datos pueden ser videos, fotos, etc.Permite un tamaño de 2Kb en RAW y 2GB en LONG RAW.
- LOB: objetos más grandes aún de tamaño hasta 4GB, y tiene tres variantes, los CLOB y NCLOB y el clásico BLOB para almacenar objetos binarios.
- XMLType: desde Oracle9i se introdujo este tipo que lo que hace realemten es almacenar contenido XML en formato LOB.
Introducir datos
Existen varias formas de meter datos en una tabla:
- Podemos meter datos uno a uno introduciendo todos los campos de la tabla EN ORDEN.
INSERT INTO cliente VALUES (12345678B,’Mikel’,’Astrain Lopez’,123456789,’m.astrain.lopez@ejemplo.com’,'calle A Nº1 3º Izq)
INSERT INTO cliente VALUES (87654321A,’Juan’,’Colgate Lopez’,123456789,’j.colgate.lopez@ejemplo.com’,'calle B Nº3 1º Izq);
- Podemos meter varios registros en bloque, con esta :
INSERT ALL
INSERT INTO cliente VALUES (12345678B,’Mikel’,’Astrain Lopez’,123456789,’m.astrain.lopez@ejemplo.com’,'calle A Nº1 3º Izq)
INSERT INTO cliente VALUES (87654321A,’Juan’,’Colgate Lopez’,123456789,’j.colgate.lopez@ejemplo.com’,'calle B Nº3 1º Izq)
SELECT 1 FROM DUAL;
COMMIT;
- Podemos meter registros en diferentes tablas:
INSERT ALL
INSERT INTO cliente VALUES (12345678B,’Mikel’,’Astrain Lopez’,123456789,’m.astrain.lopez@ejemplo.com’,'calle A Nº1 3º Izq)
INSERT INTO proveedor VALUES (87654321A,’Juan’,’Colgate Lopez’,123456789,’j.colgate.lopez@ejemplo.com’,'calle B Nº3 1º Izq)
SELECT 1 FROM DUAL;
COMMIT;
- También se puede introducir datos en campos concretos. Hay que tener cuidado con algunas tablas ya que puede que tengan campos donde se tiene que meter datos de manera obligatoria:
INSERT INTO cliente (DNI, nombre) VALUES (12345678B,’Mikel’);
- Podemos copiar directamente una tabla a otra, siempre que las dos tengan los mismos campos y cada campo este configurado igual (esto quiere deci, el mismo tipo de dato, mismo nombre, etc...) Se suele utilizar si queremos recuperar los registros de una antigua tabla.
INSERT INTO clientes SELECT * FROM clientes_old
- Si queremos insertar registros de una tabla a otra, lo podemos realizar por medio de una consulta (SELECT).
INSERT INTO productos (ID_Producto, Nombre_Producto, Precio_Producto)
SELECT ID_Producto, Nombre_Producto, Precio_Producto FROM Productos_Clientes_OLD
Modificar datos
Las bases de datos se suelen modificar: Tablas, campos, registros, etc... Siempre estan en crecimineto ( o deverian).
Para modificar un registro o valore de una tabla existen varias maneras:
- Si queremos modificar todos los registros de una tabla:
UPDATE cliente SET dirección=’Ninguna’
- Si queremos modificar un registro o unos registros especificos utilizaremos una consulta SELECT
UPDATE CUSTOMER SET direccion=’Ninguna’ select nombre='mikel'
- Las consultas se pueden retorcer todo lo que nosotros queramos, para modificar un registro de una tabla:
UPDATE cliente
SET nombre=(SELECT tipo_cliente_id FROM tipo_cliente WHERE NAME='Vip')
WHERE DNI IN (SELECT cliente FROM pedidos WHERE pedidos_total > 50)
(Aqui se modifica la trabla cliente. Dentro de esta tabla se modificara el valor del campo nombre a VIP en cuanto este cliente tenga unos pedidos superiores a 50)
Consultar datos
Las consultas muestran información de una base de datos. Se pueden combinar diferentes consultas y utilizar todo tipo de restricciones, ordenes, agrupamientos, relacionando tablas, etc..
- La estructura de una consulta:
SELECT [campos] from [tabla]
Esta es la estructura de una consulta a una tabla. Dentro de una consulta a una tabla se pueden realizar diferentes acciones:
- Si queremos mostrar todos los campos de la tabla, utilizaremos el *:
- SELECT * FROM TABLA
- Si queremos mostrar una o barias columnas de una tabla, separaremos las columnas por comas:
- SELECT Columna1, Columna2 FROM TABLA
- Podemos hacer que nos muestre otro nombre en vez del nombre de la columna
- SELECT Columna1 as 'otro nombre' FROM TABLA
- Podemos indicar a que tabla pertenece cada columna que queremos mostrar:
- SELECT TABLA.Columna1, TABLA.Columna2 FROM TABLA
- Podemos utilizar alias para referirnos a una tabla (esto se suele hacer cuando hacemos una consulta utilizando varias tablas y con nombres largos)
- SELECT T.Columna1, T.Columna2 FROM TABLA T
Dentro de las consultas podemos utilizar restricciones:
- DISTINTC o UNIQUE: Esta restricción muestra registros sin duplicados.
- SELECT DISTINTC NOMBRE FROM CLIENTES
- ORDER BY: Ordena el resultado de la consulta por las columnas que le indiquemos. Los ordenara según los indiquemos, primero ordenara la primera columna, luego la segunda...
- SELECT * FROM CLIENTES ORDER BY nombre apellidos
- DESC: Si al ORDER BY le añadimos un DESC, nos ordenara de manera descendente o de mayor a menor
- SELECT * FROM CLIENTES ORDER by edad DESC
También podemos realizar operaciones dentro de una consulta para calcular en numero de registros que se repiten, máximos, mínimos, medias, etc...
- COUNT que nos devuelve el número de registros.
- SELECT COUNT(*) as 'Total Clientes' FROM clientes
- SUM hace una suma de los valores de la columna que le pasemos. Podemos combinar la consulta con un Where.
- SELECT SUM(pedidos) AS 'Total Pedidos' FROM PEDIDOS WHERE cliente_DNI='12345678B'
- AVG nos da una valor medio de la columna indicada.
- SELECT AVG(SUBTOTAL) AS `Total Pedidos Mes' FROM PEDIDOS WHERE fecha_pedido BETWEEN '01/11/13' AND '30/11/13';
- MAX: nos devuelve el valor máximo
- SELECT MAX(precio) FROM PRODUCTOS
- MIN: nos devuelve el valor mínimo.
- SELECT MIN(precio) FROM PRODUCTOS
Otra opción que podemos utilizar es agrupar los registros según el valor de una columna.
- GROUP by: Agrupa los registros según la columna repetida.
- SELECT SUM(Coste_pedido), pedido_ID FROM Pedidos GROUP BY pedido_ID
- HAVING: Utilizando este condicional con el GROUP BY podemos agrupar los registros y condicionar la agrupación.
- SELECT SUM(Coste_pedido) , pedido_ID FROM Pedidos GROUP BY pedido_ID HAVING SUM(Coste_pedido) > 50
También están los criterios de selección:
Los criterios de selección nos permiten filtrar los registros de la consulta realizada. Para realizar este tipo de filtrados se usa la clausula WHERE.
- Select * from clientes WHERE clientes.nombre="Mikel";
Tipos de criterios
- Comparativas: Los criterios de comparación nos permiten comparar o filtrar un conjunto de registros con un valor que nosotros le indiquemos a la consulta. Existen varios operadores de comparación:
Operador
|
Significado
|
Ejemplo
|
=
|
Igual a
|
WHERE nombre= ‘Abilio’
|
<> , !=
|
Distinto de
|
WHERE ID <> 5
|
>
|
Mayor que
|
WHERE total_compra> 500
|
<
|
Menor que
|
WHERE precio< 100
|
>=
|
Mayor o igual que
|
WHERE precio>= 42
|
<=
|
Menor o igual que
|
WHERE precio<= 0
|
- Logicos: Si queremos realizar dos operaciones comparativas tendremos que utilizar estos operadores:
Operador
|
Significado
|
Ejemplo
|
AND
|
Y, todo verdadero
|
WHERE nombre = ‘Abilio’ AND ID=2
|
OR
|
O, alguno verdadero
|
WHERE nombre =’Abilio’ OR NAME=’Pablo’
|
NOT
|
No es verdadero
|
WHERE NOT (NAME = ‘Abilio’ AND ID=2)
|
- IN: Este operador nos permite concatenar el operador OR. Esto quiere decir que si tenemos que utilizar varias veces el operador OR lo podemos agrupar con el operador IN
- Select * from pedidos where precios IN (40,35,30)
También puede unir varios filtrados dentro de una consulta.
- Select * from pedidos where precios in (select precios from compras where pedio_compra = 400)
Este operador se puede combinar con el operador NOT para filtrar los que no correspondan.
- Cadenas: Si queremos realizar operaciones comparativas entre cadenas podemos utilizar el operador LIKE. La diferencia de este operador es poder utilizar dentro de la operación caracteres comodín.
- %: Este comodín indica una cadena de uno o mas caracteres.
- _: Este comodín corresponde a un carácter (puede ser cualquiera)
- Ejemplos:
- '%M__': Nos indica que: Existe una cadena, se guido de una 'M' y termina con dos caracteres.
- '%M%': En medio de la cadena existe una 'M'
- 'M%': La cadena empieza por una 'M'
- NULL: Puede que existan columnas que no sea necesario introducir un valor y que la celda tenga valor nulo. Para encontrar estos valores podemos utilizar el operador NULL. Este operador podra encontrar valores nulos dentro de un registro.
- Select * from pedido whre descripcion is null
- Select * from pedido whre descripcion is not null
- El primero filtra los registros cuya descripción sea nula y el segundo cuya descripción tenga algún valor.
- BEETWEN: Este operador nos permite comparar valores entre dos valores.
- select * from pedido where precio BEETWEN 40 and 200
- EXIST:
- ROWNUM: Este condicional nos permite filtrar sólo los primeros X registros (donde X es el numero de registros que nosotros le indiquemos a ROWNUM)
- select * from pedido where rownum = 4
- INNER JOIN: Nos permite unir tablas por columnas que tienen los mismos valores. Esto nos permite hacer filtrados entre diferentes tablas.
- select * from pedido
- inner join producto
- on pedido.producto_ID=producto.producto_ID
- where producto.origen='UK'
- Esta consulta muestra los pedidos cuyos productos tengan su origen en UK
- LEFT OTHER JOIN: Es igual que el INNER JOIN pero filtrando los que no se encuentran en la tabla relacionada. Realiza la operacion inversa al INNER JOIN
- select * from pedido
- left other join producto
- on pedido.producto_ID=producto.producto_ID
- where producto.origen='UK'
- Esta consulta muestra los pedidos cuyos productos no tengan su origen en UK
Eliminar registros o tablas
Para poder eliminar registros o tablas utilizaremos DROP o DELETE
Si queremos eliminiar una tabla entra (Datos, camposy tabla TODO)
Si queremos eliminiar todos los datos de una tabla
Si queremos eliminar un registro concreto de una tabla
Si queremos eliminar una columna o campo de una tabla
Para poder eliminar registros o tablas utilizaremos DROP o DELETE
Si queremos eliminiar una tabla entra (Datos, camposy tabla TODO)
- DROP TABLE CLIENTES
Si queremos eliminiar todos los datos de una tabla
- DELETE FROM CLINETES -- Eliminamos los datos de la tabla clientes
Si queremos eliminar un registro concreto de una tabla
- DELETE FROM CLIENTES WHERE DNI="12345678A"; -- Elimina el registro con DNI=
Si queremos eliminar una columna o campo de una tabla
- ALTER TABLE CLIENTE --Alteramos la tabla cliente para
- DROP COLUMN NOMBRE -- Eliminar la columna NOMBRE
No hay comentarios:
Publicar un comentario