MySQL数据库:软件、相关知识和基本操作
1.前言与软件
数据结构可以说从哈希表那一节结束了之后,整个数据结构可以说就结束了(栈和队列时是我自己后面补充的,这个内容应该属于链表那块)。随着数据结构的结束,我们现在来到数据库的学习,在今后我们会用到如下两款软件:
1. MySQL客户端
这个是MySQL的客户端,一般不是非常复杂的操作都可以在这里实现。要注意看大版本是不是8.0的,只要是8.0就可以,至于8.0.32、8.0.15......等等,这些小版本的差异就无所谓。
在配置好,设置密码后,打开本软件就会出现像CMD命令行一样的东西,该软件就是这样子的。安装及配置过程可以看看其他人的博客。顺带一提,我的版本是8.0.33。
2. 可视化编辑器 workbench
这个可视化编辑器,我们一般操作步骤多的情况或者是稍微复杂的情况就可以在这里实现。
这个软件也是免费的,但是它相对来说会比付费的nagativ等编辑器就会差一点。话虽如此,但仅对于我们数据库基础阶段的学习来说是完全够用了。
注意:这个软件也要大版本 8.0 及以上。
打开之后就是如下界面,只需要点MySQL Connections右边的 + 号新建项目即可。名字可以随便取。
2. 数据库的简单介绍
数据库,它其实就是一个利于用来管理数据的软件,数据库它还可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。我们学习的是MySQL而不是SQL。SQL是一种查询和操作数据库的标准或语言,而MySQL是一款具体的关系型数据库管理系统(RDBMS),它支持使用SQL语言来管理数据。
简单来说,SQL是“普通话”,MySQL是能听懂并使用“普通话”的一款工具,二者是“语言”与“工具”的关系,而非包含关系。
前排提醒:这门语言可以说很简单,我们所学习的初阶只需要掌握简单的增删查改和一些复杂的查询即可。
数据库我们可以分为关系型数据库和非关系型数据库。
1. 关系型数据库
它是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
2. 非关系型数据库(了解)
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
(1)基于键值对的;(2)基于文档型的;(3)基于列的;(4)基于图的。
关系型数据库和非关系型数据库它们之间的区别:
关系型数据库 | 非关系型数据库 | |
使用SQL | 是 | 无强制要求,一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性高 |
使用场景 | 业务方面 | 用于数据的缓存等 |
3. 数据库的基本操作
3.0 bug与提醒
在你想要敲一些SQL语句代码时,如果你使用的是客户端,有可能会出现光标丢失问题,出现这种情况你就切换中文随便打一些字光标就会出现,这是一个bug。
然后就是一些数据库,你所不了解的,不知道的,千万不要动。如果说你改错了或者是删除了,然后你又没有备份,那你就只能将整个MySQL删掉再重新下了。
3.1 查看当前的数据库
show databases;
在你输入密码后,客户端中打上 show databases; 如果之前你的安装客户端步骤正确,就会出现以下四个数据库:
这里的 4 rows in set 中的 row 指的是查到了多少条记录,set 表示集合。后面的0.02 sec 表示的是执行时间。
3.2 创建数据库
create database [if not exists] 数据库名;
这里的 if not exists 被括号括起来是指该语句可以写也可以不写,然后如果你要写上这部分语句的时候这个中括号不需要敲进去。
注意:
1. 数据库名不能是关键字,如果直接使用关键字作为数据名并运行就会报错。比如本句语法的 create 和 database 就是众多关键字之一。
2. 关键字的书写对于大小写不敏感,你使用全大写或全小写的方式都可以。
如果要使用关键字作为数据库名,那么则需要在该数据名中加上反引号``。它位于Esc下方,数字一的左边;切换成英文就可以直接用该符号,不用加shift。
总结:
这时如果你想看看是否创建成功,只需要再重复一遍"查看当前数据库" 的操作即可。
注意:在今后书写的时候,我都建议加上诸如 “ if not exists ” 的这种语句。因为在以后真实的工作中,执行SQL语句肯定不会是一条一条执行的,而是批量一起执行。我们为了不让某条SQL语句的错误影响整个流程,都是会加上一些类似于 “ if not exists ” 的校验操作。
3.1.1 创建数据库时指定编码集
MySQL8.0 默认的字符集 utf8mb4 ,而 5.7 latin1(它不能存储中文);
MySQL8.0 默认的排序规则是 utf8mb4_0900_ai_ci,5.7 则是utf8mb4_general_ci。
创建数据库时可以手动明确指定编码集,这样子可以使代码让别人看的会更加直观。
写成代码就是:
create database [if not exists] 数据库名 character set utf8mb4 collate utf8mb4_0900_ai_ci
这里的ai和ci分别指的是对大小写不敏感和对口音不敏感,大小写不敏感刚才已经说过,就是书写时不看你是否大小写,只看你有没有拼写错误;而口音不敏感是由于英语在世界各个地区可能发音会各不相同,所以为了防止差异,设置了口音不敏感。
3.3 查看警告信息
show warnings;
注意是 warnings 而不是 warning ,如果出现错误则会有如下报错,我们再以show warnings; 展示出来就是如下情况:
3.4 选择要操作的数据库
use 数据库名;
这里的 database() 是MySQL提供的一个内置方法。
3.5 删除数据库
drop database [if exists] 数据库名;
比如我们就删除刚刚创建好的的 create 数据库,
Query OK 说明执行成功,此时再show databases; 就能看到是否真的被删除。
说明 create 已经被删除。
注意:删除数据库是一个非常非常危险的操作,我们以后在做项目或者是公司的业务时绝对不能随便删除,就算是真的要删除时也要非常慎重。因为如果你删错了,而且删的还是很重要的数据库,都有可能直接被炒鱿鱼。
4. 数值类型的介绍、相关操作及作用
4.1 整型和浮点型
数据类型 | 大小 | 说明 | 对应java类型 |
bit(M) | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应bit,此时 默认是1位,即只能存0和1 |
tinyint | 1字节 | Byte | |
smallint | 2字节 | Short | |
int | 4字节 | Integer | |
bigint | 8字节 | Long | |
float(M,D) | 4字节 | 单精度,M指定长度,D指定 小数位数。 | Float |
double(M,.D) | 8字节 | Double | |
decimal(M,D) | M/D最大值+ 2 | 双精度,M指定长度,D表示 小数点位数。精确数值 | BigDecimal |
numeric(M,D) | M/D最大值+ 2 | 和DECIMAL一样 | BigDecimal |
注意:
1. int 相关的类型很常用,常用在编号字段
2. 金额的表示一般使用decimal,而不用float 或double。因为在表示小数的时候float或double都不算特别精准。
扩展资料:
4.2 字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
datatime | 8字节 | 范围从1000到9999年,不会检索当前时区及转换。 | java.util.Date、 java.sql.Timestamp |
timestamp | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | java.util.Date、 java.sql.Timestamp |
5. 表格相关操作
5.1 创建表
create table 数据名 (field1 datatype,field2 datatype,field3 datatype
);
需要注意:
创建表时如果出现 1 warning ,说明出现了警告,表已存在。
5.2 查看表操作
decs 表名;
需要注意:
5.3 删除表
drop table [if exists] 数据名1,数据名2...;
删除表的时候的危险度与上文所提到的删除一致。
总结:
6. 创建完整表
创建完数据库之后,就要在数据库中创建表,表中存储的数据记录,一条记录由不同的列组成。创建完整表步骤如下:
1. 创建数据库;
2. 需要创建表时,先要选择要操作的数据库;
3. 创建出合适的数据表。
例:
大家可以先自己尝试一下,参考代码如下;
create database if exists CSDN;
create database CSDN character set utf8mb4 collate utf8mb4_0900_ai_ci;
use CSDN;
drop table if exists product;
create table product(name varchar(20),price decimal(11,2),storage int,description varchar(100)
);
这里的数据类型后面的数值可以不唯一,只要合理即可。
7. 相关习题
参考代码:
drop table if exists book;
create table book(name varchar(20),author varchar(20),price decimal(11,2),category varchar(20)
);
那么,本篇文章到此结束!希望能对你有帮助。