Sei sulla pagina 1di 7

Apuntes sobre SQL Server 2012

Comandos para creacin de base de datos

Realizar un insert con un archivo cvs


Bulk
Insert Producto
from c:\csv\productos.csv
with (firstrow=2,fieldterminator=;,rowterminator=\n)
Formas de usar el TOP
Select top(5) * from product (Para mostrar los primeros cinco productos)
Select top(5) Percent * from producto (Para mostrar el 5% de los registros)

Operador IN
Ejemplo de Uso:
Select * from producto where (nombreproducto IN (automovil,producto 4,producto 3))

Conceptos para consultas en ms de una tabla


INNER JOIN: Con esta operacin se calcula el producto cruzado de todos los registros; as
cada registro en la tabla A es combinado con cada registro de la tabla B; pero slo
permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que
se especifiquen. Este es el tipo de JOIN ms utilizado, por lo que es considerado el tipo de
combinacin predeterminado.
LEFT JOIN: El resultado de esta operacin siempre contiene todos los registros de la tabla
de la izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un
registro correspondiente en la tabla de la derecha para uno de la izquierda.

Ejemplo de tabla izquierda para la combinacin externa:


SELECT *
FROM
empleado
LEFT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.Ap Empleado.IDDepar Departamento.NombreDe Departamento.IDDepa


ellido
tamento
partamento
rtamento
Jordn
33
Ingeniera
33
Andrade
31
Ventas
31
Rbinson
34
Produccin
34
Zolano
34
Produccin
34
Gaspar
36
NULL
NULL
Steinberg
33
Ingeniera
33
RIGHT JOIN: Esta operacin es inversa a la anterior; el resultado de esta operacin
siempre contiene todos los registros de la tabla de la derecha (la segunda tabla que se
menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de
la izquierda para uno de la derecha.

Ejemplo de tabla izquierda para la combinacin externa:


SELECT *
FROM
empleado
RIGHT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.Ap Empleado.IDDepar Departamento.NombreDe Departamento.IDDepa


ellido
tamento
partamento
rtamento
Zolano
34
Produccin
34
Jordn
33
Ingeniera
33
Rbinson
34
Produccin
34
Steinberg
33
Ingeniera
33
Andrade
31
Ventas
31
NULL
NULL
Mercadeo
35

FULL JOIN: Esta operacin presenta los resultados de tabla izquierda y tabla derecha
aunque no tengan correspondencia en la otra tabla. La tabla combinada contendr,
entonces, todos los registros de ambas tablas y presentar valores nulos NULLs para
registros sin pareja.
EJEMPLO:
SELECT *
FROM
empleado
FULL OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.Ap Empleado.IDDepar Departamento.NombreDe Departamento.IDDepa


ellido
tamento
partamento
rtamento
Zolano
34
Produccin
34
Jordn
33
Ingeniera
33
Rbinson
34
Produccin
34
Gaspar
36
NULL
NULL
Steinberg
33
Ingeniera
33
Andrade
31
Ventas
31
NULL
NULL
Mercadeo
35
Truco para obtener el primero y ltimo registro de una tabla
Select top(1) * from producto (Obtiene el primer registro de una tabla llamada producto)
Select top(1) * from producto order by id desc (Obtiene el ultimo registro de la tabla producto)

Script para crear diccionario de datos de una base de datos SQL Server
use Ventas1
--________Diccionario de datos de una base de datos en Sql
server___________
--Un diccionario de datos es un conjunto de metadatos que contiene
las
--caractersticas lgicas y puntuales de los datos que se van a
utilizar
--en el sistema que se programa, incluyendo nombre, descripcin,
alias, contenido
-- y organizacin.

select
d.object_id,
a.name [table], -- identificara la Tabla
b.name [column], -- identificara la columna
c.name [type], -- identificara el Tipo
CASE-- recibe el tipo de columna
--cuando c es
numerico o
c es
decimal
o c es
Float
entonces se precisa el numero
WHEN c.name = 'numeric' OR c.name = 'decimal' OR c.name
= 'float' THEN b.precision
ELSE null
END [Precision],
-- recibe maximo tamao de b
b.max_length,
CASE -- recibe si la columna acepta nulos
WHEN b.is_nullable = 0 THEN 'NO'
ELSE 'SI'
END [Permite Nulls],
CASE -- recibe si la columna es identity (autoincrementable)
WHEN b.is_identity = 0 THEN 'NO'
ELSE 'SI'
END [Es Autonumerico],
ep.value [Descripcion],-- recibe la descripcion de la
columna(si la hay)
f.ForeignKey, -- recibe si es llave foranea
f.ReferenceTableName, -- recibe la referencia de la tabla
f.ReferenceColumnName -- recibe la referencia de la columna
from sys.tables a
-//
Seleciona y muestra toda la informacion
\\
-inner join sys.columns b on a.object_id= b.object_id
inner join sys.systypes c on b.system_type_id= c.xtype
inner join sys.objects d on a.object_id= d.object_id
LEFT JOIN sys.extended_properties ep ON d.object_id =
ep.major_id AND b.column_Id = ep.minor_id
LEFT JOIN (SELECT
f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS
ColumnName,
OBJECT_NAME (f.referenced_object_id) AS
ReferenceTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS
ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON
f.OBJECT_ID = fc.constraint_object_id)
f ON f.TableName =a.name
AND f.ColumnName =b.name
WHERE a.name <> 'sysdiagrams'
ORDER BY a.name,b.column_Id

Ejemplo de procedimiento almacenado


//Creacin del procedimiento
create procedure sp_consulta @nombre nvarchar(20),@telefono int
as
begin
select * from clientes where nombre=@nombre and telefono=@telefono;
print Hecho correctamente;
end
//Ejecucin del procedimiento
exec sp_consulta eduardo,1234
Variables en Transact-SQL
declare @texto nvarchar(50)
set @texto=hola mundo
declare @numero int
set @numero=35
print T-SQL dice = +@texto+ y el numero: +convert(nvarchar(20),@numero)
Combinacin SQL-T-SQL
declare @textos nvarchar(20)
select @textos=nombre from cliente where edad=22
print @textos
Estructuras de control IF
//Ejemplo1
declare @num1 int
declare @num2 int
set @num1=10
set @num2=5
if @num1>=@num2 and @num1<=@num2
print Es verdad
else
print No es verdad
//Ejemplo 2
declare @num1 int
declare @num2 int
set @num1=10
set @num2=5
if @num1>=@num2 or @num1=@num2
print Es verdad
else
print No es verdad

Ciclo WHILE
declare @count int
set @count=0
while(@count<100)
begin
print Hola soy el nmero+ +convert(nvarchar(20),@count)
set @count=@count+1
end
Uso del CASE
declare @avion nvarchar(50)
declare @estado nvarchar(50)
declare @aviso nvarchar(50)
set @avion=condor
set @estado=cargando
set @aviso(case @estado
when volando then el avion: +@avion+ est volando
when cargando then el avion: +@avion+ est cargando
when detenido then el avion: +@avion+ est detenido
end)
print @aviso
TRY CATCH
begin try
declare @numero int
set @numero=veinte
print @numero
end try
begin catch
print error al leer el nmero
print error_message()
end catch

Cursores
//Ejemplo 1
declare nombre varchar(50)
declare apellido varchar(50)
declare telefono varchar(50)
declare cursorEjemplo Cursor scroll for select * from persona
open cursorEjemplo fetch next from cursoEjemplo into @nombre,@apellido,@telefono
while(@@FETCH_STATUS=0)
begin
print @nombre+ +@apellido+ +@telefono
fetch next from cursoEjemplo into @nombre,@apellido,@telefono
end
close cursoEjemplo
dellocate cursoEjemplo
//Ejemplo2
declare nombre varchar(50)
declare apellido varchar(50)
declare telefono varchar(50)
declare cursorEjemplo Cursor scroll for select * from persona
open cursorEjemplo fetch next from cursoEjemplo into @nombre,@apellido,@telefono
while(@@FETCH_STATUS=0)
begin
print @nombre+ +@apellido+ +@telefono
fetch next from cursoEjemplo into @nombre,@apellido,@telefono
end
close cursoEjemplo
dellocate cursoEjemplo

Potrebbero piacerti anche