CURSO SQL

COMANDOS DLL (create - alter - drop - truncate)
COMANDOS DML (select - insert - update - delete)
COMANDOS DCL (grant - revoke)
COMANDOS TCL (commit - rollback - savepoint  )

CLAUSULAS FROM (especifica la tabla)
CLAUSULAS WHERE (condicion de busqueda)
CLAUSULAS GROUP BY (agrupar registros seleccionados)
CLAUSULAS HAVING  (condiciion que deben cumplir los grupos)
CLAUSULAS ORDER BY (ordena segun criterio)
//se respeta este orden de uso

OPERADOR <
OPERADOR >
OPERADOR =
OPERADOR >=
OPERADOR <=
OPERADOR <>
OPERADOR BETWEEN (entre)
OPERADOR LIKE (comodin)
OPERADOR IN (en)

OPERADOR LOGICO AND
OPERADOR LOGICO OR
 OPERADOR LOGICO NOT

FUNCION AVG (promedio)
FUNCION COUNT (cuenta)
FUNCION SUM (suma)
FUNCION MAX (el maximo)
FUNCION MIN (el minimo)

FUNCIONES FRECUENTES
NOW() dia de hoy
DATEDIFF()diferecncia de dias meses años (D)(M)(AAAA)
date_format()
concat()

ROUND(calculo,cantidad de decimales)
round(calculo,2) --- 5.12

-------------------------------------------
comando + clausula + operadores + funciones
-------------------------------------------
select cirujano, count(cirugia) from cirugias group by cirujano 
// ejemplo de suma cirugias de cirujanos
--------------------------------------------
DISTINCT - DISTINCTROW

SELECT DISTINCT CIRUJANOS FROM CIRUGIAS
//musetra todas las cirujanos pero una sola vez

SELECT DISTINCTROW* FROM CIRUGIAS WHERE MEDICO ='PARDINI'
//musetra todas las cirugias de pardini que tenga todos los
campos DISTINTTOS y MUSTRA SOLO 1 FILA CUANDO HAY VARIAS FILAS
CON TODOS LOS CAMPOS REPETIDS (ayudante, anestesia etc etc)

---------------------------------------------
ALIAS
select cirujano, count(cirugia) AS cantidad_cirugias from
cirugias group by cirujano  order by cantidad_cirugias 
// ejemplo de suma cirugias de cirujanos y las ordena por el
alias
--------------------------------------------
UNION EXTERNA

UNION
une tablas iguales cantidad de campos, que cada campo sea igual
en letras o numeros o fechas, puede variar el nombre de la tabla
SELECT * FROM PRODUCVIEJOS WHERE SECCION='deportessalon' UNION
SELECT * FROM PRODUCNUEVOS WHERE SECCION='deportesairelibre'
//Toma nombre de campo la primer tabla
// no repite los archivos que se repiten en las tablas

UNION ALL
// REPITE los archivos que se repiten en las tablas

--------------------------------------------
UNION INTERNA -- relacionar tablas

//usamos 2 tablas de ejemplo CLIENTES y PEDIDOS
//en la base CLIENTES de datos mysql/estructura ir a +indice 
  creamos un indice tipo PRIMARY , colomna CODIGO CLIENTE

// en la tabla PEDIDOS de datos mysql/estructura ir a +indice 
creamos un indice tipo PRIMARY , colomna NUM PEDIDO

// en la tabla PEDIDOS de datos mysql/estructura ir a +indice 
creamos un segundo indice , tipo INDEXADO con CODIGO CLIENTE

//dentro de estructura de PEDIDOS vamos a  vista de relaciones 
CODIGO CLIENTE es el campo en comun, lo relacionamos con la tabla
CLIENTES utilizando la clave PRIMAY CODIGO CLIENTE

// ahi quedan relacionadas las tablas.
 

INNER JOIN  -- muestra los campos compartidos
SELECT CLIENTES.CODIGOCLIENTE, POBLACION, NUMERO,
PEDIDOS.CODIGOCLIENTE FROM CLIENTES INNER JOIN PEDIDOS ON
CLIENTES.CODIGOCLIENTE = PEDIDOS.CODIGOCLIENTE
//cuando el nombre de la tabla se repite, se pone delante del
campo el nombre de la tabla+.

//especificamos en nombre comun con ON tabla.campo =tabla.campo

//despues se le puede agregar un WHERE


LEFT JOIN -- muestra los campos de la izquierda +los compartidos
//igual que INNER JOIN sustitumos por LEFT JOIN

RIGHT JOIN -- muestra los campos de la derecha mas +compartidos
//igual que INNER JOIN sustitumos por RIGHT JOIN

//puede tener relaciones 1 a 1 - 1 a varios - varios a 1 - varios
a varios

-----------------------------
SUBCONSULTAS ESCALONADAS
//un SELECT dentro de otro SELECT

 SELECT nombrearticulo seccion FROM PRODUCTOS WHERE PRECIO >
(SELECT AVG(PRECIOS) FROM PRODUCOS)

SUBCONSULTAS DE LISTA

SELECT * FROM PRODUCTOS WHERE PRECIO > ALL (SELECT PRECIOS FROM
PRODUCOS WHERE seccion='CERAMICA')
// ALL todo - ANY cualquiera 


SUBCONSULTAS CORRELACIONADAS

SELECT * FROM PRODUCTOS WHERE CODIGOARTICULO IN (SELECT CODIGO
ARTICULO FROM PRODUCOS WHERE UNIDADES>20)
//IN  -  NOT IN
SUBCONSULTAS CORRELACIONADAS

------------------------
CONSULTADS DE ACCION

ACTUALIZACION  
UPDATE PRODUCTOS SET PRECIO=PRECIO + 10 where SECCION='DEPORTES'
//SUBO el precio 10 a todos las seccion deportes

CRACION 
CREATE TABLA CLIENTES_ROSARIO SELECT * FROM CLIENTES WHERE
POBLACION= 'ROSARIO' 
//crea una tabla nueva solo con los clientes que viveb en rosario

ELIMINACION
DELETE FROM CLIENTES WHERE POBLACION= 'MADRID'
//borra todas las filas con la poblacion de madrid


DELETE FROM PRODUCTOS WHERE SECCION = 'DEPORTIVO' AND PRECIO
BETWEEN 50 and 100
//elimina  todos las filas con eses caracter
//borra todas las filas con la poblacion de madrid

DATOS ANEXADOS

INSERT INTO CIRUGIASBD
SELECT * FROM CIRUGIASPCDELTA
// dos tablas iguales ejemplo CIRUGIASBD y CIRUGIASPCDELTA en 2
BD distintas, se puede anexar todo o campos especificos

INSERT INTO CIRUGIASBD (cirujanoQA, anestesia)
SELECT * FROM CIRUGIASPCDELTA (cirujanoHEMODINAMIA, anestesia)
// hay que definir de que campo a que campo y el resto de campos
queda vacio


--------------------------------------
REFERENCIAS CRUZDAS NO LAS ADMITE MYSQL
-------------------------------------
COMANDOS DDL
CREATE TABLA LEAMEDIA(ID INT AUTO_INCREMENT, NOMBRES VARCHAR(20),
APELLIDOS (40), PRIMARY KEY(ID))
//para que el id sea auto_increment se declara como tal y al
final la prymary key se declara el id
//tipos de dato  edad TYNYINT - fecha DATE, si o no BOOL
//buscar en google tipos datos mysql

ID INT UATO

DROP TABLE LEAMEDIA
//elimina la tabla

-------------------
AGREGAR ELIMINAR MODIFICAR CAMPOS VIDEO 17
------------------------------
INDICES (cuando son tablas muy grandes) 
-----------------------------
eliminacion INDICES video 19
-----------------------------
TRIGGERS (disparadores) video 20 21 22 
//desencadena una accion en la tabla con INSERT UPDATE DELETE
ej guardar en otra tabla registro de alguna accion

//copia de seguridad atnes de actualizar o borrar
--------------------------------------

VISTAS (como un acceso directo)

CREATE VIEW TABLA1 AS
SELECT NOMBREARTIC, SECCION, PRECIO FROM PRODUCTOS WHERE SECCION='DEPORTES'
// crea vistas de una o varias tablas para no sobrecargar la pagina con comandos de busqueda