MySQL
文章目录
- MySQL
- MySQL的安装
- MySQL组成架构
- 连接池
- 软件层
- 引擎层
- 储存层
- 库的操作
- 创建库
- 修改数据库
- 删除数据库
- 备份数据库
- 还原数据库
- 查看链接情况
- 表操作
- 创建表
- 查看表结构
- 修改表结构
- 添加字段
- 修改字段类型长度
- 更改表名
- 修改属性
- 删除表
- 数据类型
- 表的约束
- 空属性(not null)
- 默认值
- 列描述
- zerofill
- 主键
- image-20230418204637770
- 复合主键
- 唯一键
- 外键
- 表的增删改查
- 数据的插入
MySQL的安装
按照mysql最简单的方法使用宝塔面板进行安装(需要直接安装宝塔面板,非常方便)
选择mysql版本进行安装
这样设置mysql密码,
使用XShell进行连接,root可以更改用户名称,使用不同的用户进行登陆。
MySQL组成架构
mysql本质就是一个数据管理的软件
分成四成,对应数据进行控制。
连接池
客户端与用户端连接,直接需要安全验证等内容,防止被攻击,出现危险情况,防止数据pass掉。
软件层
对应搜索引擎语句进行控制,进行输入MySQL语句的修改(进行修饰)。
其他的图在上面有解释
引擎层
根据使用频率等相关的操作,设置不同的储存引擎
create table student(
id int(10)
)engine = Merge;
比如这里把引擎设置成为Merge,可以使用其他的搜索引擎搜索。
储存层
将数据储存到硬盘之中的数据,进行相应的处理。
库的操作
创建库
create database if no exists databases_name charset=utf8 collate=utf8_general_ci;
后面的charset与collate为设置字符集与校验集,一般系统默认生产(决定性元素 :浅黄色文字:数据库本身的字符集,到OS本身的字符集 )。设置仅仅在需要更换操作系统的时候。
修改数据库
这一件事情最主要的时间就是alter(修改的意思),专门对应数据库内容的修改(不是 表的内容修改,是数据库的属性修改)。
alter database database_name/*数据库名称*/ charset= gbk;
这里将字符集将更改为gbk。数据库其他的属性也可以进行设置。
删除数据库
drop database if exists databases_name;
直接删除所有的数据的东西,包括对应的联机删除,里面的数据全部都被删除
备份数据库
mysqldump -P3306/*端口,可以自己进行设置*/ -uroot -p password/*需要自己进行属性*/ -B database_name/*数据库名称*/ > 储存位置/*以.sql为结尾*/
这里的.sql储存,之前书写过的sql语句
还原数据库
source 储存位置/*以.sql结尾*/
可以直接还原数据库的内容,这里的操作是在mysql数据库里面,
查看链接情况
表操作
创建表
create table if not exit table_name(
属性...
)character=utf8 engine=MyISAM;
不同的储存引擎,创建表的文件不相同。
查看表结构
desc table_name;
这里查看属性信息,具体的信息上面都进行解释。
修改表结构
这里最经常使用的alter(改变)进行表的结构改变。
添加字段
alter table table_name add id int(100) after id1;
这里增添一个名字叫做id,类型为int,大小为100字节,其他的类型添加也差不多。把id的字段添加到id1字段后面(after),也可以使用before设置咋某一个字段前面。
修改字段类型长度
alter table table_name modify column_name 类型长度
修改column 的类型长度与类型
更改表名
alter table t1 rename to name2;
更改名字从t1变成name2。
修改属性
alter table table_name column1 change name column2 varchar(32);
把column1改成 column2 类型为varchar(32)。
删除表
drop table table_name
删除表名为table_name进行删除。
数据类型
tinyint 有符号的整形(-128 - 128),tinyint[unsigned]无符号整形,(255),bit[m] 表述有m个比特位。
flost(m,d) [unsinged]m为总的位数,小数点后面d位 进行标准
decimal比较flost之前有非常多区别,decimal精度更高char(L)固定的字符串,L为字符数量
char字符串为255 varchar()动态字符串类型 可以动态决定插入的字符串的范围。数据长度都是相同的就是使用定长,数据长度不相同使用变长(效率低)。
date类(日期类)yyyy-mm-dd
timestamp时间戳
datastamp 时间日期格式 yyyy-mm-dd HH:ii:ss 表示范围从1000到9999 自动获取现在的时间
enum枚举只可以属性选择其中的一个这里面储存的是相应的数字,而不是属性。
set集合可以选择多个属性使用位图进行储存相关的信息为0就是这个属性不存在,为就是这个属性存在。find_in_set(s)。
表的约束
空属性(not null)
create table table_name(
id int(10) not null
);
这里将id设置不为空,如果插入的时候为空,没有办法进行插入
默认值
某一个属性的后面增加default 可以设置默认值,t1没有被填充的时候会自动填充为“空人”
列描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tkzlUX64-1681990945043)(https://raw.githubusercontent.com/assibe/Drawing-bed/master/%E6%88%AA%E5%B1%8F2023-04-18%2020.35.44.png)]
这里的comment进行注释,使用desc查看不到comment之后的注释。对应程序员进行限制。
show create table table_name ;
zerofill
这里直接将id的所有的东西补充满
主键
一个表只有一个主键,主键对应的元素不可以重复,可以后序进行追加主键
这个一般是与其他的表无关的
这里使用的primary key进行修饰id
这里与唯一键的最大是在业务上的,不是在语法上吗的区别
复合主键
这里使用primary key(column1,column2),组成了复合主键,只要插入的元素与这两个同时不同就可以了。
自增长
这里使用了自增长要与primary key(主键)进行联合使用。
这里插入数据之后缺少主键的值,就会自动进行增长。(缺省插入)
如果插入与主键不同顺序的数字,之后的增长就会从自己插入的数字进行增长。
唯一键
与主键的不同之处在于,这个唯一键为了满足业务本身而生成的唯一键,主键本身与业务无关。其他基本相同。
外键
定义主表与从表之间的关系,进行分表,增加查询的速度。
要保证使用的都是同一个数据库,主表必须是有主键或者唯一键约束。
这里创建两个表,t1为第一个表,t2为第二个从表。他们相连的元素是主表(t1)的id,从表(t2)的pid。
这里利用的是他们的进行约束,基本上就是业务上面进行相连,例如
一个学校的班级表,与学校里面的学生表。学生表里面的班级就可以上学校的班级做为约束。
表的增删改查
数据的插入
简单的数据插入
对应有主键的数据表进行插入,与普通插入不同,下面总结具体的插入的过程。
insert into table_name values(数据) ON DUPLICATE KEY UPDATE 数据;
这里既是是主键相同也可以进行插入,进行同步更新
replace into table_name(类型) values(数据);
主键重复(或者唯一键)没有冲突,则直接插入
主键重复(或者唯一键)有冲突,删除之后再插入