La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Bases de Datos SQL, Structured Query Language

Presentaciones similares


Presentación del tema: "Bases de Datos SQL, Structured Query Language"— Transcripción de la presentación:

1 Bases de Datos SQL, Structured Query Language
Fernán Alonso Villa Garzón

2 Brevemente: SQL es el lenguaje de consulta universal para bases de datos. SQL ANSI 92 es el estándar SQL. Existen otras variantes que lo extienden como: T-SQL (Transact-SQL) y PL/SQL (Procedure Language / SQL) SQL proporciona tres conjuntos básicos de sentencias: D.M.L (lenguaje de manipulación de datos). D.D.L (Lenguaje de definición de datos). D.C.L (Lenguaje de Control de Datos).

3 Lenguaje de Definición de Datos DDL
Este lenguaje se utiliza para la definición de tablas, vistas e índices entre otros en la base de datos. Comandos: CREATE – para crear objetos ALTER – para modificar la estructura de objetos DROP – para eliminar objetos TRUNCATE – para eliminar todos los registros de una tabla. COMMENT – para agregar comentarios de un objeto al diccionario de datos RENAME – para cambiar el nombre de un objeto

4 Lenguaje de Manipulación de Datos DML
Como su nombre lo indica provee comandos para la manipulación de los datos, es decir, podemos seleccionar, insertar, eliminar y actualizar datos. Comandos: SELECT – para consultar datos. INSERT – Insertar datos. UPDATE – actualizar datos. DELETE – eliminar algunos o varios registros.

5 Lenguaje de Control de Datos DCL
Este lenguaje provee comandos para manipular la seguridad de la base de datos, respecto al control de accesos y privilegios entre los usuarios. Comandos: GRANT – Para otorgar privilegios a un usuario sobre un objeto. REVOKE – Para quitar privilegios dados a un usuario sobre un objeto.

6 Componentes del Lenguaje SQL
Tipos de Datos: SQL posee varios tipos de datos para almacenar información, los tipos de datos pueden ser: Numéricos (con o sin decimales). Alfanuméricos. Fecha y Hora Lógico Además, la mayoría de gestores de BD actuales soportan el tipo: BLOB (Binary Large Object), para almacenar archivos.

7 Componentes del Lenguaje SQL
Dependiendo de cada gestor de bases de datos en general se pueden tener los siguientes tipos de datos: Númericos Alfanúmericos Fecha Lógico BLOB Integer char(n) Date Bit Image Numeric(n,m) varchar(n) DateTime Text Decimal(n)    Float

8 Componentes del Lenguaje SQL
Operadores: Aritméticos + Suma - Resta * Producto / División **   ^ Potencia Relacionales <        Menor que <= Menor o igual que > Mayor que >= Mayor o igual que <>   !=  Distinto !< No menor que !> No mayor que Lógicos AND Los operadores lógicos permiten comparar expresiones lógicas devolviendo siempre un valor verdadero o falso. Los operadores lógicos se evalúan de izquierda a derecha. OR NOT Concatenación Se emplea para unir  datos de tipo alfanumérico.

9 Componentes del Lenguaje SQL
Funciones Agregadas: permiten realizar cálculos sobre datos de las tablas. Estas funciones se incorporan en las consultas SELECT y retornan un único valor al operar sobre un grupo de registros. Algunas: MAX() Devuelve el valor máximo. MIN() Devuelve el valor mínimo. SUM() Devuelve el valor de la sumatoria COUNT() Devuelve el número de filas AVG() Devuelve el promedio de los valores del campo

10 Componentes del Lenguaje SQL
Predicados: son condiciones que se indican en clausula WHERE de una consulta SQL. BETWEEN...AND Comprueba que el valor de un campo esté dentro de un intervalo LIKE Compara un campo con una cadena alfanumérica. LIKE admite el uso de caracteres comodines ALL Señala a todos los elementos de la selección de la consulta ANY Indica que la condición se cumplirá si la comparación es cierta para al menos un elemento del conjunto. EXISTS Devuelve un valor verdadero si el resultado de una subconsulta devuelve resultados. IN Comprueba si un campo se encuentra dentro de un determinado rango. El rango puede ser una sentencia SELECT.

11 Componentes del Lenguaje SQL
Caracteres Comodines: es un carácter que representa cualquier otro carácter o cadena de caracteres. Aunque no son propios de SQL, vale la pena recordarlos: Si se desea reemplazar cero un solo carácter: ? (signo de interrogación) ó _ (guión bajo) Si se desea reemplazar cero o varios caracteres: * (Asterisco) ó % (Porcentaje) Si se desea reemplazar un dígito cualquiera (0-9) # (signo de número)

12 Componentes del Lenguaje SQL
Nomenclatura: la mayoría de la sintaxis de SQL se basa en el estándar, Extended Backus–Naur Form. Símbolo Significado < > Encierran parámetros de una orden que el usuario debe sustituir al escribir dicha orden por los valores que queramos dar a los parámetros. [ ] Indica que su contenido es opcional. { } Indica que su contenido puede repetirse una o más veces. | Separador de expresiones. Se debe poner al menos uno de la lista.

13 Componentes del Lenguaje SQL
Nomenclatura, por ejemplo: CREATE TABLE <nombre_tabla> ( <nombre_campo> <tipo_datos> {,<nombre_campo> <tipo_datos>} ) ; Se aplica la notación: CREATE TABLE tbEmpresa ( nit varchar(150), nombre varchar(255), ubicacion varchar(255), ) ;

14 Creación de tablas con SQL en Oracle
CREATE TABLE <nombre_tabla> ( <nombre_campo> <tipo_datos(tamaño)> [null | not null] [default <valor_por_defecto>] {,<nombre_campo> <tipo_datos(tamaño)> [null | not null] [default <valor_por_defecto>]} [, constraint <nombre> primary key (<nombre_campo>)] } [, constraint <nombre> foreign key (<nombre_campo> {,<nombre_campo>}) references <tabla_referenciada> ( <nombre_campo> {,<nombre_campo>} ) ] ) ;

15 Creación de tablas, ejemplo 1.
CREATE TABLE tbAutos ( matricula char(8) not null, marca varchar(255), modelo varchar(255), color varchar(255) not null, numero_kilometros numeric(14,2) default 0, constraint PK_Coches primary key (matricula) ) ;

16 Creación de tablas, ejemplo 2-1.
CREATE TABLE tbProveedor ( id numeric(10) not null, nombre varchar2(50) not null, correo varchar2(50), CONSTRAINT pk_tbProveedor PRIMARY KEY (id, nombre) );

17 Creación de tablas, ejemplo 2-2.
CREATE TABLE tbProducto ( id numeric(10) not null, tbProveedor_id numeric(10) not null, tbProveedor_nombre varchar2(50) not null, nombre varchar2(50) not null, cantidad numeric(10) not null, CONSTRAINT pk_tbProducto PRIMARY KEY (id, tbProveedor_id, tbProveedor_nombre), CONSTRAINT fk_tbProducto_tbProveedor FOREIGN KEY (tbProveedor_id, tbProveedor_nombre) REFERENCES tbProveedor(id, nombre) );

18 DROP TABLE <nombre_tabla>;
Algunas Aclaraciones Después de crear las tablas del ejemplo 2, ¿cuál seria el orden de eliminación? DROP TABLE <nombre_tabla>; ¿Cuál es la diferencia entre char, varchar, varchar2? char(n): Se usa para almacenar cadenas de longitud fija. Si la longitud de la cadena es menor que n, el espacio restante NO es liberado. varchar2(n): Se usa para almacenar cadenas de longitud variable. Si la longitud de la cadena es menor que n, el espacio restante es liberado. varchar(n): funciona igual que varchar2; sin embargo, no es recomendado usarlo, dado que Oracle lo tiene reservado para usos futuros,

19 Modificación de tablas con SQL en Oracle
ALTER TABLE <table_name> add [CONSTRAINT constraint_name   FOREIGN KEY (column1, column2, ... column_n)   REFERENCES parent_table (column1, column2, ... column_n);; Permite: Añadir campos a la estructura inicial de una tabla. Añadir restricciones y referencias. Nota: para ver los atributos de una tabla, se usa el comando DESCRIBE <nombre_tabla>;

20 Modificación de tablas, ejemplo 1.
-- Veamos los campos de la tabla tbProducto antes de modificarla. DESCRIBE tbProducto; -- Se agregan dos campos: ALTER TABLE tbProducto ADD calidad number(10) default 4; ALTER TABLE tbProducto ADD calidad2 number(10) default 5; -- Veamos los campos de la tabla tbProducto despues de modificarla.

21 Modificación de tablas, ejemplo 2.
-- Veamos los campos de la tabla tbProducto antes de modificarla. DESCRIBE tbProducto; -- Se elimina un campo: ALTER TABLE tbproducto DROP COLUMN calidad2; -- Veamos los campos de la tabla tbProducto despues de modificarla.

22 Modificación de tablas, ejemplo 3.
-- Ahora se desea que el campo CALIDAD haga parte de la clave primaria de la tabla Producto. -- Consultar las columnas que pertenecen a la clave primaria de la tabla TBPRODUCTO. SELECT COLUMN_NAME FROM user_cons_columns ucc JOIN user_constraints uc ON ucc.constraint_name=uc.constraint_name WHERE ucc.TABLE_NAME = 'TBPRODUCTO' AND uc.CONSTRAINT_NAME = 'PK_TBPRODUCTO' ; -- Las tablas en rojo son del sistema.

23 Modificación de tablas, ejemplo 3.
-- Modificar la clave primaria de TBPRODUCTO. ALTER TABLE tbproducto DROP CONSTRAINT PK_TBPRODUCTO; ALTER TABLE tbProducto ADD CONSTRAINT pk_tbProducto PRIMARY KEY (id, tbProveedor_id, tbProveedor_nombre, calidad); -- Se comprueba si efectivamente se hizo el cambio. SELECT COLUMN_NAME FROM user_cons_columns ucc JOIN user_constraints uc ON ucc.constraint_name=uc.constraint_name WHERE ucc.TABLE_NAME = 'TBPRODUCTO' AND uc.CONSTRAINT_NAME = 'PK_TBPRODUCTO' ;

24 Modificación de tablas, ejemplo 3.
En la siguiente dirección pueden encontrarse más ejemplos sobre el uso de ALTER. Por ejemplo, cambiar el nombre de un campo: ALTER TABLE <table_name> RENAME COLUMN <old_name> to <new_name>;

25 Sentencias de Inserción
INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] VALUES (<valor1>,<valor2>,...); INSERT INTO tbProveedor(id, nombre, correo) VALUES (12, 'Lina Rosario', INSERT INTO tbproducto(id, tbproveedor_id, tbproveedor_nombre, nombre, cantidad) VALUES (18, 12, 'Lina Rosario', 'Manzana', 10); commit;

26 Definición de Índices Es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes búsquedas. El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos.

27 Definición de Índices Sin embargo, los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Lo cual reduce el rendimiento. Sintaxis: CREATE [UNIQUE] INDEX <nombre_indice> ON <nombre_tabla>( <nombre_campo> [ASC | DESC]                   {,<nombre_campo> [ASC | DESC]})                   );

28 Definición de Índices, Ejemplo
CREATE UNIQUE INDEX UIX_tbProducto ON tbProducto (nombre); Por definición todos los campos de la clave primaria pertenecen a un índice, que tiene el mismo nombre de la clave: pk_producto. DROP INDEX UIX_tbProducto;

29 Definición de Vistas Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas. Si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista.

30 Definición de Vistas Sintaxis
CREATE VIEW <nombre_vista> AS (<sentencia_select>); CREATE VIEW vProductosxProveedor AS ( SELECT Prov.ID Proveedor_ID, Prov.NOMBRE Proveedor_Nombre, Prov.Correo Proveedor_Correo, Prod.Id Producto_ID, Prod.Cantidad Producto_Cantidad FROM tbProducto Prod, tbProveedor Prov WHERE ( Prod.Tbproveedor_Id = Prov.Id and Prod.Tbproveedor_Nombre = Prov.Nombre) ) ;

31 Definición de Vistas Eliminarla DROP VIEW vProductosxProveedor;
Actualizarla CREATE VIEW vProductosxProveedor AS ( SELECT Prov.ID Proveedor_ID, Prov.NOMBRE Proveedor_Nombre, Prov.Correo Proveedor_Correo, Prod.Id Producto_ID, Prod.Cantidad Producto_Cantidad, Prod.Canlidad Producto_Calidad FROM tbProducto Prod, tbProveedor Prov WHERE ( Prod.Tbproveedor_Id = Prov.Id and Prod.Tbproveedor_Nombre = Prov.Nombre) ) ;

32 Definición de Sinónimos
Un sinónimo es un nombre alternativo que identifica un tabla o vista en la base de datos. CREATE SYNONYM <nombre_sinonimo> FOR <nombre_tabla>; CREATE SYNONYM sPxP FOR vProductosxProveedor; CREATE SYNONYM sProd FOR tbProducto; DROP SYNONYM sProd;

33 Sentencias de Selección
SELECT [ALL | DISTINCT ]              <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista>          [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]                 [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

34 Sentencias de Selección
SELECT [ALL | DISTINCT ]              <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista>          [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]                 [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

35 Sentencias de Selección
Sean las relaciones: VINOS ( Num , Nombre, Ano, Grados) PRODUCTORES ( Num , Apellido, Nombre, Región) COSECHAS ( Nprod, Nvin , Cantidad) ¿Cuáles productores producen por lo menos tres vinos diferentes?   Para cada productor seleccionado, requerimos su nombre  y apellido. SELECT p.nombre,  p.apellido FROM productores  p, cosechas  c, vinos  v WHERE p.num = c.nprod  AND                c.nvin = v.num GROUP BY p.num, p.nombre, p.apellido HAVING  COUNT(DISTINCT  v.nombre) >= 3;

36 Sentencias de Selección - Taller
Se recomienda repasar las consultas de datos, realizando el Taller Publicado en:

37 Creación de Usuarios -- Create the user CREATE USER fernan identified by "123" default tablespace USERS temporary tablespace TEMP profile DEFAULT; -- Grant/Revoke role privileges grant resource to fernan; grant connect to fernan; -- Grant/Revoke system privileges grant unlimited tablespace to fernan;

38 Permisos sobre los objetos
Supongamos que: El usuario fernan tiene la tabla tbProductos. Además, existe la usuaria rosario, y esta necesita consultar la tabla de productos de fernan. Rosario intentará: select * from fernan.tbproveedor; Pero no puede, necesita que fernan desde su cuenta le otorgue los permisos necesarios: grant select on tbproveedor to rosario; En un momento dado fernan puede considerar que rosario ya no necesita del privilegio: revoke select on tbproveedor from rosario;

39 Los privilegios que se pueden otorgar o denegar.
Descripción Select Permitir realizar consultas de selección. Insert Permitir agregar registros en la tabla o vista. Update Permitir actualizar registros en la tabla o vista. Delete Permitir eliminar registros en la tabla o vista. References Permitir crear restricciones de referecia sobre alguna tabla. Alter Permitir cambiar la estructura de una tabla. Index Permitir crear índices sobre la tabla. ALL Todos los privilegios Sintaxis: grant <privilegio>{,<privilegio>} on <objeto> to <user>; revoke <privilegio>{,<privilegio>} on <objeto> from <user>;

40 Referencias r_Form


Descargar ppt "Bases de Datos SQL, Structured Query Language"

Presentaciones similares


Anuncios Google