0% encontró este documento útil (0 votos)
2 vistas12 páginas

Create Table "Rewards" ("Rewardid" Integer, "Employeeid" Integer, "Reward" Integer, "Month" Text, Primary Key ("Rewardid" Autoincrement) )

El documento proporciona una guía detallada sobre la creación y manipulación de bases de datos utilizando SQL, incluyendo la creación de tablas, inserción de datos, consultas, y operaciones de unión entre tablas. También aborda conceptos avanzados como normalización, cardinalidad, índices, vistas, bloqueos y transacciones. Además, se explican funciones agregadas y subconsultas para mejorar la gestión y análisis de datos.

Cargado por

aaronvh949
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas12 páginas

Create Table "Rewards" ("Rewardid" Integer, "Employeeid" Integer, "Reward" Integer, "Month" Text, Primary Key ("Rewardid" Autoincrement) )

El documento proporciona una guía detallada sobre la creación y manipulación de bases de datos utilizando SQL, incluyendo la creación de tablas, inserción de datos, consultas, y operaciones de unión entre tablas. También aborda conceptos avanzados como normalización, cardinalidad, índices, vistas, bloqueos y transacciones. Además, se explican funciones agregadas y subconsultas para mejorar la gestión y análisis de datos.

Cargado por

aaronvh949
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

CREATE TABLE "Rewards" (

"RewardID" INTEGER,

"EmployeeID" INTEGER,

"Reward" INTEGER,

"Month" TEXT,

PRIMARY KEY ("RewardID" AUTOINCREMENT)

Así se empieza creando una tabla, después se puede agregar el INSERT INTO para más registros
dependiendo del campo

INSERT INTO Rewards (EmployeeID,Reward,Month) VALUES

()

1=TRUE 0=FALSE

--= comentario que niega una linea de código, va al inicio

SELECT * FROM= para una vista de la tabla

*= todos los contenidos

;= para hacer una continuación para otro comando

,= para agregar más datos a un comando

Id=pk

INSERT INTO __ (_)= para ingresar un dato en la tabla

FK= id que une tablas, por ejemplo, si en la tabla A tengo id de 1 al 6, y en la tabla B tengo un
campo de id_tablaA, puedo poner en ese registro el 3 o 5 de los id de la tabla A
SELECT __ as __= para darle un apodo temporalmente al campo, por ejemplo de lastname a
apellido

SELECT INTEGRER*4 FROM _= multiplicar una columna entera de registros

INTEGRER= forma de dato numerico

SELECT Price,Price*2 AS Double_Price FROM Products= ejemplo de emplear esto para tener 2
columnas de un precio normal y el duplicado

SUM(INTEGRER) = suma total de una columna entera de dígitos

ORDER BY= para darle un filtro de orden a la tabla, ejemplo si hay un campo de precios, que vaya
del menor al mayor, eje: ORDER BY __ __

ASC Y DESC= de menor a mayor, y de mayor a menor

NULLS LAST/FIRST= que en ASC o DESC los Null vayan al final o al inicio

RANDOM()= funcion que ordena aleatoriamente, eje= ORDER BY RANDOM()

Para tener una segunda forma de ordenar se usaría de forma=

ORDER BY ___, ___


Siendo básicamente que si en el campo A no hay forma de ordenarlo, por ejemplo ahí con ASC, se
usaría los valores del campo B para darle un orden

DISTINCT= Forma de borrar registros repetidos

EJE: SELECT DISTINCT ProductName FROM Products

DELETE FROM ___= borrar toda una columna

WHERE= es un condicional

EJE: SELECT ___ FROM __ WHERE ___ = _

SELECT ProductName FROM Products WHERE ProductID = 10

SELECT * FROM Products WHERE ProductName = “_”

Igual que cualquier condición, se puede usar <, > e =

SELECT * FROM Products WHERE Price >= 40

Si aplicamos el delete con el where, sería tal que:

DELETE FROM Products WHERE ProductID = 80

UPDATE __ SET = para modificar un registro de la tabla

EJE: UPDATE medical_shifts SET schedule = "5:30pm" WHERE id_turn = 2

AND= para agregar doble condición, o mostrar rango de registros, siendo obligatorio que ambos
se cumplan

EJE: SELECT * FROM Customers WHERE CustomerID >= 25 AND CustomerID <=
OR= Para elegir dos registros diferentes, sin necesidad de una obligación

EJE: SELECT * FROM Employees WHERE FirstName = "Nancy" OR FirstName = "Steven"

Para unir ambos, hay que tener en cuenta como se prioriza el comando. EJE:

A: SELECT * FROM Products WHERE PRICE < 45 OR CategoryID = 3 AND SupplierID = 28

B: SELECT * FROM Products WHERE (PRICE < 45 OR CategoryID = 3) AND SupplierID = 28

En el ejemplo A, al no tener paréntesis, se considera de manera que las últimas dos condiciones
trabajen entre sí y después con la otra.

En el B, al usar paréntesis, hace que la condición OR se cumpla y después se englobe con la AND

NOT= Se usa para excluir algo, EJE:

SELECT * FROM Products WHERE (ProductID > 35 OR (SupplierID >= 15 AND SupplierID <= 25))
AND NOT Price = 12

(No habrá registros donde el precio sea 12)

SELECT * FROM Products WHERE NOT (SupplierID = 17 OR Price < 25) AND CategoryID = 4

(No habrá ID de vendedor iguales a 17 o precios menores a 25, con la obligación que su categoría
sea 4)

SELECT * FROM Customers WHERE NOT Country = "Mexico" AND NOT Country = "Germany"

(Acá nos muestra una lista sin la gente de Mexico y Alemania)

LIMIT _ = dar un límite de registros necesarios. EJE:

SELECT * FROM Customers WHERE CustomerID >= 50 AND NOT (Country = "Argentina" OR
Country = "Canada") LIMIT 5

(Acá combinando todo lo anterior, tenemos que en una lista de clientes a partir del ID 50, 5 serán
elegidos, mientras no sean de Argentina o Canada)
SELECT * FROM Products WHERE NOT CategoryID = 4 AND NOT SupplierID = 7 AND Price < 40

ORDER BY RANDOM() LIMIT 3

(En este caso, tenemos que el producto buscado sea en una lista de 3 en 3 de forma aleatoria,
donde no sea de categoría 4, ni de un vendedor de id 7, además de eso que valga menos de 40)

!= = para marcar un distinto, operador que compara, EJE:

SELECT * FROM Customers WHERE NOT Country != "USA"

(Aca solo mostraría clientes de USA)

BETWEEN: Hacer rango de A a B, como con el AND. EJE:

SELECT * FROM Products WHERE Price BETWEEN 20 AND 40

LIKE= “=” donde puede tener variaciones

SELECT * FROM Employees WHERE LastName like "%r" = Fuller

SELECT * FROM Employees WHERE LastName like "F%" = Fuller

SELECT * FROM Employees WHERE LastName like "%l%" = Fuller

(El “%” hace que ponga resultados donde termine con lo que sale posteriormente, eje: “%on” y
puede dar resultados donde haya “Aaron”, “Cabron”, todo lo que termine en on, lo mismo si va
después de x letra, daría de resultado todo lo que empiece con F, si está entre 2 dará todo
resultado que tengo la “l” en este caso puesta)

Esto se puede aplicar con guiones igual, ejemplo con el Fuller sería como “F____r”, donde se
buscarían resultados que que empiece con F y termine con r, donde en esos 4 espacios restantes
puede tener cualquier letra, digamos Follar, esto funciona en cualquier parte, “___ler”, “Fu__e_”,
etc.

Tanto “%” como “_” se pueden combinar

IS NULL/ IS NOT NULL= para mostrar o quitar los valores nulos


IN= Para agregar varios datos, así no hay que poner 30 OR o AND, sea con números o texto

Count()= sumar la cantidad de espacios en una columna. Count(FirstName)

Sum()= suma de todos los números de una columna

AVG()= el promedio de todos los números de una columna

ROUND()= redondear un valor o un total, ROUND(AVG()), en caso de querer ponerle más


decimales, se tendría que agregar una coma con tal número necesario ROUND(AVG(NUM),5)

MIN/MAX()= da el valor min o max, de una columna

*TODO ESTO va después del SELECT ___, tipo SELECT ROUND(PRICE) FROM PRODUCTS, además
al ser un espacio generado se le puede agregar un AS __, nombre que explique el campo

GROUP BY= para agrupar diferentes registros, ejemplo agrupar todos los precios dependiendo
de su proveedor, este va después del WHERE, en caso de combinarlos

SELECT SupplierID, ROUND(AVG(Price)) FROM Products GROUP BY SupplierID

Esto muestra que el precio promedio de los proveedores de ID 1 es 16

HAVING= Es como el Where pero que si funciona con GROUP BY, este SI va después del GROUP
BY, no se le pueden agregar conjuntos de agregación
SUBCONSULTAS

Primero a destacar es que como cuando se orderna en Select, este va después de una coma en
paréntesis:

SELECT col1,col2,(SELECT __)

No puede ir otra consulta que no sea SELECT adentro, además de que si se hace referencia a algo
de afuera, se debe de especificar bajo un punto:

SELECT ProductID,Quantity,(SELECT ProductName FROM Products WHERE


[Link] = ProductID) AS ProductName

FROM OrderDetails

Este sería un ejemplo de cómo ordenar una mini subconsulta, en caso de querer encoger algún
dato sería útil el AS, pero básicamente las subconsultas es pedir info de otra tabla, recordando
usar el ___.___ y ordenarlo de manera que sea leíble para el programa, el WHERE de ese
comando sirve para que usando el ID, el nombre de cada producto quede igual con su id
correspondiente

Para aplicar operaciones con estas subconsultas, se debe de poner el comando entero, no el
alias. Osea no sería Price*Total, si no “SUM(Quantity)*(SELECT Price FROM Products WHERE
[Link] = ProductID)”

Otro dato más para este comando, es que, en caso de condición, no es necesario tenerlo en la
tabla, ya que solo se tendría que poner la subconsulta después del WHERE.

Como se ve ahí, sería un ejemplo claro de cómo aplicar este concepto. Cual no solo aplica al
WHERE, sino al FROM, solo de qué manera más fácil.
Usando una segunda pestaña, podría simplemente ser un SELECT __ FROM (_), y poner en ese
espacio TODOS los datos que se trabajaron en la imagen de arriba, por ejemplo.

Este ejemplo sirve nada más para guiarme un poco, traducir con chatgpt si yo del futuro lo ve
confuso

JOINS
Conecta tablas en los campos que coincidan

EJE: SELECT * FROM Employees e, Orders o

WHERE [Link] = [Link]

SELECT * FROM Employees e

INNER JOIN/JOIN Orders o ON [Link] = [Link]

Este de manera menos implícita UN INNER JOIN, que no es necesario de agregar el INNER

pero sería igual a poner

SELECT * FROM Employees e

CROSS JOIN Orders o


Este sería el ejemplo grafica de lo que hace el CROSS JOIN, una multiplicación entre tablas

El inner daría solo la combinación de lo pedido de cada tabla, ejemplo el EmployeeID

El left join daría una toda la tabla a y la lo que coincida de la tabla b

El right join sería lo contrario a eso, solo daría la tabla B más lo que coincide de la A

El full join sería todo de la tabla A, B y lo que coincida

INNERJOIN LEFT JOIN RIGHT JOIN FULL JOIN


First Re Re First Re Re
Nam war Mont FirstN war Mont Nam war Mont FirstN war Mont
e d h ame d h e d h ame d h
Jane Nanc Octob Nanc Octob Octob
500 June 200 200 Nancy 200
t y er y er er
Augus Andr Decem Andr Decem Andre Decem
Anne 150 300 300 300
t ew ber ew ber w ber
Mich Septe Jane Jane
250 500 June 500 June Janet 500 June
ael mber t t
Nanc Octob Marg Nul Mich Septe Marga Nul
200 Null 250 Null
y er aret l ael mber ret l
Laur Novem Stev Nul Laur Novem Steve Nul
450 Null 450 Null
a ber en l a ber n l
Andr Decem Mich Septe Augus Micha Septe
300 250 Anne 150 250
ew ber ael mber t el mber
Robe Nul Nul Rober Nul
Null Null July Null
rt l l t l
Laur Novem Novem
450 Laura 450
a ber ber
Augus Augus
Anne 150 Anne 150
t t
Nul Nul
Adam Null Adam Null
l l
Nul
Null July
l
Este sería el ejemplo que más ejemplifica estos 4 tipos de JOIN

UNION= puede unir consultas, con el ejemplo de antes se podría unir un LEFT y RIGHT JOIN y
sería como un FULL JOIN, eliminando los registros repetidos

CARDINALIDAD

1:1= RELACIÓN ENTRE REGISTROS

1:n/n:1= RELACIÓN DE UN REGISTRO A VARIOS MÁS o viceversa

n:m= RELACIÓN DE MUCHOS REGISTROS A MUCHOS MÁS, donde normalmente


se usaría una tabla de por miedo para poder encriptar ordenadamente los datos, como con el
sistema de Northwind

NORMALIZACIÓN
1NF= cada atributo de una tabla tenga un valor único atómico, una columna con cada dato
propio

2NF= cada atributo que no sea una key, debe depender al 100 de una clave primaria, que sería
que si hay datos sobre un producto, tenga su tabla separada con su ProductID, así su valor no se
expande a varios ID

3NF= cada atributo debe depender de la clave primaria solamente, donde asegura que los
atributos se separen en tablas de manera que su ID quede sujeto solamente a lo necesario

4NF= evitar redundancias de datos, cada tabla debe tener una clave primaria relacionado a un
dato, en caso de tener 2 datos que se relacionan, pero uno se relaciona de manera más extensa,
se dividen en tablas propias que se relacionen para ordenarlo de manera más redundante

5NF= que no haya dependencias de unión entre atributos, separándolo en tablas

INDICES

Estos sirven para optimizar el proceso de carga de un comando, usando el “CREATE INDEX __ ON
___ (_)

Mientras que el UNIQUE INDEX, es para evitar espacios duplicados o nulos, siendo un tipo de ID
para evitar repeticiones del campo elegido

Los índices solo se deben de usar cuando sea REALMENTE necesario una optimización, se pueden
DROP INDEX nombre del índice

VISTAS

CREATE VIEW ___ AS y de ahí va toda el comando que se haya puesto, así se puede simplicar
una consulta y ponerla después como SELECT * FROM, para borrarle se usa DROP VIEW IF EXISTS
___

BLOQUEOS Y TRANSACCIONES
SHADE LOCK: Nadie puede escribir, pero si leer una base de datos, pero si aun uno esta
escribiendo, los demás pueden acceder igual

RESERVE LOCK: Parecido al SHADE, pero que no permite el acceso de nadie cuando se este
escribiendo

EXCLUSIVE LOCK: No permite a alguien ni leer ni escribir

Esto con las transacciones, sería la manera de adecuar el comando, donde COMMIT es aceptar el
cambio, y ROLLBACK el negarlo, la otra función de estos dos es cerrar la transacción, siendo en
caso de hacer un cambio con el UPDATE, se pueda revertir con ROLLBACK o confirmar en la base
de datos con COMMIT

PROCEDIMIENTOS ALMACENADOS

Func Defindas por el Usuario

También podría gustarte