Está en la página 1de 9

DISEO DE BASES DE DATOS UNIDAD 2. BASES DE DATOS Y LENGUAJE SQL CLASE 5.

TEMA: GESTOR DE BASE DE DATOS SQL es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Es el lenguaje estndar para la gestin de bases de datos. El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Comandos: Existen dos tipos de comandos: DDL: Lenguaje de Definicin de Datos DML: Lenguaje de Manipulacin de datos Comandos DDL Permiten crear y definir nuevas bases de datos, campos e ndices.

Comandos DML Permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

Clusulas Son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.

Operadores Lgicos

CLUSULA CREATE (DDL) Nos sirve para crear una base de datos. Sintaxis: Create database <nombrebd> Para poder seleccionar la base de datos creada utilizamos: Use <nombrebd> Crear las tablas de la base de datos: Create table <nombreTabla> ( columna1 tipo_datos [not null/primary key], columna2 tipo_datos.) Tambin se puede definir la llave primaria como: (. primary key <nombre_columna> ) CLAUSULA ALTER "alter table" permite modificar la estructura de una tabla. "alter table" se usa para: - agregar nuevos campos, - eliminar campos existentes, - modificar el tipo de dato de un campo, - agregar o quitar modificadores como "null", "unsigned", "auto_increment", - cambiar el nombre de un campo, - agregar o eliminar la clave primaria, - agregar y eliminar ndices, - renombrar una tabla. Agregar columnas a la tabla: Sintaxis: alter table NOMBRE_TABLA add NOMBRE_NUEVO_CAMPO DEFINICION;

Ejemplos: ALTER TABLE Empleados ADD COLUMN Salario CURRENCY (Agrega un campo Salario de tipo Moneda a la tabla Empleados.) Alter table Clientes Add Cl_Poblacion varchar(30); Alter table facturas add fecha date; SQL Server no permite agregar campos "not null" a menos que se especifique un valor por defecto: alter table libros add autor varchar(20) not null default 'Desconocido'; Cuando se agrega un campo, si no especificamos, lo coloca al final, despus de todos los campos existentes; podemos indicar su posicin (luego de qu campo debe aparecer) con "after. Ejemplo: alter table libros add cantidad int unsigned after autor; CLUSULA DROP Se utiliza para eliminar una tabla de la base de datos. La sintaxis bsica es la siguiente: Drop table NOMBRE_TABLA; No se puede utilizar DROP TABLE para quitar una tabla a la que haga referencia una restriccin FOREIGN KEY. Primero se debe quitar la restriccin FOREIGN KEY o la tabla de referencia. Si la tabla de referencia y la tabla que tiene la clave principal se van a quitar en la misma instruccin DROP TABLE, la tabla de referencia debe aparecer primero. Se pueden quitar varias tablas de cualquier base de datos. Si la tabla que se va a quitar hace referencia a la clave principal de otra tabla que tambin se va a quitar, la tabla de referencia con la clave externa debe aparecer antes que la tabla que tiene la clave principal a la que se hace referencia. Tambin podemos eliminar todos los registros de una tabla con "truncate table". Por ejemplo, queremos vaciar la tabla "libros", usamos: truncate table libros; La sentencia "truncate table" vaca la tabla (elimina todos los registros) y conserva la Estructura de la tabla. La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la vaca. Para eliminar una columna de la tabla de la base de datos la sintaxis bsica es la siguiente: alter table NOMBRE_TABLA drop column NOMBRE_CAMPO; Ejemplo: Alter table facturas drop column fecha; alter table libros drop column precio; No pueden eliminarse los campos que son usados por un ndice o tengan restricciones. No puede eliminarse un campo si es el nico en la tabla. Podemos eliminar varios campos en una sola sentencia: alter table libros drop column editorial,edicion; ALTER TABLE Empleados DROP COLUMN Salario (Elimina el campo Salario de la tabla Empleados.) ALTER TABLE Pedidos DROP CONSTRAINT RelacionPedidos (Elimina el ndice de la tabla Pedidos.) ALTER TABLE Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY (IdEmpleado)
4

REFERENCES Empleados (IdEmpleado) (Agrega un ndice externo a la tabla Pedidos. El ndice externo se basa en el campo IdEmpleado y se refiere al campo IdEmpleado de la tabla Empleados. En este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la clusula REFERENCES, pues IdEmpleado es la clave principal de la tabla Empleados.) CREACIN DE NDICES Los ndices son objetos que forman parte del esquema que hacen que las bases de datos aceleren las operaciones de consulta y ordenacin sobre los campos a los que el ndice hace referencia. Se almacenan aparte de la tabla a la que hace referencia, lo que permite crearlos o borrarlos en cualquier momento. Lo que realizan es una lista ordenada por la que se puede acceder para facilitar la bsqueda de los datos. Cada vez que se aade un nuevo registro, los ndices involucrados se actualizan a fin de que su informacin est al da. De ah que cuantos ms ndices haya, ms le cuesta a SQL aadir registros, pero ms rpidas se realizan las instrucciones de consulta. La mayora de los ndices se crean de manera implcita, como consecuencia de las restricciones PRIMARY KEY, UNIQUE y FOREIGN KEY. Estos son ndices obligatorios, por lo que los crea el propio SGBD. Se pueden crear ndices de forma explcita. stos se crean para aquellos campos sobre los cuales se realizarn bsquedas e instrucciones de ordenacin frecuente. Sintaxis: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX ndice ON {tabla| vista} (campo1[ {ASC | DESC }] [, campo2[{ASC|DESC}], ...]) [ INCLUDE (column_name,n) ][ WHERE filtro ] [ WITH < opcin_ndice> [ ,...n] ] [ ON {grupo_ficheros| particion| defecto } ] Ejemplo: CREATE INDEX nombre_completo ON clientes (apellido1, apellido2, nombre); El ejemplo crea un ndice para los campos apellido1, apellido2 y nombre. Esto no es lo mismo que crear un ndice para cada campo, este ndice es efectivo cuando se buscan u ordenan clientes usando los tres campos (apellido1, apellido2, nombre) a la vez. Se aconseja crear ndices en campos que: Contengan una gran cantidad de valores Contengan una gran cantidad de nulos Sean parte habitual de clusulas WHERE, GROUP BY u ORDER BY Sean parte de listados de consultas de grandes tablas sobre las que casi siempre se muestran como mucho un 4% de su contenido. Ejercicio para prctica: Crear la base de datos para una librera. A continuacin se tiene el DER y las tablas normalizadas para dicha base de datos:

Crear las llaves de las tablas: Se utiliza la instruccin constraint. Sintaxis: Constraint nombre { primary key / unique / References tabla externa [(campo externo1, campo externo2)]} Ejemplo: Constraint pk_lib_aut primary key(IdLibro, IdAutor) Para una llave fornea: Constraint fk_lib_autor foreign key(IdLibro) references libros(IdLibro)

Data Query Language (DQL) en instrucciones DML

SENTENCIA SELECT Sirve para realizar consultas a las tablas del usuario. Sintaxis: Select <campos> from <tabla> Where <condicion> Donde campo es la lista de campos que se deseen recuperar y tabla es el origen de los mismos. La instruccin: Select * from Clientes Muestra todos los campos de la tabla Clientes Ejemplos: Select nombre, telefono from Clientes; Select * from Clientes Where cantidadPedidos >1000; Select nombre_Compaia, ciudad From Proveedores Where Pais=Brasil; Select nombre_Compaia, ciudad From Proveedores Where Pais=Guatemala Order by Ciudad; Select nombre, precio, precio*1.16 from Articulos; Muestra tres columnas, la tercera aparecer con el nombre precio * 1.16 en la cabecera. Si queremos ponerle nombre a esa columna usamos la clusula As: Select nombre, precio, precio*1.16 as precio_con_iva from Articulos; Select nombre, apellido from Personas where edad>25 and edad<=50; CLUSULA INSERT Consulta de adicin de datos que permite rellenar datos de una tabla copiando el resultado de una consulta. Sintaxis: Insert into tabla (campo1,campo2,.) values (valor1, valor2,..) Ejemplo: Insert into clientes values (1234,Juan,PerezDefault,null); Es equivalente a: Insert into clientes (dui,nombre,apellido) Values (1234,Juan,Perez);
7

CLUSULA UPDATE

Esta instruccin permite modificar filas. Sintaxis: Update <tabla> set columna1=valor1[, columna2=valor2,.] [where condicion] Ejemplos: Update clientes set nombre=Carmen where IdClie=1234; Update productos set precio=precio*1.16; Esta sentencia crea una consulta de actualizacin que cambia los valores de los campos de una tabla. Update pedidos set cant_pedidos=cant_pedidos*1.1, transporte=transporte*1.03 Where paisEnvio=ES Esta sentencia incrementa los valores cant_pedidos en un 10% y transporte en un 3% para aquellos pedidos que se hayan enviado a Espaa. CLUSULA DELETE Sirve para borrar registros de la tabla. Sintaxis: delete [from] <tabla> [where condicion] Hay que tener en cuenta que el borrado de un registro no puede provocar fallos de integridad y que la opcin de integridad on delete cascade hace que no slo se borren los registros indicados en el select, sino todos los relacionados. Ejemplos: Delete from empleados where seccion=23; Para borrar una fila: delete from Clientes where City=New York El ejemplo siguiente elimina todas las filas de la tabla Clientes: DELETE Clientes; El siguiente ejemplo elimina todas las filas de la tabla Clientes en las que el valor de nombre_Compaia es Europa Park Center'. DELETE FROM Clientes WHERE nombre_Compaia = Europa Park Center; Ejercicio Crear la base de datos Inscripciones

Create Database Inscripciones use Inscripciones Create Table Estudiantes (IdEstudiante int, Nombres varchar(25), Apellidos varchar(25), Direccion varchar(50), Telefono varchar(8), Primary Key(IdEstudiante) ); Create Table Materias (IdMateria int Primary Key, Materia varchar(30), ); Create Table Notas (IdEstudiante int, IdMateria int, Nota decimal(10,2) Primary key (IdEstudiante,IdMateria) ); alter table Notas add constraint fk_Notas_Estud foreign key (IdEstudiante) references Estudiantes(IdEstudiante) on update cascade on delete cascade; alter table Notas add constraint fk_Notas_Materia foreign key (IdMateria) references Materias(IdMateria) on update cascade on delete cascade; La llave primaria por defecto es not null. Las claves primarias y forneas se pueden implementar directamente a travs de create table o bien se pueden agregar a travs de sentencias alter table.