- 个人主页:努力学习的少年
- 版权: 本文由【努力学习的少年】原创、在CSDN首发、需要转载请联系博主
- 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
目录
一. 为什么要使用MySQL数据库?
二. 数据库的基本概念
数据库和数据库对象
1. 系统数据库
2. 用户数据库
三. 数据库的基本操作
1. 创建数据库
2. 显示数据库
3. 选择数据库
4. 删除数据库
5.数据库备份
6. 认识存储引擎
四. 存储字符集和校验规则
五. 数据类型
1. 整数类型
2. 字符串类型
3. 日期和数类型类型
4. 浮点类型,定数类型和为类型
浮点数类型
定点数类型
5. 枚举类型
六. 表的基本概念
1. 创建表的语法形式
2. 查看表结构
3. 删除表
4. 修改表
修改表名
增加字段
删除字段
修改字段的数据类型
修改字段的名字
Mysql是一款免费开源,小型,关系型数据库管理系统,它也是世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛,对简单的SQL处理效果好。
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux,Windows、Mac 和Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
数据库服务器、数据库和表的关系如下:
数据库服务器的底层是TCP协议,因此可以有多个客户端连接我们的数据库服务器进行操作。
如果我们自己想使用使用数据库,首先需要先安装数据库,安装数据库服务器后,然后先启动数据库服务器,然后在调用mysql客户端去连接我们的服务器,接下来就可以使用数据库了。
启动数据库服务器
systemctl start mysqld.service;
客户端连接数据库
mysql -u数据库用户名 -p
接下输入密码就可以登录到服务器上,然后进行各种操作。
数据库是存储数据库对象的容器。在MySQL软件中,数据库可以分为系统数据库和用户数据库两大类。
系统数据库是指安装完MYSQL服务器后,会附带的一些数据库,如图,系统数据库会记录一些必要的信息,用户不能直接修改这些数据库。
用户数据库是用户根据实际需求创建的数据库。下面的sjp就是用户数据库,数据库是存储数据库对象的容器,那么什么是数据库对象?数据库对象指的是存储,管理和使用不同结构形式,可以是:表,视图,存储过程,函数等。通俗的讲,数据库就是目录,数据库对象就是不同类型的文件,目录可以包含多个文件,数据库下可以包含多个数据库对象,文件存储数据,数据库也是进行存储数据。
如下:sjp就是用户数据库。
数据库的操作包括创建数据库,查看数据库,选择数据库以及删除数据库。
创建数据库实际在数据库服务器中划分一块空间,用来存储相应的数据库对象。
create database 数据库名;
注意:数据库中大部分指令都必须带 “ ;” 结尾.
实例:创建名字为sjp2的数据库。.
show databases;
实例; 查看MySQL软件中所有的数据库
数据库是数据库对象容器,在数据库管理系统中会存在大量的数据库,在操作数据库对象之前,就先需要确定是哪一个数据库。举个例子,数据库就好比我们的目录,数据库对象就好比文件,在操作文件之前,我们需要先进入哪一个目录。选择数据库就好比进入目录。
语法形式:
use 数据库名
实例:选择sjp数据库。
drop database 数据库名;
实例: 删除sjp2数据库
在进行删库操作的之前,建议对数据库进行备份,防止误删除导致不可逆的操作。那么怎么进行数据库备份了。
首先需要指定在linux目录下,然后输入如下指令:
mysqldump -P3306 -数据库用户-p -B数据库名 >数据库备份存储文件;
数据库还原
连接数据库,进入数据库客户端,输入如下指令。
source 备份的数据库路径
实例:
备份sjp数据库
3306是数据库的端口号,root是数据库用户,sjp是数据库的名称,sjp.mysql是备份的数据库文件,将数据库文件备份到当前目录下,sjp.mysql文件存储是对之前对sjp数据库进行的操作的所有指令。
只备份sjp数据库中的person表
恢复数据库
将sjp数据库给删除
恢复sjp数据库:
/home/sjp/2022/sjp.mysql是数据库的备份文件。
存储引擎是MySQL的一个重要特征,在具体开发,可根据实际需要来选择存储引擎。因为存储引擎指定了表的类型,即如何存储和索引数据,是否支持事务等。
show engines; (查看MySQL数据库管理系统中所查看支持的存储引擎。)
show variables like '%storage_engine%';查看默认的存储引擎
主要三种存储引擎的对比:
存储字符指定了数据库下的表中能够存储的语言,校验规则是数据库在查找的时候是以什么样方式去查找数据。当创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,默认校验规:utf8_general_ci。
查看数据库中能够存储的字符集:
show charset;
校验规则对数据库的影响
创建一个使用utf字符集,并对规则的test数据库。
create database db3 charset=utf8 collate utf8_general_ci;
在MySQL数据库管理系统,存储引擎决定了表的类型,决定了表的存储方式。而数据类型决定了表存储数据的类型。
数据类型 | 大小 | 无符号整数范围 | 有符号整数范围 |
TINYINT | 1 | 0~255 | -128~127 |
SMALLINT | 2 | 0~65535 | -32768~32768 |
MEDIUMINT | 3 | 0~16777215 | -8388608~8388608 |
INT | 4 | 0~4294967295 | -2147483648~ 2147483648 |
BIGINT | 8 | 0~18446744073709551615 | -9223372036854775808~9223372036854775808 |
mysql数据库存储的数据有很严格的要求,一个数据类型是有符号的TINYINT,如果你插入一个356的整数,那么就会插入失败,因为有符号的TINYINT的整数范围是-128~127,超过这个范围都会报错。
CHAR系列的字符串类型 | 描述 |
CHAR(M) | M为0~255之间的整数 |
VACHAR(M) | M为0~6535之间的整数 |
实例:test2表中的str的类型是char(3),str2的类型是varchar(3),因此str1和str2最多能够存储3个数据。可以是“汉字”。
关于varchar(len)和char(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
插入"abcd",超过3的数据个数,因此不能插入进表中。
varchar和char的区别:
日期和数据类型 | 字节 | 最小值 | 最大值 |
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -835:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
如果是DATE,DATETIME,TIME,YEAR数据需要手动填充,如果不填充,则会显示为空。
当我们想要插入time,date,year类型的数据,可以利用now()函数来返回当前时间。
如果数据是datetime类型时,那么当你在插入数据或修改数据行数据的时候,会自动记录你插入或者修改的时间。
浮点数类型 | 字节 | 最小值 | 最大值 |
FLOAT | 4 | +1.75494351E-38 -1.75494351E-38(有符号) |
+3.403823466E+38 -3.403823466E+38 |
DOUBLE | 8 | +2.2250738585072014E-308 -2.2250738585072014E-308 |
+1.7976931348623157E+308 -1.7976931348623157E+308 |
FLOAT的大小较小,而DOUBLE的精度更精确一些,具体使用的时候可以精度来判断。
定点数 | 字节 | 最小值 | 最大值 |
DEC(M,D)和DECMAL(M,D) |
M+2 | 与double相同 | 与double相同 |
其中M是数据的有效位数,D是小数点的位数。
如果插入的数据中的小数的位数大于D,那么就会将超出D的小数进行截断,发生四舍五入的现象。
如果插入数据的有效位数超过M,则会报错。
FLOAT和DOUBLE数据类型存储数据时是近视值,而DECIMAL存储的是字符串,所以DEXIMAL有更高的精度,在需要表示金额等货币的时候优先选择DECIMAL数据类型。
枚举类型 | 描述 |
enum | 枚举,可以包含多个值,但只能存储一种其中一个值。 |
set | 集合,可以包含多个值,可以存储其中多个值。 |
实例: 表中的sex的类型是enum('男','女'),habit的类型set('打篮球','敲代码','学习'),插入的数据只能从sex中二选一,从set中多选一,如下:
如果插入的数据从sex中选择两个的话,则数据库会直接报错。
enum在数据库中是用整数进行存储,而set是通过位数进行存储的。
表是包含数据库中所有数据的数据库的对象。数据库就类似我们的目录,数据库对象就类似文件,目录可以存放多个文件,文件内可以存储数据等内容。因此,我们可以把数据库看作是目录,表看作是存储数据的文件。
数据在表中是按行按列的格式进行组织,其中每一行代表一条唯一记录,每一列代表的记录中的一个字段。如下:
create table 表名(
属性名 类型,
属性名 类型,
属性名 类型,
...
);
其中“属性名”表示表中每一列的名称,“数据类型”指定每一列存储的数据类型。
实例:在sjp数据库下创建一个表.
use sjp; 使用sjp数据库
实例: 创建一个成绩表,其中表中包含学号,名字,语文,数学,英语的成绩如下:
代码说明:final_exam是表名字,表中有四个字段(四列),分别为int类型,varchar类型,各个字段直接用" , "分隔开,最后一个属性后面不需要“,”符号。
desc 表名;
实例:查看final_desc表的定义信息。
show create table 表名; 查看表的详细信息
在显示表详细定义信息时,可以使用" ; "," \G"符号来结束,为了让结果显示更美观,便于用户查看,最好使用“ \G ”结束。
实例:查看final_exam表的详细定义
存储引擎是InnoDB,存储字符集是utf8.
drop table 表名;
实例:
删除person1这个表.
在数据库中可以通过表名来区分不同的表,因为表名在数据库是唯一的,不能重复。在MySQL数据库修改表名可以通过alter table来实现。
alter table 表名 rename 新表名;
实例:将表final_exam名字修改为midsemeter,如下;
对于表,可以看成是由列和行来构成的,其中" 列 ”经常被称为字段,根据创建表的语法可以发现,字段是由字段名和数据类型来定义的。当表创建完后,可以使用alter table在表中增加新字段。
alter table 表名 add 属性名 属性类型;
实例:在midsemeter中新增sum列
在新增列中,每一行的该位置的数据都会被设置为NULL。
实例:在midsemeter添加descri字段到第一列中。
在结尾添加first是为了使descri字段放在表中的第一个位置。
实例:在midsemeter表,往english后面插入music字段
在结尾after english表示的是将新添加的字段放在english后面。
alter table 表名 drop 字段名;
实例:删除midsemeter表中的descri字段。
alter table 表名 modify 字段名 字段类型;
实例:将sum字段的类型由int变为double类型。
alter table 表名 change 字段名 新字段名 新属性名;
改语句可以同时修改字段名和属性,也可以只修改字段名。
实例:将midsememter表中字段music改名为art;