sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear y eliminar bases de datos y tablas en MySQL


Introducción

MySQL mantiene los datos que administra dentro de tablas y bases de datos. Las tablas almacenan datos dentro de esquemas predefinidos de columnas y tipos de datos. Las bases de datos son una estructura que puede contener múltiples tablas, índices, procedimientos y ayudar a definir un alcance para privilegios, personalizaciones y más.

En esta guía, le mostraremos cómo crear tablas y bases de datos en MySQL. Le mostraremos cómo administrar algunas funciones de ambas estructuras y luego cubriremos cómo eliminarlas para limpiarlas si ya no las necesita.



Requisitos previos

Para seguir esta guía, deberá iniciar sesión en un servidor MySQL con un usuario con privilegios administrativos utilizando mysql cliente de línea de comandos.

Si no desea iniciar sesión con el root Cuenta administrativa de MySQL, su usuario necesitará al menos el CREATE privilegio de realizar las acciones descritas en esta guía.

Puede comprobar los privilegios disponibles de su usuario escribiendo:

SHOW GRANTS\G


¿Cómo se crea una nueva base de datos?

Lo primero que demostraremos es cómo crear una nueva base de datos. En MySQL, las bases de datos contienen tablas, índices, procedimientos y otros recursos que normalmente están relacionados con un solo proyecto. Cada uno de esos recursos debe crearse dentro de una base de datos, por lo que aprender a crear una nueva base de datos es un buen primer paso.

La sintaxis básica utilizada para crear una nueva base de datos se ve así:

CREATE DATABASE <db_name>;

Reemplazar <db_name> con el nombre que le quieras dar a tu base de datos antes de ejecutar el comando. Este comando creará una base de datos con el nombre dado y establecerá al usuario actual como propietario de la nueva base de datos.

La base de datos utilizará los valores predeterminados de todo el sistema para el conjunto de caracteres, la intercalación y las propiedades de cifrado:

  • CONJUNTO DE PERSONAJES: establece el juego de caracteres para la nueva base de datos. Esta es una opción de localización que afecta qué caracteres se consideran mayúsculas, minúsculas y dígitos.
  • COLOCAR: establece la colección , o orden de clasificación para la base de datos. Esta es una opción de localización que determina cómo se organizan los artículos cuando se ordenan.
  • CIFRADO: establece el cifrado para la nueva base de datos. Esta es una opción booleana que puede ser 'Y' para sí o 'N' para no.

Puede encontrar los conjuntos de caracteres disponibles para su instalación escribiendo:

SHOW CHARACTER SET;

Asimismo, puede encontrar las intercalaciones disponibles escribiendo:

SHOW COLLATION;

Si desea especificar un valor no predeterminado para uno de estos parámetros, puede hacerlo agregándolos después de la declaración de creación principal como esta:

CREATE DATABASE <db_name>  CHARACTER SET = 'utf8mb4'  COLLATE = 'utf8mb4_0900_ai_ci'  ENCRYPTION = 'Y';

Para seguir los ejemplos de esta guía, cree una base de datos llamada school utilizando la configuración regional predeterminada de su instancia y el juego de caracteres UTF8:

CREATE DATABASE school CHARACTER SET = 'utf8mb4';

Esto creará su nueva base de datos utilizando las especificaciones que proporcionó.



Lista de bases de datos existentes

Para listar las bases de datos que están disponibles en su servidor, escriba:

SHOW DATABASES;

Esto enumerará cada una de las bases de datos actualmente definidas dentro del entorno:

+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Puede verificar que la configuración que proporcionó se aplicó a la nueva school base de datos usando SHOW CREATE DATABASE comando:

SHOW CREATE DATABASE school;

La salida mostrará el comando y las opciones utilizadas para crear la base de datos, completando las opciones con los valores predeterminados aplicados:

+----------+----------------------------------------------------------------------------------------------------------------------------------+  Database | Create Database                                                                                                                  |+----------+----------------------------------------------------------------------------------------------------------------------------------+  school   | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)


Cómo cambiar a una base de datos diferente en MySQL

Una vez que haya creado su base de datos, puede trabajar con ella de diferentes maneras.

La primera opción es especificar la base de datos como argumento en cada comando que utilice. Sin embargo, para ahorrar tiempo si está ejecutando varios comandos relacionados con los objetos de la base de datos, también puede "cambiar a" o "usar" la base de datos para configurar su nueva base de datos como el contexto predeterminado para cualquier comando relacionado con la base de datos que ejecutará. .

Para cambiar a una base de datos diferente, escriba:

USE <db_name>;

En nuestro caso, podemos cambiar a la school base de datos que creamos escribiendo:

USE school;


Crear tablas dentro de bases de datos

Una vez que haya creado una base de datos, puede definir tablas y otros objetos dentro para almacenar y administrar sus datos. En MySQL, las tablas constan de un nombre de tabla, las definiciones de columna (que a su vez incluyen nombres, tipos de datos y restricciones, entre otros) y opciones de tabla.


¿Cuál es la sintaxis de CREATE TABLE de MySQL? comando?

La sintaxis básica para crear tablas usando CREATE TABLE de MySQL el comando se ve así:

CREATE TABLE <table_name> (    <column_name> <data_type> [<column_constraint>],    [<table_constraint>,]);

Podemos dividir la plantilla de comando anterior en los siguientes componentes:

  • CREATE TABLE <table_name> :La declaración de creación básica. El <table_name> el marcador de posición debe reemplazarse con el nombre de la tabla que desea usar.
  • <column_name> <data_type> :Define una columna básica dentro de la tabla. El <column_name> el marcador de posición debe reemplazarse con el nombre que desea usar para su columna. El <data_type> especifica el tipo de datos MySQL de la columna. Los datos almacenados en la tabla deben ajustarse a la estructura de la columna y los tipos de datos de la columna para ser aceptados.
  • <column_constraint> :Las restricciones de columna son restricciones opcionales que agregan requisitos adicionales para los datos. Por ejemplo, puede exigir que las entradas no sean enteros nulos, únicos o positivos.
  • <table_constraint> :Las restricciones de tabla son similares a las restricciones de columna, pero implican la interacción de varias columnas. Por ejemplo, podría tener una restricción de tabla que verifique que un DATE_OF_BIRTH es anterior a DATE_OF_DEATH en una tabla.


¿Cómo se crean tablas solo si aún no existen?

El comportamiento predeterminado de MySQL es generar un error si intenta crear una tabla que ya existe. Sin embargo, el IF NOT EXISTS opcional se puede agregar una cláusula a la declaración de creación para anular este comportamiento.

Puedes usar el IF NOT EXISTS cláusula insertándola en el comando después de CREATE TABLE frase pero antes del nombre de la tabla:

CREATE TABLE IF NOT EXISTS table_name (    column_name TYPE [column_constraint],    [table_constraint,]);

Esto modificará el comportamiento del comando de la siguiente manera:si el nombre de la tabla especificada ya existe, MySQL generará una advertencia en lugar de un error. El resto del comportamiento del comando sigue siendo el mismo.



Creando tablas dentro de bases de datos MySQL

La plantilla de comando dada arriba es suficiente para crear tablas básicas. Para avanzar en nuestro ejemplo, crearemos dos tablas en nuestra school base de datos. Una tabla se llamará supplies y el otro se llamará teachers :

En los supplies tabla, incluiremos los siguientes campos:

  • id: Una identificación única para cada tipo de material escolar.
  • nombre: El nombre de un artículo escolar específico.
  • descripción: Una breve descripción del artículo.
  • fabricante: El nombre del fabricante del artículo.
  • color: El color del artículo.
  • inventario: La cantidad de artículos que tenemos para cierto tipo de útiles escolares. Esto nunca debe ser menor que 0.

Podemos crear los supplies tabla con las cualidades anteriores usando el siguiente SQL:

CREATE TABLE supplies (  id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(255),  description VARCHAR(255),  manufacturer VARCHAR(255),  color VARCHAR(255),  inventory INT CHECK (inventory >= 0));

Esto creará los supplies tabla dentro de la school base de datos. La PRIMARY KEY La restricción de columna es una restricción especial que se utiliza para indicar columnas que pueden identificar de forma única los registros dentro de la tabla. Como tal, la restricción especifica que la columna no puede ser nula y debe ser única. MySQL crea índices para columnas de clave principal para aumentar la velocidad de consulta.

Verifique que la nueva tabla esté presente escribiendo:

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |+------------------+1 row in set (0.01 sec)

Puede verificar que el esquema refleja su definición escribiendo:

SHOW CREATE TABLE supplies\G
*************************** 1. row ***************************       Table: suppliesCreate Table: CREATE TABLE `supplies` (  `id` int NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `description` varchar(255) DEFAULT NULL,  `manufacturer` varchar(255) DEFAULT NULL,  `color` varchar(255) DEFAULT NULL,  `inventory` int DEFAULT NULL,  PRIMARY KEY (`id`),  CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec

Las columnas, los tipos de datos y las restricciones que especificamos están presentes en la salida, aunque el orden y la visualización pueden ser diferentes.

Luego, crea un teachers mesa. En esta tabla, las siguientes columnas deben estar presentes:

  • identificación :Un número de identificación de empleado único.
  • nombre :El nombre del profesor.
  • apellido :El apellido del profesor.
  • tema :La materia que el profesor es contratado para enseñar.
  • nivel_de_grado :El nivel de grado de los estudiantes para los que el profesor está contratado para enseñar.

Crear los teachers tabla con el esquema anterior con el siguiente SQL:

CREATE TABLE teachers (  id INT AUTO_INCREMENT PRIMARY KEY,  first_name VARCHAR(255),  last_name VARCHAR(255),  subject VARCHAR(255),  grade_level INT);


Cómo crear tablas con claves primarias y claves foráneas

Puede encontrar información sobre cómo crear tablas con claves primarias y externas en algunas de nuestras otras guías de MySQL. Las claves primarias y las claves externas son tipos de restricciones de bases de datos dentro de MySQL.

Una clave principal es una columna o columna especial que se garantiza que es única en todas las filas dentro de la misma tabla. Todas las claves primarias se pueden usar para identificar de forma única una fila específica. Las claves primarias no solo garantizan que cada fila tenga un valor único para las columnas de la clave principal, sino que también garantizan que ninguna fila contenga NULL valores para esa columna. A menudo, la clave principal en MySQL usa el siguiente formato para especificar una clave principal incremental asignada automáticamente:id INT AUTO_INCREMENT PRIMARY KEY .

Las claves externas son una forma de garantizar que una columna o columnas en una tabla coincidan con los valores contenidos en otra tabla. Esto ayuda a garantizar la integridad referencial entre tablas.




Cómo ver tablas en MySQL

En MySQL puede listar tablas de diferentes maneras dependiendo de la información que esté buscando.

Si desea ver qué tablas están disponibles en su base de datos, escriba:

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |  teachers         |+------------------+2 rows in set (0.00 sec)

También puede verificar que el esquema de la tabla coincida con sus especificaciones:

DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+  Field        | Type         | Null | Key | Default | Extra          |+--------------+--------------+------+-----+---------+----------------+  id           | int          | NO   | PRI | NULL    | auto_increment |  name         | varchar(255) | YES  |     | NULL    |                |  description  | varchar(255) | YES  |     | NULL    |                |  manufacturer | varchar(255) | YES  |     | NULL    |                |  color        | varchar(255) | YES  |     | NULL    |                |  inventory    | int          | YES  |     | NULL    |                |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)

Los teachers la tabla parece coincidir con nuestra definición.



Cómo cambiar tablas con ALTER TABLE comando

Si necesita cambiar el esquema de una tabla existente en MySQL, puede usar ALTER TABLE dominio. La ALTER TABLE El comando es muy similar a CREATE TABLE comando, pero opera en una tabla existente.


Alterar la sintaxis de la tabla

La sintaxis básica para modificar tablas en MySQL se ve así:

ALTER TABLE <table_name> <change_command> <change_parameters>;

El <change_command> indica el tipo exacto de cambio que le gustaría realizar, ya sea que implique establecer diferentes opciones en la tabla, agregar o eliminar columnas, o cambiar tipos o restricciones. El <change_parameters> parte del comando contiene información adicional que MySQL necesita para completar el cambio.



Agregar columnas a tablas

Puede agregar una columna a una tabla MySQL con ADD cambio de mando. Los parámetros de cambio incluirán el nombre de la columna, el tipo y las opciones, tal como los especificaría en CREATE TABLE comando.

Por ejemplo, para agregar una columna llamada missing_column del text escribe en una tabla llamada some_table , escribiría:

ALTER TABLE some_table ADD missing_column text;


Eliminando columnas de tablas

Si, en cambio, desea eliminar una columna existente, puede usar el DROP COLUMN comando en su lugar. Debe especificar el nombre de la columna que desea eliminar como parámetro de cambio:

ALTER TABLE some_table DROP COLUMN useless_column;


Cambiando el tipo de datos de una columna

Para cambiar el tipo de datos de una columna, puede usar ALTER COLUMN cambie el comando con MODIFY COLUMN comando de columna Los parámetros en este contexto incluyen el nombre de la columna y su nuevo tipo:

ALTER TABLE resident MODIFY COLUMN id INT;


Otros cambios en la tabla

Se pueden lograr muchos otros tipos de cambios con ALTER TABLE dominio. Para obtener más información sobre las opciones disponibles, consulte la documentación oficial de MySQL para ALTER TABLE .




Soltar tablas

Si desea eliminar una tabla, puede usar DROP TABLE instrucción SQL. Esto eliminará la tabla y todos los datos almacenados en ella.

La sintaxis básica se ve así:

DROP TABLE <table_name>;

Esto eliminará la tabla si existe y generará un error si el nombre de la tabla no existe.

Si desea eliminar la tabla si existe y no hacer nada si no existe, puede incluir el IF EXISTS calificador dentro de la declaración:

DROP TABLE IF EXISTS <table_name>;

Las tablas que tienen dependencias con otras tablas u objetos no se pueden eliminar de forma predeterminada mientras existan esas dependencias.

Eliminar los supplies tabla que creamos anteriormente escribiendo:

DROP TABLE supplies;

Mantendremos a los teachers base de datos para demostrar que la declaración para eliminar bases de datos también elimina todos los objetos secundarios como tablas.



Soltar bases de datos

La DROP DATABASE instrucción le dice a MySQL que elimine la base de datos especificada. La sintaxis básica se ve así:

DROP DATABASE <database_name>;

Reemplace el <database_name> marcador de posición con el nombre de la base de datos que desea eliminar. Esto eliminará la base de datos si se encuentra. Si no se puede encontrar la base de datos, se producirá un error:

DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist

Si desea eliminar la base de datos si existe y no hacer nada, incluya el IF EXISTS opcional. opción:

DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Esto eliminará la base de datos o no hará nada si no se encuentra.

Para eliminar la school base de datos que usamos en esta guía, enumere las bases de datos existentes en su sistema:

SHOW DATABASES;
+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Eliminar la school base de datos con el siguiente comando:

DROP DATABASE school;

Esto eliminará la school base de datos junto con los teachers tabla definida dentro.



Conclusión

Este artículo cubrió los conceptos básicos de cómo crear y eliminar bases de datos y tablas con MySQL. Estos son algunos de los comandos más básicos necesarios para configurar un sistema de base de datos y definir la estructura de sus datos.

Como se mencionó anteriormente, las instrucciones SQL cubiertas en este tutorial de MySQL, en particular CREATE TABLE declaración, tienen muchos parámetros adicionales se pueden utilizar para cambiar el comportamiento del sistema. Puede obtener más información al respecto consultando la documentación oficial de MySQL.