Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comandos
Clusulas
Tabla3. Clusulas
Clusula Descripcin
AS Indica un nombre de campo alternativo para el nombre del campo de
la tabla o para el nombre del valor del campo resultante de la llamada
a una funcin agregada.
CONSTRAINT Especifica un ndice, y se utiliza para crear o eliminar ndices.
FROM Especifica la tabla de la que se van a seleccionar los registros.
GROUP BY Separa los registros seleccionados en grupos especficos.
HAVING Expresa la condicin que debe satisfacer cada grupo.
ORDER BY Ordena los registros seleccionados de acuerdo con un orden
especificado.
PROCEDURE Define un nombre y parmetros opcionales de una consulta.
WHERE Especifica las condiciones que deben cumplir los registros que se van
a seleccionar.
Operadores
Operadores lgicos
Ejemplos
Ejemplos
Ejemplos
Contenido
Los tipos de datos del SQL del motor de base de datos Microsoft
Jet se compone de una serie de datos primarios definidos por el
propio motor, y de varios tipos de datos sinnimos reconocidos
por aqullos.
La siguente tabla enumera los tipos de datos del SQL del motor
Microsoft Jet, sus sinnimos y los tipos de datos equivalentes en
Microsoft SQL Server y en el estndar SQL de ANSI:
Datos carcter
Datos numricos
Datos enteros
' Leemos el valor aadido al campo IdCliente, por lo que ser necesario
' abrir un objeto ADODB.Recordset
'
Dim oRst As New ADODB.Recordset
lngSiguienteCliente = oRst.Fields!Proximo_Cliente
0 e p 28
Datos aproximados
Los tipos de datos numricos vistos con anterioridad
representan los datos de una manera precisa, lo que en gran
medida evita los errores de redondeo. Aunque la precisin de los
tipos de datos aproximados es muy cercana al valor exacto,
dicha disminucin se realiza a costa de ofrecer un mayor rango
de intervalo de datos posible que los ofrecidos por los tipos de
datos enteros y decimales. La siguiente tabla lista los tipos de
datos numricos aproximados, cuyos nombres pueden ser todos
especificados para ser ejecutados tanto por la biblioteca de
ADO como por la de DAO, as como desde la interfaz de usuario
de Microsoft Access.
Datos monetarios
Datos binarios
Campo1;Campo2
42 00 69 00 6E 00 61 00 72 00 69 00 6F 00 31 00 00 00 00 00 ;Primer registro
42 00 69 00 6E 00 61 00 72 00 69 00 6F 00 32 00 00 00 00 00 ;Segundo
registro
Campo1;Campo2
42 00 69 00 6E 00 61 00 72 00 69 00 6F 00 31 00 ;Primer registro
42 00 69 00 6E 00 61 00 72 00 69 00 6F 00 32 00 ;Segundo registro
Datos BOOLEAN
Datos GUID
Randomize Timer
For x = 1 To iLongitud
strGUID = strGUID & Mid(strValidar, Int(Rnd(1) * Len(strValidar)) + 1, 1)
Next
GenerarGUID = strGUID
End Function
Introduccin
Crear una tabla
Modificar la estructura de una tabla
Aadir nuevos campos a la tabla
Modificar el tipo de dato de un campo
Eliminar un campo de la tabla
Copiar una tabla
Eliminar una tabla
Introduccin
Sintaxis
Parmetro Descripcin
tabla El nombre de la tabla que deseamos crear.
campo1, campo2 El nombre de los campos que se van a crear. Al menos debe de cr
tipo El tipo de dato que tendr el campo de la nueva tabla.
tamao El tamao del campo en caracteres slo para los campos de tipo t
WITH COMPRESSION | WITH COMP Atributo opcional que implica comprimir a caracteres de un solo
MEMO, as como por sus sinnimos. Se puede utilizar cualquiera
SLO ADO el supuesto de que se especifique este atributo.
NOT NULL | NULL De utilizarse significa que el campo es requerido, por lo que se ex
defecto es NULL.
DEFAULT Establece el valor por defecto que tendr el campo para los nuevo
SLO ADO la declaracin del campo. El valor por defecto indicado deber co
ndice1, ndice2 Una clusula CONSTRAINT que define un ndice de un solo cam
ndice_mltiples_campos Una clusula CONSTRAINT que define un ndice de mltiples c
Comentarios
Ejemplos
[Clientes.txt]
ColNameHeader=True
CharacterSet=ANSI
Format=FixedLength
TextDelimiter=none
Col1=IdCliente Integer Width 8
Col2=Nombre Char Width 51
Col3=CIF Char Width 10
Col4=Domicilio Char Width 31
Col5=CPostal Integer Width 6
Col6=Localidad Char Width 31
Col7="Fecha Alta" Date Width 11
Col8=Notas LongChar Width 100
Try
' Configuramos y abrimos la conexin.
'
Using cnn As New OleDbConnection( _
"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Libro1.xls;" & _
"Extended Properties='Excel 8.0;HDR=Yes;'")
cnn.Open()
cmd.ExecuteNonQuery()
cmd.CommandText = _
"INSERT INTO Clientes VALUES (" & _
"2,'Flix Cuesta Rodrguez','25940103F'," & _
"'C/. Blas Infante, 35 - 7 A',23008,'JAN','21/08/1961','Esto es una
nota')"
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Sintaxis
SELECT campo1[, campo2[, ...]] INTO nuevaTabla FROM origen [WHERE False]
IN ''[MS Access;DATABASE=Ruta
IN ''[MS Access;DATABASE=C:\Mis
base datos
documentos\Bd1.md;PWD=contrasea]
externa;PWD=contrasea]
Parmetro Descripcin
campo1, campo2 El nombre de los campos que se van a crear. Al menos debe
de crearse un campo.
nuevaTabla El nombre de la tabla que deseamos crear.
origen El nombre de la tabla de origen.
baseDatosExterna Ruta completa de la base de datos externa. Si la base de
datos no es Microsoft Access, deber de incluir igualmente
el tipo de base ISAM y los parmetros necesarios para
conectarse a la misma.
WHERE False Si se indica la clusula opcional WHERE False, slo se
copiar la estructura de la tabla indicada en el origen.
Tambin se puede especificar WHERE 1=0.
Comentarios
MsgBox rst.Fields!TotalRegistros.Value
MsgBox lngRegAfectados
With cmd
.Connection = cnn
.CommandText = "SELECT * INTO Tabla2 FROM Tabla1"
Ejemplos
Try
' Configuramos y abrimos la conexin con
base de la
' de datos de
Access.
'
Using cnn As New OleDbConnection( _
"Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Mis documentos\Database1.accdb")
cnn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message, _
"Error al crear el archivo de texto", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End Sub
Sintaxis
Parmetro Descripcin
nombre tabla El nombre de la tabla que se desea eliminar.
Comentarios
Ejemplos
End With
Try
' Configuramos y abrimos laconexin.
'
Using cnn As New OleDbConnection( _
"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Libro1.xls;" & _
"Extended Properties='Excel 8.0;HDR=Yes;'")
cnn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Introduccin
La clusula CONSTRAINT y la integridad referencial
Tabla principal y tabla externa
La integridad referencial
Cmo crear un ndice
Con la instruccin CREATE TABLE
Con la instruccin ALTER TABLE
Con la instruccin CREATE ... INDEX
Cmo eliminar un ndice
Con la instruccin ALTER TABLE
Con la instruccin DROP INDEX
Introduccin
CONSTRAINT nombre
{PRIMARY KEY (principal1[, principaI2[, ...]]) |
UNIQUE (nico1[, nico2[, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[,ref2[, ...]])
REFERENCES tablaExterna [(campoExterno1 [,campoExterno2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}
Argumento Descripcin
nombre El nombre del ndice o restriccin que se desea crear.
principal1, principal2 El nombre del campo o de los campos que han sido designados para formar l
nico1, nico2 El nombre del campo o de los campos que han sido designados para formar u
ref1, ref2 El nombre de un campo o de los campos de la clave externa a los que se hace
tablaExterna El nombre de la tabla externa que contiene el campo o los campos especifica
campoExterno1, campoExterno El nombre del campo o campos de tablaExterna especificados por ref1, ref2.
2 externa.
CLIENTES FACTURAS
(Tabla (Tabla
principal) externa)
IdCliente IdFactura
Clave principal de la tabla, IdCliente Clave externa de la tabla,
denominada PrimaryKey denominada NumCliente
La integridad referencial
Try
' Configuramos y abrimos la conexin.
'
Using cnn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb")
cnn.Open()
End Try
End Sub
Contenido
Introduccin
La instruccin SELECT
Consultas bsicas
Especificar el origen de los datos
Recuperar informacin de una base de datos
externa
Especificar un alias para el nombre de los
campos
Filtrado y ordenacin de los resuitados
Omitir registros duplicados: predicados
DISTINCT y DISTINCTROW
Seleccionar un nmero de registros: precidado
TOP
Criterios de seleccin
La clusula WHERE
El operador IN
El operador BETWEEN
El operador LIKE
El operador IS NULL
Agrupamiento de registros
Las funciones agregadas COUNT, MAX, MIN
y SUM
La clusula GROUP BY
La clusula HAVING
Ordenar los registros devueltos
La instruccin WITH OWNERACCESS OPTION
Introduccin
La instruccin SELECT
SELECT lista_campos
FROM nombres_tablas IN nombre_base_datos_externa
WHERE condiciones_bsqueda
GROUP BY lista_campos
HAVING grupo_criterios
ORDER BY lista_campos
WITH OWNERACCESS OPTION
Consultas bsicas
Criterios de seleccin
#3/19/04# #3-19-04#
#19/3/2004# * #19-3-2004#
#3/19/2004# #3-19-2004#
#2004/3/19# #2004-3-19#
#03/19/04# #03-19-04#
#19/03/2004# * #19-03-2004#
#03/19/2004# #03-19-2004#
#2004/03/19# #2004-03-19#
La clusula WHERE
<Objeto> IS <Objeto>
SELECT * FROM Empleados WHERE (Edad > 19 AND Edad < 31) AND Sueldo >
1000.00
SELECT * FROM Empleados WHERE (Sueldo > 999.99 AND Sueldo < 2000.01)
OR (Ciudad = 'Madrid' AND Estado = 'Casado')
El operador IN
El operador BETWEEN
Si deseamos especificar un intervalo concreto de valores de un
campo, en lugar de utilizar operadores lgicos podemos emplear
el operador BETWEEN, cuya sintaxis es la siguiente:
SELECT * FROM Empleados WHERE (Edad BETWEEN 20 AND 30) AND Sueldo >
1000.00
El operador LIKE
Caracteres comodn
Caracteres coincidentes SQL de
SQL de ANSI
Microsoft Jet
_ (signo de
Cualquier carcter ?
subrayado)
Cero o ms caracteres * %
Cualquier nmero #
Cualquier carcter que est
[listaCaracteres]
en listaCaracteres
Cualquier carcter que no est
[!listaCaracteres]
en listaCaracteres
Modelo
Tipo de No
SQL SQL Coincidencia
coincidencia coincide
ANSI Jet
'aa', 'aCDa',
Varios caracteres 'a%a' 'a*a' 'ab', 'CDa'
'Abbbba'
Un carcter
'a[&]a' 'a&a' 'aaa'
especial
'ama',
Varios caracteres 'ma%' 'ma*' 'malo', 'maana'
'mmalo'
Un slo carcter 'a_a' 'a?a' 'aaa', 'a3a', 'aBa' 'aBBBa'
Un slo dgito
'a[!a-z]a' 'a#a' 'a0a', 'a1a', 'a2a' 'aaa', 'a10a'
(*)
Rango de
'[a-z]' 'b', 'j', 'k', 'z' '3', '$', 'ab'
caracteres
Fuera de un 'a', 'b', 'z',
'[!a-z]' '9', '&', '%'
rango '9a'
Distinto de un
'[!0-9]' 'A', 'a', '&', '%' '0', '1', '9'
dgito
a[!b-m] 'a[!b-
Combinada (*) 'An9', 'az0', 'a99' 'abc', 'aj0'
[!a-z]' m]#'
El operador IS NULL
Agrupamiento de registros
Puede que nos interese agrupar ciertos registros que presenten
un valor coincidente en el mismo campo de la tabla definida en
una clusula FROM, con el nico objetivo de presentar un
informe que resuma los datos correspondientes a los registros
que cumplan con la condicin indicada en la consulta de
seleccin. Para ello, necesariamente tendremos que utilizar una
funcin agregada de las permitidas por el lenguaje SQL, a fin de
recuperar en un nico valor el resultado devuelto por la funcin
agregada especificada.
COUNT
COUNT (expresin)
MAX y MIN
Calculan el mximo y mnimo respectivamente de un conjunto
de valores contenidos en un campo especfico de una consulta
de seleccin. Su sintaxis es:
SUM
Devuelve la suma del conjunto de valores contenidos en un
campo especfico de una consulta de seleccin. Su sintaxis es:
SUM (expresin)
La clusula GROUP BY
La clusula HAVING
Nombre de la consulta:
Consulta_Empleados
Sintaxis:
SELECT * FROM Empleados WITH OWNERACCESS OPTION
Contenido
Introduccin
Consulta de datos anexados: la instruccin INSERT
INTO
Consulta de insercin de un nico registro
Consulta de insercin de mltiples registros
Consulta de actualizacin: la instruccin UPDATE
Consulta de eliminacin: la instruccin DELETE
Introduccin
En el captulo anterior se estudi la consulta de seleccin, la
cual interrogaba a la base de datos para recuperar un conjunto
de registros de una tabla. Pero hay otra serie de sentencias SQL
que no devuelven un valor como resultado de la consulta
ejecutada, permitindonos introducir, modificar o eliminar
registros de una tabla. Bajo el nombre genrico de consultas de
accin se engloban aquellas sentencias SQL que nos permiten
actualizar los datos de una tabla.
INSERT INTO Empleados VALUES (238, 'Juan Aguilar Ruiz', 23002, 'C:\. Al
Andalus, 23', 'Jan', #04/08/2004#)
INSERT INTO Empleados VALUES (238, 'Juan Aguijar Ruiz', NULL, NULL, NULL,
#04/08/2004#)
Para ello necesitar utilizar una clusula SELECT ... FROM con la
que especificar los campos de la tabla o de la consulta
almacenada que se agregarn a la tabla de destino indicada.
DELETE Facturas.*
FROM Clientes INNER JOIN Facturas ON Clientes.IdCliente = Facturas.IdCliente
WHERE Clientes.IdCliente=258