MySQL按照,库的操作,表的约束 --- MySQL总结(一)

news/2024/7/7 20:16:54

MySQL

文章目录

  • MySQL
    • MySQL的安装
    • MySQL组成架构
      • 连接池
      • 软件层
      • 引擎层
      • 储存层
    • 库的操作
      • 创建库
      • 修改数据库
      • 删除数据库
      • 备份数据库
      • 还原数据库
      • 查看链接情况
    • 表操作
      • 创建表
      • 查看表结构
      • 修改表结构
        • 添加字段
        • 修改字段类型长度
        • 更改表名
        • 修改属性
        • 删除表
      • 数据类型
      • 表的约束
        • 空属性(not null)
        • 默认值
        • 列描述
        • zerofill
        • 主键
        • image-20230418204637770
        • 复合主键
        • 唯一键
        • 外键
      • 表的增删改查
        • 数据的插入

MySQL的安装

按照mysql最简单的方法使用宝塔面板进行安装(需要直接安装宝塔面板,非常方便)

image-20230416085421427

选择mysql版本进行安装

IMG_1045AF0237A2-1

这样设置mysql密码,

IMG_65918F05D133-1

使用XShell进行连接,root可以更改用户名称,使用不同的用户进行登陆。

MySQL组成架构

mysql本质就是一个数据管理的软件

分成四成,对应数据进行控制。

c463af8e092da063e8aff443b58aa061

连接池

客户端与用户端连接,直接需要安全验证等内容,防止被攻击,出现危险情况,防止数据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为结尾*/

image-20230416171210209

这里的.sql储存,之前书写过的sql语句

还原数据库

source 储存位置/*以.sql结尾*/ 

可以直接还原数据库的内容,这里的操作是在mysql数据库里面,

查看链接情况

IMG_0F5C55CEA4A6-1

表操作

创建表

create table if not exit table_name(
属性...
)character=utf8 engine=MyISAM;

不同的储存引擎,创建表的文件不相同。

查看表结构

image-20230416185131799

desc table_name;

IMG_52BFB7AD47A7-1

这里查看属性信息,具体的信息上面都进行解释。

修改表结构

这里最经常使用的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 的类型长度与类型

image-20230416193719980

更改表名

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进行删除。

数据类型

IMG_77AA7371CBA3-1

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设置不为空,如果插入的时候为空,没有办法进行插入

默认值

IMG_CFBC6B893BCD-1

某一个属性的后面增加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 ;

image-20230418203826112

zerofill

IMG_21D0954BB444-1

这里直接将id的所有的东西补充满

主键

一个表只有一个主键,主键对应的元素不可以重复,可以后序进行追加主键

这个一般是与其他的表无关的

image-20230418204637770

这里使用的primary key进行修饰id

这里与唯一键的最大是在业务上的,不是在语法上吗的区别

复合主键

image-20230418212328285

这里使用primary key(column1,column2),组成了复合主键,只要插入的元素与这两个同时不同就可以了。

image-20230418212617178

自增长

在这里插入图片描述

这里使用了自增长要与primary key(主键)进行联合使用。

这里插入数据之后缺少主键的值,就会自动进行增长。(缺省插入)

image-20230418214028126

如果插入与主键不同顺序的数字,之后的增长就会从自己插入的数字进行增长。

唯一键

image-20230418214357893

与主键的不同之处在于,这个唯一键为了满足业务本身而生成的唯一键,主键本身与业务无关。其他基本相同。

外键

定义主表与从表之间的关系,进行分表,增加查询的速度。

要保证使用的都是同一个数据库,主表必须是有主键或者唯一键约束。

image-20230419085715629

这里创建两个表,t1为第一个表,t2为第二个从表。他们相连的元素是主表(t1)的id,从表(t2)的pid。

这里利用的是他们的进行约束,基本上就是业务上面进行相连,例如

一个学校的班级表,与学校里面的学生表。学生表里面的班级就可以上学校的班级做为约束。

表的增删改查

数据的插入

简单的数据插入

image-20230420193034465

对应有主键的数据表进行插入,与普通插入不同,下面总结具体的插入的过程。

insert into table_name values(数据) ON DUPLICATE KEY UPDATE 数据;

这里既是是主键相同也可以进行插入,进行同步更新

replace into table_name(类型) values(数据);

主键重复(或者唯一键)没有冲突,则直接插入

主键重复(或者唯一键)有冲突,删除之后再插入


http://lihuaxi.xjx100.cn/news/1063830.html

相关文章

哪款无线洗地机最好用?好用的无线洗地机分享

洗地机是近几年来比较火的家庭清洁工具,我从推出以来就一直在使用,这些年下来也使用过不少品牌的洗地机,其中有好用的,也有体验一般的。今天为大家分享几款个人使用下来感觉还不错的洗地机。希望对于同样在选购洗地机的你有所帮助…

Python每日一练(20230424)

目录 1. 滑动窗口最大值 🌟🌟🌟 2. 用栈实现队列 🌟 3. 直线上最多的点数 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

《面试1v1》java泛型

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官:小伙子,说实话,泛型这个机制一开始我也是一头雾水,搞不太明白它到底要解决什么问题。你能不能不那么书呆子,给我普普通通地讲一讲泛型? 候选人…

掌握这些移动测试技巧,棘手的问题也能游刃有余解决了

目录:导读 引言 一、测试的程序 二、功能测试点 三、移动端安卓环境变量 性能测试 四、实操通过USB连接到手机设备 五、adb操作命令 写在最后 引言 你是否曾经遇到过打开一个移动应用后出现各种问题,比如卡顿、闪退等? 这些问题可能会…

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

如何使用Tensorflow神经网络模型来完成兰州房价预测分析?

兰州房价预测是一个非常热门的话题,许多人都对如何预测兰州房价感兴趣。在本文中,我将介绍如何使用TensorFlow来预测兰州房价,并提供Python源代码。 首先,我们需要收集兰州的房价数据。我们可以从房地产网站或政府统计数据中获取。在本文中,我们将使用Kaggle上提供的兰州…

动态规划——最长非降子序列

该问题的思路及应用可参考动态规划——导弹拦截 最长非降子序列Time Limit: 5000 MSMemory Limit: 5000 KB Description 给定一个长度为N的整数数组, 请计算该数组中最长非降了序列长度。Input 第一行输入M(M<10)表示有M组数据。每组数据输入N(N<10000), 接下来输入N个…

Ubuntu20.04安装CUDA和CUDNN

CUDA是GPU深度学习的运行库&#xff0c;那么cuDNN就是训练加速工具&#xff0c;两者要相互配合使用&#xff0c;所以一般机器学习需要训练引擎(tensorflow-gpu) CUDA cuDNN使用。想不安装cuDNN是不可以的&#xff0c;而且cuDNN版本要和CUDA版本相互搭配。 1、前置工作 查看…