MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDSClaw,2核4GB
简介: MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)



 

创建数据库和表操作

MySQL创建数据库的操作相对直接明了。以下是详细步骤和示例:

首先,您需要具有适当的权限才能在MySQL中创建数据库。通常,这意味着您需要以具有创建数据库权限的用户身份登录到MySQL服务器。

1、登录MySQL服务器

通过命令行登录到MySQL服务器。您可能需要提供用户名(例如“root”)和密码。

mysql -u root -p

系统会提示您输入密码。输入后,按Enter键继续。

2、创建数据库

一旦登录,您就可以使用SQL命令来创建数据库。以下是一个简单的示例,演示如何创建一个名为“mydatabase”的数据库。

CREATE DATABASE mydatabase;

这条命令将创建一个新的数据库,名为“mydatabase”。

3、选择数据库

创建数据库后,您可以使用以下命令来选择或切换到该数据库:

USE mydatabase;

4、设置数据库字符集

在创建数据库时,您还可以为其设置字符集。例如,如果要使用UTF-8字符集,可以使用以下命令:

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将使用UTF-8字符集创建一个数据库,并使用utf8mb4_unicode_ci排序规则,这对于支持多种语言(包括表情符号)非常有用。

5. 查看所有数据库

要查看MySQL服务器上存在的所有数据库,可以使用以下命令:

SHOW DATABASES;

6、删除数据库

如果您需要删除数据库,可以使用以下命令:

DROP DATABASE mydatabase;

这将删除名为“mydatabase”的数据库及其所有内容。请小心使用此命令,因为它会永久删除数据。

7、修改数据库

您还可以使用ALTER DATABASE命令来修改数据库的属性。例如,要更改数据库的字符集,可以使用以下命令:

ALTER DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将更改现有数据库的字符集和排序规则。

8、创建数据库用户并设置权限

您可能还想为新的数据库创建一个用户并设置适当的权限。以下是一个示例:

首先,创建一个新用户:

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';

9、为该用户授予对数据库的访问权限

GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%';

10、刷新权限

最后,刷新权限使更改生效:

FLUSH PRIVILEGES;

这允许新用户从任何主机连接到数据库并具有完全权限。您可以根据需要调整权限和主机设置。例如,如果您只想允许从本地主机连接,可以将'%'替换为'localhost'。同时,请确保选择一个强密码以提高安全性。

修改表结构(ALTER TABLE)

MySQL中的ALTER TABLE语句用于修改现有表的结构。使用此语句,您可以添加、删除或修改列,更改表的字符集或排序规则,重命名表,以及进行其他结构更改。以下是ALTER TABLE语句的一些常见用法和示例:

1、添加新列

您可以使用ADD子句向表中添加新列。例如,要向名为students的表中添加一个名为birthdate的日期列,可以使用以下语句:

ALTER TABLE students ADD birthdate DATE;

2、删除列

如果您不再需要表中的某个列,可以使用DROP COLUMN子句将其删除。例如,要从students表中删除birthdate列,可以使用以下语句:

ALTER TABLE students DROP COLUMN birthdate;

3、修改列

您可以使用MODIFY COLUMNALTER COLUMN子句更改现有列的属性。例如,要更改students表中name列的数据类型,将其从VARCHAR(50)更改为VARCHAR(100),可以使用以下语句:

ALTER TABLE students MODIFY COLUMN name VARCHAR(100);

或者,如果您只想重命名该列,可以使用:

ALTER TABLE students CHANGE COLUMN old_name new_name VARCHAR(50);

4、重命名表

如果您想更改表的名称,可以使用RENAME TO子句。例如,要将students表重命名为pupils,可以使用以下语句:

ALTER TABLE students RENAME TO pupils;

5、添加主键

如果您需要向表中添加主键约束,可以使用ADD PRIMARY KEY子句。例如,要在students表中将id列设置为主键,可以使用以下语句:

ALTER TABLE students ADD PRIMARY KEY (id);

6、删除主键

要删除表中的主键约束,可以使用DROP PRIMARY KEY子句。例如:

ALTER TABLE students DROP PRIMARY KEY;

7、添加索引

您可以使用ADD INDEX子句向表中添加索引以提高查询性能。例如,要在students表的lastname列上添加索引,可以使用以下语句:

ALTER TABLE students ADD INDEX (lastname);

8、修改表的字符集和排序规则

如果您需要更改表的字符集或排序规则,可以使用CONVERT TO CHARACTER SETCOLLATE子句。例如:

ALTER TABLE students CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将更改表的字符集为utf8mb4,并使用utf8mb4_unicode_ci排序规则。

9. 修改表的存储引擎

您还可以使用`ENGINE`子句更改表的存储引擎。例如,要将表从InnoDB更改为MyISAM,可以使用以下语句:

ALTER TABLE students ENGINE = MyISAM;

请注意,在执行此操作之前,请确保了解不同存储引擎之间的差异和限制。

10、添加外键约束

您可以使用`ADD CONSTRAINT`子句向表中添加外键约束以维护引用完整性。例如:

ALTER TABLE orders ADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(id);

这将在名为orders的表中添加一个名为fk_customer的外键约束,该约束引用customers表中的id列。删除外键约束使用类似的语法。使用ALTER TABLE语句时,请确保在执行任何结构更改之前备份数据库或表。这些更改可能会影响数据完整性或查询性能,并且在某些情况下可能需要重新构建表或重新索引数据。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
8月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
730 9
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
存储 SQL 数据库
如何避免数据库表结构冗余?
【7月更文挑战第28天】如何避免数据库表结构冗余?
382 5
|
SQL 关系型数据库 MySQL
MySQL 8.0报错--1118-Row size too large. The maximum row size for the used table type, not counting BLOBs,is 8126,
MySQL 8.0报错--1118-Row size too large. The maximum row size for the used table type, not counting BLOBs,is 8126,
2037 56
MySQL 8.0报错--1118-Row size too large. The maximum row size for the used table type, not counting BLOBs,is 8126,
|
数据管理 关系型数据库 MySQL
数据管理服务DMS支持MySQL数据库的无锁结构变更
本文介绍了使用Sysbench准备2000万数据并进行全表字段更新的操作。通过DMS的无锁变更功能,可在不锁定表的情况下完成结构修改,避免了传统方法中可能产生的锁等待问题。具体步骤包括:准备数据、提交审批、执行变更及检查表结构,确保变更过程高效且不影响业务运行。
1570 2
|
存储 关系型数据库 MySQL
深入解析MySQL数据存储机制:从表结构到物理存储
深入解析MySQL数据存储机制:从表结构到物理存储
1787 1
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
1508 0
|
关系型数据库 MySQL 数据库
MySQL 复制A的表结构和数据到表B
在MySQL中复制表A至表B可通过不同方法实现。一种是先用`CREATE TABLE B LIKE A;`复制结构,再用`INSERT INTO B SELECT * FROM A;`填充数据。另一种更简便的方法是直接使用`CREATE TABLE B AS SELECT * FROM A;`一次性完成结构和数据的复制。还有一种高级方法是通过`SHOW CREATE TABLE A;`获取表A的创建语句,手动调整后创建表B,如有需要再用`INSERT INTO ... SELECT`复制数据。注意权限问题、跨数据库复制时需指定数据库名,以及大表复制时可能影响性能。
1433 1
|
SQL 关系型数据库 MySQL
MySQL异常一之: You can‘t specify target table for update in FROM clause解决办法
这篇文章介绍了如何解决MySQL中“不能在FROM子句中指定更新的目标表”(You can't specify target table for update in FROM clause)的错误,提供了错误描述、需求说明、错误做法和正确的SQL写法。
2950 0
|
关系型数据库 MySQL 数据库
在 MySQL 中使用 Alter Table
【8月更文挑战第11天】
2683 0
在 MySQL 中使用 Alter Table

推荐镜像

更多
下一篇
开通oss服务