Professional Documents
Culture Documents
SQL SERVER
Modo de conexin:
Seleccionamos la opcin de WIN8, o bien el nombre que tiene la computadora y luego clic en aceptar.
Nuevo proyecto:
Base.mdf Base.log
Tablas Archivo fisico de la base de datos en
Vistas formato texto (txt)
Indices DDL DML
Lenguaje de Lenguaje de
Disparadores (triggers) Definicion de Datos Definicion de Datos
Procedimientos (stone procedures) CREATE Con los comandos:
Almacenamientos (stone procedures) DROP Select
Roles ALTER Insert
ususarios Update
Truncate
Delete
Nota: Todo lo realizado en una base de datos se guarda en una base.log (txt)
/*crea las tablas de la base de datos universidad con sus respectivos campos y
parametros de columnas propios(int, float, datatime, char, varchar, etc)*/
/*utilizamos la palabra use para referirnos a una base de datos especifica si existen
varias*,si solo hay una, no es necesaria*/
use universidad
/*se crea las tablas que conformaran nuestra base de datos universidad*/
create table alumnos(codigo int, nombre varchar(20), ap_pat varchar(20), ap_mat
varchar(20), ci int,direccion varchar(50), telefono int, correo varchar(70),
fecha_nacimiento date, sexo char(2))
create table docente(codigo int, nombre varchar(20), ap_pat varchar(20), ap_mat
varchar(20), ci int,direccion varchar(50), telefono int, correo varchar(70),
fecha_nacimiento date, sexo char(2))
create table materias(Codigo int, Nombre varchar(50), Carrera varchar(50), Semestre
varchar(50), Turno varchar(50), Horario int)
create table aulas(Codigo int, Piso int, Capacidad_Asientos int, Tipo varchar(50),
Unidad varchar(50))
create table notas(Codigo_Alumnos int, Codigo_Materia int, Codigo_Docente int, Unidad
varchar(50), Num_Parcial int, Nota_Final int, Practicas int, Asistencia int)
create table gestion(Fecha int, Semestre varchar(50), Unidad Varchar(50))
create table unidad(Codigo int, Nombre_Unidad varchar(50), Direccion
varchar(50),Telefono int, Detalle varchar(50))
Edwin Augusto Mendoza Suarez
/*crea la columna estacion en la tabla unidad que actua como clave primaria*/
use universidad
alter table unidad add estacion int primary key
/*crea la columna codigo con not null (llenar si o si el campo) a la tabla alumnos*/
use universidad
alter table alumnos add codigo int not null
Es cierto que para ejecutar una consulta extensa que tiene varios procedimientos se debera hacer el sombreado
de cada consulta en forma aparte en el orden que se quiera, pero con el comando GO, podemos hacerlo en un
solo click (siempre anteponiendo a cada consulta la palabra GO)
IDENTITY
El comando identity realiza el autoincremento desde un punto de partida y la razn de incremento (inicio,
incremento), aunque por defecto identity inicia en 1 y hace el incremento de uno en uno sino se dan los
parmetro del parentesis. El mismo no establece la repeticin de datos, aun mas cuando le esta seguido la
palabra reservada primary key, sin embargo el mismo es modificable (set identity_insert [nombre_de_la_tabla]
on).
INSERT INTO
Edwin Augusto Mendoza Suarez
Permite introducir una serie de datos en una tabla.
INSERT INTO [nombre_tabla]
VALUES ([valor_columna1], [valor_columna2],)
Nota
Los tipos de datos char, varchar, date van entre apostofes ( ).
Los valores a introducirse respetando las columnas definidas.
Se respeta el orden de las columnas.
DELETE Y TRUNCATE
Es cierto que ambos eliminan registros, sin embargo para el caso del autoincremento que proporciona el identity
sucede lo siguiente:
delete no corta el autoincremento, el siguiente dato a insertar partir autoincrementado desde el ultimo
dato insertado.
truncate resetea los campos autonumericos incrementables, partiendo el incremento desde el ultimo
dato eliminado.
UPDATE
Permite actualizar los datos de una columna.
UPDATE [nombre_tabla]
SET ([nombre_columna1] = [valor_columna1],)
WHERE ([condicion])
Constraint.-
Para asegurar la integridad de los datos almacenados en nuestras tablas, podemos crear restricciones, algunos los
hemos utilizado sin querer o simplemente desconocemos que lo que hicimos fue una restriccin, por ejemplo una
llave primaria.Estas restricciones las podemos implementar al momento de crear nuevas tablas o de modificarlas.
Tambien es necesario sealar que dichas restricciones son objetos propios de las bases de datos y por lo tanto
requieren de un nombre nico compuesto del nombre del esquema al que pertenece y el nombre que lo
identifica ([NombreEsquema.NombreRestriccion]).
Tipos de constraint.- Se usan con una o ms columnas, cuyo enfoque es asignar criterios de bsqueda a las
columnas.
Referencia Integrity Constraint (Restricciones de Integridad Referencial).- Son creadas cuando un valor de una
columna debe corresponder al valor en otra columna de otra tabla.
PRIMARY KEY
Es la ms comn de todas debido a que cada una de nuestras tablas debe ser completamente relacional y para
lograr esto siempre debe existir una llave primaria dentro de cada tabla que identifique cada fila como nica.
Existen ciertos requerimientos para la creacin de una llave primaria:
La o las columnas utilizadas en una restriccin PRIMARY KEY, no pueden aceptar NULL.
No se pueden repetir valores en la o las columnas, deben ser nicos.
Solamente puede existir una restriccin de tipo PRIMARY KEY por cada tabla.
Para generar una llave primaria, se realiza lo siguiente:
1. Creando una tabla
CREATE TABLE nombreEsquema.nombreTabla
(
nombreColumna1 INT NOT NULL,
nombreColumna2 VARCHAR(100) NOT NULL,
nombreColumna3 NVARCHAR(200) NOT NULL,
CONSTRAINT PK_nombreRestriccion PRIMARY KEY( nombreColumna1 )
);
Es posible agregar ms columnas como parte de una llave primaria, se recomienda como buena prctica utilizar
una nomenclatura en el nombre de la restriccin que ayude a identificar de que tipo es, adems de tener especial
cuidado en nombrar las columnas que forman parte de la llave primaria ya que ests mismas sern utilizadas
como referencia en una llave fornea en otra tabla. Cada vez que generamos una llave primaria, esta crea un
ndice tipo de clustered automticamente.
Para verificar las llaves primarias contenidas en nuestra base de datos podemos utilizar el siguiente cdigo:
SELECT *
FROM sys.key_constraints
WHERE type = 'PK';
UNIQUE
Este tipo de restriccin es muy parecida a PRIMARY KEY, las diferencias son las siguientes:
Tambin genera un ndice automticamente pero es de tipo de NON CLUSTERED.
La tabla puede tener ms de una restriccin de tipo UNIQUE.
Si puede aceptar NULL, pero solo una fila puede contenerlo ya que como su nombre lo indica, es de tipo
UNIQUE o nico.
FOREIGN KEY
Se forma de una columna o la combinacin de varias columnas de una tabla que sirve como enlace hacia otra
tabla donde en esta ltima, dicho enlace son la o las columnas que forman la PRIMARY KEY. En la primera tabla
donde creamos la llave fornea es posible que existan valores duplicados de la/las columnas que conforman la
llave primaria de la segunda tabla, adems las columnas involucradas en la llave fornea deben tener el mismo
Edwin Augusto Mendoza Suarez
tipo de datos que la llave primaria de la segunda tabla. Una llave fornea no crea un ndice automticamente, por
lo que se recomienda generar uno para incrementar el rendimiento de la consulta.
2. Modificando la tabla:
ALTER TABLE nombreEsquema.nombreTabla
ADD CONSTRAINT FK_nombreRestriccion FOREIGN KEY(nombreColumna1)
REFERENCES nombreEsquema.otraTabla (nombreColumna1)
/*crea la llave foranea piso bautizando con el nombre PK_PisoUnidad*/
use universidad
alter table excelencia
add constraint FK_excelencia foreign key (codigo) references alumnos(codigo)
SELECT *
FROM sys.foreign_keys
WHERE name = 'nombreEsquema.nombreTabla;
O bien:
SELECT *
FROM sys.key_constraint
WHERE type = 'FK;
CHECK
Edwin Augusto Mendoza Suarez
Con este tipo de restriccin, se especifica que los valores ingresados en la columna deben cumplir la regla o
formula especificada. Por ejemplo:
DEFAULT
Se puede decir que no es una restriccin, ya que solo se ingresa un valor en caso de que ninguno otro sea
especificado. Si una columna permite NULL y el valor a insertar no se especifica, se puede sustituir con un valor
predeterminado.
Jalamos con el puntero desde el campo de la tabla dependiente, hasta el campo de la tabla independiente
(considerar que el tipo de variable de ambos debe concordar en ambos).
En el segundo cuadro muestra quien funciona como primary key y quien como foreign key (se puede
configurar la relacion por defecto).
En elespacio de insert and update, seleccionamos las dos pestaas en cascada.
INDICES
Pueden ser agrupados (clustered) y no agrupados (non clustered). Imaginemos que tenemos una serie de datos
personales o cualquier que el mismo este desordenado, podemos ordenarlo en forma descendente o ascendente
con procedimientos almacenados que tiene SQLServer.
Al declarar primary keys en una tabla, los index se generan automaticamente.
Cada tabla solo puede tener un indice agrupado.
Puede existir en una tabla un indice ordenado y no ordenado.
WHERE
Establece la condicin que se obtiene en la consulta que se realiza, ya sea por comparacin de caracteres, o
relaciones matemticas.
OPERADORES
Operadores Operadores Operadores
matematicos. logicos. relacionales.
SUMA + AND MAYOR QUE > DISTINTO <>; =
RESTA - OR MENOR QUE < NO MAS QUE >
MULTIPLICACION * NOT IGUAL QUE = NO MENOS QUE <
DIVISION / MAYOR O IGUAL QUE >=
MENOR O IGUAL QUE <=
BEETWEN
Operardor entre dos valores:
LIKE Como
IN Entre dos valores
ALL, ANY, SOME, EXITS.
LIKE M% Empiezan con M
LIKE %M Terminan con M
LIKE %M% Contiene M
ORDER BY
Permite ordenar una serie de datos segn sea conveniente.
ORDER BY [dato] ASC
ORDER BY [dato] DESC
Nota.- al no agregar ASC o DESC el sistema detecta como ASC
FUNCIONES AGREGADAS
AVG
Permite calcular el promedio de un lote de datos con o sin restriccin.
Select AVG ([campo]) as [nombre_del_promedio]
From [nombre_tabla]
Where [condicion]
MIN/MAX
Permite devolver el valor mnimo o mximo de un lote de datos con o sin restriccin.
Select MIN ([campo]) as [nombre_del_valor_minimo]
From [nombre_tabla]
Where [condicion]
COUNT
Cuenta la cantidad de registros de una tabla con o sin restriccin.
Select COUNT ([campo]) as [nombre_de_la_cantidad_contada]
From [nombre_tabla]
Where [condicion]
Edwin Augusto Mendoza Suarez
DISTINCT
Selecciona una serie de datos distintos uno de otro.
Select DISTINCT ([campo]) as [nombre_de_la_cantidad_contada]
From [nombre_tabla]
Where [condicion]
SUB CONSULTAS
Una subconsulta es una consulta (query) dentro de otra consulta.
Algunas subconsultas son fciles de pensar pero difcil de construir, por eso se debe tener en claro lo que se debe
obtener.
Select [columnas]
From [nombre_tabla]
Where [condicion] = (
Select [columnas]
From [nombre_tabla]
Where [condicion])
CON ALIAS
IN: Todo lo que est dentro de ().
Select [columnas]
From [nombre_tabla]
Where [condicion] IN (
Select [columnas]
From [nombre_tabla]
Where [condicion])
JOIN (UNIR-ENLAZAR)
INNERJOIN
Es el ms comn entre los enlaces.
Une dos tablas que comparte valores de una columna especfica.
select [identificador_a].[lista]
from [tabla_a] [identificador_a]
innerjoin [tabla_b] [identificador_b]
on [identificador_a].[columna_a] condition [identificador_b].[columna_b]
/*se crea las tablas que conformaran nuestra base de datos universidad*/
create table becados (codigo int, nombre varchar(20), ap_pat varchar(20), ap_mat
varchar(20), ci int,direccion varchar(50), telefono int, correo varchar(70),
fecha_nacimiento date, sexo char(2))
/*mostramos las tablas de alumnos y becados que tienen en comun el apellido terno
Simpson y
el numero ci de alumnos es menor que el de becados*/
select *
from alumnos a
Edwin Augusto Mendoza Suarez
inner join becados b
on a.ap_pat = b.ap_pat and a.ci < b.ci
VISTAS
Una vista es un objeto de la base de datos que permite obtener los datos de una consulta comoo si fuera una
tabla. Trabaja como una tabla pero no se puede ingresar datos o registros a esa vista.
Realice la complejidad para los usuarios.
Previene que columnas o datos sensibles sean tocados.
Aumenta en rendimiento de una base de datos.
Create view [V_nombre_vista]
As select [tabla_a, tabla_b, ]
From [nombre_tabla]
Where [condicion]
TRIGGERS
Es la creacion de tablas temporales paralela a la tabla original la cual al terminar la ejecucion de cualquier
comando la misma se elimina automaticamente.
Estas tablas se crean apratir de las mismas estructuras de la s tablas originales.
Un trigger en procedmiento almacenado el cual se dispara cundo se quiere modicar una tabla o vista. Estos no se
ejecutan en forma directa mas obedeciendo a una accion que se realizan n una tabla particular.
De otra forma (no mostrar dos filas agregadas, o bien no denotar que hay un trigger detrs de la insercin de
datos)
caso 1 caso 2
Un procedimiento almacenado es un script con una serie de instrucciones a ser ejecutadas por este
procedimiento, que permite realizar operaciones como consultas, insertar datos, eliminar, actualizar, realizar
clculos, etc .
Para la introduccin de datos, se crean nuevas variables anteponiendo el smbolo de @ con el mismo tipo de
variable a actualizar, introducir o eliminar.
ALIAS
Especifica la descripcion de un campo que ha sido abreviada al nombrarla en una tabla (no debe pasar de los 128
caracteres).
Es necesario que los usuarios que van a utilizar una base de datos determinada tenga algunas restricciones para el
uso y configuracin de las tablas de la base de datos. Por ello es importante asignar que usuarios realizaran el
proceso de ingresar datos, otro que elimine datos, etc.
Insertamos el nombre del nuevo usuario que administrara ciertas caractersticas de la base de datos.