MySQL--对于库的操作对于表的操作

一、库的查看创建删除

库的查看

show databases;

库的创建(创建一个test1数据库)

create database test1;

同样,我们另起一个root会话,并执行

cd /var/lib/mysql

然后发现多了一个test1目录

删除库(删除test1数据库)

drop database test1;

删掉之后,对应的目录也就没有了。

小小总结:

1.创建数据库:create database db_name; -----本质上就是在/var/lib/mysql创建一个目录

2.删除数据库:drop database db_name; -------本质上就是删除目录

到这里我们也可以发现mysql是在文件系统之上的。

我们直接在/var/lib/mysql上直接通过mkdir创建一个目录

mkdir hahahaha

然后在show一下

发现就等于创建了一个数据库

但是这样的话,hahahaha内部没有默认的配置文件。所以这里仅是做演示,实际并不推荐这样创建数据库

所以我们把这个库删掉

rm -f hahahaha -r

 二、认识系统编码

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

1.数据库编码集 ----未来在向数据库写入数据时,所采用的编码集。

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

数据库无论对数据进行任何操作,都必须保证操作和校验的编码是相匹配的。

我们可以查看一下mysql默认的字符编码

1.默认的操作编码

show variables like 'character_set_database';

这里是utf8.

2.默认的校验编码

show variables like 'collation_database';

 

另外还可以查看mysql支持的所有操作字符集

show charset;

 还可以查看mysql所有支持的校验字符集

show collation;

三、指定字符集创建数据库

我们之前创建数据库,都是按照默认配置的字符集创建的。在今后我们创建数据库时,一般都是按照默认的来的,但是我们可以熟悉一下按照指定的字符集创建数据库。

还记得我们创建了一个数据库时,在这个目录下有一个默认的配置文件吗

 

就是这个db.opt文件。

查看就发现它有默认的字符编码集

我们创建一个指定编码集gbk的数据库d2

create database d2 charset=gbk;

 然后我们查看一下它的配置文件

我们发现, 编码集变成了gbk,并且注意到了一个细节,它的校验编码集我们并没有指定,但是它默认匹配了一个gbk的校验编码集,而不是之前看到的utf8的校验编码集。

再创建一个数据库d3,这次同时指定编码集和校验编码集

create database d3 charset=utf8 collate utf8_general_ci;

同样再查看配置文件

如我们指定的一样。

四、验证不同校验编码的影响 

1.创建一个数据库,校验规则适用utf8_general_ci。这个是不区分大小写的。

2.校验规则适用utf8_bin。这是区分大小写的。

首先创建一个test1,采用默认的,也就是不区分大小写的。

create database test1;

 再创建一个test2,校验规则使用utf8_bin,区分大小写

create database test2 collate utf8_bin;

看一下test2的配置文件

 分别选中两个数据库,并创建相同的表

use test1;create table person(name varchar(20));

我们可以看一下这个表结构

desc person;

 

然后插入一些数据

insert into person (name) values ('a');insert into person (name) values ('b');insert into person (name) values ('A');insert into person (name) values ('B');

查看插入的数据 

select * from person;

因为我们这个数据库是不区分大小写的

所以我们加上一个查询条件

select * from person where name='a';

 查询结果

我们发现 A也查出来了。说明不区分大小写。 

同样的操作,我们选定test2,并创建一个相同的表,插入相同的数据。

再条件查询'a'。

 

此时就只有'a'了。

我们还可以以名字为排序进行查询

select * from person order by name;

 

可见test2是以升序排序的。

再看看test1

 五、库的删改查

因为刚刚讲的就是增,所以这里只讲删改查了。

库的删除非常简单,比如要删除d2

drop database d2;

这样就删掉了,非常简单。

注意,一般非常不推荐删掉数据库,这里仅仅只是为了测试用。

查数据库也非常简单,就是

show databases;

不过如果我想要对某个库进行表的操作,要先use选定这个数据。

另外,如果我们当前想知道我们选定的是哪个数据库,可以使用

select database();

最后就是修改数据库了,比如我们要修改某个库的字符编码集。

比如我们改一下test2的,将其编码集修改成gbk的

格式如下

alter database test2 charset=gbk collate gbk_chinese_ci;

 查看一下它的配置文件

已经被修改了。

另外,我们还可以看一下某一个数据库,这个数据库当时在被创建时所执行的命令,比如test2

show create database test2;

注意,这个/*  */不是注释,它表示的是,如果当前mysql的版本大于4.01的话,就执行这个语句。有点像判断语句。 而它前面的GREATE DATABASE是每个版本都会执行的,只有后面的是要有条件的。

这里我们再将test2的编码集改成utf8的。

alter database test2 charset=utf8 collate utf8_general_ci;

再查一下

发现后面的字段跟着变了。

六、库的备份与恢复 

以前的数据库对于库的重命名是支持的,现在不支持了。

如果要备份库,我们可以用一个工具,mysqldump,虽然我们之前也了解了数据库其实在linux下就是一个目录,我们可以直接拷贝打包,但是并不推荐这样做。 

基本语法

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

比如我要把备份的文件放在MySQL目录下

cd MySQL/mysqldump -P3306 -uroot -p -B test1 > test1.sql

简单查看一下这个文件

 发现其中还保存了我们执行过的指令。

这就是库的备份了。那么我们该如何恢复呢?

只要在mysql客户端下,执行(注意事先得知道备份库所在的文件路径)

source /root/MySQL/test1.sql;

即可

 注意:如果我们想备份的不是整个数据库,而是其中部分表,格式如下,记得指明库名

mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

还有:如果想同时备份多个数据库,也很简单

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

其中还原/恢复时都是用source,另外如果我们备份的时候,没有带 -B选项(说明只是想备份部分表),那么还原的时候需要先创建一个空数据库,再使用source来还原。

因为数据库也是网络服务,所以我们可以查看当前有哪些用户正在访问使用数据库

show processlist;

那么库的操作就暂时告一段落了。 

七、表的增加 

 基本格式

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

在()之间是设置表的字段,其中注意的是,是字段名字在前,类型在后,这跟我们学C/C++变量命名的时候是反过来的。

我们测试创建一个用户表

create table if not exists user1(-> id int,-> name varchar(20) comment 'user name',-> password char(32) comment 'for test',-> birthday date comment 'for test2'-> )character set utf8 collate utf8_general_ci engine MyIsam;

if not exists:可以加也可以不加。

comment:跟注释的功能是一样的,这里用作测试

character set utf8 collate utf8_general_ci engine MyIsam:这里我们不指明写的话,就会默认采用配置文件里面的,除了编码方式,我们指明了使用的引擎是MyIsam。

注意在设置字段的时候,很像C++构造函数的初始化列表一样,每一个字段之间要用逗号分隔,但是最后一个不要用逗号。

八、表的查询

1.查询我们当前选定的是哪个数据库

select database();

 2.展示当前库内所有的表名

show tables;

3.查看某个表的详细结构

desc 表名;

 但是如果我们还想查看更加详细的信息,比如使用的引擎,所用的编码方式,或者注释等信息,可以使用

show create table 表名\G

其中这个\G是可选选项,它替换了冒号,加了使得查询结果更简洁。

 九、修改表

1.首先我们先向表中插入数据

就比如之前的user1表

insert into user1 (id,name,password,birthday) values (1,'张三','12345','2004-2-1');

 其中,在values前的括号中,指明我们要插入的列,这个括号可以省略,省略就表示我们我们要对每一列都进行插入。

2.接着我们修改表,使其新增一列 ,比如年龄,并加上注释

alter table user1 add age int comment '年龄';

这时我们在看一下更详细的表结构变化

发现年龄和注释也加上来了。

3.修改某一个列的属性

原本user1这个表,name列的类型是varchar(20),我们将其修改成60

alter table user1 modify name varchar(60);

 注意修改是modify。

再查看一下

大小确实更改了。

我们再看一下更详细的表结构

我们发现,name这一列大小确实也变了,但是当时我们是有注释的,我们修改之后,注释没有了。

说明这个修改是覆盖式的修改,它会连同创建时的属性一同修改了。

4.删除某一列

比如我们要删除password列

alter table user1 drop password;

 结果

确实删除成功了。并且我们这一列上的数据也跟着删除了,所以删除列的时候也要小心。

5.修改表名

alter table 原表名 rename 新表名;

 6.修改列名

alter table user change 原列名 新列名 varchar(60) DEFAULT NULL;

注意,在修改列名时,还需要设置新列名的类型,以及属性。

十、删除表

非常简单

drop table 目的表;

注意 删除表和修改表的操作一定要十分谨慎。在开发前期就最好把表结构商讨清除,防止开发过程中中途修改表结构或者删除表。

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

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

相关文章

消息队列 Kafka 入门篇(二) -- 安装启动与可视化工具

一、Windows 10 环境安装 1、下载与解压 首先,访问Apache Kafka的官方下载地址: https://kafka.apache.org/downloads 在本教程中,我们将使用kafka_2.13-2.8.1版本作为示例。下载完成后,解压到您的工作目录的合适位置&#xff…

操作系统—系统调用(实验)

文章目录 系统调用1.实验目标2.实验过程记录(1).理解系统调用接口(2).阅读argraw、argint、argaddr和argstr(3).理解系统调用的解耦合实现方式(4).wait系统调用的非阻塞选项实现(5).yield系统调用的实现 3.存在的问题及解决方案实验小结 系统调用 1.实验目标 阅读并了解xv6内核…

酷开科技逐步为用户构建健全的智慧家庭生活场景

大规模与精细化人群技术则是通过大量的计算能力和精细化的运营能力,建立用户专属数据储存区域,使得用户在使用不同电视的观影偏好和兴趣能够能够得以延续。 不拘泥于自有品牌终端数量,酷开系统除了集成在创维电视上,还服务于飞利…

http是什么?http的基础知识教程详解(2024-04-24)

1、http的概念 HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。 HTTP 是万维网(WWW)的数据通信的基础,设计目的是确保客户端与服务器之间的通…

CUDA的开发框架

CUDA的开发框架主要提供了一系列工具和库,使得开发者可以充分利用NVIDIA GPU进行高效的并行计算。以下是CUDA开发框架的一些关键组成部分。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.CUDA核心库:这些是构…

苍穹外卖day11 Apache ECharts 数据统计-图形报表

文章目录 前言一、Apache ECharts二、营业额统计1. 业务规则2. 接口设计3. 代码实现 三、用户统计1. 业务规则2. 接口设计3. 代码实现 四、订单统计1. 业务规则2. 接口设计3. 代码实现 五、销量排名Top101. 业务规则2. 接口设计3. 代码实现 前言 作为后端开发人员使用Echarts&…

2024年阿里云新用户购买云服务器,六大优惠活动介绍

假如你是一个初次购买阿里云服务器产品的新手用户,在购买阿里云服务器过程中如果直接注册账号然后通过云服务器ECS产品页下单购买可能会多花很多钱,作为一个老用户,有必要把这2024年新手用户必须了解的六大优惠活动介绍给大家,让大…

护眼灯到底有用吗?必选机型护眼灯十大品牌推荐

护眼灯到底有用吗?答案是有用的。护眼灯不是智商税,尤其对有娃、爱玩游戏的人士。儿童青少年近视率高,学习环境照明影响大。普通灯光不足以满足需求,蓝光频闪加剧用眼疲劳,导致近视。选择适合孩子的护眼灯至关重要&…

Linux--内核移植(二)移植流程及驱动修改

本文来总结一下如何将 NXP 官方提供的 Linux 内核移植到正点原子的 I.MX6U-ALPHA 开发板上。 一、官方开发板内核测试 NXP 提供的 Linux 源码肯定是可以在自己的 I.MX6ULL EVK 开发板上运行下去的,所以我们肯定是以 I.MX6ULL EVK 开发板为参考&#xff0…

AWVS的使用

AWVS的使用 1、使用docker拉取AWVS的镜像 docker pull secfa/docker-awvs 2.使用AWVS docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs 3.访问 4.输入账号密码 https://hub.docker.com/r/secfa/docker-awvs 找到账号密码 username:adminadmin.…

OpenCV如何实现拉普拉斯算子的离散模拟

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV的Sobel 衍生品 下一篇 :OpenCV 如何实现边缘检测器 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 Laplacian() 实…

Django模型继承之多表继承

在Django模型继承中,支持的第二种模型继承方式是层次结构中的每个模型都是一个单独的模型。每个模型都指向分离的数据表,并且可以被独立查询和创建。在继承关系中,子类和父类之间通过一个自动创建的OneToOneField进行连接。示例代码如下&…

NCF29A1 高端阻抗匹配

一、前言 Class E 高端 L-Front 匹配集成了额外的滤波器,提供了足够的谐波衰减,使 NCF29A1 与天线在比基频更高的频率下具有相当大的增益。向 PA 提供的阻抗和输出电容与表 1 ZPAOUT 所示相同。 二、原理图 图 1 高端 L-Front 匹配原理图 1&#xff…

VNISEdit 制作安装包

1. 环境依赖 1.1. NSIS 下载 下载地址:https://nsis.sourceforge.io/Download 1.2. VNISEdit 下载 下载地址1:https://sourceforge.net/projects/hmne/ 下载 exe 安装。 下载地址2:https://hmne.sourceforge.net/ 可以下载 exe 安装。也…

实体书营销:“三三裂变”,实操细节分享……

实体书营销:“三三裂变”,实操细节分享 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: …

K-means聚类算法:如何在杂乱无章的数据中找出规律?

什么是K-means聚类算法? 在编程的世界里,K-means聚类算法就像一位无私的指路人,它不需要我们给出明确的指示,只需要我们提供数据,它就能帮助我们找到数据的归属,找到数据的“家”。 K-means聚类算法的名字…

1000. 合并石头的最低成本(H)/ 1312. 让字符串成为回文串的最少插入次数(H)/ 区间DP!!!

1000. 合并石头的最低成本 官方题解(含python)其他题解 1312. 让字符串成为回文串的最少插入次数 官方题解 class Solution:def minInsertions(self, s: str) -> int:n len(s)# dp[i][j] 表示对于字符串 s 的子串 s[i:j](这里的下标从…

【Python】基础知识(函数与数据容器)

笔者在C语言基础上学习python自用笔记 type() 返回数据类型 name "root" hei 1.8 wei 77 type_hei type(hei) type_wei type(wei) print(type(name)) print(type_hei) print(type_wei)在python中变量是没有类型的,它存储的数据是有类型的。 数据类…

如何删除“上传到移动云盘”右键菜单

问题表现 如题,“上传到移动云盘”的右键菜单非常难删除,按照网上的右键菜单注册表删除通用教程也没找到 解决方法 实际上,该菜单的位置在注册表中的 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\就是删除里…

Kafka 可视化管理工具 CMAK 启动错误 -- 命令行太长 问题解决

一、安装环境描述: Kafka版本:kafka_2.13-2.8.1cmak 版本:cmak-3.0.0.6安装环境:windows 11 二、问题描述 当我们在 命令行启动 cmak.bat 命令时,会报如下错误: 命令行太长三、解决办法 修改 cmak.bat…