【MySQL】库和表结构的增删查改

news2024/11/29 13:41:43


目录

一、库的操作

1、创建数据库

2、数据库所使用的编码

2.1查询编码集和校验集

2.2查看数据库的字符集和校验集

2.3创建数据库指定字符集和校验集

2.4不同的校验集所筛选的数据结果不一样

3、查看数据库

4、修改数据库

5、删除数据库

6、数据库的备份和恢复

6.1备份整个数据库

6.2恢复整个数据库

6.3仅备份一张表或备份多个数据库

7、查看数据库的连接情况

二、表的操作

1、表的创建

2、表的查看

2.1查看表

2.2查看创建表时的详细信息

3、表的修改

3.1在表中插入数据

3.2在表中新增字段

3.3修改表名

3.4修改表中某一列的列名

3.5修改表中某一列的数据类型

4、表的删除

4.1删除表中的某一列

4.2删除表


一、库的操作

1、创建数据库

#创建数据库————本质是在/var/lib/mysql中创建一个目录
mysql> create database database1;
Query OK, 1 row affected (0.01 sec)
#进入数据库
mysql> use test1;
Database changed
#创建表
mysql> create table if not exists person(name varchar(20));
Query OK, 0 rows affected (0.34 sec)

2、数据库所使用的编码

创建数据库的时候,有两个编码集:

1、数据库编码集:数据库存储数据的编码集。

2、数据库校验集:支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式。

2.1查询编码集和校验集

#查询当前MySQL的编码集
mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | utf8  |
+------------------------+-------+
1 row in set (0.00 sec)
#查询当前MySQL的校验集
mysql> show variables like 'collation_database';
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.01 sec)

2.2查看数据库的字符集和校验集

#查看数据库支持的所有字符集
show charset;
#查看数据库支持的所有校验集
show collation;
#在数据库目录下查看d1数据库的字符集和校验集
[root@VM-4-11-centos mysql]# cat d2/db.opt
default-character-set=utf8
default-collation=utf8_general_ci

2.3创建数据库指定字符集和校验集

#创建数据库时指定字符集
mysql> create database d2 charset=utf8;
Query OK, 1 row affected (0.00 sec)

mysql> create database d3 character set utf8;
Query OK, 1 row affected (0.00 sec)

#创建数据库时指定字符集和校验集
mysql> create database d4 charset=utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci

2.4不同的校验集所筛选的数据结果不一样

#创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(10));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
#进行查询
mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+
2 rows in set (0.01 sec)
#创建一个数据库,校验规则使用utf8_ bin[区分大小写]
create database test2 collate utf8_bin;
use test2
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
#进行查询
mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+
2 rows in set (0.01 sec)

选择不同的校验集,数据库筛选出来的结果不一样

3、查看数据库

#查看数据库
mysql> show databases;
#进入数据库
mysql> use test1;
Database changed
#查看当前数据库中的所有表
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| person          |
+-----------------+
1 row in set (0.00 sec)
#查看自己当前处于哪个表
mysql> select database();
+------------+
| database() |
+------------+
| test1      |
+------------+
1 row in set (0.01 sec)
#查看数据库当初的创建指令
mysql> show create database test2;
+----------+---------------------------------------------------------------------------------+
| Database | Create Database                                                                 |
+----------+---------------------------------------------------------------------------------+
| test2    | CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)

1、MySQL 建议我们关键字使用大写,但是不是必须的。

2、数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字

3、/*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。

4、修改数据库

#修改数据库的字符集和校验集
mysql> alter database test1 charset=gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.01 sec)

5、删除数据库

#删除数据库————本质是在/var/lib/mysql中删除一个目录
#不建议直接删除数据库,建议备份后删除
mysql> drop database database1;
Query OK, 0 rows affected (0.01 sec)

6、数据库的备份和恢复

6.1备份整个数据库

#未启动MySQL客户端使用,备份的是对该数据库的有效操作
mysqldump -P3306 -uroot -p -B test1 > test.sql

这是一个 MySQL 命令,用于将数据库中的数据导出到一个 SQL 文件中。具体来说,这个命令会将名为 test1 的数据库中的所有数据导出到名为 test.sql 的文件中。

以下是这个命令中各个参数的含义:

  • -P3306:指定 MySQL 服务器的端口号为 3306。
  • -uroot:使用 root 用户名连接到 MySQL 服务器。
  • -p:提示用户输入密码,以便连接到 MySQL 服务器。
  • -B test1:指定要导出的数据库名称为 test1。
  • > test.sql:将导出的数据输出到名为 test.sql 的文件中。

请注意,在执行这个命令之前,你需要确保具有足够的权限来导出数据库中的数据。另外,如果你想导出多个数据库,可以在 -B 参数后面指定多个数据库名称,用空格分隔。

6.2恢复整个数据库

mysql> source /root/MySQL/test.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

恢复的过程就是将备份的命令全部重新执行了一遍。

6.3仅备份一张表或备份多个数据库

#仅备份几张张表
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
#同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

注:备份是在shell命令行进行的,而非MySQL客户端。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

7、查看数据库的连接情况

mysql> show processlist;
+----+------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host      | db    | Command | Time | State    | Info             |
+----+------+-----------+-------+---------+------+----------+------------------+
| 40 | root | localhost | test1 | Query   |    0 | starting | show processlist |
+----+------+-----------+-------+---------+------+----------+------------------+
1 row in set (0.01 sec)

二、表的操作

1、表的创建

mysql> create table if not exists use1(
    -> id int,
    -> name varchar(20) comment '用户名',
    -> birthday date comment '用户生日'
    -> )character set utf8 collate utf8_general_ci engine MyIsam;
Query OK, 0 rows affected (0.02 sec)

mysql> create table if not exists use2(
    -> name varchar(20) comment '用户名',
    -> passwword char(32) comment '用户密码',
    -> birthday date comment '用户生日'
    -> )charset=utf8 collate=utf8_general_ci engine=InnoDB;
Query OK, 0 rows affected (0.15 sec)

不同的存储引擎,创建表的文件不一样。

users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

users.frm:表结构

users.MYD:表数据

users.MYI:表索引

2、表的查看

2.1查看表

#查看当前处于哪个数据库
mysql> select database();
+------------+
| database() |
+------------+
| use_db     |
+------------+
1 row in set (0.01 sec)
#查看数据库中存在的表
mysql> show tables;
+------------------+
| Tables_in_use_db |
+------------------+
| use1             |
| use2             |
+------------------+
2 rows in set (0.00 sec)
#查看表的属性
mysql> desc use1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

2.2查看创建表时的详细信息

#查看创建表时的详细信息
mysql> show create table use1;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                         |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| use1  | CREATE TABLE `use1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `birthday` date DEFAULT NULL COMMENT '用户生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8        |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

#加上\G选项精简信息
mysql> show create table use1 \G
*************************** 1. row ***************************
       Table: use1
Create Table: CREATE TABLE `use1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `birthday` date DEFAULT NULL COMMENT '用户生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

3、表的修改

3.1在表中插入数据

#在表中插入数据
mysql> insert into user values (1,'张三','2000-10-1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into user values (2,'李四','1978-10-1');
Query OK, 1 row affected (0.01 sec)

#查看表内容
mysql> select* from user;
+------+--------+------------+
| id   | name   | birthday   |
+------+--------+------------+
|    1 | 张三   | 2000-10-01 |
|    2 | 李四   | 1978-10-01 |
+------+--------+------------+
2 rows in set (0.03 sec)
mysql> insert into t3 (id,online) values (123,1);
Query OK, 1 row affected (0.03 sec)

3.2在表中新增字段

#在表中插入字段,新增字段位于birthday之后
mysql> alter table user add image_path varchar(128) comment '用户头像路径' after birthday;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0
#打印表
mysql> select* from user;
+------+--------+------------+------------+
| id   | name   | birthday   | image_path |
+------+--------+------------+------------+
|    1 | 张三   | 2000-10-01 | NULL       |
|    2 | 李四   | 1978-10-01 | NULL       |
+------+--------+------------+------------+
2 rows in set (0.00 sec)

3.3修改表名

#修改表名为user
mysql> alter table use1 rename to user;
Query OK, 0 rows affected (0.01 sec)

3.4修改表中某一列的列名

#查一下创建表的SQL
mysql> show create table user\G;
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(60) DEFAULT NULL,
  `birthday` date DEFAULT NULL COMMENT '用户生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

#修改name列名为xingming。注意新字段需要完整定义
mysql> alter table user change name xingming varchar(60) DEFAULT NULL;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

3.5修改表中某一列的数据类型

#将name字段的属性由varchar(20)修改为varchar(60)
#但是这样修改将会丢失COMMENT '用户姓名'字段
mysql> alter table user modify name varchar(60);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

#9列为原先创建表时的语句,10列为修改后的语句。
#COMMENT '用户姓名'将丢失,所以修改表中某一列的属性时,将创建时的SQL复制过来再进行修改
`name` varchar(20) DEFAULT NULL COMMENT '用户姓名',
`name` varchar(60) DEFAULT NULL,

修改表中某一列的数据类型是覆盖式修改的。为了防止创建表时设置的字段丢失,先复制原表的创建信息,再进行修改。

4、表的删除

4.1删除表中的某一列

#删除user
mysql> alter table user drop image_path;
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

删除操作要谨慎,删除后对应的列的数据将被删除。

4.2删除表

mysql> drop table user;
Query OK, 0 rows affected (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性

1. 前言 一个技术需求引发的思考和实践: 思考 用 AOP 把校验代码 实践 用 Spring MVC 的 RequestBodyAdvice 做AOP逻辑继承 RequestBodyAdviceAdapter 实现自己的 适配器用自己的适配器让代码可读性增加熟悉 Spring MVC 、Java 反射的一些实践 本文内容 澄清一个A…

Mysql 调优

前言 硬件层面:使用固态硬盘、扩大内存、加大带宽等等 架构层面:主从复制实现读写分离【一主一 或 双主双从】 表结构层面:对表结构进行垂直拆分、水平分表、分库分表。常用的数据库中间件有:MySQL Proxy、MyCat以及ShardingSphe…

电脑C盘的清理 | 微信QQ缓存信息

记录一下我处理C盘爆满时的几个方法,基本上都是可以日常使用的。 一、磁盘清理 链接 二、查看具体哪些文件占内存 win图标右击 -----> 点击“系统(Y)” 点击查看具体是哪些文件夹哪些app占用了大量的内存,并选择删除部分…

第二章 re模块

1. re模块介绍 正则表达式 在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 re 模块 Python 提供了 re 模块用于实现正则表达式的操作。在实现时&…

CTFshow-pwn入门-前置基础pwn23-pwn25

pwn23-25的题目会涉及到ret2shellcode、ret2libc等内容,本篇文章只会侧重研究这几道题目的wp,不会过多涉及到ret2shellcode、ret2libc的基本原理,等有时间再来写关于ret2libc、ret2shellcode…的相关内容。大家可以参考CTFwiki的文章去慢慢学…

FPGA_数码管显示UART串口接收的数据

实验目标:通过电脑调试助手向FPGA的UART串口接收模块发送数据,然后数据可以稳定显示在数码管上。 实验目的: 练习UART串口模块和数码管的使用。之前已经有文章详细讲解了串口和数码管的开发,故这里直接提供设计思路供大家参考。 &#xff08…

求解矩阵行列式因子、不变因子、初等因子、Jordan标准形

首先,我们先来简要了解一下行列式因子、不变因子和初等因子的概念。 下面举例说明。 例1 首先,我们要求 λ I − A λI-A λI−A 然后,我们先求行列式因子。 D 2 ( λ ) D_2(λ) D2​(λ)的求法如下: 然后,我们再求…

015、数据库管理之用户和权限

用户和权限 认证与赋权连接过程本地连接远程连接查看用户信息创建用户账号创建角色管理用户账户管理角色设置账号密码忘记root密码实验1-用户和角色实验2-授权注意事项 认证与赋权 认证:对用户进行验证 是权限控制的第一步当用户第一次连接数据库时必须进行认证如果…

【Git】TortoiseGit(小乌龟)配置SSH和使用

目录 1、TortoiseGit(小乌龟)配置SSH 1.1、右击打开Git命令窗口 1.2、设置Git的全局name和email 1.3、查看是全局名字和邮箱是否设置成功 1.4、生成 sshkey秘钥 2、TortoiseGit(小乌龟)的使用 2.1、创建本地仓库 2.2、添加…

企业会计软件必备!深入了解为何选择会计软件以及其带来的好处

随着科技的发展,企业需要更加智能化和数字化的财务管理方式,因此会计软件是现代社会的必然产物,会计软件可以帮助企业更有效地进行财务管理。 企业为什么需要会计软件? 提高准确度 通过传统的手工操作财务记录,会有很…

Qt6.2教程——2.介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog

详细介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog Qt 是一个广受欢迎的跨平台 C GUI 库。在 Qt 中,创建图形用户界面的基本单元是 Widget。本文将详细介绍三个重要的 Widget 类:QWidget, QMainWindow 和 QDialog,并比较它们的特点和用途。…

设计模式之原型模式笔记

设计模式之原型模式笔记 说明Prototype(原型)目录UML原型模式示例类图RealizeType类(浅克隆)测试类 原型模式案例奖状类测试类 扩展(深克隆)学生类奖状类测试类 说明 记录下学习设计模式-原型模式的写法。 Prototype(原型) 意图:用原型实例指定创建对象的种类,并…

Spring之IOC容器从入门都手写源码

文章目录 一、IOC容器1、控制反转(ioc)2、依赖注入3、IoC容器在Spring的实现 二、基于XML管理Bean1、获取bean方式一、根据id获取方式二、根据类型获取方式三、根据id和类型获取bean 2、依赖注入之setter注入3、依赖注入之构造器注入4、特殊值处理5、为对…

基于llama模型进行增量预训练

目录 1、llama模型转换(pytorch格式转换为HuggingFace格式) 1.1、拉取Chinese-LLaMA-Alpaca项目 1.2、准备文件夹 1.3、下载llama官方原始模型 1.4、移动文件到指定位置 1.5、执行转换脚本 2、合并模型 2.1、下载Chinese-LLaMA-Plus-7B模型 2.2、下载chinese_alpaca_p…

【Leetcode60天带刷】day16二叉树—— 104.二叉树的最大深度 , 111.二叉树的最小深度,222.完全二叉树的节点个数

题目: 104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ …

数字电路基础---寄存器

目录 数字电路基础---寄存器 1、寄存器简介 1.1、寄存器是如何工作的 2、实验任务 3、程序设计 3.1、模块设计 3.2、绘制波形图 4、编写代码 5、仿真验证 5.1、编写 TB 文件 5.2、仿真验证 6、总结 7、拓展训练 数字电路基础---寄存器 寄存器是构成时序逻辑最重要…

理解安卓的视图体系结构

原文链接 理解安卓的视图体系结构 当我们想要写一个页面的时候,通过一个Activity,然后调用其setContentView方法,把一个布局文件当作一个参数传递过去,然后一个页面就好了,但是除此之外,我们还需要与一些组…

【MySql】MySql索引的作用索引的理解

【MySql】MySql索引的作用&&索引的理解 文章目录 索引的作用认识磁盘MySql 与磁盘交互基本单位Page共识索引的理解主键有序问题理解单个Page理解多个Page页目录单页情况多页情况 索引的作用 索引是与效率挂钩的,所以没有索引,可能会存在问题 索…

从0到1搭建属于自己的Gitlab CI/CD平台

文章目录 持续集成(CI)持续交付(CD)Gitlab CI/CD功能和架构本地搭建GitLab CI/CD平台 MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握! CI和CD是软件开发中常用的缩写,分别代表持续集成&am…

【Unity】 HTFramework框架(四十五)【进阶篇】指令系统-自定义指令

更新日期:2023年6月19日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 指令系统1.使用指令系统2.自定义指令1.新建类 MyInstruction2.标记 CustomInstruction 特性3.编写指令的逻辑4.执行自定义指令5.自定义指令的参数6.结尾 …