SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de...

36

Transcript of SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de...

Page 1: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales
Page 2: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

SQL (Lenguaje de Consulta Estructurado):

Es un lenguaje de consulta estructurado establecidoclaramente como lenguaje de alto nivel estándar parasistemas de base de datos relacionales.

ANSI (Instituto Americano de Normalización) e ISO(Organismo Internacional de Normalización) fueron losencargados de publicar este lenguaje como estándar.

Es por esto que este lenguaje lo vas a encontrar encualquier DBMS que estés trabajando.

Page 3: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales
Page 4: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Versión Descripción

SQL Server 2008 Express Edition

Versión básica del servidor, limitada en el número de usuarios y en cuanto al volumen de datos a

gestionar. Es la versión que Microsoft nos ofrece gratuitamente y sin duda es la versión ideal para comenzar a trabajar y desde la cual podemos ir ampliando a versiones superiores si nos fuese

necesario. Permite ser distribuida con programas de desarrollo propios con su correspondiente licencia.

SQL Server 2008 Workgroup Edition

Orientada a pequeñas empresas, no tiene límite de números de usuarios ni de capacidad de

almacenamiento en cuanto al tamaño de la base de datos. No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales que requieren sincronizar sus

datos.

SQL Server 2008 Standard Edition

Pensada para empresas de mediano tamaño, cuenta con herramientas avanzadas para la administración y

análisis de datos. Orientada a aplicaciones departamentales.

Page 5: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

SQL Server 2008 Enterprise Edition

Esta edición está preparada para gestionar las empresas de mayor tamaño, ya que ofrece mayor potencia que las anteriores. Y además de añadir

servicios avanzados y estar preparada para trabajar con multiprocesadores de 64 Bits, amplias memorias RAM. Podemos hablar de bases de datos con tamaños dados

en Terabytes, para que puedas hacer una idea de la cantidad de información que puede llegar a gestionar

con fiabilidad. Tiene la capacidad de trabajar con Clústers de ordenadores, de modo que el fallo de uno

de ellos active otro ordenador que se encontraba pasivo hasta el momento del error.

SQL Server 2008 Developer Edition

Se trata de una versión que cuenta con las mismas características que su versión anterior, con la diferencia de que va dirigida a desarrolladores. ¿Porque si tienen

las mismas características, no se trata de la misma edición? Esta versión especial está limitada por su

licencia que no permite que se ejecute en entornos de explotación y sólo se permite para desarrollo. Otra

diferencia importante, es que permite ser instalada en Sistemas Operativos Windows XP Professional Edition,

o Windows Vista.

Page 6: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

SQL agrupa tres tipos de sentencias con objetivosparticulares en los siguientes lenguajes:

Lenguaje de Definición de Datos (DDL)

Lenguaje de Manipulación de Datos (DML)

Lenguaje de Control de Datos (DCL)

Page 7: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Grupo de sentencias SQL que soportan la definición ydeclaración de los objetos de la base de datos.

Objetos de una base de datos

Base de datos (DATABASE)

Tablas (TABLE)

Procedimientos almacenados (STORE PROCEDURE)

Vistas (VIEW)

Disparadores (TRIGGER)

Índices (INDEX)

Page 8: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Comandos del lenguaje de Definición de Datos:

Nombre Descripción

CREATE Utilizando para crear cualquier objeto de la base de datos

DROP Empleado para eliminar algún objeto de la base de datos

ALTER Utilizado para modificar algún objeto de mi base de datos

Page 9: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Create Database:

Crea una base de datos con el nombre dado.

Ejemplo:

Create Database Curso.

Nota: el hecho de crear la base de datos no significa que estemos ya trabajandosobre ella, para trabajar sobre la base de datos debemos utilizar el comando USE eindicarle el Nombre dado a la base de datos, ejemplo:

USE CURSO

Page 10: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Create Table:

Crea una nueva tabla.

La sintaxis SQL para CREATE TABLE es:

CREATE TABLE "nombre_tabla"

("columna 1" "tipo_de_datos_para_columna_1",

"columna 2" "tipo_de_datos_para_columna_2",

... )

Page 11: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Antes de crear una nueva tabla debemos conocer ciertosaspectos:

1. Los tipos de datos soportados por el DBMS.

2. El orden en que debo crear cada una de mis tablas

3. Conocer algunas sentencias que van a permitirestablecer restricciones a mi tabla.

Page 12: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Numéricos Exacto

Numérico Aproximado

Bigint (8 bytes) Numeric (P , S)

Bit (Almacena 0 y 1) Smallint (2 bytes)

Decimal (P , S) Smallmoney (4 bytes)

Int (4 bytes) Tinyint (1 byte)

Money (8 bytes)

float real

Page 13: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Fecha y Hora

Cadenas de Caracteres.

Cadena de Caracteres Unicode

date datetime

Nchar (Longitud fija)Nvarchar (Longitud Variable)

Char (Longitud fija)Varchar (Longitud Variable)

Page 14: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

UNICODE:

Unicode es un estándar universal para la codificación decaracteres para el intercambio y despliegue de losprincipales lenguajes escritos.

Cubre los lenguajes de las Américas, Europa, Medio Este,África, India, Asia y el Pacífico, así como para escritoshistóricos y símbolos técnicos.

Page 15: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

IDENTITY (Identidad): Indica que la nueva columna es unacolumna de identidad. Cuando se agrega una fila nueva a la tabla,el Motor de base de datos proporciona un valor incrementalúnico para la columna.

Las columnas de identidad se utilizan normalmente con lasrestricciones PRIMARY KEY como identificadores de fila únicos dela tabla. La propiedad IDENTITY se puede asignar a columnastinyint, smallint, int, bigint, decimal(p,0) o numeric(p,0). Solo sepuede crear una columna de identidad para cada tabla.

En este caso, deben especificarse el valor de inicialización y elincremento, o ninguno de esto valores. Si no se especificaninguno, el valor predeterminado es (1,1).

Page 16: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

CONSTRAINT (Restricción): Es una palabra clave opcional queindica el principio de la definición de una restricción PRIMARYKEY, NOT NULL, UNIQUE, FOREIGN KEY o CHECK. Para obtenermás información.

Constraint_name Es el nombre de una restricción. Losnombres de restricción deben ser únicos en el esquema alque pertenece la tabla.

NOT NULL (No Nulo): Determina si se permiten valores NULL enla columna.

CHECK (Verificación): La restricción CHECK asegura que todos losvalores en una columna cumplan ciertas condiciones.

Page 17: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

DEFAULT (Cláusula por defecto): indica el valor de defecto quetomará la columna si no se le asigna uno explícitamente en elmomento en que se crea la línea.

Page 18: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Ejemplo:

SeleccionIdSeleccion

Nombre

IdContinente

ContinenteIdContinente

Nombre

Verificamos las dos tablas

La tabla Selección tiene un campo común o llave foránea,que hace referencia al campo clave de la tabla Continente.

La tabla Continente no tiene ningún campo común deninguna otra tabla

Page 19: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Ejemplo:

SeleccionIdSeleccion

Nombre

IdContinente

ContinenteIdContinente

Nombre

Se debe crear primero la tabla Continente, porque estatabla no tiene campo comunes o llaves foráneas.

Luego se debe crear la Selección

Page 20: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Ejemplo:

SeleccionIdSeleccion

Nombre

IdContinente

ContinenteIdContinente

Nombre

Para nuestro primer caso vamos a crear los campos de lasiguiente manera:

IdContinente, tipo entero y auto numérico clave primaria.

Nombre, tipo nvarchar(100), not null.

Page 21: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código de ejemplo nro.1 : Sin Constraint

Código de ejemplo nro.2 : Con Constraint

Page 22: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Ejemplo:

SeleccionIdSeleccion

Nombre

IdContinente

ContinenteIdContinente

Nombre

Para nuestro primer caso vamos a crear los campos de lasiguiente manera:

IdSelección, tipo entero y auto numérico clave primaria.

Nombre, tipo nvarchar(100), not null.

IdContinente, tipo entero, not null.

Page 23: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código de Ejemplo:

Page 24: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Ejemplo 2:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibro

IdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

Page 25: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Orden de Creación:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibro

IdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

Page 26: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código Tipo Libro:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibroIdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

IdTipoLibro, tipo entero y autonumérico clave primaria.

Descripción, tipo nvarchar(75), not null.

Page 27: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código Editorial:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibroIdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

IdEditorial, tipo entero y auto numéricoclave primaria.

Descripción, tipo nvarchar(100), notnull.

Page 28: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código Libro:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibro

IdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

IdLibro, tipo entero y auto numéricoclave primaria.

Titulo, tipo nvarchar(150), not null.

IdEditorial, tipo entero, not null.

Page 29: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Código LibroTipoLibro:

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibroIdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

IdLibro, tipo entero not null.

IdTipoLibro, tipo entero, not null.

Page 30: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Drop Database:

Elimina una base de datos de forma permanente.

Ejemplo:Drop Database Curso.

Drop table:

Elimina una tabla de forma permanente

EjemploDrop table Tablita

Page 31: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

DROP TABLE

Al igual que el “Create Table” al momento de usar el “Drop Table”debe utilizar el orden Correcto, se debe:

Eliminar primero aquellas tablas que tienen campo comunes. Eliminar al final aquellas tablas que no tengan campo comunes,Ejemplo:

SeleccionIdSeleccion

Nombre

IdContinente

ContinenteIdContinente

Nombre

Page 32: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

ALTER

Use las instrucciones ALTER para modificar la definición deobjetos existentes.

Alter Table:

Una vez que se crea la tabla en la base de datos, hay muchasocasiones donde uno debe realizar algún cambio en la estructurade la tabla. Los casos típicos incluyen los siguientes:

Agregar una columna Eliminar una columna Cambiar el tipo de datos para una columna

Page 33: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Agregar una Columna

Para agregar una columna utilizamos nuestra sentencia ALTERcombinada con la clausula ADD

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibro

IdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

Se nos pide agregar a nuestra tabla Libroun nuevo campo llamado NumeroPaginas,el cual será de tipo entero y not null.

Para verificar que el cambio se efectuó de forma correcta,ejecuto el siguiente código:

Sp_Columns Libro

Page 34: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Eliminar una Columna

Para eliminar una columna utilizamos nuestra sentencia ALTERcombinada con la clausulas DROP COLUMN

Se nos pide eliminar de nuestra tablaLibro el campo llamado NumeroPaginas.

Para verificar que el cambio se efectuó de forma correcta,ejecuto el siguiente código:

Sp_Columns Libro

LibroIdLibro

Titulo

IdEditorial

NumeroPaginas

Page 35: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

Cambiar el tipo de datos de una Columna

Para cambiar el tipo de dato de una columna utilizamos nuestrasentencia ALTER combinada con la clausulas ALTER COLUMN

EditorialIdEditorial

Descripcion

LibroIdLibro

Titulo

IdEditorial

LibroTipoLibro

IdLibro

IdTipoLibro

TipoLibroIdTipoLibro

Descripcion

Se nos pide cambiar el tipo de datos delcampo Titulo de nuestra tabla Libro, elnuevo tipo de datos será nchar(150).

Para verificar que el cambio se efectuó de forma correcta,ejecuto el siguiente código:

Sp_Columns Libro

Page 36: SQL (Lenguaje de Consulta Estructurado) - unitec.edu.ve · No incluye las herramientas avanzadas de las versiones superiores. Especializada para aplicaciones en distintas sucursales

1. Investigar:

Sintaxis correcta para agregar una clave Primaria utilizando lasentencia ALTER

Sintaxis correcta para agregar una clave Foránea utilizando lasentencia ALTER

2. Escribir el código necesario para Crear el siguiente modelo.

ClienteIdCliente

Nombre

Apellido

Nit

IdCiudad

Telefono

CiudadIdCiudad

Nombre

CodigoPostal

PedidoIdPedido

Numero

Fecha

IdCliente

Impuesto

envio

total