Introducción A Las Bases De Datos Y SQL - UNAM

Transcription

Introducción a las bases de datos ySQLDESARROLLO DE SISTEMASCampos Ortega Carlos AlbertoCuéllar Martínez Hugo Germán

¿Qué es SQL y para qué sirve?El Lenguaje de Consulta Estructurado o SQL(Structured QueryLanguage) por sus siglas en inglés, es la herramienta que sirve paramanipular y emplear la información al interior de las bases de datos,sin esta herramienta los datos no serían aprovechados al máximo, deahí deriva la importancia de conocer este lenguaje y la relación queguarda con los modelos relacionales de las bases de datos.

¿Qué es Postgresql?Sistema de gestión de base de datos relacional orientada a objetos desoftware libre, publicado bajo la licencia BSD. Como muchos otrosproyectos open source, el desarrollo de PostgreSQL no es manejadopor una sola compañía, sino que es dirigido por una comunidad dedesarrolladores y organizaciones comerciales las cuales trabajan ensu desarrollo. Dicha comunidad es denominada el PGDG(PostgreSQL Global Development Group).

Características de Postgresql Alta concurrencia: mediante un sistema denominado MVCC(Acceso concurrente multiversión, por sus siglas en inglés). Integridad de los datos: claves primarias, llaves foráneas concapacidad de actualizar en cascada o restringir la acción y restricciónnot null. Resistencia a fallas. Escritura adelantada de registros (WAL) paraevitar pérdidas de datos en caso de fallos por: Energía, SistemaOperativo, Hardware.

Características de Postgresql Multiplataforma. Linux, Unix, BSD's, Mac OS X, Solaris, AIX, Irix,HP-UX, Windows. PITR. Puntos de recuperación en el tiempo. Tablespaces. (Ubicaciones alternativas para los datos) Replicación síncrona y asincrónica. Tipos de datos No-SQL

Características de Postgresql Definir funciones personalizadas por medio de varios lenguajes: PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, PL/PHP, PL/Ruby,PL/Java

Caracteristicas de Postgresql Es más lento en inserciones y actualizaciones, ya que cuenta concabeceras de intersección. Sin experticia, configurar llega a ser un caos. InnoDB genera mucho footprint en memoria al indizar. El toolset empresarial tiene un costo adicional por suscripciónanual. Reducida cantidad de tipos de datos. No soporta consultas en paralelo hasta la versión 9.6

Caracteristicas de PostgresqlBase de datosTablaFilaCampoFilas en una tablaColumnas en unatabla(dependiendo de los tiposde datos)Ilimitado reportada una de 32 tb32 TB400 GB1 GBIlimitado250-1600Índices de una tablaIlimitado

Tipos de datos usados por los RDBMSSinónimosde tipos de DatoTamañoDescripciónBINARY, VARBINARY, BINARY ,VARYING, BIT VARYING1 byte porcarácterPermite almacenar imágenes, videos, entre otros .BIT, BOOLEAN, LOGICAL, LOGICAL1,YESNO1 byteValores Sí y No, y campos que contienen solamente uno de dos valores.BYTE, INTEGER1, TINYNIT1 byteUn número entero entre 0 y 255.COUNTER , AUTOINCREMENT,SEQUENCESe utiliza para campos contadores cuyo valor se incrementa automáticamente alcrear un nuevo registro.MONEY , CURRENCY8 bytesUn número entero comprendido entre– 922.337.203.685.477,5808 y 922.337.203.685.477,5807.DATETIME , DATE , TIME8 bytesUna valor de fecha u hora entre los años 100 y 9999DECIMAL , NUMERIC, DEC17 bytesUn tipo de datos numérico exacto con valores comprendidos entre 1028 - 1 y 1028 - 1. Puede definir la precisión (1 - 28) y la escala (0 - precisión definida). Laprecisión y la escala predeterminadas son 18 y 0, respectivamente.CHAR, TEXT(n), ALPHANUMERIC,CHARACTER, STRING, VARCHAR,CHARACTER VARYING, NCHAR,NATIONAL CHARACTER, NATIONALCHAR, NATIONAL CHARACTERVARYING,NATIONAL CHAR VARYING2 bytes porcarácter.Desde cero a 255 caracteres.

Tipos de Datos PostgreSQLNombresmallintintegerbigintTamaño2 bytesRango4 bytesDe -2147483648 a 21474836478 bytesDe -9223372036854775808 a9223372036854775807variableSin límitenumericvariableSin límite4 bytesDescripcióncharacter varying(n), varchar(n)De longitud variable, con límitecharacter(n), char(n)De longitud fijatextDe longitud variable, ilimitadoDe -32768 a ea4 bytes además de la cadena Cadena binaria de longitudbinaria actualvariable6 dígitos decimales de precisióndoubleprecision8 bytes15 dígitos decimales de precisiónserial4 bytesDe 1 a 2147483647bigserial8 bytesDe 1 a 9223372036854775807

Tipos de Datos PostgreSQLNombreTamañoDescripciónValor bajoValor altoResolucióntimestamp [ (p) ] [ sin zonahoraria ]8 bytesFecha y hora4713 BC5874897 AD1 microsegundo / 14 dígitostimestamp [ (p) ] con zonahoraria8 bytesFecha y hora con zonahoraria4713 BC5874897 AD1 microsegundos / 14 dígitosinterval [ (p) ]12 bytesIntervalo de hora-178000000 años178000000 años1 microsegundodate4 bytesSólo fecha4713 BC32767 AD1 díatime [ (p) ] [ sin zonahoraria]8 bytesSólo hora del día00:00:00.0023:59:59.991 microsegundoHoras del día con zonahoraria00:00:00.00 1223:59:59.99-121 microsegundotime [ (p) ] con zona horaria 12 bytes

Componentes (DML, DDL, DCL)DML Lenguajede Manipulaciónde DatosDDL Lenguaje deDCL Lenguaje deDefinicióndeDDL Lenguaje de Definición de DatosControl de DatosDatos

DDL Lenguaje de Definición de DatosDDL o Lenguaje de Definición de Datos: Se utiliza para crear, eliminar o modificartablas, índices, vistas, triggers, procedimientos; es decir, nos permite definir la estructurade la base de datos mediante comandos como crear (CREATE), eliminar (DROP), omodificar (ALTER). CREATE Sirve para crear objetos en la base de datos. ALTER Permite modificar la estructura de un objeto. DROP Permite eliminar objetos de la base de datos. TRUNCATE Elimina todos los registros de una tabla.

CREATEUtilizado para crear nuevas bases de datos, tablas, índices, vistas, defaults, reglas,procedimientos, funciones, triggers. CREATE DATABASECREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULECREATE TABLECREATE VIEW

CREATE DATABASECREATE DATABASE new dbWITH OWNER usuarioENCODING 'UTF8'TEMPLATE postgres;

CREATE TABLECREATE TABLE nombre tabla (atributo tipoDeDato restricciones, , );CREATE TABLE entidad federativa copia (entidad federativa id int(11) NOT NULL AUTO INCREMENT,entFederativa clave char(2) NOT NULL,entFederativa nombre varchar(25) NOT NULL,PRIMARY KEY (entidad federativa id))ENGINE InnoDBAUTO INCREMENT 33DEFAULT CHARSET latin1COLLATE latin1 spanish ci;

CREATECREATE TABLE pais (pais id INTEGER UNSIGNED NOT NULL AUTO INCREMENT,pais clave VARCHAR(5) NOT NULL,pais nombre VARCHAR(120) NOT NULL,pais nacionalidad VARCHAR(50),PRIMARY KEY (pais id))ENGINE InnoDB;CREATE TABLE institucion(inst clave integer NOT NULL,inst nombre VARCHAR (40) NOT NULL,inst siglas VARCHAR (5),PRIMARY KEY (inst clave)) ENGINE InnoDB;

ALTERUtilizado para modificar la estructura de una tabla para agregar campos o constraints,también se utiliza para modificar algunas características globales de las bases dedatos. ALTER TABLE ALTER DATABASE

ALTER TABLEEjemploModificar una columnaALTER TABLE t1 MODIFY b BIGINT NOT NULL;Agregar una columnaALTER TABLE t2 ADD d TIMESTAMP;Agregar una llave primariaALTER TABLE t2 ADD PRIMARY KEY (c);Renombrar la tablaALTER TABLE t1 RENAME t2;Agregar la restricción de NOT NULLALTER TABLE t2 MODIFY a TINYINT NOT NULL;Quitar la restricción de NOT NULLALTER TABLE t2 MODIFY a TINYINT;Renombrar un atributoALTER TABLE t1 CHANGE a b INTEGER;Agregar una restricción de llave foráneaALTER TABLE nombreTabla ADD [CONSTRAINT symbol] FOREIGNKEY [id] (index col name, .) REFERENCES tbl name(index col name, .) [ON DELETE {RESTRICT CASCADE SET NULL NO ACTION}] [ON UPDATE {RESTRICT CASCADE SET NULL NOACTION}]Quitar una columnaALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;Quitar una restricción de llave foráneaALTER TABLE nombreTabla DROP FOREIGN KEY fk symbol;

DROPUtilizado para eliminar bases de datos, tablas, campos, índices, vistas,reglas, procedimientos, funciones, triggers. DROP DATABASEDROP DEFAULTDROP FUNCTIONDROP PROCEDUREDROP RULEDROP TABLEDROP VIEWdefaults,

DROPDROP TABLE nombre tabla;DROP TABLE IF EXISTS institucion;IF EXISTS No devuelve un error cuando no existe la tabla.En estos casos devuelve una notificación (NOTICE).name El nombre (opcionalmente con el esquema) de la tablaa eliminar.

DML o Lenguaje de Manipulación de DatosDML o Lenguaje de Manipulación de Datos: Se utiliza para realizar la consulta y edición de lainformación contenida en la base de datos, esto implica: seleccionar, insertar, modificar y borrar.Los DML se distinguen por sus sublenguajes de recuperación subyacentes; se pueden distinguir dostipos de DML, el procedural y el no procedural. La principal diferencia entre ambos, es que loslenguajes procedurales tratan a los registros individualmente, mientras que los no proceduralesoperan a un conjunto de registros. Las instrucciones relacionadas con este componente son: SELECT Permite realizar consultas a la base de datos. INSERT Empleado para agregar registros a una tabla. UPDATE Utilizado para modificar los valores de los campos de una tabla. DELETE Utilizado para eliminar los registros de una tabla.

DCL Lenguaje de control de datosDCL o Lenguaje de Control de Datos: Se utiliza para la definición de los privilegios decontrol de acceso y edición a los elementos que componen la base de datos (seguridad), esdecir, permitir o revocar el acceso.Los permisos a nivel base de datos pueden otorgarse a usuarios para ejecutar ciertoscomandos dentro de la base o para que puedan manipular objetos y los datos que puedancontener estos.Las instrucciones relacionadas con este componente son:-grant. Permite otorgar permisos a los usuarios sobre los objetos definidos en la base dedatos, así como las operaciones a utilizar sobre ellos.-revoke. Permite revocar permisos sobre los objetos definidos en la base de datos y lasoperaciones sobre los mismos.

Instrucciones DCL GRANT – Permite crear cuentas de usuario y otorgarles privilegios. REVOKE – Permite quitar privilegios otorgados con el comando GRANT.Nivel globalNiveles de permisosNivel debase dedatosNivel detablaNivel decolumna

Instrucciones DCLPermisoSignificadoALL [PRIVILEGES]Da todos los permisos simples excepto GRANT OPTIONALTERPermite el uso de ALTER TABLEALTER ROUTINEModifica o borra rutinas almacenadasCREATEPermite el uso de CREATE TABLECREATE ROUTINECrea rutinas almacenadasCREATE TEMPORARYPermite el uso de CREATE TEMPORARY TABLETABLESPermite el uso de CREATE USER, DROP USER, RENAME USER, y REVOKE ALLCREATE USERPRIVILEGES.CREATE VIEWPermite el uso de CREATE VIEWDELETEPermite el uso de DELETEDROPPermite el uso de DROP TABLEEXECUTEPermite al usuario ejecutar rutinas almacenadasFILEPermite el uso de SELECT . INTO OUTFILE y LOAD DATA INFILEINDEXPermite el uso de CREATE INDEX y DROP INDEXINSERTPermite el uso de INSERTLOCK TABLESPermite el uso de LOCK TABLES en tablas para las que tenga el permiso SELECT

Instrucciones ATION CLIENTPermite el uso de SHOW FULL PROCESSLISTNo implementadoPermite el uso de FLUSHPermite al usuario preguntar dónde están los servidores maestro o esclavoREPLICATION SLAVE Necesario para los esclavos de replicación (para leer eventos del log binario desde el maestro)SELECTPermite el uso de SELECTSHOW DATABASESSHOW VIEWSHUTDOWNSHOW DATABASES muestra todas las bases de datosPermite el uso de SHOW CREATE VIEWPermite el uso de mysqladmin shutdownPermite el uso de comandos CHANGE MASTER, KILL, PURGE MASTER LOGS, and SETGLOBAL , el comando mysqladmin debug le permite conectar (una vez) incluso si se llega amax connectionsPermite el uso de UPDATESinónimo de “no privileges”Permite dar /sql-grant.htmlSUPERUPDATEUSAGEGRANT OPTION

Instrucciones DCL - GRANTGRANT priv type [(column list)] [, priv type [(column list)]] . ON[object type] {tbl name * *.* db name.*} TO user [IDENTIFIED BY[PASSWORD] 'password']GRANT ALL PRIVILEGES ON cursosql.* TO sql12@localhost IDENTIFIEDBY ' q1012' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON cursosql.* TO 'sql12'@'%' IDENTIFIED BY' q1012' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON cursosql.* TO sql12@132.248.81.242IDENTIFIED BY ' q1012' WITH GRANT OPTION; CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']

Instrucciones DCL - GRANTREVOKE priv type [(column list)] [, priv type [(column list)]] . ON[object type] {tbl name * *.* db name.*} FROM user [, user] .REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] .

Instrucciones DML - SELECTSELECT [DISTINCT * expresión columna [ AS output name ] [, .][ FROM tabla [, .] ][ WHERE condición ]SELECTFROMWHERE– Indica que campos o datos va a devolver la consulta.– Indica a partir de que tablas, vistas o subconsultas se obtienen los datos.– Indica las condiciones que deben cumplir los datos. Las sentencias se pueden escribir en una o varias líneas. Las clausulas no son sensitivas al cambio de mayúsculas o minúsculas. Se recomienda que cada clausula se coloque en una línea distinta e indentarlas paramayor legibilidad.

Instrucciones DML - SELECTSELECT * FROM tabla;SELECT campo1, campo2 FROM tabla;SELECT 1 1;SELECT al numcta, al nombre, al apellidoPat, al apellidoMatFROM alumno;SELECT * FROM entidad federativa;SELECT entFederativa clave AS clave, entFederativa nombre AS NombreFROM entidad federativa;

Instrucciones DML - SELECTAl incluir la cláusula DISTINCT en un SELECT, se eliminan los registros repetidos delresultadoSELECT DISTINCT campo1, campo2 FROM tabla1WHERESELECT DISTINCT al nombre, al apellidoPatFROM alumno;SELECT DISTINCT al generoFROM alumno;

Instrucciones DML – SELECT – operadoresaritméticosOperador Descripción */SumaRestaMultiplicaciónDivisión

Criterios de selecciónLa clausula WHERE se utiliza para restringir los registros devueltos por la consulta.SELECT *FROMWHERE .;SELECT * FROM alumnoWHERE alumno id 10;SELECT * FROM alumnoWHERE al nombre 'Martha';SELECT * FROM alumnoWHERE al fechaNac '1998-10-10';

El valor NULOUn valor nulo se representa en SQL con la cláusula NULL y representa la ausencia de información. Frecuentementeun valor nulo es confundido con un valor numérico de 0 o una cadena vacía.Esto es importante recordarlo cuando se deseen realizar ciertas operaciones, por ejemplo un promedio de edades,dado que la función para determinar el promedio no contemplará valores nulos.Edad 1 25Edad 2 NULLEdad 3 30Edad 4 NULLPromedio: 27.5Promedio (25 30) / 2 55 / 2 27.5En el ejemplo anterior se puede confirmar que los valores nulos no son considerados como cero.Hasta este momento se ha hablado únicamente de tipos de datos numéricos, aunque los valores nulos también seutilizan en cualquier otro tipo de dato, por ejemplo en texto: No es lo mismo una cadena vacía que un valornulo.

Operadores de comparaciónOperadorDescripción Igual a Menor que Menor que o igual Mayor que Mayor que o igual Diferente deBETWEEN .AND Entre dos valores (incluyente)IN(set)Corresponde a algunos de los valores de la listaLIKECorresponde con un patrón de caracteresIS NULLEs un valor nulo

Ejemplos con operadores de comparaciónSELECT * FROM alumnoWHERE alumno id 10;SELECT * FROM alumnoWHERE al fechaNac '1981-01-01';SELECT * FROM alumnoWHERE alumno id between 5 AND 10;SELECT * FROM alumnoWHERE al nombre LIKE '%o%';SELECT * FROM alumnoSELECT * FROM alumnoWHERE alumno id ! 10;SELECT * FROM alumnoWHERE alumno id 10;SELECT * FROM alumnoWHERE al fechaNacbetween '1981-01-01' AND '1999-12-31';SELECT * FROM alumnoWHERE al apellidoMat IS NULL;SELECT * FROM alumnoWHERE alumno id IN (5, 10, 11);La comparación campo IS NULL es correcta.WHERE al nombre LIKE 'M%';SELECT * FROM alumnoWHERE al nombre LIKE 'M';La comparación campo NULL es incorrecta.

Operadores lógicosPredicados y conectoresOperador DescripciónANDDevuelve verdadero si ambas condiciones se cumplen.ORDevuelve verdadero si cualquiera de las condiciones secumple.NOTDevuelve verdadero si la siguiente condición es falsa.

Ejemplos de operadores lógicosSELECT * FROM alumnoWHERE al nombre LIKE '%a%' AND al apellidoPat LIKE '%e%' ;SELECT * FROM alumnoWHERE al nombre 'Juan' OR al nombre 'Pedro';SELECT al nombre, al genero, entidad federativa idFROM alumnoWHERE al nombre 'Martha' AND (entidad federativa id IS NULL OR entidad federativa id 9) ;SELECT * FROM alumnoWHERE alumno id NOT IN (5, 10, 11);SELECT * FROM alumnoWHERE al nombre NOT LIKE '%o%';SELECT * FROM alumnoWHERE al apellidoMat IS NOT NULL;

Ejemplos de operadores lógicosPermite ordenar los resultados de una consulta.ORDER BY expression [ ASC DESC ]SELECT * FROM alumnoORDER BY al apellidoPat, al apellidoMat, al nombre ;SELECT * FROM alumnoORDER BY al apellidoPat ASC, al apellidoMat ASC, al nombre ASC;SELECT * FROM alumnoORDER BY al apellidoPat DESC, al apellidoMat DESC, al nombre DESC ;SELECT al apellidoPat, al apellidoMat, al nombre, al fechaNacFROM alumnoORDER BY al apellidoPat, al apellidoMat, al nombre ;SELECT al apellidoPat, al apellidoMat, al nombre, al fechaNacFROM alumnoORDER BY al apellidoPat, 2, al nombre ;

ÍndicesLos índices permiten encontrar más rápidamente los registros en unabase de datos.Con los índices el manejador puede determinar en menos tiempo la posición apartir de la cual se puede buscar, en lugar de buscar en todos los datos.Algunos de los usos de los índices son:Para obtener los registros que corresponden a la cláusula WHERErápidamente.Para disminuir el número de registros a considerar.Para obtener registros de otras tablas cuando se realiza un JOIN.Para ordenar o agrupar una tabla cuando alguno de los campos .Desventajas:Ocupan espacio

ÍndicesCREATE [UNIQUE FULLTEXT SPATIAL] INDEX index name [USINGindex type] ON tbl name (index col name,.) CREATE UNIQUE INDEX al idx ON alumno (al numcta); DROP INDEX al idx ON alumno;

VistasEs el resultado de ejecutar una consulta en una o varias tablas. De las vistas solamente se almacena la definición, no los datos. La sentencia SELECT no puede contener una subconsulta en su cláusulaFROM. Cualquier tabla o vista referenciada por la definición debe existir. No se puede asociar un trigger con una vista. Algunas vistas permites actualizar datos en la tabla subyacente, siemprey cuando se trate de:– una sola tabla–exista una relación de 1 a 1 con los campos de la tabla–además de cumplir con otras restricciones como no tener agrupados,DISTINCT entre otros.

Vistas CREATE [OR REPLACE] [ALGORITHM {UNDEFINED MERGE TEMPTABLE}] VIEW nombre vista [(columnas)] AS sentencia select [WITH[CASCADED LOCAL] CHECK OPTION] CREATE VIEW alumno v AS SELECT * FROM alumno; CREATE OR REPLACE VIEW alumno v AS SELECT al numcta,al nombre, al apellidoPat, al apellidoMat FROM alumno; DROP VIEW alumno v;

Tipos de funcionesTipos defuncionesDe un soloregistroDe múltiplesregistros

Funciones de un solo registroFunciones deun soloregistroDe cadenasNúmerosFechasOtras

Funciones de cadenasFunciónASCII(str)DescripciónDevuelve el valor numérico del carácter más a laizquierda de la cadena de caracteres str. Devuelve0 si str es la cadena vacía. Devuelve NULL si stres NULL. ASCII() funciona para caracteres convalores numéricos de 0 a 255.CONCAT(str1,str2,.) Devuelve la cadena resultado de concatenar losargumentos. Devuelve NULL si algún argumentoes NULL. Puede tener uno o más argumentos.INSTR(str,substr)Devuelve la posición de la primera ocurrencia dela subcadena substr en la cadena str)Devuelve la longitud de la cadena str, medida enbytes.Devuelve la cadena en minúsculas.Devuelve la cadena original agregándole a laizquierda la cadena padstr hasta la longitudindicada.Devuelve la cadena str con los caracteres enblanco iniciales eliminados.EjemploSELECT ASCII('2');- 50SELECT ASCII('@');- 64SELECT ASCII(null);- nullSELECT CONCAT('Ro', 'ber', 'to');- 'Roberto'SELECT INSTR('foobarbar','bar');- 4SELECT LENGTH('hola');- 4SELECT LOWER('HOLA');- 'hola'SELECT LPAD('hola',11,'ab');- 'abababahola'SELECT LTRIM(' holahola');- 'holahola'

Funciones de cadenasFunciónDescripciónEjemploREPLACE(str,from str,to Devuelve la cadena str con todas lasstr)ocurrencias de la cadena from strreemplazadas con la cadena to str.SELECT REPLACE('hola mundo','hola', 'adios');- 'adios mundo'RPAD(str,len,padstr)Devuelve la cadena str, alineada a laderecha con la cadena padstr con unalongitud de len caracteres. Si str es mayorque len, el valor de retorno se corta a lencaracteres.Devuelve la cadena str con los espacios a laderecha eliminados.SELECT RPAD('hola',10,'bb');- 'holabbbbbb'SUBSTRING(str,pos,len)Devuelven una subcadena de la cadena strcomenzando en la posición pos, el valor lenes opcional y se utiliza para indicar cuantoscaracteres debe regresar.SELECT SUBSTRING('hola',2);- 'ola'SELECT SUBSTRING('hola',2,2);- 'ol'TRIM(str)Elimina los espacios en blanco a laizquierda y derecha de la cadena.SELECT TRIM(' holahola- 'holahola'UPPER(str)Devuelve la cadena en mayúsculasSELECT UPPER('hola');- 'HOLA'RTRIM(str)SELECT LTRIM(' holahola- 'holahola'');');

Funciones de númerosFunciónDescripciónEjemploCEILING(X), CEIL(X)Devuelve el valor del siguiente entero mayor que X. SELECT CEILING(5.28);- 6SELECT CEIL(-5.28);- -5FLOOR(X)Devuelve el valor del siguiente entero menor que X. SELECT FLOOR(5.28);- 5SELECT FLOOR(-5.28);- -6MOD(N,M)Operación de módulo. Retorna el resto de Ndividido por M.ROUND(X)Retorna el argumento X, redondeado al entero más SELECT ROUND(5.28);cercano.- 5SELECT ROUND(5.58);- 6SELECT MOD(234, 10);- 4

Funciones de fechasFunciónDescripciónEjemploCURRENT DATE()Regresan los valores de la zona horaria de laconexión.SELECT CURRENT DATE();- '2012-06-14'ADDDATE(date, INTERVALexpr type)Regresa la fecha que da como resultado agregar SELECT ADDDATE ('2012-01-02', INTERVAL 31 DAY);el periodo de tiempo indicado.- '2012-02-02‘SELECT ADDDATE('2012-01-02', INTERVAL 31MONTH);SELECT ADDDATE('2012-01-02', 31);CURTIME()Retorna la hora actual como valor en formato'HH:MM:SS'SELECT CURTIME();- 11:19:16DATEDIFF(expr,expr2)retorna el número de días entre la fecha inicialexpr y la fecha final expr2.SELECT DATEDIFF('2012-06-08', '2012-06-06');- 2SELECT DATEDIFF('2012-06-06', '2012-06-08');- -2DATE FORMAT(date,format)Da formato a la fecha.SELECT DATE FORMAT('2012-10-04 22:23:00', '%W%M %Y');- 'Thursday October 2012'SELECT DATE FORMAT('2012-10-04 22:23:00','%d/%m/%Y');

Funciones de múltiples registrosFunciones demúltiplesregistrosFunciones deagregado

Funciones de agregaciónFunciónavg(expression)Tipo de dato querecibeTipo de dato que devuelve Descripciónsmallint, int, bigint, real,double precision,numeric, or intervalnumeric para integer, doubleprecision para floating-point, otroEl promedio de todos los valores de entradael mismo tipo de dato que elargumentocount(*)bigintRetorna un contador del número de registros,contengan o no valores NULLbigintRetorna el contador del número de valores noNULLcount(expression)anymax(expression)any array, numeric, string, El mismo tipo de dato que elargumentoor date/time typeRegresa el valor máximo entre todos losvalores de entradamin(expression)any array, numeric, string, El mismo tipo de dato que elor date/time typeargumentoRegresa el valor mínimo entre todos losvalores de entradastddev(expression)smallint, int, bigint, real,double precision, ornumericdouble precision for floating-point Devuelve la desviación estándar de los valoresarguments, otherwise numericde entradasmallint, int, bigint, real,double precision,numeric, or intervalbigint for smallint or intarguments, numeric for bigintarguments, double precision forfloating-point arguments,otherwise the same as theargument data typesum(expr)Retorna la suma de expr

Funciones de agregación SELECT avg(pro salario) FROM profesor; SELECT count(*) FROM alumno; SELECT count(entidad federativa id) FROM alumno; SELECT count(DISTINCT entidad federativa id) FROM alumno; SELECT max(alumno id) FROM alumno; SELECT min(alumno id) FROM alumno; SELECT stddev(pro salario) FROM profesor; SELECT sum(pro salario) FROM profesor;

Group byCondensa en un solo registro, todos los registros seleccionados que compartenlos mismos valores de la expresión de agrupado.GROUP BY expresión [, .]SELECT min(pro salario) as salario minimo, p.pro generoFROM profesor pGROUP BY p.pro genero;SELECT count(*), a.al genero as genero, a.entidad federativa idFROM alumno aGROUP BY a.al genero, a.entidad federativa id ;SELECT count(*), a.al genero, a.entidad federativa idFROM alumno aGROUP BY a.al genero, 3;

HavingElimina grupos de registros que no satisfacen una condiciónHAVING conditionSELECT COUNT(*), entidad federativa id FROM alumnoGROUP BY entidad federativa idHAVING COUNT(*) 2;SELECT p.pro genero , p.pro salario , COUNT(*)FROM profesor pGROUP BY 1, p.pro salarioHAVING avg(p.pro salario) 2000;

Having Y WhereSELECT p.pro genero , p.pro salario,COUNT(*)FROM (SELECT * FROM PROFESOR WHEREprofesor id 5) pWHERE p.pro genero 'H'GROUP BY p.pro genero, p.pro salarioHAVING avg(p.pro salario) 2000 ANDMIN(p.pro salario) 1000;

JOINConstruye una relación formada por todas las eneadas que aparecen en cualquiera de las dosrelaciones especificadas en que se cumple alguna condición en dominios comunes. Se obtieneconcatenando una eneada de r con otra de q, de forma que cumpla con una condición en los dominioscomunes. Si no hay dominios comunes, esta operación es un producto cartesiano.Sean q y r dos conjuntos como 2e2a2a2b2b1c1c2ABCCDEa1b1c1c1d1e1a2b2c1c1d2e2

INNER JOIN[INNER] JOIN Todos los valores de las filas del resultado son valoresque están en las tablas que se combinan.

LEFT JOINLEFT [ OUTER ] JOIN- Devuelve todos los registro de la tabla a laizquierda, aunque no tengan una fila coincidente en la otratabla.

RIGHT JOINRIGHT [ OUTER ] JOIN - Devuelve todos los registro de la tabla a laderecha, aunque no tengan una fila coincidente en la otra tabla.

JOIN [ INNER ] JOINSELECT a.*, ef.* from alumno a JOIN entidad federativa ef ON (a.entidad federativa id ef.entidad federativa id); LEFT [ OUTER ] JOINSELECT a.*, ef.* from alumno a LEFT JOIN entidad federativa ef ON(a.entidad federativa id ef.entidad federativa id); RIGHT [ OUTER ] JOINSELECT a.alumno id, a.al numcta, a.al nombre, a.al apellidoPat, a.al apellidoMat,a.entidad federativa id, ef.entidad federativa id, ef.entFederativa nombre from alumno aRIGHT JOIN entidad federativa ef ON (a.entidad federativa id ef.entidad federativa id);

Ejemplo JOINsSELECT employee id, city, department nameFROM employees eLEFT JOIN departments dON d.department id e.department idJOIN locations lON d.location id l.location id;

Instrucciones DML - INSERT INSERT INTO table [ ( column [, .] ) ] { DEFAULT VALUES VALUES ( {expression DEFAULT } [, .] ) query } Cláusula INTO–Permite indicar en que tabla se van a agregar los datos–El nombre de los campos es opcional. Si se omite se deben indicar los valores de todoslos campos en el orden en que están en la tabla. Cláusula VALUES–Para expresar un valor de tipo alfanumérico o fecha, es necesario escribirlo entrecomillas simples.–Los valores numéricos se escriben sin comillas.–Los datos alfanuméricos que no se incluyan entre comillas simples, el manejados debases de datos intentará interpretarlos como funciones o objetos de la base de datos, encaso de que no correspondan a un objeto válido devolverá una excepción.

Instrucciones DML - INSERTINSERT INTO alumno (al numcta, al nombre, al apellidoPat,al apellidoMat, al genero, al fechaNac, entidad federativa id)VALUES ('307492333', 'Patricia', 'Castillo', 'Morett', 'M', '1983-05-01', 1);INSERT INTO alumno (al numcta, al nombre, al apellidoPat,al apellidoMat, al genero, al fechaNac, entidad federativa id)VALUES ('377792334', 'Mariano', 'Castillo', 'Mora', 'H', current date(), 2);ALTER TABLE NombreTabla AUTO INCREMENT 26000;

EjerciciosInserte los siguientes datos en la tabla curso:curso idsede id123123cur nombre1 MATEMATICAS1 GEOGRAFIA1 FISICA2 QUIMICA2 BIOLOGIA2 TEATROInserte los siguientes datos en la tabla programa:programa id123456curso id sede idprofesor id prog rte los siguientes datos en la tabla historial:historial idprograma id123456789alumno id123456123222444333his calificacion1098987101010

Instrucciones DML - DELETEDELETE FROM table[ USING usinglist ][ WHERE condition ] ;DELETE FROM alumnoWHERE al numcta '307492334';DELETE FROM alumnoUSING alumno, entidad federativa efWHERE ef.entidad federativa id alumno.entidad federativa id ANDentFederativa nombre 'AGUASCALIENTES';

Instrucciones DML - UPDATEUPDATE table SET column { expression DEFAULT } [, .][ FROM fromlist ][ WHERE condition ]UPDATE alumno SET al numcta '098987679', al nombre 'Horacio',al apellidoPat concat('Del Bosque y ', al apellidoPat)WHERE alumno id 3;UPDATE programa SET profesor id NULLFROM profesor pWHERE p.profesor id programa.profesor id AND p.profesor id 1;

SubconsultasUna subconsulta es un comandoSELECT dentro de otro comando.escalar (unvalor único)unacolumnaSUBCONSULTAuna vista (uno o másregistros de una o máscolumnas)un registro

Subconsultas SELECT *FROM alumnoWHERE alumno id IN (SELECT alumno id FROM alumno WHEREentidad federativa id 2); SELECT *FROM alumno WHERE al fechaNac (SELECT min(al fechaNac) FROMalumno); SELECT *FROM (SELECT al nombre, al apellidoPat, al apellidoMat FROM alumnoWHERE al genero 'M') as mujer;

UNIONABC123UNIONC1469 ABC123469

UNIONABC123UNIONALLC1469 ABCC123469

UNIONSELECT . UNION [ALL]SELECT . [UNION [ALL] SELECT .]

Respaldo y RestauraciónCuando se trabaja con base de datos, uno de las cosas más importantes de hacer es respaldar los datos en caso deque ocurra cualquier situación que dañe nuestro servidor de base de d

control de acceso y edición a los elementos que componen la base de datos (seguridad), es decir, permitir o revocar el acceso. Los permisos a nivel base de datos pueden otorgarse a usuarios para ejecutar ciertos comandos dentro de la base o para que puedan manipular objetos y los datos que puedan contener estos. Las instrucciones relacionadas .