MySQL Introducción - 200.72.129.100

45
MySQL MySQL Introducci Introducci ó ó n n Crescencio Crescencio Bravo Bravo 1

Transcript of MySQL Introducción - 200.72.129.100

Page 1: MySQL Introducción - 200.72.129.100

MySQLMySQLIntroducciIntroduccióónn

CrescencioCrescencio BravoBravo

1

Page 2: MySQL Introducción - 200.72.129.100

2

MySQL: Introducción

ContenidosContenidos

1 1 ¿¿QuQuéé es es MySQLMySQL??2 El SQL de 2 El SQL de MySQLMySQL3 3 TutorialTutorial BBáásico de sico de MySQLMySQL4 Manual de SQL4 Manual de SQL5 Caracter5 Caracteríísticas avanzadassticas avanzadas6 Herramientas b6 Herramientas báásicas de administracisicas de administracióónn

mysqladminmysqladminmysqlmysql

7 Resumen7 Resumen8 Ejercicios8 Ejercicios

Page 3: MySQL Introducción - 200.72.129.100

3

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (i)MySQL? (i)

Un SGBDUn SGBDRelacionalDe código abierto

CaracterCaracteríísticas generalessticas generales:Es rápidoFiableFácil de usarMuy adecuado para aplicaciones en InternetSoporta arquitectura C/S y sistemas embebidosHay disponible gran cantidad de software que soportan MySQL

Page 4: MySQL Introducción - 200.72.129.100

4

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (ii)MySQL? (ii)

DB2 8.1http://www-5.ibm.com/es/software/db2

IBM

Informix Standard Enginehttp://www-3.ibm.com/software/data/informix/se

IBM

Adaptive Server Enterprise (ASE) 12.5.1http://www.sybase.com/products/databaseservers/ase

Sybase Inc

Oracle 9i EE Databasehttp://otn.oracle.com/products/oracle9i/index.html

Oracle

PostgreSQL 8http://www.postgresql.com

PostgreSQL

MySQL Database Server 4http://www.mysql.com/products/mysql/index.html

MySQL AB

SQL Server 2000 EEhttp://www.microsoft.com/spain/servidores/sql

Microsoft

Principales vendedores y BDPrincipales vendedores y BD::

Page 5: MySQL Introducción - 200.72.129.100

5

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (iii)MySQL? (iii)

BD BD OpenOpen SourceSource:MySQL es una base de datos Open Source (Código Abierto) y por lo tanto de coste gratuitoCCóódigo Abiertodigo Abierto: Movimiento que promulga el derecho de los usuarios a tener libre acceso al código fuente con el que se desarrolle cualquier aplicación, sistema operativo o libreríaEjemplo más conocido: LinuxLas bases de datos Open Source ya juegan en “Primera División”PostgreSQL es también un ejemplo de BD de código abierto

Page 6: MySQL Introducción - 200.72.129.100

6

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (iv)MySQL? (iv)

Comparativas – Productividad:

Page 7: MySQL Introducción - 200.72.129.100

7

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (v)MySQL? (v)

Comparativas – Tiempo de respuesta:

Page 8: MySQL Introducción - 200.72.129.100

8

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (vi)MySQL? (vi)

En 2003En 2003--2004, 2004, MySQLMySQL……Velocidad/RendimientoBajo consumoUtilidades de administraciónProbabilidad reducida de corromper los datosApache+PHP+MySQL en foros/buscadores de aplicacionesCarece de soporte para transacciones, rollbacks y subconsultasNo maneja integridad referencialNo es viable para grandes bases de datos con accesos continuos (mala escalabilidad)

Page 9: MySQL Introducción - 200.72.129.100

9

MySQL: Introducción

1 1 ¿¿QuQuéé es es MySQL? (vii)MySQL? (vii)

CaracterCaracteríísticas detalladas (MySQL 5)sticas detalladas (MySQL 5):C / C++ MultiplataformaSoporta multi-hilo (hilos del kernel)APIs para muchos lenguajes (C++, Java, Perl, PHP, Python, etc.)Soporta transaccionesÁrboles B muy rápidos (compresión de índices)Sistema de gestión de memoria muy eficienteJoins optimizadosServidor separado para arquitecturas C/S o como librería embebidaMuchos tipos de columnas; registros de longitud fija y variableAmplio abanico de sentencias y funcionesPosibilidad de mezclar tablas de BD diferentesSistema de privilegios y passwordsManejo de BD muy grandes64 índices por tabla; índices de hasta 16 columnas; máxima longitud de índice de 1000 bytesConectores ODBC y JavaSoporte de internacionalización (mensajes, juego de caracteres y ordenación)

Page 10: MySQL Introducción - 200.72.129.100

10

MySQL: Introducción

2 El SQL de 2 El SQL de MySQLMySQL

MySQL soporta ANSI SQL y otros modos de SQL

Extensiones aExtensiones a SQL estSQL estáándarndar:Los nombres de BD y tablas son sensibles a mayúsculas (de acuerdo al SO)Las cadenas se pueden encerrar entre “ o ‘Se puede acceder a tablas de diferentes BD (db.table)Tipos de campos: MEDIUMINT, SET, ENUM, BLOB, TEXTModificadores de tipos: AUTO_INCREMENT, BINARY, NULL, UNSIGNED, ZEROFILLSe aceptan los operadores || y &&Comparaciones entre cadenas: No sensibles a mayúsculas/minúsculas% es sinónimo de MOD()Cada BD se localiza en un directorio del directorio de datosCada tabla se localiza en un ficheroMuchas sentencias tienen una funcionalidad ampliada; existen nuevas funcionesAlgunas otras se comportan de forma diferente

Page 11: MySQL Introducción - 200.72.129.100

11

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL (i)(i)

ConexiConexióón al servidorn al servidor:

DesconexiDesconexióónn:

IntroducciIntroduccióón de consultasn de consultas:

Page 12: MySQL Introducción - 200.72.129.100

12

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL (ii)(ii)

UtilizaciUtilizacióón de una BDn de una BD:

CreaciCreacióón de una BDn de una BD:

CreaciCreacióón de una tablan de una tabla:

Page 13: MySQL Introducción - 200.72.129.100

13

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL (iii)(iii)

Estructura de una tablaEstructura de una tabla:

RecuperaciRecuperacióón de informacin de informacióónn:

Page 14: MySQL Introducción - 200.72.129.100

14

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL (iv(iv))

SelecciSeleccióón de determinadas filasn de determinadas filas:

SelecciSeleccióón de columnasn de columnas:

Page 15: MySQL Introducción - 200.72.129.100

15

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL (v)(v)

OrdenaciOrdenacióón de filasn de filas:

Contar y agruparContar y agrupar:

Page 16: MySQL Introducción - 200.72.129.100

16

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL ((vivi))

Operaciones con fechasOperaciones con fechas:

InformaciInformacióón de bases de datos y tablasn de bases de datos y tablas:

Page 17: MySQL Introducción - 200.72.129.100

17

MySQL: Introducción

3 3 TutorialTutorial BBáásico de sico de MySQLMySQL ((viivii))

VersiVersióón de MySQLn de MySQL:mysql -V

EjecuciEjecucióón en modo n en modo batchbatch:

Page 18: MySQL Introducción - 200.72.129.100

18

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: Estructura del Estructura del lenguaje (i)lenguaje (i)

Literales:“cadena”, ‘cadena de caracteres’123.45, 5e10Valores lógicos

Valor nulo: NULL

Nombres:

Page 19: MySQL Introducción - 200.72.129.100

19

MySQL: Introducción

4 Manual de SQL: Estructura del lenguaje (ii)4 Manual de SQL: Estructura del lenguaje (ii)

ComentariosComentarios:

Page 20: MySQL Introducción - 200.72.129.100

20

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: Tipos de columnasTipos de columnas

Tipos de columnas de Tipos de columnas de ANSI SQLANSI SQL:

Page 21: MySQL Introducción - 200.72.129.100

21

MySQL: Introducción

4 Manual de SQL: Tipos Num4 Manual de SQL: Tipos Numééricos (i)ricos (i)

NotaciNotacióónn:M: Ancho de visualización máximo (nº total de dígitos decimales)D: En tipos en coma flotante y de coma fija, el número de dígitos que siguen a la comap: Precisión en bits[ ]: opcional

BIT[(M)] : Campo de bits, M (1 a 64) indica el nº de bits, 1 por defectoTINYINT[(M)] [UNSIGNED] [ZEROFILL] : -122 a 127 (unsigned: 0 a 255)BOOL, BOOLEAN : Sinónimos para TINYINT(1). 0 es falso, cualquier otra cosa es verdaderoSMALLINT[(M)] [UNSIGNED] [ZEROFILL] : -32768 a 32767 (unsigned: 0 a 65535)MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] : -8388608 a 8388607 (unsigned: 0 a 16777215)INT[(M)] [UNSIGNED] [ZEROFILL] : -2147483648 a 2147483647 (unsigned: 0 a 4294967295)INTEGER[(M)] [UNSIGNED] [ZEROFILL] : Sinónimo para INT

Page 22: MySQL Introducción - 200.72.129.100

22

MySQL: Introducción

4 Manual de SQL: Tipos Num4 Manual de SQL: Tipos Numééricos (ii)ricos (ii)

INTEGER[(M)] [UNSIGNED] [ZEROFILL] : Sinónimo para INTBIGINT[(M)] [UNSIGNED] [ZEROFILL] : -9223372036854775808 a 9223372036854775807 (unsigned: 0 a 18446744073709551615)FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] : -3.402823466E+38 a -1.175494351E-38, 0 y 1.175494351E-38 a 3.402823466E+38. El nºaproximado de decimales es 7DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] : -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y 2.2250738585072014E-308 a 1.7976931348623157E+308. El nº aproximado de decimales es 15DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL] : Sinónimos para DOUBLEFLOAT(p) [UNSIGNED] [ZEROFILL]DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] : Un nº en coma fija empaquetado. M<=65, D<=30. Por defecto, D=0, M=10.DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] : Sinónimos para DECIMAL

Page 23: MySQL Introducción - 200.72.129.100

23

MySQL: Introducción

4 Manual de SQL: Tipos Num4 Manual de SQL: Tipos Numééricos (iii)ricos (iii)

Necesidades de almacenamientoNecesidades de almacenamiento:

Page 24: MySQL Introducción - 200.72.129.100

24

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: Tipos Tipos Fecha y HoraFecha y Hora

DATE: Fecha, de '1000-01-01' a '9999-12-31'. MySQL muestra las fechas en el formato 'YYYY-MM-DD' DATETIME: Fecha y hora, de '1000-01-01 00:00:00' a '9999-12-31 23:59:59', en formato 'YYYY-MM-DD HH:MM:SS'TIMESTAMP[(M)]: Un sello temporal, de '1970-01-01 00:00:00' hasta el año 2037, en formato 'YYYY-MM-DD HH:MM:SS'

Útil para recoger la fecha y hora de una operación INSERT o UPDATETIME: Hora, de '-838:59:59' to '838:59:59, en formato 'HH:MM:SS'YEAR[(2|4)]: Año en formato de 2 ó 4 dígitos, de 1901 a 2155, incluido el año 0, en formato 'YYYY'

Necesidades de almacenamientoNecesidades de almacenamiento:

Page 25: MySQL Introducción - 200.72.129.100

25

MySQL: Introducción

4 Manual de SQL: Tipos Cadena (i)4 Manual de SQL: Tipos Cadena (i)

NotaciNotacióónn:M: nº de caracteres

[NATIONAL] CHAR(M) [BINARY | ASCII | UNICODE] : Cadena de longitud fija que se completa con espacios en blanco por la derecha; el rango de M es de 0 a 255[NATIONAL] VARCHAR(M) [BINARY] : Cadena de longitud variable; el rango de M es de 0 a 65535BINARY y VARBINARY son similares pero contienen cadenas binarias, en lugar de cadenas de caracteresBLOB[(M)] : Objeto binario con una longitud máxima de 65535 bytes.

Permite cuatro subtipos: TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOBTEXT[(M)] : Secuencia de caracteres con una longitud máxima de 65535 caracteres

Permite cuatro subtipos: TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXTENUM('value1','value2',...) : Una enumeración. Un objeto de tipo cadena que puede tener un único valor elegido de la lista de valores.SET('value1','value2',...) : Un conjunto. Un objeto cadena que puede tener 0 o más valores, cada uno elegido de la lista de valores.

Page 26: MySQL Introducción - 200.72.129.100

26

MySQL: Introducción

4 Manual de SQL: Tipos Cadena (ii)4 Manual de SQL: Tipos Cadena (ii)

Necesidades de almacenamientoNecesidades de almacenamiento:

Page 27: MySQL Introducción - 200.72.129.100

27

MySQL: Introducción

4 Manual de SQL: Compatibilidad con otros Tipos4 Manual de SQL: Compatibilidad con otros Tipos

Equivalencias con otras BDEquivalencias con otras BD:

Page 28: MySQL Introducción - 200.72.129.100

28

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: Funciones (i)Funciones (i)

Operadores relacionalesOperadores relacionales:>, <, >=, <=, <>, !=, IS NULL, IS NOT NULL

ISNULL(expr)expr BETWEEN min AND max,

expr NOT BETWEEN min AND max…

OperadoresOperadores llóógicosgicos:NOT, !, OR, ||, AND, &&

Funciones de control del flujoFunciones de control del flujo:IF(expr1, expr2, expr3)…

Page 29: MySQL Introducción - 200.72.129.100

29

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: Funciones (ii)Funciones (ii)

Funciones de cadenas de caracteresFunciones de cadenas de caracteres:

CONCAT(str1, str2, …)LENGTH(str)LEFT(str, len)RIGHT(str, len)SUBSTRING(str, pos, len)UCASE(str), UPPER(str), LCASE(str), RCASE(str)…

expr LIKE patpat es el patrón con el que comparar; puede contener dos tipos de comodines:

% coincide con cualquier nº de caracteres, incluido cero caracteres_ coincide exactamente con un caracter

Page 30: MySQL Introducción - 200.72.129.100

30

MySQL: Introducción

4 Manual de SQL: Funciones (iii)4 Manual de SQL: Funciones (iii)

Operaciones aritmOperaciones aritmééticasticas:+, -, *, /

Funciones matemFunciones matemááticasticas:ABS(x), MOD(n, m), SQRT(x), PI(), …

OtrasOtras funcionesfunciones:DATABASE(), USER(), VERSION(), …

Funciones de agregadoFunciones de agregado:AVG: Calculo promedio de los valores de una columnaCOUNT: Nº de filas de la selecciónSUM: Suma de los valores de una columnaMAX, MIN: Valor más alto y más bajo de una columna

Page 31: MySQL Introducción - 200.72.129.100

31

MySQL: Introducción

4 Manual de 4 Manual de SQL:SQL: ManipulaciManipulacióón de n de Datos (i)Datos (i)

SELECTSELECT

select_expression indica las columnas que se quieren recuperar

Se puede incluir cualquier expresión válida

Page 32: MySQL Introducción - 200.72.129.100

32

MySQL: Introducción

4 Manual de SQL: Manipulaci4 Manual de SQL: Manipulacióón de Datos (ii)n de Datos (ii)

INSERTINSERT

Page 33: MySQL Introducción - 200.72.129.100

33

MySQL: Introducción

4 Manual de SQL: Manipulaci4 Manual de SQL: Manipulacióón de Datos (iii)n de Datos (iii)

UPDATE

DELETEDELETE

Page 34: MySQL Introducción - 200.72.129.100

34

MySQL: Introducción

4 Manual de SQL: Definici4 Manual de SQL: Definicióón de Datos (i)n de Datos (i)

Crear y eliminar BDCrear y eliminar BD:

CreaciCreacióón de tablasn de tablas:

Page 35: MySQL Introducción - 200.72.129.100

35

MySQL: Introducción

4 Manual de SQL: Definici4 Manual de SQL: Definicióón de Datos (ii)n de Datos (ii)

Page 36: MySQL Introducción - 200.72.129.100

36

MySQL: Introducción

4 Manual de SQL: Definici4 Manual de SQL: Definicióón de Datos (iii)n de Datos (iii)

Page 37: MySQL Introducción - 200.72.129.100

37

MySQL: Introducción

4 Manual de SQL: Definici4 Manual de SQL: Definicióón de Datos (iv)n de Datos (iv)

ModificaciModificacióón de tablasn de tablas:

Page 38: MySQL Introducción - 200.72.129.100

38

MySQL: Introducción

4 Manual de SQL: Definici4 Manual de SQL: Definicióón de Datos (v)n de Datos (v)

Cambio del nombre de una tablaCambio del nombre de una tabla:

EliminaciEliminacióón de tablasn de tablas:

CreaciCreacióón de n de ííndicendice:

EliminaciEliminacióón de n de ííndicendice:

Page 39: MySQL Introducción - 200.72.129.100

39

MySQL: Introducción

5 5 CaracterCaracteríísticas Avanzadassticas Avanzadas

Utilidad para chequeo, optimización y reparación de tablasDELETE, INSERT, REPLACE y UPDATE devuelven el número de filas afectadasTodos los programas/utilidades permiten la obtención de ayuda en línea (--help o -?)El comando SHOW muestra información sobre BD, tablas e índices

Page 40: MySQL Introducción - 200.72.129.100

40

MySQL: Introducción

6 Herramientas de 6 Herramientas de AdministraciAdministracióónn: : mysqladmin (i)mysqladmin (i)

mysqladminmysqladmin: Una utilidad para realizar operaciones administrativas

Operaciones mOperaciones máás habitualess habituales:Crear BD:

mysqladmin create <nombreBD>Eliminar BD:

mysqladmin drop <nombreBD>Ver el estado de MySQL:

mysqladmin pingmysqladmin status

Detener el servidor:mysqladmin shutdown

Puede ser necesario autentificarse:mysqladmin create <nombreBD> -u root -p

Page 41: MySQL Introducción - 200.72.129.100

41

MySQL: Introducción

6 Herramientas de 6 Herramientas de AdministraciAdministracióónn: : mysqladmin (ii)mysqladmin (ii)

Todas las operacionesTodas las operaciones:

Page 42: MySQL Introducción - 200.72.129.100

42

MySQL: Introducción

6 Herramientas de 6 Herramientas de AdministraciAdministracióónn: : mysql (i)mysql (i)

mysqlmysql: Una consola para ejecutar comandos de SQLPermite un uso interactivo y no interactivo

Comandos mComandos máás habitualess habituales:help,?: Ayudaexit, quit: Saliruse <nombreBD>: Abrir otra BDstatus: Estado del servidorsource <nombreFich>: Ejecuta un fichero con comandos SQL

Page 43: MySQL Introducción - 200.72.129.100

43

MySQL: Introducción

6 Herramientas de 6 Herramientas de AdministraciAdministracióónn: : mysql (ii)mysql (ii)

Todos los comandosTodos los comandos:

Page 44: MySQL Introducción - 200.72.129.100

44

MySQL: Introducción

7 Resumen7 Resumen

Qué hemos aprendido…Sabemos qué es MySQLHemos repasado sus características principales y hemos visto que soporta un SQL extendidoHemos realizado un pequeño tutorial de MySQLHemos repasado el SQL que “entiende” MySQLHemos practicado con dos de sus herramientas principales de consola

Page 45: MySQL Introducción - 200.72.129.100

45

MySQL: Introducción

8 Ejercicios8 Ejercicios

Con mysql:1 Crear una BD alumnos con tres tablas: alumno, asignatura, nota2 Crear una BD personal con la lista de dvds y las cuentas de la casa3 Una vez creadas, mostrar todas las BD con el comando adecuado4 Mostrar todas las tablas de cada BD5 Ver la estructura de las tablas6 Crear un fichero de texto con extensión .sql que contenga instrucciones SQL para insertar algunos datos de ejemplo y ejecutarlo7 Practicar con diferentes select y update desde la línea de órdenes de mysql

Con mysqladmin:8 Estudiar la forma equivalente de crear estas dos BD