Publicidad
Publicidad

Más contenido relacionado

Publicidad

Más de Juan Gabriel Gomila Salas(20)

Publicidad

SQL - Structured Query Language

  1. SQL Structured Query Language Juan Gabriel Gomila Salas 1
  2. Introducción al SQL
  3. Introducción al SQL Lenguaje estándar ANSI/ISO de definición, manipulación y control de base de datos relacionales. Es un lenguaje declarativo, solo se tiene que decir qué es lo que se quiere hacer (lenguaje procedimental: hay que especificar como se tiene que hacer cada cosa sobre la base de datos). Historia: Años 60: IBM crea SEQUEL (Structured English Query Language), años después llamado SQL. Año 1986: ANSI y ISO lo adoptan como lenguaje estándar.
  4. Tipos de sentencias LDD (definición) Crear bases de datos, tablas, dominios, aserciones y vistas. LMD (manipulación) Introducir, modificar, borrar valores de la BD. LC (consulta) Consultas a la BD.
  5. Lenguaje de Definición de Datos
  6. Crear una base de datos relacional CREATE {SCHEMA | DATABASE} [nombre_bd] SHOW CREATE DATABASE nombre_bd
  7. Eliminar una base de datos relacional DROP DATABASE [nombre_bd]
  8. Crear una tabla CREATE TABLE nombre_tabla ( nombre_columna tipo restricciones_columna [, nombre_columna tipo restricciones_columna..] [, restricciones_tabla]) restricciones_columna := • PRIMARY KEY • UNIQUE • DEFAULT restricciones_tabla := • INDEX (nombre_columna) • FOREIGN KEY (nombre_columna | REFERENCES tabla_ref (clave_ref)) • PRIMARY KEY (columna [, columna…]) -> para claves compuestas
  9. Tipos de datos • INT / INT(n) [ZEROFILL] • INTEGER / INTEGER(n) [ZEROFILL] • DATE -> formato yyyy/mm/dd • TIME -> formato hh:mm • TIMESTAMP -> hora y fecha • DATETIME • YEAR • CHAR/CHAR(n)
  10. Restricciones sobre las columnas • DEFAULT • AUTO_INCREMENT • NULL • NOT NULL
  11. Ejemplo de creación de tablas CREATE TABLE Empresa( NombreEmpresa CHAR(30) NOT NULL, NIF CHAR(9) PRIMARY KEY, Calle CHAR(30), Numero INTEGER, TELF CHAR(9) )
  12. Ejemplo de creación de tablas CREATE TABLE Empresa( NombreEmpresa CHAR(30) NOT NULL, NIF CHAR(9), Calle CHAR(30), Numero INTEGER, TELF CHAR(9), PRIMARY KEY (NIF) )
  13. Eliminar tablas DROP TABLE nombre_tabla
  14. Alterar tabla ALTER TABLE nombre tabla ADD COLUMN nombre_columna tipo restricciones ADD INDEX (nombre_columna,…) ADD PRIMARY KEY (nombre_columna) ADD FOREIGN KEY (nombre_columna) REFERENCES tabla(nombre_clave) ALTER COLUMN nombre_columna SET DEFAULT valor_por_defecti ALTER COLUMN nombre_columna DROP DEFAULT DROP COLUMN nombre_columna CHANGE nombre_columna_antigua nombre_columna_nueva
  15. Eliminar tablas RENAME TABLE nombre_antiguo TO nombre_nuevo
  16. Cómo se ha creado la tabla SHOW CREATE TABLE nombre_tabla
  17. Lenguaje de Manipulación de Datos
  18. Operaciones básicas de manipulación Alta: INSERT Baja: DELETE Modificación: UPDATE Consulta: SELECT
  19. Insertar filas INSERT [INTO] nombre_tabla [(col1, col2,…, coln)] VALUES (v11,v12,…v1n), (v21,v22,…, v2n), … v1,…,vn deben respetar el orden de definición de la tabla o el orden especificado en la lista de columnas (col 1, col2,…)
  20. Insertar filas INSERT [INTO] nombre_tabla SET col1 = v1, col2 = v2, … v1,…,vn deben respetar el orden de definición de la tabla o el orden especificado en la lista de columnas (col 1, col2,…)
  21. Ejemplos INSERT persona VALUES (“Fernando”, “Alonso”), (“Iker”, “Casillas”) INSERT persona (nombre, apellidos) VALUES (“Fernando”, “Alonso”), (“Iker”, “Casillas”) INSERT persona SET nombre = “Fernando”, apellido = “Alonso”
  22. Borrado de filas DELETE FROM nom_tabla[WHERE] condiciones; Si no especificamos la cláusula WHERE, nos va a borrar todas las filas de la tabla
  23. Borrado de filas DELETE FROM Proyecto WHERE fechaInicio < = “2015-12-01”
  24. Modificación de filas UPDATE nombre_tabla SET columna = {expresión | DEFAULT | NULL} [, columna = {expresión | DEFAULT | NULL}…] WHERE condiciones; En las condiciones se pueden utilizar los operadores lógicos AND, OR y los de comparación <, >, …
  25. Modificación de filas UPDATE Empresa SET Telefono = “971123456”, Calle = NULL WHERE NombreEmpresa = “Carrefour”
  26. Vistas CREATE VIEW nombre_vista AS SELECT … ALTER VIEW nombre_vista AS SELECT … DROP VIEW nombre_vista
  27. Vistas CREATE VIEW Ingleses AS SELECT * FROM persona where pais = “Inglaterra”
  28. Eventos CREATE EVENT nombre_evento ON SCHEDULE - AT CURRENT_TIMESTAMP + INTERVAL n {HOUR|MINUTE…} - EVERY n {HOUR | MINUTE | …} DO accion Puede ser necesario hacer SET GLOBAL event_scheduler=ON Con SHOW VARIABLES se pueden ver las variables de sistema
  29. Eventos DROP EVENT nombre_evento ALTER EVENT nombre_evento [especificar cambio a SCHEDULE o a DO]
  30. Eventos CREATE EVENT mi_evento ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE DO UPDATE edad SET edad = edad + 1
  31. Eventos CREATE EVENT mi_evento_2 ON SCHEDULE EVERY 1 MINUTE STARTS “2015-12-03 23:32:15” DO INSERT INTO persona SET nombre = “José Antonio”
  32. Trigger CREATE TRIGGER nombre_trigger BEFORE INSERT ON persona FOR EACH ROW INSERT INTO trabajadores SET …
  33. Trigger CREATE TRIGGER ombre_trigger {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_tabla FOR EACH ROW {[BEGIN] acciones_sql [end]} DROP TRIGGER nombre_trigger
  34. Lenguaje de Consulta
  35. Consultas SELECT [ALL | DISTINCT | DISTINCTROW] expresion_select [, expresion_select…] [FROM tablas_referenciadas [WHERE condiciones] [GROUP BY {nombre_col} [ASC | DESC] [HAVING condiciones]] [ORDER BY {nombre_col} [ASC | DESC]] [LIMIT {num_filas}]
  36. Consultas SELECT campos FROM tabla_1 INNER JOIN tabla_2 ON tabla_1.campo1 comp tabla_2.campo2
  37. Ejemplos SELECT * FROM trabajadores WHERE trabajadores.codigo_trabajador = 1
  38. Ejemplos SELECT * FROM trabajadores INNER JOIN receptores ON trabajadores.codigo_trabajador = receptores.receptor
  39. Ejemplos SELECT * FROM trabajadores INNER JOIN ( receptores INNER JOIN mensajes ON mensajes.codigo_mensaje = receptores.mensaje) ON trabajador.codigo_trabajador = receptores.receptor WHERE trabajador.nombre = “Fernando” ORDER BY mensajes.fecha_envio
  40. Ejemplos SELECT * FROM trabajadores INNER JOIN ( receptores INNER JOIN mensajes ON mensajes.codigo_mensaje = receptores.mensaje) ON trabajador.codigo_trabajador = receptores.receptor ORDER BY mensajes.fecha_envio
  41. Ejemplos SELECT * FROM trabajadores INNER JOIN ( receptores INNER JOIN mensajes ON mensajes.codigo_mensaje = receptores.mensaje) ON trabajador.codigo_trabajador = receptores.receptor ORDER BY mensajes.fecha_envio LIMIT 2
  42. Ejemplos SELECT DISTINCT receptor FROM receptores
  43. Ejemplos SELECT CONCAT(username, ‘’, password) as nombre_completo FROM trabajadores
  44. Ejemplos SELECT *, CONCAT(username, ‘’, password) as nombre_completo FROM trabajadores
  45. Ejemplos SELECT COUNT(*) AS total_registros FROM trabajadores
  46. Ejemplos SELECT AVG(codigo_trabajador), SUM(codigo_trabajador), MAX(codigo_trabajador), COUNT(username) FROM trabajadores
  47. Ejemplos SELECT * FROM trabajadores LIMIT 2,6
  48. Inner Join SELECT * FROM TablaA INNER JOIN TablaB ON TablaA.nombre = TablaB.nombre
  49. Full Outer Join SELECT * FROM TablaA FULL OUTER JOIN TablaB ON TablaA.nombre = TablaB.nombre
  50. Left Outer Join SELECT * FROM TablaA LEFT OUTER JOIN TablaB ON TablaA.nombre = TablaB.nombre
  51. Cross Join SELECT * FROM TablaA CROSS JOIN TablaB Muestra la lista de todos los registros de A combinados con cada uno de los registros de B
Publicidad