MySQL基础操作(库与表)

定义:库是MySQL中最高层次的逻辑容器,用于集中管理一组相关的数据对象,为不同业务与模块的数据提供命名空间隔离。

作用:

  • 数据分类与隔离:不同库可独立存放不同业务的数据(如user_db,order_db),实现逻辑分离。
  • 权限控制:支持对库设置独立的访问权限(如用户只能访问特定的库),提升安全性。
  • 资源管理:库内的对象共享相同的字符集,排序规则等等。

操作

创建库
create database [if not exists] name_db
	[character set ...]
	[collate ...];

[if not exists] 是为了防止在创建name_db库时,name_db已存在的情况,加上就不会ERROR了。
[character set] 是设置库的字符编码集 => 库未来储存的数据。
[collate] 是设置库的字符校验集 =>读取数据库中数据的采用的编码格式。
数据库对数据采取任何操作,都需要保证编码和校验的编码格式是一致的。

查看库列表
show databases;
显示库的创建语句
show create database name_db;
使用库
use name_db;
修改库
alter database name_db [....];

对库的修改主要指的是修改库的字符集,校验规则。
例如:将Test的字符编码集设置为gdk。

mysql> show create database Test;\
+----------+-----------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                     |
+----------+-----------------------------------------------------------------------------------------------------+
| Test     | CREATE DATABASE `Test` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter database Test charset=gbk;
Query OK, 1 row affected (0.02 sec)

mysql> show create database Test;\
+----------+-------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                 |
+----------+-------------------------------------------------------------------------------------------------+
| Test     | CREATE DATABASE `Test` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

删除库
drop database name_db;
备份与恢复

备份:

mysqldump -P3306 -uroot -p 密码 -B name_db > path

-P 端口号, -u 谁备份, -p 密码, -B 备份的数据库名字,path 备份路径。

还原:

source path;

例如:

mysqldump -P3306 -uroot -p 密码 -B name_db > /mysql/important/name_db.sql; # 备份
source /mysql/important/name_db.sql; # 恢复
查看库的连接情况
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 11 | root | localhost | Test | Query   |    0 | init  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set, 1 warning (0.00 sec)

查看当前有哪些用户连接到我们的MySQL。

定义:表是数据库中用于存储数据的二维结构,由行和列组成;每个表属于一个特定的库,用于存放同一类业务数据;通过预定义的模式确保数据的规范性和完整性。
作用:

  • 结构化存储:通过固定模式确保数据格式统一,避免随意性(如所有用户必须包含 username 字段)。
  • 数据关系管理:通过外键(FOREIGN KEY)关联不同表,实现数据关系(如订单表引用用户表的 id)。
  • 高效查询与操作:结合索引(INDEX)优化数据检索速度,支持复杂的SQL操作(如 JOIN、WHERE 过滤)

操作

创建表
create table [if not table] name_t(
	name datatype,
	d2 datatype,
	...
	)character set 字符集 collate 校验规则 engine 存储引擎;
# 如果没有设置字符集,校验规则,存储引擎所在库会根据默认文件来定义。

例如:建立学生信息表。

mysql> create table student(
    -> id int,
    -> name varchar(20),
    -> age tinyint unsigned
    -> );
Query OK, 0 rows affected (0.07 sec)

mysql> desc student;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int              | YES  |     | NULL    |       |
| name  | varchar(20)      | YES  |     | NULL    |       |
| age   | tinyint unsigned | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

datatype 表示数据类型。

查看表的结构
desc name_t;
查看表的数据
select [...] from name_t;
# ...可自己选择, *代表所有类型
显示表的创建语句
show create table name_t;
修改表
# 在表中添加记录
insert into table name_t (datatype, datatype)value(d1, d2);
# 在表中添加列
alter table name_t add new_col datatype [comment 'xxxx'][after old_col];
# 修改某一列的单位大小为x
alter table name_t modify d1 datatype(x);
# 删除某一列
alter table name_t drop d1;

例如:

  • 在student中添加一列img_path信息,在添加几个人。
mysql> alter table student add img_path varchar(40) comment 'Student avatars store road strength';
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table student;\
+---------+--------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                               |
+---------+--------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` tinyint unsigned DEFAULT NULL,
  `img_path` varchar(40) DEFAULT NULL COMMENT 'Student avatars store road strength'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
+---------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> insert into student (id, name, age, img_path)value(1, 'Aoi', 17, '/user/img/Aoi'), 
    -> (2, 'Ethan', 19, '/user/img/Ethan');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from student;
+------+-------+------+-----------------+
| id   | name  | age  | img_path        |
+------+-------+------+-----------------+
|    1 | Aoi   |   17 | /user/img/Aoi   |
|    2 | Ethan |   19 | /user/img/Ethan |
+------+-------+------+-----------------+
2 rows in set (0.00 sec)
  • 将img_path的单位大小修改成varchar(60),并将age删除
mysql> alter table student modify img_path varchar(60);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int              | YES  |     | NULL    |       |
| name     | varchar(20)      | YES  |     | NULL    |       |
| age      | tinyint unsigned | YES  |     | NULL    |       |
| img_path | varchar(60)      | YES  |     | NULL    |       |
+----------+------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table student drop age;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| img_path | varchar(60) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from student;
+------+-------+-----------------+
| id   | name  | img_path        |
+------+-------+-----------------+
|    1 | Aoi   | /user/img/Aoi   |
|    2 | Ethan | /user/img/Ethan |
+------+-------+-----------------+
2 rows in set (0.00 sec)

删除表
drop table name_t;
备份表
mysqldump -u root -p 数据库名 表名1 表名2 ... > path

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋志昂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值