Professional Documents
Culture Documents
Ya creada la base de datos (el ente de memoria) definimos la tabla o tablas que la conformarán (las estructuras / campos
que definirán cada registro)
Los datos son muy similares a los ya conocidos, int, float, cadenas que aquí se llaman varchar() etc. La Tabla puede o no
permitir valores NULL en sus campos, (no hay límites excepto un dato al menos por registro). Es decir, un registro puede
tener varios nulos si tú así lo decides, pero al menos, de tooooodos los campos, uno deberá estar registrado.
Así se declara una tabla y sus campos, así como la Y asi se borraría la tabla
permisibilidad del NULL
Ya creados el ente de la Base de Datos y las tablas que definen su estructura, ya está lista para recibir datos, para esto
usamos la inserción de datos (registro).
Si ya existe un registro y se desea editar algún o algunos registros, se busca mediante el dato delator (si existe), y si no
mediante condiciones y al encontrarlo se define la condición a alterar.
Eliminación de Registros (Delete, drop and Truncate)
Aclaración, aunque para ciertos casos delete y truncate parecen actuar igual, delete borrar el contenido pero no la historia,
por ejemplo de algún entity (autoincrementable), si estaba en 20 y borras todo, al meter un nuevo registro, comienza del
21, en cambio, truncate si borrar incluso la historia, osea que el entity comenzaría de nuevo en su origen (0, 1 o el que se
le haya definido como origen)
-Delete
-Drop
-Truncate
Consultas
Es el filtrado de la información mediante comandos que definen condiciones, es decir, no altera la tabla, simplemente
nos muestra lo que deseamos ver.
Consulta universal *
Este comando sirve cuando deseamos aplicar un filtro básico de condición, es decir , cuando quiere mostrar solo los
datos que cumplen con esa condición.
Condicionada, se entiende así, “quiero ver a,b ,c etc” de los registros “que cumplan con”
Operadores relacionales (Mayor, menor, igual, diferente) etc
Tabla original
Ejemplo 3
Ejemplo 1 Ejemplo 2
Este tipo de dato tiene ciertas limitantes y condiciones, es útil porque se autoasigna de con un origen, y un delta.
Se permite la alteración, y con esto la repetición de un dato que sea Identity con un pequeño truco (activando la
edición), de la siguiente manera
*En el caso de aplicar truncate, como dijimos que se resetea TODO, esto incluiría al Identity
Sirven para operar entre columnas y hacer una consulta “virtual”, de un campo que por si solo no existe
Tabla Original
Ejemplo 1, muestra la ganancia que obtengo de cada libro (muestra todos porque no se filtró la búsqueda)
Ejemplo 3
Funciones de Agregado
Tabla Original
-count
Y si contamos todos los registros existentes (contando toooodo se evita el problema de que salga incompleto por NULL)
-sum
*Nota, ahí aparece un 22 porque el profe agarró de la interfaz gráfica los 22 valores no nulos, peeeero, formalmente en
script debería decir (edad).
-avg
-min
-max
Concatenación y Alias
Como ya vimos, cuando aplicamos una consulta (generalmente aritmética) aparece la columna resultado sin etiqueta, es
decir, dice “Sin nombre de columna”, entonces, para una consulta de este tipo podemos utilizar “etiquetas” temporales
para saber que representa o que muestra.
Ejemplo de Concatenación:
Para remplazar una cadena (Origen, Cuales remplazará (aunque el parche sea más grande))
Tamaño de Cadena
Minusculizar
Mayusculizar Eliminar Espacios (por izquierda o derecha)
Order By
Como su nombre lo dice, ordena una consulta según lo deseemos, las sub-instrucciones básicos son ascendente y
descendente (asc y des). La default es asc
Tabla Original
Ordenada ascendentemente respecto al título, sin filtrado mostrando toda la tabla
*Si se aplica un doble orden, no tiene lógica porque el segundo rompería al primero, por lo tanto, SQL solo aplica al
primero e ignora al segundo
Operadores Lógicos
Uso de los operadores lógicos clásicos, not, and , or etc (que como ya sabemos son operaciones aritméticas abreviadas)
Ejemplo NOT Ejemplo AND
Otro ejemplillo
Is null / Between
Este comando solo sirve para evidenciar campos nulos si De igual manera podemos aplicar su inverso, para
es que existen, delatar los NO NULOS
Ahora, between, muestra intervalos, es un equivalente a usar mayor que y menor que pero de una forma abreviada
Ejemplo 1
Ejemplo 2
Ejemplo 3
Ejemplo 4
Como tip, sirve para buscar palabras de las cuales no sabemos precisamente como se escriben, o que podrían tener
alguna variación (búsqueda comodín)
Having
Es un filtro grupal (similar al where, pero where es individual), mejor explicado, es un filtro de segundo nivel, osea, después
de un filtro aplicado, puedes aplicar oooootro filtro con having. La condición es aplicarlo sobre un group, y la condición
para aplicar group a su vez es SI utiliza un operador de agrupamiento, es por eso que vemos que se ocupa, como sacado
de la manga, previo al group un avg (edad)
Se debe utilizar en campos sin operadores de agrupamiento (sum, average, etc)
Ejemplo aplicado
Compute
Begin / End
Sirve para hacer un filtrado de clausura, mostrando solo los n primeros registros o los n últimos
Respaldo Y Restauración
Seleccionar la base, tareas, generar Script, volver a seleccionar la base, seleccionar sus objetos, Incluir datos en el script
ON TRUE, y listo salvar y pone fecha, eso siempre es importante. Al reabrir el script, se puede omitir el login del usuario
en código y añadir create database “Titulo de la base original/ Respaldada”.
Join
Para hacer consulta en una base que contiene diferentes tablas ligadas [estructuras dentro de otras estructuras]
Inner Join
Sirve para filtrar el contenido y unir solo los campos relación o los que se deseen
Cabe destacar que solo muestra los registro apareados, es decir solo las x que tiene sus y completas, en caso contrario
las omite. En este caso son 4 vs 4, y los muestra completos.
Un ejemplo que no cumple sería aparear Tabla 1 con Tabla 2 (4 vs 3), y en consecuencia solo muestra 3 registros
apareados.
Cabe destacar que Join es un operador binario, es decir, la gramática de una sentencia para 3 tablas sería:
(A join B) join C
Este sirve para mostrar lados completos del join, aunque no hayan sido apareados. Si se elige Left, muestra completo el
izquierdo, si se elige right, muestra completo el derecho.
Al intentar aparear con una completa de 5 registro no nulos (en este caso la tabla datos), omite los nulos no
apareados
Por ejemplo, si forzamos a la tabla Alumnos full por izquierda
Partiendo de:
Pues es igual al group de antes, solo que previo hay que aparear las tablas
Cuando dos tablas se relacionan, es preferible insertar y eliminar de todas (las relacionadas) para que la información
siga siendo consistente.
Alter Table
Sirve para modificar la estructura de una tabla, es decir, editar, añadir o eliminar campo(s).
Y para eliminar:
Este comando permite hacer operaciones con campos, pero sin alterar la tabla, es decir son temporales.
+Nota, al crear campos calculados, los campos de los que proceden no pueden ser borrados, a menos que se eliminen
primero sus dependientes
Sub-Consultas
Significa consultas dentro de consultas, donde primero se aplica la interna, está arroja unos resultados que serán la
entrada para la segunda consulta (es decir, la consulta interna “pasa parámetros”)
Tabla original
Aquí se ejemplifica el insertado resultado de primero copiar de una tabla a una nueva:
Pues nunca…
Este comando sirve para delimitar conjuntos de sentencias y ejecutar varias de un jalón
Vistas
Son una “tabla parcial/ temporal” es decir provienen de una tabla original, pero limitando datos, ya sea por practicidad,
privacidad etc. Por ejemplo, es lo que el manager DB suele compartir con desarrolladores
Esta tabla satisface la necesidad de un desarrollador que desea conocer los nombres de los registrados, pero no necesita,
o no le queremos pasar los demás datos.
Cabe destacar que si una tabla original cambia (borra, agrega etc.) su(s) vistas hijas también lo hacen así, e igual, si una
vista es alterada, se altera en automático a la tabla Original.
Cifrado de Vistas
Evita que quien recibe la vista pueda ver el grupo (estructura origen de la vista/ o sea la estructura de la tabla madre)
Así lo haría
Y cuando un metiche quiera saber de dónde y qué tomé para realizar esa vista, obtendrá:
Eliminación de Vistas
Aquí el profe confunde respecto a las depedencias, pero bueno en el ejemplo usó drop (que es un reset) a una tabla
original y esto según lo que él había mostrado, aplica a la vez un drop (reset) a las vistas dependientes. Y después todo
sonso aplica un drop a la vista en particular, lo cual procede, pero aunque él no lo muestre, no tiene sentido puesto que
la vista se acababa de resetear.
Tabla original
Ahora editamos en la Vista, y luego demostraremos que
también cambió la tabla original Y aquí la comprobación de la tabla original
Creando una vista que se llama copy, que incluye puros hombres con WITH CHECK HABILITADO
Y en que afecta?, en que ese campo con WITH CHECK HABILITADO no puede ser editado por la vista. El profe la cagó,
pero un ejemplo mejor ejecutado sería este:
create view copy as
select * from usuarios
where tipo_usuario = 'registrado' with check option
Esto mandará un error diciendo que se especificó con el with check option que desde la vista no se modificara este campo.
(tipo de usuario)
Seguuuuuun… y otros dicen que no, que sirve como candado pero para datos posteriores, osea, que si la cualidad de
existencia de esa tabla fue “los menores de 24”, cualquier nuevo dato que esa tabla permita, solo serán menores de 24.
LO REVISARË
Bucles: Case
Y muestra:
Que muestra:
O en otro ejemplo:
Y obtenemos:
Variables
De la tabla total, mediante condicionamiento con variables, se hizo un filtrado de hombres mayores a 18 años
Otro ejemplo
Procedimientos: Declaración
Cabe destacar que el proceso no puede incluir un “crear proceso”, pero si llamar procesos dentro (ya hechos).
Procedimientos: de Input
Aun siendo input, se puede poner valores por defecto si el usuario no inserta valores, como en este ejemplo, el default
es 18 y F, si el usuario no hubiera puesto 21 y F, al ejecutar el procedure, se mostrarían mujeres mayores a 18
Procedimientos: de Output
Se ejemplifica un proceso que devuelve el total de personas que cumplen con las dos características input (Sexo y Mayor
a edad indicada).
Cabe destacar que el resultado del proceso (output) se igualó a una variable para poderlo mostrar, este paso se pudo
omitir colocando el SHOW dentro del proceso.
Procedimientos: Return
Un condicional de bandera que devuelve un valor puntual según las condicionantes, pudiendo aplicar este filtro a una
sentencia o instrucción posterior, aquí devuelve 1 solo si ambos campos insertados son diferentes de NULL
*Comandos básicos para analizar/ conocer / verificar una Base de Datos y sus componentes
Procedimientos: Anidación
Y el procedimiento 2 llama al 1
De uno se obtiene la suma, la 2 la copia y la muestra. Por eso no se observa mucho, si se le añadiera una operación en el
caso 2 sería más evidente la utilidad.
Triggers
Podríamos decir que son un procedimiento autoejecutable, detonado por alguna operación primaria de Base de Datos
(Eliminar, Editar o Ingresar Registros)
Su estructura básica:
Triggers: Insert
Ejemplo de un total de ventas, donde cada registro nuevo simboliza una nueva venta, por lo tanto, al hacer un nuevo
registro, activa trigger detonado por inserción que aumenta la cantidad de las ventas AUTOMÁTICAMENTE
Probando el trigger
Antes: Después
Trigger: Delete
Antes: Después:
Trigger: Activar o Desactivar
Sentencias para desactivar el trigger que en dado punto se creó, y no se quiere efectuar ahora mismo