MySQL开篇
文章目录
- 一、前置知识
- 1. MySQL的安装
- 2. 前置一些概念知识
- 二、MySQL数据库操作
- 2.1 概念
- 2.2 数据库的操作
- 2.2.1创建数据库命令
- 2.2.2 查看数据库
- 2.2.3 选中数据库
- 2.2.4 删除数据库
- 三、MySQL数据表操作
- 3.1 概念
- 3.2 数据表的操作
- 3.2.1 创建表
一、前置知识
1. MySQL的安装
MySQL 是一款基于 SQL 语言的开源关系型数据库管理系统(RDBMS),最初由瑞典 MySQL AB 公司开发,现为 Oracle 旗下产品。它以表格形式组织数据,通过结构化查询语言实现对数据的存储、检索和管理,广泛应用于中小型网站、企业级应用及云原生环境。
在学习这段MySQL数据库首先得对软件进行安装,常见的软件数据软件有Oracle、MySQL、MySQLserver等软件,这里小编使用的主要是mysql这个软件,这个软件安装具体教程可以参考博哥哔哩哔哩中的教程:mysql安装视频
2. 前置一些概念知识
MySQL是一个“客户端-服务器”结构的软件,那么什么是客户端,什么是服务器呢?
客户端
客户端(client):主动发起请求的一方。
客户端给服务器发起的数据,称为请求(Request)。
所谓的客户端其核心角色是通过网络协议与服务器通信,将用户操作转化为指令,接收并展示服务器返回的结果。就比如你登录qq,输入账号和密码给服务器那头,然乎服务器根据你的账号和密码是否正确返回登录成功和界面等信息。
服务端
服务器(server):被动接收请求的一方。
服务器给客户端返回的数据,称为响应(Response)。
分布式系统
分布式系统:一台机器,处理的数据是有限的,往往就需要引入多台机器相互配合,完成更复杂的操作。在分布式系统中,机器之间也是需要进行网络通信的。
在上面图看来,一台机器不仅可以作为客户端也可以作为服务器的。
在学习mysql中,mysql的主体就是服务器,在服务器这边来负责存储和管理数据的(也就是CRUD增删查改)。那么存储数据存储在哪个地方呢?答案是电脑硬盘上。
那么什么是硬盘呢,这就需要讲解一下一台电脑的核心构造了。
一台电脑的硬件设备
一台电脑里面包含的核心的硬件设备主要有以下几个部分。
1、cpu(电脑最核心的部分,中央处理器)
2、主板
3、内存:访问速度快,但是空间小,存储的数据可能因为掉电而容易丢失数据。价格昂贵。
4、硬盘:访问速度慢,但是空间大,存储是数据更加持久不易丢失。价格便宜。
5、散热器
6、电源
7、机箱
8、显卡
9、外设:显示器、键盘、鼠标。
而在电脑上打开设置:RAM则是内存。
而像这些D盘C盘等,称为硬盘。
二、MySQL数据库操作
2.1 概念
安装好Mysql后,我们学习的主要是命令行(如 MySQL 的 mysql 命令)而不是图形化界面(如 MySQL Workbench)。操作数据库的命令,也成为SQL语句,它可以理解为一种编程语言。想要进行操作数据库,那我们就得了解以下什么是数据库。
数据库操作
此处是数据库指的是一个逻辑上的数据集合,一个MySQL服务器程序,可以在硬盘上组织和保存很多数据。MySQL服务器是一个关系型数据库,通过一个个表来组织的,所谓的表就跟我们日常使用的excle表很相似。一个mysql服务器上,有很多很多的表,把有关联关系的一些表放到一起,就构成了一个数据集合,此时这个数据集合就被称为数据库。而一个MySQL服务器上可以有很多个这样的数据库的。
2.2 数据库的操作
数据库主要有四种操作:
- 创建数据库
- 查看数据库
- 选中数据库
- 删除数据库
2.2.1创建数据库命令
通过上面的概念,学习MySQL我们主要通过一堆命令进行存储和管理数据的。而创建数据库的命令为
create database + 数据库名字 + 分号
注意:create database这两个单词就是SQL中含有特定意义的单词,也被称为关键字和Java关键字是一样的。数据库中的数据库名、表名、列名等都不能和关键字重复,如果确实想要让表名和列名和关键字一样,可以使用反引号·也就是左上角ESC键下的那个符号来把表名和列名进行引起来。当然这两个关键字也可以大写。在sql中大小写是不敏感的,既可以用大写,也可以用小写。此时就开始创建数据库.
然后进行创建数据库:
因为数据库在创建的时候不能进行重复,否则会进行报错。补充一下:数据库是支持换行操作的。分号为一条SQL语句结束。
有人会想这里报错就报错了,我在重新创建一个不就好了,当然在实际学习过程中是可以直接创建的。但是在企业实际工作中,很多时候是把一系列sql语句写到一个文件当中,批量执行的,而很少这样一条一条的进行执行的。在批量执行的情况下,如果一条sql语句报错,后面的sql语句就无法继续执行了,那么为了避免这种情况的出现,在创建数据库的时候只需要加上一个修饰符来应对上述问题就不会出现报错了。
语法形式:create database if not exists + 数据库名字 + 分号
这句话很好理解,这就不需要小编给大家翻译了。
除此之外,创建数据库,指定字符集
在创建数据库的时候,可以手动指定一下字符集的。
语法形式:charset + 字符集名字 或者 character set + 字符集的名字。
比如:
为什么会提供这种方法呢?因为MySQL默认的字符集是拉丁文,不支持中文,但是在存储数据到数据库当中,我们需要保存中文类型的数据,那么我们在创建数据库的时候,手动指定编码方式为支持中文的编码方式的字符集:如utf8,GBK。谈到字符集,小编在这里讲解一下字符集。
字符集在小编认识的过程中,只认识了三个:GBK、UTF8、Unicode。
- GBK:中国制定的中文扩展编码标准,兼容 GB2312,支持约 2.1 万汉字及符号。但是它仅支持中文、部分日韩汉字及符号,不适用于多语言环境。一个汉字在使用GBK编码的方式下是占两个字节。其实在学习c语言的时候我们使用的就是GBK,在使用VS的时候,在windows进行书写代码,windows简体中文版默认的字符集是GBK,Vs默认的字符集是和系统一致的,在这种情况下,一个汉字是占2个字节的。
- utf8:Utf8使用一种变长编码实现,使用 1~4 个字节表示字符,兼容 ASCII。:ASCII 字符(如 A)占 1 字节,与 ASCII 编码完全一致。因此不仅可以表示中文也可以表示世界上任何以中国语言文字,在utf编码格式,汉字是占3个字节。
- unicode:是给一个字符进行编码的,但是无法给字符串进行编码。比如把多个unicode编码的字符放到一起构成字符串,就可能出现乱码,无法区分字符和字符之间的边界。于是基于unicode就演化出一些可以给字符串编码的版本utf8.
在mysql当中上面的语句utf8是残本,也就是说是不完全的utf8,它少了一些emoj表情。后来,mysql创建了utf8mb4,也就是完全体utf8。
2.2.2 查看数据库
列出当前mysql服务器上一共有那些数据库。
语法:
show databases;
2.2.3 选中数据库
数据库最关键的操作就是针对表进行增删查改,表是从属于数据库的(数据库中存在很多表)。要针对表进行操作,就需要先把哪个数据库的表指定清楚。
语法:
use 数据库名;
2.2.4 删除数据库
删除操作,删除的不仅仅是数据库,而且也删除了数据库中所有的表和表中的数据,在企业上这是一个非常危险的操作。因为在线上数据库当中,存储的是用户的信息等。就比如加入你的身份信息存储在数据库当中,把数据库删了,完蛋,世界没你这个人了,查也查不到了。
语法:
drop database + 数据库名字;
三、MySQL数据表操作
在前面小编就说了,在进行数据表的操作前,首先得先选中哪个数据库当中。因为一个MySQL服务器上存在很多数据库,每个数据库存在很多表。假如你这个表本来想要存储一些食物的名字,不小心存入到汽车的数据库当中称为汽车的数据这能行么,所以针对不同的表,首先选中你要存储在哪个数据库当中。
3.1 概念
数据表是 MySQL 中存储和组织数据的核心单元,采用二维结构,由行(记录)和列(字段)构成。
行的作用:每行代表一条独立的数据记录(如一名用户的所有信息)。
列的作用:每列定义数据的属性(如 姓名、年龄),并需指定数据类型(如 VARCHAR、INT)和约束(如主键、非空);
3.2 数据表的操作
数据表的操作主要有以下四种:
- 创建表
- 查看该数据库当中的所有表
- 查看指定表的结构
- 删除表
在一个表当中包括很多行,每一行也称为一条记录,一个行里可以有很多列,每一列也就是一个字段,每一列都是有一个具体类型的。它的类型为如下:
数据类型 | 大小 | 说明 | 对应的java类型 |
---|---|---|---|
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 |
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
在实际运用过程中,我们只需要记住以上一些数据类型即可。这里讲解一下varchar(size),它对应的是java类型当中的字符串String,size表示该类型最多可以存储size个字符(不是字节)。当你写size等于10,不是说当前就立马分配10个字符的存储空间,而是首先会分配一个比较小的空间,如果不够,自动扩容。但是最大空间不会超过10。在实际存储过程中,一般会很少在数据库当中的某一列存储特别大的数据,这么做会大大影像到数据的增删查改的效率。实际开发过程中,如果需要保存图片,一般都是把图片单独放到专门的目录下,然后数据库保存的是图片的路径。
3.2.1 创建表
创建表语法为:
create table 表名(列名 类型,列名 类型…);
这个后面列名跟java变量创建是一样的,前面的是变量名后面的是类型,跟正常的变量创建是相反的。