Manual MySQL

Embed Size (px)

Citation preview

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 INSTALACIN Si exista alguna versin anterior hemos de eliminar el servicio primero Opciones a elegir al instalar por primera vez o Tpica, Skip Sign-up o Configure MySQL Server now Standard Configuration Install as windows service Modify Security Settings Password para el root: conchi Aadir un usuario annimo (para el ODBC) Para cambiar la configuracin inicial (solamente si nos falta algo o para comprobar el servicio, password, etc...): Inicio Programas MySQL MYSQL Server 4.1 MySQL Instance Config Wizard o Detener el servicio (por defecto se llama MySQL) Lo mejor es ponerlo manual y reiniciar el ordenador o Optimizar configuracin

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

o Detailed Configuration, Developer Machine, Multifunctional, Decision Support

Crear adems del root (superusuario), una cuenta annima para el ODBC.

C.P.G. 2005

1

C.P.G. 2005

2

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 Arrancar el servidor segn lo que necesitemos Por defecto el servidor de MySQL se instala en: dir_mysql C:\Archivos de Programa\MySQL\MySQL Server 4.1 Los ficheros que acabamos de mencionar estn en el directorio bin de dir_mysql, as que lo primero es cambiarse a l desde MSDOS con CD \dir_mysql\BIN. Una vez all: c:\dir_mysql\bin > Comprobar que ha sido arrancado c:\dir_mysql\bin > MYSQLADMIN PING Si ha sido arrancado saldr el mensaje mysqld is alive Parar el servidor c:\dir_mysql\bin > MYSQLADMIN SHUTDOWN Nota: Desde Windows el arranque y la parada son automticos.

Elegir cp850 para que admita los caracteres especiales del castellano (acentos, ees,...) en el servidor (variables character_set_database y character_set_server)

CARACTERSTICAS Y AYUDA Caractersticas ms relevantes de esta versin - Acepta subconsultas (las versiones anteriores no). - No estn implementadas las vistas (instruccin CREATE VIEW). - En Mysql existen distintos tipos de tablas. Utilizaremos dos: MyISAM e InnoDB. Con las tablas de tipo MyISAM no se lleva a cabo la comprobacin de la integridad referencial aunque se permite la declaracin de claves externas en la instruccin CREATE TABLE. La comprobacin de integridad referencial, as como el borrado/actualizacin en cascada y opciones afines se realiza exclusivamente en las tablas de tipo InnoDB. Ayuda sobre mysql No existe ayuda en lnea sobre las instrucciones de mysql. El manual de referencia "MySQL Reference Manual for version 4.1.7" est en Inicio Programas MySQL MySQL Server 4.1 MySQL Manual- Table Of Contents PASOS PARA TRABAJAR CON MYSQL Hemos de dar los siguientes pasos por orden (desde MSDOS o Windows): 1. Arrancar el Servidor de MySQL (demonio) que vamos a utilizar 2. Entrar en MySQL 3. Trabajar con MySQL 4. Salir de MySQL 5. Parar el servidor ARRANCAR / COMPROBAR / PARAR EL SERVIDOR DESDE MS-DOS Eleccin del demonio (Servidor de MySQL) Cada fichero mysqld*.exe tiene unas opciones distintas, la eleccin de uno de ellos depende de las acciones a realizar. Los ficheros ms comnmente utilizados son: Nombre fichero demonio mysqld-nt mysqld-max-nt Acciones Uso de tablas MyISAM exclusivamente. Uso de tablas InnoDB y BDB adems de MyISAM.

TRABAJANDO CON MYSQL ENTRAR/SALIR Entrar en mysql desde MS-DOS Para entrar en mysql previamente ha de estar arrancado el servidor correspondiente (mysqld-nt mysql-max-nt). Una vez arrancado se entra con: c:\dir_mysql\bin > MYSQL Si tenemos asignado un nombre de usuario con una password se puede entrar tambin con c:\dir_mysql\bin > mysql -h localhost -u -p Entrar en mysql desde Windows El servidor se arranca automticamente como servicio MySQL. Para entrar: Inicio Programas MySQL MySQL Server 4.1 MySQL command line client A continuacin nos pedir la password Enter password: Cuando se entra sale un mensaje de ayuda y el prompt cambia a mysql > Salir de mysql mysql > QUIT COMANDOS ESPECFICOS DE MYSQL Ver el estado de MySQL (qu usuario somos, qu BD estamos usando, etc...) mysql > STATUS Mostrar las BDs existentes mysql> SHOW DATABASES; Usar una BD existente (BD actual) mysql > USE nombre_de_la_BD Mostrar las tablas de la BD actual mysql > SHOW TABLES; Mostrar los campos de una tabla mysql > DESCRIBE nombre_tabla; Mostrar la instruccin de creacin de una tabla mysql > SHOW CREATE TABLE nombre_tabla; Aqu se puede saber el tipo de tabla (defecto InnoDB) y el charset (defecto latin1) Importar datos a una tabla desde un fichero de texto

C.P.G. 2005

3

C.P.G. 2005

4

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 mysql > LOAD DATA INFILE 'nombre_fichero.txt' INTO TABLE nombre_tabla (campo1, campo2,...,campon); El fichero de texto a importar ha de estar en el directorio de esa base de datos que es C:\dir_mysql\DATA\carpeta_con_el_nombre_de_la_BD\ Si el fichero de texto a importar est en otro directorio, hemos de poner su ruta completa al estilo UNIX (esdecir, separando las distintas carpetas con /). Ejemplo: C:/fichero.txt Ejecutar scripts sobre la BD mysql > SOURCE ruta_completa_del_fichero_de_script Los ficheros de script son ficheros de texto que contienen instrucciones en SQL. Los ficheros de script tienen la extensin .sql . Ejemplo: source A:\practicasBD\consul1.sql Grabar la sesin en un fichero mysql> TEE nombre_fichero.TXT Ejemplo: TEE C:\FIC1.TXT Para que deje de grabar: NOTEE (Si despus ponemos simplemente TEE sigue aadiendo al fichero anterior) o quit Comentarios Dos guiones al principio de la lnea mysql> -- Consulta 1 Tambin sirven al estilo de C en cualquier parte de las instrucciones

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

Variable_name have_bdb have_crypt have_innodb have_isam have_raid have_symlink have_openssl have_query_cache CREACIN DE REFERENCIAL TABLAS QUE

Value YES NO YES YES NO YES NO YES LA INTEGRIDAD

SOPORTAN

/* .... */

1. Las tablas creadas han de ser del tipo InnoDB Esto se consigue poniendo al final de la instruccin CREATE TABLE la sentencia TYPE=InnoDB. 2. Han de estar definidos ndices en las claves externas y en las primarias a las que se hace referencia. En una clave primaria el ndice se genera de forma automtica. En una clave externa hemos de definir el ndice en la instruccin CREATE TABLE antes de la clasula FOREIGN KEY. La clusula que define un ndice es: INDEX (campo1, campo2,...), Solo hace falta en versiones anteriores YA NO Ejemplo: Supongamos las tablas TAB1 y TAB2 que contienen los siguientes campos y datos TAB1 cam11 1 2 3 TAB2 cam21 'A' 'B' 'X' 'Y' 'Z' 'C'

COMANDOS DEL ESTNDAR SQL Siguen la sintaxis del estndar SQL92. Las instrucciones acaban con ; Por ejemplo, para crear una tabla nueva dentro de la BD actual se sigue la sintaxis de la instruccin CREATE TABLE de SQL92

CONVENCIONES UTILIZADAS PARA LA SINTAXIS DE LOS COMANDOS DE SQL A la hora de indicar la sintaxis de los distintos comandos de SQL se han seguido las convenciones descritas en la siguiente tabla: SIMBOLO SIGNIFICADO Palabra en MAYSCULAS Palabra reservada de SQL Palabra en minsculas A sustituir por lo que sea pertinente Corchetes [ ] Opcional de 0 a 1 veces Llaves { } Elegir una de las opciones que aparezcan dentro Barra vertical | Separa las distintas opciones (como un O lgico) P. suspensivos ... Repeticin de lo que aparezca justo antes de los puntos suspensivos

cam12 'pepe' 'juan' 'ana'

cam22 1 1 2 2 2 3

El campo cam22 de TAB2 es una CE sobre la CP cam11 de TAB1

Para que se compruebe la integridad referencial y se puedan establecer las opciones de actualizacin/borrado en cascada han de ser creadas de tipo InnoDB. Creacin de TAB1 CREATE TABLE tab1 (cam11 int not null, cam12 varchar(20), PRIMARY KEY (cam11) ) TYPE=InnoDB; Creacin de TAB2 CREATE TABLE tab2 (cam21 char not null, cam22 int, PRIMARY KEY (cam21), INDEX (cam22), ya se hace automticamente FOREIGN KEY (cam22) REFERENCES tab1(cam11) ON UPDATE CASCADE ON DELETE CASCADE ) TYPE=InnoDB;

USO DE MYSQL CON COMPROBACIN DE INTEGRIDAD REFERENCIAL Para comprobar que estn activadas las tablas de tipo InnoDB desde el prompt de mysql : mysql > SHOW VARIABLES LIKE 'have_%'; C.P.G. 2005 5 C.P.G. 2005

6

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

Para probar el funcionamiento: 1. Crear las tablas tab1 y tab2 con los datos indicados anteriormente. 2. Intentar introducir los valores ('H',8) en tab2 INSERT INTO tab2 VALUES ('H',8); 3. Cambiar la clave 3 en tab1 por 30 UPDATE tab1 SET cam11=30 WHERE cam11=3; 4. Borrar la fila correspondiente a la clave 2 de tab1 DELETE FROM tab1 WHERE cam11=2;

Para comprobar que funciona la conexin. Ha de estar arrancado el servidor de MySQL.

FUNCIONAMIENTO DEL ODBC ENTRE MS ACCESS Y MYSQL INSTALACIN DE ODBC Ejecutar el archivo llamado myodbc-standard-3.51.9-win.exe (en general myodbcXXX.exe) Despus se puede cambiar (configurar) segn nos convenga. COMPROBAR QUE HA SIDO INSTALADO Ir al Administrador de orgenes de datos ODBC: Inicio Configuracin Panel de control Herramientas administrativas Orgenes de datos (ODBC) En la Ventana siguiente nos fijamos que exista el controlador de MySQL...

CREAR NOMBRES DE FUENTES DE DATOS DSN (Data Source Names) Ir de nuevo al Administrador de orgenes de datos ODBC: Inicio Configuracin Panel de control Herramientas administrativas Orgenes de datos (ODBC) Vamos a crear como ejemplo una entrada nueva para DSN de archivo entre MySQL y cualquier otro programa con ODBC.

Para que se pueda crear un DSN Ha de estar creado un usuario annimo

C.P.G. 2005

7

C.P.G. 2005

8

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

Dejarlo en blanco para que podamos elegir la BD de MySQL desde/a la que vamos a traer/llevar.

Nos inventamos un nombre.

se crea el nuevo DSN de archivo

C.P.G. 2005

9

C.P.G. 2005

10

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

PASAR DATOS DE MSACCESS A UNA BD DE MYSQL 1. Hemos de tener arrancado el servidor de MySQL 2. Hemos de haber creado en mysql la BD a la que queremos llevar las tablas de Access. Doble clic aqu

3. Abrimos la BD Access en la que se encuentran los datos a llevar a MySQL (exportar) y seleccionamos la tabla que vamos a exportar

4. Archivo

Guardar como o exportar...

Aparece la pantalla de la configuracin original, en la que rellenamos/modificamos los datos oportunos. Por lo menos, deberemos indicar la BD de MySQL que vamos a usar ,as como el usuario y la password si es que los tenemos.

En la siguiente ventana casilla Guardar como tipo seleccionar Bases de datos ODBC A continuacin, ponemos el nombre a la tabla en MySQL (por defecto el mismo)

Nombre de la BD de MySQL

Elegimos el origen de los datos DSN de archivo desde hacia BD MySQL (el que acabamos de crear)

Tambin se pueden cambiar las opciones pulsando el botn Options.

C.P.G. 2005

11

C.P.G. 2005

12

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 Si volvemos a MySQL veremos que en la BD universidad creada al principio ahora hay una nueva tabla (la de alumno que acabamos de exportar).

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 6. Al seleccionar y hacer clic en Aceptar aparece la pantalla de la configuracin original, en la que rellenamos/modificamos los datos oportunos. Por lo menos, deberemos indicar la BD de MYSQL que vamos a usar ( la BD que contiene las tablas que queremos traer),as como el usuario y la password si es que los tenemos. 7. Aparece la siguiente ventana Importar objetos en la que seleccionamos las tablas de MySQL que queremos traer a Access. 8. La tabla/tablas seleccionada/s pasarn a la BD abierta en MS Access.

Para que no ocurra esto, hemos de cambiar el character set de MySQL, de latin1 (por defecto) a cp850 (que admite , acentos,...)

Para que admita acentos, ees etc... al crear campos, exportar/importar, etc... mysql>SET NAMES cp850 Cambia a cp850 los valores de las variables character_set_client, character_set_connection, character_set_results. mysql>SET CHARACTER SET cp850 Por otro lado, si los nombres de las tablas, atributos, etc tienen blancos en ACCESS, al pasarlos seguirn conservando esos blancos. Para poder acceder a ellos deberemos encerrar el nombre entre acentos graves `(tecla corchete de abrir). Ejemplo: SELECT `Codigo alumno` FROM ALUMNO; Al exportar se han perdido las claves primarias de las tablas. Hay que ponerlas. Para ello: 1. Todos los campos que forman la clave primaria han de ser NOT NULL. As, para cada campo que forme parte de la clave haremos: ALTER TABLE nombre_tabla MODIFY nombre_campo tipo_campo NOT NULL; 2. Despus se indica la clave primaria con: ALTER TABLE nombre_tabla ADD PRIMARY KEY (campo,...); PASAR A MSACCESS TABLAS Y DATOS DE UNA BD DE MYSQL 1. Hemos de tener arrancado el servidor de MySQL 2. Hemos de haber abierto/creado en Access la BD a la que queremos traer las tablas desde MySQL. 3. Comenzamos la importacin de las tablas con: Archivo Obtener Datos externos Importar 4. En la siguiente ventana, en la casilla Tipo de archivo seleccionamos Bases de datos ODBC 5. En la ventana que aparece a continuacin seleccionamos la pestaa Origen de datos de archivo y la conexin DSN creada antes llamada Desde hacia BD MySQL. C.P.G. 2005 13 C.P.G. 2005 14

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

SINTAXIS DE SQL92: LDD Y ACTUALIZACIN DE DATOS Crear una nueva BD (CREATE DATABASE) CREATE DATABASE [IF NOT EXISTS] db_name Borrar una BD existente (DROP DATABASE) DROP DATABASE [IF EXISTS] db_name Crear una nueva tabla (CREATE TABLE) CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] ; create_definition es una de las siguientes opciones: a) col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] b) PRIMARY KEY (index_col_name,...) c) UNIQUE [INDEX] [index_name] (index_col_name,...) d) INDEX [index_name] (index_col_name,...) e) [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] f) CHECK (expr) type: INT[(length)] [UNSIGNED] [ZEROFILL] REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] CHAR(length) [BINARY] VARCHAR(length) [BINARY] DATE Fecha con formato 'YYYY-MM-DD' TIME Hora con formato 'HH:MM:DD' DATETIME Fecha y hora con formato 'YYYY-MM-DD HH:MM:SS' TIMESTAMP Marca de tiempo 'YYYYMMDDHHMMSS' index_col_name: col_name [(length)] reference_definition: REFERENCES tbl_name [(index_col_name,...)] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT table_options: TYPE = { InnoDB | MYISAM }

Cambiar la estructura de una tabla (ALTER TABLE) ALTER TABLE tbl_name alter_spec [, alter_spec ...] Donde `alter_spec' es una de las siguientes opciones: a) ADD [COLUMN] create_definition [FIRST | AFTER col_name ] b) ADD PRIMARY KEY (index_col_name,...) c) ADD UNIQUE [index_name] (index_col_name,...) d) ADD INDEX [index_name] (index_col_name,...) e) ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] f) ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} g) DROP [COLUMN] col_name h) DROP PRIMARY KEY i) MODIFY [COLUMN] create_definition [FIRST | AFTER column_name] j) table_options Borrar datos y definicin de una tabla (DROP) DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE] Crear un ndice (CREATE INDEX) CREATE INDEX index_name ON tbl_name (col_name[(length)],... ) Borrar un ndice (DROP INDEX) DROP INDEX index_name ON tbl_name

Insertar nuevos valores en una tabla (INSERT) INSERT [INTO] tbl_name [(col_name,...)] VALUES ((expression | DEFAULT),...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expression, ... ] or INSERT [INTO] tbl_name [(col_name,...)] SELECT ...

C.P.G. 2005

15

C.P.G. 2005

16

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 Modificar datos de una tabla (UPDATE) UPDATE tbl_name [, tbl_name ...] SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] Borrar datos de una tabla (DELETE) DELETE FROM table_name [WHERE where_definition]

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

Funciones agregadas (condicionadas por la clusula GROUP BY) COUNT(expr) Devuelve la cuenta del nmero de valores no NULL de las filas recuperadas por la SELECT. COUNT(*) Devuelve el contador del nmero de filas recuperadas aunque tengan valores NULL. COUNT(DISTINCT expr,[expr...]) Devuelve el contador del nmero de valores no NULL diferentes. mysql> SELECT COUNT(DISTINCT especialidad) FROM alumno; AVG(expr) Devuelve la media de expr mysql> SELECT nombre_alumno, AVG(nota) -> FROM alumno -> GROUP BY nombre_alumno; MIN(expr) MAX(expr) Devuelve el mnimo o mximo de expr. El atributo expr puede ser un string. SUM(expr) Devuelve la suma de expr. Si el conjunto a sumar no tuviera filas devuelve NULL.

SINTAXIS DE SQL92: LMD CONSULTAS Realizar consultas (SELECT) SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references [WHERE where_definition] [GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] ] Donde `select_expression' es un nombre de columna, frmula o funcin agregada y `where_definition' es una condicin o combinacin de condiciones mediante operadores lgicos AND y OR. Reuniones entre tablas (JOIN) Una reunin va en la clusula FROM de una SELECT y puede corresponderse con uno de estos tipos: a) table_ref, table_ref b) table_ref [CROSS] JOIN table_ref c) table_ref INNER JOIN table_ref join_condition d) table_ref NATURAL [LEFT [OUTER]] JOIN table_ref e) table_ref NATURAL [RIGHT [OUTER]] JOIN table_ref f) table_ref LEFT [OUTER] JOIN table_ref join_condition g) table_ref RIGHT [OUTER] JOIN table_ref join_condition Donde `table_ref' se define como: table_name [[AS] alias] y `join_condition' se define como: ON conditional_expr | USING (column_list)

Funciones bsicas de fechas y horas Fecha actual en formato YYYY-MM-DD Hora actual en formato HH:MM:SS Fecha y hora actual en formato YYYY-MM-DD HH:MM:SS N de das desde el ao 0. Por ej. para poder calcular los das transcurridos entre dos fechas. curdate() CURRENT_DATE curtime() CURRENT_TIME now() sysdate() CURRENT_TIMESTAMP TO_DAYS(fecha) donde fecha es cualquier dato de tipo fecha (DATE, DATETIME TIMESTAMP)

NOTA: Si queremos que en un campo de una tabla aparezcan por defecto la fecha y hora actual, al crear la tabla pondremos ese campo como tipo TIMESTAMP.

C.P.G. 2005

17

C.P.G. 2005

18

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000 Ms funciones de fechas y horas Extraccin de partes de una fecha: Ao Mes Da del mes Da de la semana en nmero, en plan: 1. Domingo 2. Lunes 3. Martes ... 7. Sbado Da de la semana en letra Extraccin de partes de una hora: Hora Minutos Segundos HOUR(hora) MINUTE(hora) SECOND(hora) YEAR(fecha) MONTH(fecha) DAYOFMONTH(fecha) DAYOFWEEK(fecha)

MANUAL BSICO DE MYSQL 4.1.7 PARA WINDOWS 2000

NOTA IMPORTANTE: Esta versin de MySQL presenta un fallo al realizar la reunin natural NATURAL JOIN. Si las tablas a reunir estn separadas, realiza un PRODUCTO CARTESIANO, con lo que los resultados obtenidos sern errneos. Para que la reunin natural entre T1 y T2 se realice correctamente hemos de poner T1 NATURAL JOIN T2, es decir, si pusisemos (T1 NATURAL JOIN T3) NATURAL JOIN T2 la ltima reunin natural se realizara entre T3 y T2 y, si las dos tablas no tienen campos comunes se hara un producto cartesiano. DAYNAME(fecha)

Aadir o quitar un intervalo de tiempo a una fecha/hora DATE_ADD(fecha, INTERVAL incremento tipo) Donde: Incremento: Puede ser + para aadir para quitar Tipo: Puede ser YEAR, MONTH,DAY, HOUR, MINUTE SECOND.

C.P.G. 2005

19

C.P.G. 2005

20