MySQL的操作

MySQL库的操作

创建数据库

        其实在之前认识数据库时就已经创建过数据库了,这次我们需要更深入的了解创建数据库的语句。

语法create database [if not exists] db_name [create_secification]

create database:这是一个关键字,表示创建数据库

db_name:表示创建的数据库的名称。

[if not exists] : 这是一个可选项,表示如果 db_name 这个数据库不存在就创建,存在就不创建。

[create_secification]:表示指定 db_name 的字符集和校验集

  • 字符集:表示数据库使用什么语言
  • 校验集:表示数据库校验使用什么语言
  • 二者必须相同,否则会出错

         我们先用带 if not exists  选项的命令创建两次相同名称的数据库。

        发现创建相同名字的数据库时会出现一个warning。

        接着我们可以创建一个带指定字符集的数据库。

                create databases db_name charset=utf8;

        或者指定校验集的数据库。

                create database db_name collate utf8_general_ci;

        当然,我们可以同时指定字符集和校验和。

                create database db_name charset=utf8 collate utf8_general_ci; 

        上面的三种操作指定的字符集和校验集都是 utf8 ,而字符集和校验集必须相同,否则查询数据会出错。就好像汉语必须由学了汉语的人才能认识,采用某一字符集的数据库它的校验集也必须是对应的校验集。

字符集和校验规则

        我们可以通过指令查看目前系统默认的字符集和校验集

show variables like 'character_set_database'; ——查看字符集

show variables like 'collation_database'; ——查看校验集

         而数据库支持很多字符集和校验和,可以自行查看;

show charset; ————查看数据库支持的字符集;

show collation;————查看数据库支持的校验集;

查看字符集 

查看校验集

mysql中有各种字符集和校验集,如果创建数据库时没指定,一般采用系统默认的字符集和校验集,并且数据库中的表也会采用和数据库相同的字符集和校验集,需要注意。

验证不同校验规则的影响

        我们创建两个数据库,分别采用 utf8_general_ci(不区分大小写) 和 utf8_bin(区分大小写) 两个不同的校验规则,然后看看校验规则对数据库的影响。

我们先在通过use test1 进入到test1数据库中,然后建立一个表,并插入数据。

create table person (name varchar(20));——建表

insert into person value ('a');——插入数据

然后通过 select * from person where name='a'; 来查询数据。

我们发现,数据库查询到了 name = ‘a' 和 name = 'A' 两个数据。 

因为 select 是根据校验规则来查询数据的,因此从返回的结果可知,utf8_general_ci 是不区分大小写的。 

然后通过 use test2; 进入test2数据库中,后面的操作跟上面一样。

通过查询 name = ’a' 的数据,我们发现test2中返回的值只有一个。

 通过这个实验我们能够知道,不同校验和会影响到我们查询数据的准确性,所以在创建数据库的时候要注意采用的校验和规则。

查看数据库

                                             show databases;

通过该命令可以直接查看有多少数据库。

 当我们进入到一个数据库后,想看看自己是什么数据库,可以通过以下命令查看;

                                                select database();

 显示创建语句

                                        show create database db_name;

  • MySQL建议我们关键字采用大写,比如CREATE,不过不是必须的。
  • 数据库的 `test1` 中的 `` 是为了防止数据库名字是关键字
  • /**/中的语句表示如果 数据库版本大于4.01时,就采用 DEFAULT CHARACTER SET utf8mb3,而不是注释的意思。 

修改数据库

                                        ALTER DATABASE db_name [alter_spacification];

 一般修改的都是数据库的字符集和校验集。

比如:执行 alter database test1 charset=gbk;

然后通过 show create database test1;

我们发现 /**/ 中的语句变了,说明字符集更改了。

数据库的删除

                                 DROP DATABASE [IF EXISTS] db_name; 

通过该语句可以删除对应的数据库。

  • 删除数据库之后在mysql内部无法看到对应的数据库
  • 对应的数据库的文件夹被删除,级联被删除,里面的数据表被删除 

一般来说都不用随意删除数据库,即便删除也最好备份一下里面的文件。 

库的备份

一般来说删除数据库的操作不可取,若是不想用库了,可以根据需要将库保存下来。

可以在bash处使用命令来备份数据库。

命令:mysqldump -P 3306 -u root -p xxxx(密码) -B db_name > xxx路径/ db_name.sql

  • -P 指这个mysqld采用的是什么端口,默认是3306
  • -u 后面表示是哪个用户
  • -p 指用户的密码
  • -B 如果在备份时没有带上-B选项,那么在复原时,需要先创建空数据库,使用该数据库后再使用source复原
  • db_name :备份的数据库名称
  • > : 表示将备份的数据重定向到某个文件
  • 最后跟着文件的路径和文件名即可将数据库备份到这个文件中。

 比如这里,我将test1数据库备份后,在目录下多出了 test1.sql 文件。

进入文件内部查看,可以发现,该文件里面保存的是数据库创建到备份的所有操作。

然后我们再通过source 命令来复原数据库。

复原命令: source xxx路径/文件明

 

这样就能够复原数据库,而复原数据库就是将备份的文件内部的操作一步步再现出来从而出复原数据库。

我们还可以只备份数据库中的表,比如这里test1中的person表。

和数据库备份的不同之处是备份表不用-B选项,然后需要带上备份的表的名称。

命令: mysqldump -P 3306 -u root -p 数据库名 表名 > xxx路径/xxx文件.sql

 该文件下保存的就是表创建到备份的所有操作。

 前面也说过没有带-B选项就需要在表中再source;

这里我在test3中重新source这个person表。

查看连接情况

show processlist; 

该命令可以查看目前使用数据库的用户的详细情况,可以了解是否有非法用户登录数据库。

 以上就是MySQL库的增删查改以及备份和复原的操作了。

MySQL表的操作

创建表

命令:create table table_name(

        field1 typename,

        field2 typename,

        field3 typename

) charset 字符集 collate 校验和 engine 存储引擎;

  • field:表示列名, 可以认为是类的成员变量名,不同field之间用 ',' 隔开,只是最后一行不需要 ','
  • typename: 表示列名的属性,有各种属性,后面再去了解
  • charset : 设定该表采用的字符集
  • collate : 设定该表采用的校验和
  • engine : 设定该表采用的存储引擎
  • 后面三个可以不用设定,自动采用库的默认字符集、校验和和引擎。

 

comment 后面表示对这个列名的注释。

这里我显式的指定这个表采用的存储引擎是 MyIsam,我们可以进到mysql对应的文件夹中看看建表所创建的文件。

 发现一共创建了三个文件。

然后创建新表,用InnoDB存储引擎。

发现只创建了一个文件 

这说明不同存储引擎的存储方式也是不一样的。 

查看表

命令: desc 表名;

Field:字段名称

Type:字段类型

Null:是否可以为空

Key:索引类型

Default:默认值

Extra:扩充 

此外,我们还可以通过命令查看表创建时的细节命令。

命令:show create table 表名 \G 

也可以通过命令查看数据库中所有表

命令:show tables;

 修改表

修改表的名称

命令:alter table table_name rename to new_table_name;

 

 插入新的属性

 我们先向表中插入两个数据

命令:insert into 表明 values(xxxxxxx...);  

 然后我们给表添加新的属性。

命令:alter table table_name add name datatype [DEFAULT expr] [column datatype]...)

  • DEFAULT expr :新属性的默认值

然后我们再查看表。

 

我们发现在新增属性之前插入的两条数据,对应的新属性的位置都是NULL。

而且我们可以指定新属性增加的位置。

 比如这里我将新增属性 name 设定在 id 之后,之后查看时发现name位置确实在id之后。

我们也可以在新增属性后添加comment,来说明该属性的作用。

而我们添加的属性在表的创建细节处也可以看到。

 修改属性

如果我们发现属性的类型长度不够时,我们可以修改属性的长度。

命令:alter table table_name modify 属性名 datatype

删除列属性

命令:alter table table_name  drop 属性名;

一般我们不会删除列属性,如果删除就需要保证这个属性不需要了,因为删除列属性后,这一列的数据也会删除。

 删除表

命令:drop table_name tbl_name;

 一般我们不轻易删除或修改表,防止上层出现bug。

总结

目前我们学习了数据库的增删查改和表的增删查改,也明白了数据库的删除和修改都是需要重点照顾的(防止出现bug),了解了DDL语句后,接下来还有其他语句需要学习,我们拭目以待。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pieces of cake concerning torchtorchvision

1. version match torchvision的版本对应关系 2. utilize tqdm to present process bar lay a pbar from tqdm import tqdm pbar tqdm(unit"batch", filesys.stdout,totallen(self.training_dataloader)) #处理单位为batch pbar2 tqdm(range(20), descIt\s a t…

生物信息学数据库分类

生物信息学数据库 (一)文献数据库 1、PubMed:拥有超过两百六十万生物医学文献的数据库,这些文献来源于MEDLINE,也就是生物医学文献数据库、生命科学领域学术杂志、以及在线的专业书籍。链接:PubMed (nih.g…

游戏租赁如何利用好闲鱼获客,实现月入10000单月游戏粉引流2000+

1. 个人名片与基本信息扩展 在宝贝85的闲鱼账号中,我们可以看到她的个人信息非常详细。作为一名00后的女生,她喜欢摄影,就读于长沙理工大学,并且拥有极好的芝麻信用。这些信息有助于增加买家的信任度,提高交易成功率。…

iOS应用程序的签名、重签名和安装测试

目录 前言 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 前言 ipa编译出来后,或者ipa进行修改后,需要进行重新签名才能安装到测试手机,或者提交app store供apple 商店审核上架。ipaguard有签名和重签名功能&…

【MATLAB源码-第176期】基于matlab的16QAM调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 在通信系统中,频率偏移是一种常见的问题,它会导致接收到的信号频率与发送信号的频率不完全匹配,进而影响通信质量。在调制技术中,QPSK(Quadrature Phase Shift Keyin…

基于深度学习的铁轨缺陷检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要:本文深入研究了基于YOLOv8/v7/v6/v5的铁轨缺陷检测系统。核心技术上,文章采用了最先进的YOLOv8,并整合了YOLOv7、YOLOv6、YOLOv5算法,进行了性能指标的对比分析。文中详细阐述了国内外铁轨缺陷检测的研究现状、数据集处理方法…

[C++初阶]初识C++(一)—————命名空间和缺省函数

声明: 本篇文献内容选自百度文库、比特就业课 代码内容部分选自比特就业课 一、命名空间 1.什么是命名空间 在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域中的所有标示符,而且其本身也是由标示符表示的。命名空间的使用目…

蓝桥杯(4):python动态规划DF[1]

动态规划相当于正着想?dfs主要适用于位置的变化? 子问题!状态,状态转移方程 1 一维DP 1.1 定义 重叠子问题!转换成子问题 ,与记忆化搜索很像 1.2 例子 1.2.1 上楼梯 子问题到最终的问题只能跨一步&…

Rredis缓存常见面试题

文章目录 1.什么是缓存穿透,怎么解决2.什么是缓存击穿,怎么解决3.什么是缓存雪崩,怎么解决4.双写一致性问题5.redisson添加的排他锁是如何保证读写、读读互斥的6.为什么不使用延迟双删7.redis做为缓存,数据的持久化是怎么做的8.re…

LInux脚本学习

1.注释 #单行注释 以 # 字符开头就是单行注释 当然第一行除外,比较特殊 2.多行注释 3.Shell文件的作用 Shell文件就是linux命令集 4.sh脚本的执行方式 bash xxx.sh 5.新建的文件会没有执行权限 #为文件赋予执行权限 chmod ux xxx.sh 6.编写规范 #!/bin/bash #…

Discuz! X3.5苗木_苗木网_苗木价格_苗木求购信息_苗木批发网模板utf-8

适合做苗木行业平台苗木网站、苗木信息网,提供苗木报价、各地苗木求购信息、绿化苗木采购招标、苗木基地展示、苗木百科知识、花木交易及苗木资讯、各地苗木信息网络行情。解压上传到template目录下,后台安装即可,包含PC手机端模板 下载地址:…

容器的底层技术:CGroup和NameSpace

无论是容器,还是虚拟机,都依赖于内核中的技术,虚拟机依赖的是 KVM,容器依赖的是 namespace 和 cgroup 对进程进行隔离和资源限制。 容器实现封闭的环境主要要靠两种技术,一种是看起来是隔离的技术,称为nam…