Está en la página 1de 7

I.S.T.P.

Francisco de Paula Gonzales Vigl


Computacin e Informtica

U.D.: Taller de Bases de Datos

SQL
(LENGUAJE DE CONSULTA ESTRUCTURADO)
SQL (Structure Query Language), es un lenguaje de consulta estructurado de alto nivel estndar para
sistemas de base de datos relacionales.
El SQL agrupa tres tipos de sentencias con objetivos particulares, en los siguientes lenguajes:
Lenguaje de Definicin de Datos (DDL, Data Definiton Language)
Lenguaje de Manipulacin de Datos (DML, Data Management Language)
Lenguaje de Control de Datos (DCL, Data Control Language)
1. COMANDOS DDL
Grupo de sentencias de SQL que soportan definicin y declaracin de objetos de la base de
datos. Objetos tales como: la base de datos misma (DATABASE), tablas(TABLE), Vistas (VIEW),
ndices (INDEX), procedimientos almacenados (PROCEDURE), disparadores (TRIGGER),
Reglas (RULE), Dominios (Domain) y Valores por defecto (DEFAULT).
1.1. CREAR UNA BASE DE DATOS: Sentencia SQL CREATE DATABASE
SINTAXIS:
create database nombre_basededatos ON PRIMARY
(
name = nombre_basededatos _data,
filename = 'c:\ nombre_basededatos.mdf',
/*Direccin donde se crea*/
size = 3mb,
/*Tamao de la base de datos*/
maxsize = 7mb,
/*Tamao de mximo de la base de datos*/
filegrowth = 2 mb
/*crecimiento de la base de datos*/
)
log on
(
name = nombre_basededatos_log,
filename = 'c:\ nombre_basededatos.ldf',
size = 3mb,
maxsize = 7mb,
filegrowth = 2 mb
)
Ejemplo:
CREATE DATABASE VENTAS
(
NAME=VENTAS_data,
FILENAME='D:\VENTAS.mdf',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1MB
)
LOG ON
(
NAME=VENTAS_log,
FILENAME='D:\VENTAS.ldf',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1MB
)
Docente: Mag. David Caipa Mamani

12/07/16

Pg. 1

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica

U.D.: Taller de Bases de Datos

En el ejemplo anterior, creamos una base de datos con el nombre Ventas que contiene un
archivo de datos Primario (Ventas); un archivo de datos secundario (Ventas_data); y un
archivo Lgico de transaccin (Ventas_log).
Adems, en el ejemplo, el archivo de datos con extensin mdf tiene un tamao inicial de 5
MB, cuando este espacio se agote, se expandir en 1 MB, para tener espacio libre y poder
ingresar ms registros o tablas y cuando se agote nuevamente el archivo fsico de 1MB,
ste se expandir en 1 MB nuevamente y as en lo sucesivo hasta alcanzar el mximo 10
MB ya de ah no crecer ms. Ocurre lo mismo con el archivo con extensin ldf.
1.2. MODIFICAR EL NOMBRE DE LA BD
Cambiar el nombre de la BD VENTAS por TIENDA
ALTER DATABASE VENTAS
MODIFY NAME = TIENDA;
Volver a modificar el nombre de la BD TIENDA por VENTAS
ALTER DATABASE TIENDA
MODIFY NAME = VENTAS;
1.3. SENTENCIA CREATE TABLE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, ndice,
trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos
soporte.
La sentencia CREATE TABLE, define el nombre de la tabla, las columnas con su tipo de
datos, las ligaduras de intengridad que vigilan el valor que se guarde como dato en las
columnas o atributos sean llaves o no.
El tipo de dato para cada una de los campos, puede manejar uno de los criterios:

El tipo de dato que contendr el Campo, como los caracteres, enteros o imgenes.
El tamao o longitud de los datos de un campo o columna
Precisin del nmero (slo para los tipos de datos numricos), el nmero de dgitos
que un nmero puede contener.
La balanza del nmero (solo para los tipos de los datos numricos), el nmero de
dgitos que se mostrar a la derecha del punto decimal.
El tipo de datos, tambin afectar a las vistas, parmetros en procedimientos,
variables y funciones, que se devuelven ms valores de datos.

Sintaxis:
CREATE TABLE nombre_tabla
(
campo1 tipo_dato [NULL/NOT NULL] | CHECK (expresinLgica) |
[DEFAULT expresinConstante],
campo2 tipo_dato [NULL/NOT NULL] | CHECK (expresinLgica) |
[DEFAULT expresinConstante ],
campo-N,
PRIMARY KEY (campo_llave),
FOREIGN KEY (campo_llave) REFERENCES tabla2 (campo_llave-tabla2)
)

Docente: Mag. David Caipa Mamani

12/07/16

Pg. 2

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica
Categora

U.D.: Taller de Bases de Datos

Descripcin

Tipo de Dato

Binary

Un dato Binary almacena cadenas de binary


bits. El dato consiste de nmeros
hexadecimales. Por ejemplo, el
varbinary
nmero decimal 245 vale en
hexadecimal F5.
image

Character

Los datos Character consisten de


cualquier combinacin de letras,
smbolos, y caracteres numricos.
Por ejemplo, datos character
vlidos:"John928" "(0*&(%B99nh
jkJ"

char

varchar

text

Date time

Decimal

Los datos Date time consisten de


combinaciones de fechas o horas
vlidas. No existe tipos de datos
separados para fechas y horas para
almacenar solo fechas o solo horas

Los datos Decimal consisten de datos


numricos que son almacenados al
menor dgito significativo

datetime

smalldatetime

decimal

numeric
Floating point

Integer

Datos numricos aproximados que


float
consisten de datos con una
aproximacin tanto como el sistema real
de numeracin binaria pueda ofrecer
Los datos Integer consisten de
nmeros enteros positivos y
negativos tales como: 15, 0, 5, y
2.509.

Monetary representa montos de


dinero positivos o negativos

Desde 2.147.483.648 a
2.147.483.647 (requiere de 4 bytes
por valor).

smallint

Desde 32,768 a 32.767 (requiere de


2 bytes por valor).

money

cursor

timestamp

Docente: Mag. David Caipa Mamani

Desde 3.40E + 38 a 3.40E + 38.

int

bit

Special

Los datos pueden ser cadena de


caracteres ASCII que excedan los 8
KB.
Los datos fecha estn comprendidos
entre en el 1 de Enero de 1753 hasta
el 31 de diciembre de 9999 (requiere
8 bytes por dato).
Los datos fecha estn comprendidos
entre en el 1 de Enero de 1900 hasta
el 31 de diciembre de 2079 (requiere
4 bytes por dato).
Los datos pueden tener un mximo de
30 dgitos, que pueden estar todos a
la derecha de la coma decimal. El tipo
de dato almacena una representacin
exacta del nmero.
En SQL Server, el tipo de datos
numeric es equivalente al tipo de
datos decimal.
Desde 1.79E + 308 a 1.79E + 308.

Desde 2^63 (
9223372036854775808) a 2^631
(9223372036854775807). Tamao 8
bytes.

smallmoney

Special se utiliza para datos que


caben en ninguna de las categors
anteriores.

Los datos pueden variar en el nmero


de caracteres (hasta 8 KB)

bigint

tinyint

Monetary

Descripcin
Los datos deben tener la misma
longitud fija (hasta 8 KB)
Los datos pueden variar en el nmero
de dgitos hexadecimales (hasta 8 KB)
Los datos pueden ser de longitud
variable y exceder los 8 KB.
Los datos deben tener la misma
longitud fija (hasta 8 KB)

12/07/16

Desde cero a 255 (requiere de 1 bytes


por valor).
Desde 922.337.203.685.477,5808 a
+922.337.203.685.477,5807 Tamao
8 bytes.
Desde 214.748,3648 a
214.748,3647 Tamao 4 bytes.
Consisten en un 1 o un 0. Se usan
para representar valores lgicos
VERDADERO o FALSO, SI o NO
Este tipo de dato es usado para
variables o parmetros OUTPUT en
procedimientos almacenados que
contenga una referencia a un cursor.
Cualquier variable creada con el tipo
de datos cursor puede tomar valor
nulo
Este tipo de datos es usado para
indicar la secuencia de la actividad del
SQL Server sobre una fila y es
representado por un nmero
incremental en formato binario.

Pg. 3

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica
Categora

Descripcin

U.D.: Taller de Bases de Datos


Tipo de Dato

Descripcin

uniqueidentifier

Consiste de nmeros hexadecimales


de 16 byte, indicando un identificador
nico global (GUID). Los GUID son
usados cuando una columna deba ser
nica frente a cualquier otra columna.

SQL_variant

Este tipo de datos soporta a cualquier


otro tipo de datos soportado por SQL
Server excepto text, ntext,
timestamp, image, y sql_variant.

table

Unicode

Al usar tipo de datos Unicode, una


columna puede almacenar cualquier nchar
caracter definido por el estndar
Unicode. Lo cual incluye a todos los
caracteres definidos en los distintos
conjuntos de caracteres. Los tipos de
nvarchar
datos Unicode toman el doble de
espacio de almacenamiento que los
tipos no-Unicode.
ntext

Es utilizado para almacenar un


conjunto de resultados para su
posterior procesamiento. El tipo de
datos Table puede ser usado
nicamente para para definir variable
locales de tipo table o para retornar
valores de una funcin definida por el
usuario.
Los datos deben tener la misma
longitud fija (hasta 4000 caracteres
Unicode)
Los datos pueden variar en el nmero
de caracteres (hasta 4000 caracteres
Unicode)
Los datos pueden exceder los 4000
caracteres Unicode.

Ejemplo de creacin de tabla


CREATE TABLE EMPLEADO
(
CODEMP
Char (5)
Not Null PRIMARY KEY,
NOMEMP
VarChar (15) Not Null,
APEEMP
VarChar (20) Not Null,
DNIEMP
Char (8)
Not Null,
SEXEMP
Char (1)
Not Null CHECK (SEXEMP IN ('F','M')),
FENAEMP DateTime
Null,
DIREMP
VarChar (35) Null,
TELFEMP VarChar (12) Null,
EMAILCLI
VarChar (30) Null DEFAULT 'micorreo@hotmail.com',
FOTEMP
Binary
Null,
CODCAR
Char(5)
NotNull,
FOREIGN KEY (CODCAR) REFERENCES CARGO (CODCAR)
)

Valores Nulos (NULL):


Un valor nulo en una columna normalmente indica que ninguna entrada ha sido hecha en
esa columna para una fila particular de datos o porque el valor no se conoce, no
aplicable, no definido, o para ser agregado mas tarde.

Propiedad IDENTITY:
Docente: Mag. David Caipa Mamani

12/07/16

Pg. 4

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica

U.D.: Taller de Bases de Datos

Si una columna se crea con la propiedad Identity, SQL Server genera un valor de la fila,
con un dato original y de un incremento. Por defecto el incremento es 1; por ejemplo
Identity (1,1). Si el campo se aplica la propiedad Identity (0,10), la primera fila tendr un
valor de 0, la segunda fila tendr un valor de 10, la tercera fila ser 30, etc.
Generalmente aplicada a la clave primaria de una tabla.
Ejemplo.
CREATE TABLE PRODUCTO
(
Producto_id
SmallInt
IDENTITY (1,1)
NOT NULL,
Producto_nombre
VarChar (20) NULL,
Producto_Descripcin VarChar (30) NULL,
Producto_precio
SmallMoney NOT NULL,
)
1.4. DECLARACIN ALTER TABLE
La declaracin Alter Table, se usa para alterar su definicin o los atributos de una tabla, tal
como agregar campos a una tabla, modificar el tipo o tamao de una columna.
Ejemplo 1: Agregar el campo EstadoCivil en la tabla Empleado
ALTER TABLE EMPLEADO
ADD ESTADOCIVIL
VARCHAR(15)
NULL
Ejemplo 2: Definir el campo CodCar como llave primaria en la tabla Cargo
ALTER TABLE CARGO ADD PRIMARY KEY (CODCAR)
1.5. DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice,
trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos
soporte. Se puede combinar con la sentencia ALTER.
Ejemplo 1: Eliminar la tabla Cargo
DROP TABLE CARGO
Ejemplo 2: Eliminar el campo Foto en la tabla Empleado
ALTER TABLE EMPLEADO
DROP COLUMN FOTEMP
1.6. RELACIONAR LAS TABLAS: EMPLEADO - CARGO
PRIMERA FORMA:
Usar la sentencia ALTER TABLE
ALTER TABLE EMPLEADO ADD CODCAR char(5) REFERENCES CARGO (CODCAR)
OTRA MANERA DE RELACIONAR:
En la tabla Empleado, puede aadir la columna a usar como fornea
ALTER TABLE EMPLEADO ADD CODCAR char(5)
Luego establecer la clave fornea
ALTER TABLE EMPLEADO ADD FOREIGN KEY (CODCAR) REFERENCES CARGO (CODCAR)

CONSTRAINTS SQL SERVER


Es una palabra clave opcional que indica el principio de la definicin de una restriccin PRIMARY KEY, NOT
NULL, UNIQUE, ROFEIGN KEY O CHECK. Las restricciones son propiedades especiales que exigen la
integridad de los datos y pueden crear ndices para la tabla y sus columnas
Los CONSTRAINTS sirven para lograr la integridad de datos, aseguramos que los valores ingresados a las
columnas sean vlidos y que las relaciones entre las tablas no se perdern. Los CONSTRAINTS pueden

Docente: Mag. David Caipa Mamani

12/07/16

Pg. 5

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica

U.D.: Taller de Bases de Datos

definirse al momento de crear la tabla, aunque tambin es posible hacerlo despus de que las tablas se han
creado.
GLOSARIO:
NOT NULL: Define una columna de la tabla. Si se especifica NOT NULL, o si se la aplica una restriccin
UNIQUE o PRIMARY KEY, la columna no puede tener valores en NULL.
UNIQUE: Establece una o ms columnas que identifican unvocamente cada fila de la tabla, dos filas en la
misma tabla no pueden tener valores idnticos en las columnas definidas como UNIQUE, una tabla puede
tener ms de una restriccin UNIQUE.
FOREIGN KEY: Restringe los valores para un conjunto de columnas que deben coincidir con los valores de la
clave principal a una restriccin UNIQUE de otra tabla.
PRIMARY KEY: Esta restriccin afecta solo a esa columna y debe tener los valores nicos irrepetibles y no
debe tener valores nulos, en otro caso la clave fornea hace referencia a la clave principal de la tabla padre.
CHECK: Son condiciones o reglas que deben cumplir los valores de una columna. Por ejemplo podra utilizarse
una restriccin de este tipo para asegurarse de que la columna sexo solo toma valores H o M
Hemos visto que una de las alternativas que SQL Server ofrece para asegurar la integridad de datos es el uso
de restricciones (constraints). Aprendimos que las restricciones se establecen en tablas y campos asegurando
que los datos sean vlidos y que las relaciones entre las tablas se mantengan; vimos que existen distintos tipos
de restricciones:
1) de los campos: default y check
2) de la tabla: primary key y unique.
3) referencial: foreign key, la analizaremos ahora.
Con la restriccin "foreign key" se define un campo (o varios) cuyos valores coinciden con la clave primaria de
la misma tabla o de otra, es decir, se define una referencia a un campo con una restriccin "primary key" o
"unique" de la misma tabla o de otra.
La integridad referencial asegura que se mantengan las referencias entre las claves primarias y las externas.
Por ejemplo, controla que si se agrega un cdigo de editorial en la tabla "libros", tal cdigo exista en la tabla
"editoriales".
Tambin controla que no pueda eliminarse un registro de una tabla ni modificar la clave primaria si una clave
externa hace referencia al registro. Por ejemplo, que no se pueda eliminar o modificar un cdigo de "editoriales"
si existen libros con dicho cdigo.
La siguiente es la sintaxis parcial general para agregar una restriccin "foreign key":
alter table NOMBRETABLA1
add constraint NOMBRERESTRICCION
foreign key (CAMPOCLAVEFORANEA)
references NOMBRETABLA2 (CAMPOCLAVEPRIMARIA);

Analicmosla:
- NOMBRETABLA1 referencia el nombre de la tabla a la cual le aplicamos la restriccin,
- NOMBRERESTRICCION es el nombre que le damos a la misma,
- luego de "foreign key", entre parntesis se coloca el campo de la tabla a la que le aplicamos la restriccin que
ser establecida como clave fornea,

Docente: Mag. David Caipa Mamani

12/07/16

Pg. 6

I.S.T.P. Francisco de Paula Gonzales Vigl


Computacin e Informtica

U.D.: Taller de Bases de Datos

- luego de "references" indicamos el nombre de la tabla referenciada y el campo que es clave primaria en la
misma, a la cual hace referencia la clave fornea. La tabla referenciada debe tener definida una restriccin
"primary key" o "unique"; si no la tiene, aparece un mensaje de error.
Para agregar una restriccin "foreign key" al campo "codigoeditorial" de "libros", tipeamos:
alter table libros
add constraint FK_libros_codigoeditorial
foreign key (codigoeditorial)
references editoriales(codigoeditorial);
En el ejemplo implementamos una restriccin "foreign key" para asegurarnos que el cdigo de la editorial de la
de la tabla "libros" ("codigoeditorial") est asociada con un cdigo vlido en la tabla "editoriales"
("codigoeditorial").
Cuando agregamos cualquier restriccin a una tabla que contiene informacin, SQL Server controla los datos
existentes para confirmar que cumplen con la restriccin, si no los cumple, la restriccin no se aplica y aparece
un mensaje de error. Por ejemplo, si intentamos agregar una restriccin "foreign key" a la tabla "libros" y existe
un libro con un valor de cdigo para editorial que no existe en la tabla "editoriales", la restriccin no se agrega.
Acta en inserciones. Si intentamos ingresar un registro (un libro) con un valor de clave fornea
(codigoeditorial) que no existe en la tabla referenciada (editoriales), SQL server muestra un mensaje de error.
Si al ingresar un registro (un libro), no colocamos el valor para el campo clave fornea (codigoeditorial),
almacenar "null", porque esta restriccin permite valores nulos (a menos que se haya especificado lo contrario
al definir el campo).
Acta en eliminaciones y actualizaciones. Si intentamos eliminar un registro o modificar un valor de clave
primaria de una tabla si una clave fornea hace referencia a dicho registro, SQL Server no lo permite (excepto
si se permite la accin en cascada, tema que veremos posteriormente). Por ejemplo, si intentamos eliminar una
editorial a la que se hace referencia en "libros", aparece un mensaje de error.
Esta restriccin (a diferencia de "primary key" y "unique") no crea ndice automticamente.
La cantidad y tipo de datos de los campos especificados luego de "foreign key" DEBEN coincidir con la
cantidad y tipo de datos de los campos de la clusula "references".
Esta restriccin se puede definir dentro de la misma tabla o entre distintas tablas.
Una tabla puede tener varias restricciones "foreign key".
No se puede eliminar una tabla referenciada en una restriccin "foreign key", aparece un mensaje de error.
Una restriccin "foreign key" no puede modificarse, debe eliminarse y volverse a crear.
Para ver informacin acerca de esta restriccin podemos ejecutar el procedimiento almacenado
"sp_helpconstraint" junto al nombre de la tabla. Nos muestra el tipo, nombre, la opcin para eliminaciones y
actualizaciones, el estado (temas que veremos ms adelante), el nombre del campo y la tabla y campo que
referencia.
Tambin informa si la tabla es referenciada por una clave fornea.

Docente: Mag. David Caipa Mamani

12/07/16

Pg. 7