Professional Documents
Culture Documents
Transact-SQL es la implementación SQL Server del estándar ANSI SQL-92 ISO. El ANSI SQL-
92 define elementos del lenguaje SQL que pueden ejecutarse desde cualquier aplicación
frontal.
Transact-SQL también contiene elementos del lenguaje que son únicos en él (extensiones
Transact-SQL).
Es recomendable que al escribir aplicaciones para las bases de datos se utilicen sentencias
ANSI SQL-92 para aumentar la compatibilidad de las bases de datos y de las aplicaciones.
Elementos de Transact-SQL
Al escribir y ejecutar sentencias Transact-SQL usará:
Sentencia Descripción
Ejemplo
Este ejemplo concede permiso para leer la tabla medico al rol public.
Dec lara cion es del Dat a Defin itio n Lan gua ge (DDL )
Las declaraciones de DDL permiten crear bases de datos, tablas, y tipos de
datos definidos por usuarios. También se usan para manejar los objetos de la
base de datos. Algunas declaraciones de DDL son:
CREATE nombre_objeto
ALTER nombre_objeto
DROP nombre_objeto
Ejemplo
USE HospitalNet
( idpaciente int,
app char(30),
Dec lara cion es del Dat a Manipu latio n Lan gua ge (DML)
La declaraciones DML trabajan con la data de la base de datos. Las
declaraciones
DML incluyen:
SELECT
INSERT
UPDATE
DELETE
Ejemplo
DECLARE @nombre_variable
tipo_dato ,... SET
@nombre_variable = expresión
Ejemplo
El ejemplo siguiente crea la variable local @appat, le asigna un valor, y
consulta a la base de datos para recuperar las filas que contienen el valor de
la variable.
Las variables globales son útiles para verificar la seguridad o condiciones del
entorno actual de SQL Server. Por ejemplo, si quiere verificar el número de
versión de SQL Server, puede realizar la consulta a la variable global
@@versión. La consulta devuelve el número de la versión del SQL Server que
está ejecutando.
Ejemplo
El ejemplo siguiente usa la variable global @@trancount para determinar
si existe alguna transacción abierta antes de ejecutar una consulta o
procedimiento almacenado. La variable @@trancount retorna un numero
que representa el número de transacciones que se tiene abiertas
actualmente.
Operadores
Los operadores son símbolos que indican la ejecución de operaciones
matemáticas, encadenamientos de cadenas, y comparaciones entre las
columnas, constantes y variables.
Tipos de operado re s
SQL Server soporta cuatro tipos de operadores: aritméticos, de
comparación, de cadenas, y lógicos.
Operadores aritméticos
Los operadores aritméticos realizan cálculos con las columnas numéricas o las
constantes.Transact-SQL soporta los operadores multiplicativos: producto (*),
división (/), y módulo (%) - el resto después de la división entera - y los
operadores aditivos:
suma (+), y substracción (-).
Operadores de comparación
Estos operadores comparan dos expresiones. Las comparaciones pueden
realizarse entre las variables, columnas, y expresiones de tipo similar. Los
operadores de comparación incluyen a: menor que (<), mayor que (>), igual
a (=), y todas las combinaciones posibles.
O p e r a d o r d e c o n c a t e n a c i ó n d e c a de n a s
El operador de concatenación de cadenas (+) encadena los valores de tipo
string.
Por defecto, una cadena vacía (") se interpreta como un espacio en blanco.
Por ejemplo, 'abc' + '' + 'def' es almacenada como 'abc def'. La cadena
vacía nunca se evalúa como un valor nulo.
La sentencia SELECT
Puede crear consultas para recuperar información de su base de datos
utilizando el Analizador de Consultas (Query Analyzer) de SQL Server
desde o fuera del Administrador Corporativo (Enterprise Manager) de
SQL Server, así como utilitarios de línea de comandos como osql. Hay otros
utilitarios que también pueden hacerlo, entre los que se incluyen MSQuery y
English Query. También dispone de herramientas y utilitarios de otros
SELECT * | lista_columnas
FROM tabla
[ WHERE condición_filas ]
Operadores de condición_fila s
En la expresión lógica que especifica la condición_filas se pueden utilizar,
además de los operadores relacionales o de comparación, los siguientes
operadores SQL:
--4. Mostrar los mismo pero aquellos cuyo salario anual sobre pasa los 20000 mas
comisiones
select app, salario *14 as "SALARIOANUAL" from empleados
where salario*14 + comision*14 > 20000
--5. Mostrar todos los datos de empleados ordenados por apellidos paternos
select * from empleados order by app
--8. Mostar los empleados cuyo sueldo estee entre 1200 - 1800 de los empleados
select * from empleados
where salario between 1200 and 1800
--
select * from empleados
where direccion in('Chimbote')
--
select * from empleados
where direccion not in('Chimbote')
--
select * from empleados
where direccion='Chimbote'
--
select * from empleados
where direccion <>'Chimbote'
--
select * from empleados
where app like '%a'
--
select * from empleados
where app like 'a%'
OPERADOR LIKE
EJEMPLO: LIKE ‘%een%’ Muestra todos los caracteres que contengan een en ese orden
EJEMPLO: LIKE ‘_en’ Muestra todos los caracteres que contenga tres letras y acaben en en
EJEMPLO: LIKE ‘[CK% ]’ Muestra todos los caracteres que empiecen por C o K
EJEMPLO: LIKE ‘[S-V]ing’ Nombre de 4 letras cuya primera letra estuviera entre S o V y
acabe en ing
EJEMPLO: LIKE ‘M[^c]%’ Todos los que empiecen por M y segunda letra no sea una c. No
hay límite de caracteres.
Funciones
Transact-SQL proporciona muchas funciones que devuelven información de las
bases de datos o del sistema. Una función recibe parámetros como valores de
entrada y retorna un valor que puede utilizarse en las expresiones.
FORMATO TIEMPO
Otros Ejemplos
FUNCIONES AGREGADAS
--esta lleno el casillero nombre por lo tanto mostara todos los registros
select count(nombres) from pacientes
--vemos que hay un paciente cuyo apm no esta lleno por lo tanto mostrara 3
registros
Operadores de SQL:
Lógicos:
AND, OR , NOT
De Comparación:
< Menor
> Mayor
<> Diferente
--La suma total de gasto en planilla al año supuniendo que ganan 14 sueldos al año
select sum(salario) * 14 as GASTOMENSUAL from empleados
La cláusula GROUP BY
La cláusula GROUP BY se utiliza para agrupar las filas en base a determinado
criterio, y luego ejecutar una operación que resume un atributo para cada uno
de los grupos asi formados. Por ejemplo, puede utilizar GROUP BY para
agrupar todas las facturas por cliente, y luego calcular el monto total facturado
de cada cliente.
SQL Server retorna solo una fila para cada grupo que especifica; no devuelve
la información de detalle.
Si incluye una cláusula WHERE, SQL Server agrupa solo las filas que satisfacen la
condición de la cláusula WHERE.
Use la palabra clave ALL con la cláusula GROUP BY para desplegar todas las filas
con valores nulos en las columnas, sin tener en cuenta si las filas satisfacen la
cláusula WHERE.
Puede tener hasta 128 condiciones en una cláusula HAVING. Cuando define
condiciones múltiples, debe combinarlas con los operadores lógicos (AND, OR, o
NOT).
Consultas complejas
SELECT lista_columnas
FROM tabla1
tipo_join JOIN tabla2 ON condición_del_join
condición_del_join es una expresión que indica en base a qué columnas de cada una
de las tablas se establece la relación entre ellas.
Inner join
Un inner join es la consulta correlacionada que combina todas las filas que están
relacionadas en ambas tablas.
RESULTADO (
7 filas )
id_emp paterno jefe
101 Quispe Mora
Outer join
Un outer join es la consulta correlacionada que entrega todas las filas que están
relacionadas, y además:
RESULTADO (
8 filas )
id_emp paterno jefe
101 Quispe Mora
102 Soria López
103 Osorio Mora
104 Aliaga Castro
105 Vera Mora
107 Márquez López
108 Cáceres Mora
106 Barrios NULL
RESULTADO (
9 filas )
id_emp paterno jefe
101 Quispe Mora
102 Soria López
103 Osorio Mora
104 Aliaga Castro
105 Vera Mora
107 Márquez López
108 Cáceres Mora
NULL NULL Alva
NULL NULL Ludeña
RESULTADO (
10 filas )
id_emp paterno jefe
101 Quispe Mora
102 Soria López
103 Osorio Mora
104 Aliaga Castro
105 Vera Mora
107 Márquez López
108 Cáceres Mora
106 Barrios NULL
NULL NULL Alva
NULL NULL Ludeña
No es necesario que exista una columna común para ejecutar cross join.
RESULTADO (
40 filas )
id_emp paterno jefe
101 Quispe López
101 Quispe Mora
101 Quispe Castro
101 Quispe Alva
101 Quispe Ludeña
102 Soria López
102 Soria Mora
102 Soria Castro
102 Soria Alva
102 Soria Ludeña
103 Osorio López
... ... ...
... ... ...
... ... ...
107 Márquez Ludeña
108 Cáceres López
108 Cáceres Mora
108 Cáceres Castro
108 Cáceres Alva
108 Cáceres Ludeña
CLIENTES PRODUCTOS
id_cliente nombre id_producto descripcion
1 Juan Mora 1001 lápices color
2 Comercial Arce 1002 cuadernos
3 Rosa Chú 1003 lapiceros
4 Las Alondras S.A. 1004 papel bond
1005 borradores
V
E
N
T
A
S
id_cliente id_producto cantidad
2 1002 36
2 1004 250
4 1001 100
1 1001 200
1 1003 100
1 1005 50
RESULTADO
Dos botones
ListView
Configuramos las propiedades de los listview: En la propiedad Columns le damos clic donde
aparecen los tres puntos y aparece la siguiente imagen
Y donde dice Add le damos clic tres veces “agregando tres títulos” y modificamos sus
propiedades Text “para asignar títulos” como se representa en la imagen
Ahora modificamos la propiedad del control listview donde dice view y modificamos y le
ponemos en details. Como muestra la figura.
Nota este control listview no puede cargar una imagen ya que es codigo binario
Imports System.Data.SqlClient
Try
cnn.Open()
comando.CommandType = CommandType.Text
comando.Connection = cnn
Me.ListView1.Items.Clear()
lector = comando.ExecuteReader()
While lector.Read
fila.Text = CStr(lector.Item(0))
fila.SubItems.Add(CStr(lector.Item("nombrecategoria")))
fila.SubItems.Add(CStr(lector.Item(2)))
Me.ListView1.Items.Add(fila)
End While
End If
lector.Close()
cnn.Close()
cnn.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Me.Close()
End Sub
End Class
Imports System.Data.SqlClient
Private ds As DataSet
Try
'crear adaptador
ds = New DataSet()
adaptador.Fill(ds, "clientes")
'asignar ds al datagrid
Me.dgrddatos.DataSource = ds
Me.dgrddatos.DataMember = "clientes"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Me.Close()
End Sub
End Class
Me.grddatos.CaptionBackColor = Color.Red
Me.grddatos.CaptionForeColor = Color.White
adaptadorclientes.Fill(ds, "clientes")
adaptadorpedidos.Fill(ds, "pedidos")
ds.Relations.Add("clientes_pedidos", ds.Tables("clientes").Columns("idcliente"),
ds.Tables("pedidos").Columns("idcliente"))
Me.grddatos.DataSource = ds
Me.grddatos.DataMember = "clientes"
End Sub
Me.Close()
End Sub
End Class