776 字
2 分钟
MySQL基础操作(库与表)
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];# 修改某一列的单位大小为xalter 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
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
MySQL基础数据类型
MySQL 梳理 MySQL 的整数、浮点数、字符串、日期时间等基础数据类型,以及字段类型选择时需要注意的范围与精度问题。
2
单链表的实现
数据结构 介绍链表的结构与分类,重点实现无头单向链表的增删查改及销毁等基础操作。
3
Linux 的基本指令
Linux 整理 Linux 中目录切换、文件查看、创建与删除等常用命令,并结合示例说明参数和典型使用场景。
4
C语言的分支语句( if 与 switch语句 )
C语言 介绍 C 语言 if、else 与 switch 分支语句的语法和执行逻辑,并通过实例比较不同分支结构的适用场景。
5
位操作符(&、|、^) C语言
C语言 结合二进制表示和代码示例讲解按位与、按位或、按位异或等位操作符的规则与常见用途。