Tutorial Mysql - Creando una Base de Datos en MySQL
Tutorial creado por Alvaro Marín Illera alvaro at rigel.deusto.es. Extraido de: http://www.mononeurona.org/index.php?idp=521
27 de Octubre de 2005
SQL, SQL Server
4 - Creando una Base de Datos en MySQL
Vamos a crear una base de datos ejemplo.
Primeramente, creamos elarchivo .sql con todas las sentencias SQL para crear las tablas. Para ello, con nuestro editor favorito, editamos el fichero : CREATE TABLE Usuario (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nick varchar(40) NOT NULL,
email varchar(60),
web varchar(100)
);
CREATE TABLE Mensaje (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
autor int(5) NOT NULL,
fecha date,
texto blob,
padre int(5),
tema int(8),
FOREIGN KEY (autor) REFERENCES Usuario(id),
FOREIGN KEY (tema) REFERENCES Tema(id)
);
CREATE TABLE Tema (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nombre varchar(20) NOT NULL,
descripcion varchar(60)
);
Una vez creado el archivo, se lo pasamos a MySQL: $mysql -u ghost -p BDghost < foros.sql
o si tenemos el .my.cnf anterior creado : mysql < foros.sql
de tal forma, que lo copiará con la base de datos, usuario y pass del archivo .my.cnf.
MySQL acepta un montón de tipos de datos como int(tinyint,smallint,mediumint,bigint),float,double,char,varchar,blob,mediumblob,date,time...
Destacar también el atributo AUTO_INCREMENT, de id por ejemplo. Con esto indicamos, que cada vez que se inserte una fila en la tabla, MySQL asignará un nº al id, que será el posterior al anterioriormente asignado.
De esta forma, tenemos secuencias enteras de ids sin necesitar de "llevar la cuenta" ni nada por el estilo.
Al hacer la insert, será con el valor NULL y MySQL se encarga automáticamente de generarlo. También se puede introducir un valor para saltarse el autoincrement, pero dará error si ya existe. Se puede definir un valor de inicio para el AUTO_INCREMENT, para que empieze a contar desde un valor. Esto se hace asgnadole dicho valor al crear la tabla.
Podemos ver las tablas que acabamos de crear, reconectándonos al servidor y poniendo:
mysql> show tables;
+
+
| Tables_in_BDghost |
+
+
| Mensaje |
| Tema |
| Usuario |
+
+
3 rows in set (0.00 sec)
Para ver la descripción de cada tabla (columnas, tipos...), tenemos el comando desc o describe. Por ejemplo: mysql> describe Usuario;
+
+
+
+
+
+
+
| Field | Type | Null | Key | Default | Extra |
+
+
+
+
+
+
+
| id | int(8) | | PRI | NULL | auto_increment |
| nick | varchar(40) | | | | |
| email | varchar(60) | YES | | NULL | |
| web | varchar(100) | YES | | NULL | |
+
+
+
+
+
+
+
4 rows in set (0.00 sec)
mysql> desc Mensaje;
+
+
+
+
+
+
+
| Field | Type | Null | Key | Default | Extra |
+
+
+
+
+
+
+
| id | int(8) | | PRI | NULL | auto_increment |
| autor | int(5) | | | 0 | |
| fecha | date | YES | | NULL | |
| texto | blob | YES | | NULL | |
| padre | int(5) | YES | | NULL | |
| tema | int(8) | YES | | NULL | |
+
+
+
+
+
+
+
6 rows in set (0.00 sec)
Explicado esto, podemos hacer las correspondientes inserts a las tablas, por ejemplo:
mysql>insert into Usuario values(NULL,"split","split77@terra.es","http://split.no-ip.org");---mysql>insert∞ into Tema values(NULL,"GNU/Linux","Tema sobre GNU/Linux");
mysql>insert into Mensaje values(NULL,1,now(),"Primer mensaje",NULL,1);
mysql>insert into Usuario values(NULL,"cicatriz","cicatriz@enlamatriz.org","");
mysql>insert into Mensaje values(NULL,1,now(),"Segundo Mensaje",NULL,1);
Para hacer una consulta sencilla de todos los mensajes que ha escrito split, hacemos: mysql> select Mensaje.texto from Mensaje,Usuario where Usuario.id=Mensaje.autor and Usuario.nick="split";
+
+
| texto |
+
+
| Primer mensaje |
| Segundo Mensaje |
+
+
2 rows in set (0.01 sec)
Primeramente, creamos elarchivo .sql con todas las sentencias SQL para crear las tablas. Para ello, con nuestro editor favorito, editamos el fichero : CREATE TABLE Usuario (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nick varchar(40) NOT NULL,
email varchar(60),
web varchar(100)
);
CREATE TABLE Mensaje (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
autor int(5) NOT NULL,
fecha date,
texto blob,
padre int(5),
tema int(8),
FOREIGN KEY (autor) REFERENCES Usuario(id),
FOREIGN KEY (tema) REFERENCES Tema(id)
);
CREATE TABLE Tema (
id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nombre varchar(20) NOT NULL,
descripcion varchar(60)
);
Una vez creado el archivo, se lo pasamos a MySQL: $mysql -u ghost -p BDghost < foros.sql
o si tenemos el .my.cnf anterior creado : mysql < foros.sql
de tal forma, que lo copiará con la base de datos, usuario y pass del archivo .my.cnf.
MySQL acepta un montón de tipos de datos como int(tinyint,smallint,mediumint,bigint),float,double,char,varchar,blob,mediumblob,date,time...
Destacar también el atributo AUTO_INCREMENT, de id por ejemplo. Con esto indicamos, que cada vez que se inserte una fila en la tabla, MySQL asignará un nº al id, que será el posterior al anterioriormente asignado.
De esta forma, tenemos secuencias enteras de ids sin necesitar de "llevar la cuenta" ni nada por el estilo.
Al hacer la insert, será con el valor NULL y MySQL se encarga automáticamente de generarlo. También se puede introducir un valor para saltarse el autoincrement, pero dará error si ya existe. Se puede definir un valor de inicio para el AUTO_INCREMENT, para que empieze a contar desde un valor. Esto se hace asgnadole dicho valor al crear la tabla.
Podemos ver las tablas que acabamos de crear, reconectándonos al servidor y poniendo:
mysql> show tables;
+
+
| Tables_in_BDghost |
+
+
| Mensaje |
| Tema |
| Usuario |
+
+
3 rows in set (0.00 sec)
Para ver la descripción de cada tabla (columnas, tipos...), tenemos el comando desc o describe. Por ejemplo: mysql> describe Usuario;
+
+
+
+
+
+
+
| Field | Type | Null | Key | Default | Extra |
+
+
+
+
+
+
+
| id | int(8) | | PRI | NULL | auto_increment |
| nick | varchar(40) | | | | |
| email | varchar(60) | YES | | NULL | |
| web | varchar(100) | YES | | NULL | |
+
+
+
+
+
+
+
4 rows in set (0.00 sec)
mysql> desc Mensaje;
+
+
+
+
+
+
+
| Field | Type | Null | Key | Default | Extra |
+
+
+
+
+
+
+
| id | int(8) | | PRI | NULL | auto_increment |
| autor | int(5) | | | 0 | |
| fecha | date | YES | | NULL | |
| texto | blob | YES | | NULL | |
| padre | int(5) | YES | | NULL | |
| tema | int(8) | YES | | NULL | |
+
+
+
+
+
+
+
6 rows in set (0.00 sec)
Explicado esto, podemos hacer las correspondientes inserts a las tablas, por ejemplo:
mysql>insert into Usuario values(NULL,"split","split77@terra.es","http://split.no-ip.org");---mysql>insert∞ into Tema values(NULL,"GNU/Linux","Tema sobre GNU/Linux");
mysql>insert into Mensaje values(NULL,1,now(),"Primer mensaje",NULL,1);
mysql>insert into Usuario values(NULL,"cicatriz","cicatriz@enlamatriz.org","");
mysql>insert into Mensaje values(NULL,1,now(),"Segundo Mensaje",NULL,1);
Para hacer una consulta sencilla de todos los mensajes que ha escrito split, hacemos: mysql> select Mensaje.texto from Mensaje,Usuario where Usuario.id=Mensaje.autor and Usuario.nick="split";
+
+
| texto |
+
+
| Primer mensaje |
| Segundo Mensaje |
+
+
2 rows in set (0.01 sec)
Valora este capítulo:
Autor y licencia de 'Tutorial Mysql - Creando una Base de Datos en MySQL'
|
Opiniona sobre 'Tutorial Mysql - Creando una Base de Datos en MySQL' (5)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Tutorial Mysql - Creando una Base de Datos en MySQL'
La instalación de estos programas es muy fácil, PHP y MySQL vienen comprimidos en formato...
Más »
Aquí dejo una clase que hice hace tiempo para tratar bases de datos MYSQL.
Una base de datos es sencillamente un conjunto de tablas en las que almacenamos
distintos...
Más »
Un servidor web (apache) es un programa que permite que otros ordenadores vean tu web...
Más »
Pues como he añadido una nueva sección para tratar MySQL he tenido que crearme un...
Más »


