数据库搏击

news2024/11/15 8:39:09

1. Mysql入门

1.1 Mysql5.7 安装配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 命令行连接到Mysql

在这里插入图片描述

1.3 图形化软件

1.3.1 Navicat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • SQLyog
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.4 数据库三层结构

  1. 所有安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)
  2. 一个数据库中可以创建多个表,以保存数据(信息)。
  3. 数据库管理系统(DBMS)、数据库、表三者之间的关系,如图:
    在这里插入图片描述

2. Java操作数据库、表

2.1 创建数据库

  1. CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf8;
  2. COLLATE:指定数据库字符集的校对规则(常用的 utf8_bin[区分大小写]、utf8_general_ci[不区分大小写],注意默认是 utf_general_ci)

创建zzw_db02数据库,采用utf8_general_ci校验规则
创建zzw_db03数据库,采用utf8_bin校验规则
在这里插入图片描述
在这里插入图片描述

2.2 查询数据库

在这里插入图片描述

2.3 备份恢复数据库

  • 备份数据库(注意:在DOS执行)命令行

mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql
在这里插入图片描述

  • 恢复数据库(注意:进入mysql命令行再执行)
    在这里插入图片描述
    在这里插入图片描述
  • 备份数据库的表

mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > F:/table.sql

在这里插入图片描述

2.4 创建表

在这里插入图片描述
在这里插入图片描述

2.5 修改表

在这里插入图片描述

3 CRUD

3.1 insert插入

在这里插入图片描述

3.2 update修改

  • 使用细节
    1. UPDATE语法可以用新值更新原有表中的各列;
    2. SET子句指示要修改哪些列和要给予哪些值;
    3. WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有行;
    4. 如果需要修改多个字段,可以通过 SET 字段1=值1,字段2=值2…

在这里插入图片描述

3.3 delete修改

使用细节
1. 如果不使用where语句,将删除表中所有数据。
2. delete语句不能删除某一列的值(可使用update 设为 null 或者 ’ ’ )
3. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。(即:drop table 表名;)
在这里插入图片描述

3.4 select查询

在这里插入图片描述

  • select语句1
    在这里插入图片描述
  • select语句2
    在这里插入图片描述
  • select语句3
    在这里插入图片描述
    在这里插入图片描述
  • order by排序
    在这里插入图片描述
    – 查询加强
    在这里插入图片描述
    在这里插入图片描述

3.4.1 分页查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • group by, having, order by, limit 前后顺序在这里插入图片描述

3.5 mysql多表查询

3.5.1 多表查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5.2 自连接

在这里插入图片描述

3.5.3 多行子查询

在这里插入图片描述
在这里插入图片描述

3.5.4 查询临时表

在这里插入图片描述
在这里插入图片描述

3.5.5 all any操作符

在这里插入图片描述
在这里插入图片描述

3.5.6 多列子查询

、

3.5.7 表复制 && 去重

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5.8 合并查询

在这里插入图片描述

3.6 mysql外连接

在这里插入图片描述
在这里插入图片描述

3.7 主键

实际开发中,每个表一般都有一个主键
在这里插入图片描述
在这里插入图片描述

3.8 unique

在这里插入图片描述
在这里插入图片描述

3.9 外键

在这里插入图片描述
在这里插入图片描述

  1. 外键指向的表的字段必须是主键或者是unique;
  2. 表的类型是innodb,这样的表才支持外键;
  3. 外键字段的类型要和主键类型一致(长度可以不一致);
  4. 外键字段的值必须在主键中出现过,或者为NULL;(前提是外键字段允许为NULL);
  5. 主外键关系一旦形成,数据不能随便删除了;
    在这里插入图片描述
    在这里插入图片描述

3.91 check

在这里插入图片描述 在这里插入图片描述

3.92 自增长

在这里插入图片描述
在这里插入图片描述

  1. 一般来说自增长是和primary key配合使用的;
  2. 自增长也可以单独使用(需要配合一个unique);
  3. 自增长修饰的字段是整数型的(浮点型也可以,但是使用非常非常少);
  4. 自增长默认从1开始,但也可以通过以下命令修改;
    ALTER TABLE t25 AUTO_INCREMENT = 777;
  5. 如果添加数据时指定增长字段的值,则以指定的值为准,同时下次自增长的会从这个值开始;

3. Mysql常用数据类型

3.1 数值型(整数)的基本使用

使用规范:在能够满足要求的情况下,尽量选择占用空间小的类型
在这里插入图片描述

3.2 数值型(bit)的基本使用

bit字段显示时,按照位的方式显示;
查询的时候仍然可以使用添加的数值;
如果一个值只有0,1 可以考虑使用bit(1),可以节约空间;
位类型,M指定位数,默认值1,范围1~64;
在这里插入图片描述

3.3 数值型(小数)的基本使用

  1. FLOAT/DOUBLE [UNSIGNED]
    Float 单精度,Double 双精度
  2. DECIMAL[M,D] [UNSIGNED]
  • 可以支持更加精确的小数位,M是小数位数(小数点前面)的总数,D是小数点后面的位数;
  • 如果D是0,则值没有小数点。M最大是65,D最大是30.如果D被省略,默认是0;如果M被省略,默认是10;
    建议:如果希望小数的精度高,推荐使用decimal。
    在这里插入图片描述
    在这里插入图片描述

3.4 字符串的基本使用

CHAR(size):固定长度字符串 最大255字符
VARCHAR(size):0~65535字节 可变长度字符串,最大65532字节,1-3个字节用于记录大小【utf8编码size最大21844字符,gbk编码最大32766字符 】

  • 字符串使用细节1
    char(4):这个4表示字符数(最大255),不是字节数,不管中文还是字母都是放4个,按字符计算;
    varchar(4):这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据(gbk、utf8、big5);
  • 字符串使用细节2
    char(4)是定长(固定的大小),就是说,即使你插入’aa’,也会占用分配的4个字符的空间;
    varchar(4)是变长(变化的大小),就是说,如果你插入了’aa’,实际占用空间大小并不是4个字符,而是按照实际占用空间来分配;(varchar本身还需要占用1-3个字节来记录存放的内容长度):L(实际数据大小) + (1-3)字节
  • 细节3
    什么时候使用char,什么时候使用varchar
    如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号等;
    如果一个字段的长度不确定,我们使用varchar,比如留言,文章;
    查询速度:char > varchar

3.4.1 文本类型使用细节

存放文本时,也可以使用Text数据类型,可以将TEXT列视为VARCHAR列,注意Text不能有默认值,大小0-2^16字节;
如果希望存放更多字符,可以选择MEDIUMTEXT 0-2^24 或 LONGTEXT 0-2^32
在这里插入图片描述

3.5 日期类型的基本使用

在这里插入图片描述

  • 习题
    在这里插入图片描述

4. 函数

4.1 统计函数 count

在这里插入图片描述

4.2 合计函数 sum

在这里插入图片描述

4.3 合计函数 avg

在这里插入图片描述

4.4 合计函数 max/min

max/min函数返回满足where条件的一列的最大/最小值
在这里插入图片描述

4.5 分组函数 group by

  • 使用group by 子句对列进行分组
  • 使用having 子句对分组后的结果进行过滤
    在这里插入图片描述

4.6 字符串相关函数

在这里插入图片描述
在这里插入图片描述

4.7 数学函数

在这里插入图片描述
在这里插入图片描述

4.8 日期函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.9 加密函数

在这里插入图片描述
在这里插入图片描述

4.12 流程控制语句

在这里插入图片描述
在这里插入图片描述

5. 索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1 索引类型

  1. 主键索引:主键自动地为主索引(类型:Primary key);
  2. 唯一索引:(unique)
  3. 普通索引:(index)
  4. 全文索引:(fulltext)[适用于MylSAM]
    一般开发中,不适用mesql自带的全文索引;而是使用:全文搜索Solr和ElasticSearch(ES)

5.2 增删改

在这里插入图片描述
在这里插入图片描述

  • 哪些列适合使用索引
    1. 较频繁的作为查询条件的字段应该创建索引;
      比如:select * from emp where empno = 1;
    2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;
      比如:select * from emp where sex = ‘男’;
    3. 更新非常频繁的字段不适合创建索引
      比如:select * from emp where logincount = 1;
    4. 不会出现在WHERE子句中的字段不该创建索引;

6. 事务

  • 当执行事务操作时(dml语句),mysql会在表上加锁,防止其他用户更改表的数据
    在这里插入图片描述
    在这里插入图片描述
  • 如果直接回退到a点,那么中间的保存点都会被删掉,那就不能再回退到b点
    在这里插入图片描述
    在这里插入图片描述

6.1 隔离级别

多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据是的准确性;

脏读: 当一个事务读取到另一个事务尚未提交的改变(update、insert、delete)时,产生脏读;
不可重复读: 同一查询在同一事务中多次进行,由于其它提交事务所做的修改和删除,每次返回不同的结果集,则发生不可重复读;
幻读: 同一查询在同一个事务中多次执行,由于其它提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读;

事务隔离级别定义了事务与事务之间的隔离程度【✔ 可能出现;❌ 不会出现】

Mysql隔离级别脏读不可重复读幻读加锁读
读未提交(Read uncommitted)不加锁
读已提交(Read committed)不加锁
可重复读(Repeatable read)不加锁
可串行化(Serializable)加锁

在这里插入图片描述

6.2 事务的acid特性

  1. 原子性(Atomicity)
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生;
  2. 一致性(Consisrtency)
    事务必须使数据库从一个一致性状态变换到另一个一致性状态;
  3. 隔离性(Isolation)
    事务的隔离是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其它事务的操作数据所干扰,多个并发事务之间要相互隔离;
  4. 持久性(Durability)
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对数据有任何影响;

7. 存储引擎

  1. MySQL表的类型有存储引擎(Storage Engines)决定,主要包括MylSAM、innoDB、Memory等;
  2. MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG MYISAM、MYISAM、InnoDB;
  3. 这六种又分为两类,一类是“事务安全型(transaction-safe)”,比如InnoDB;其余都属于第二类,称为“非事务安全型(non-transaction-safe)”;
    在这里插入图片描述
  4. MylSAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求;
  5. InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MylSAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引;
  6. MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,MEMORY类型的表访问非常快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉,表的结构还在。
  • 如何选择存储引擎?
  1. 如果你的应用不需要事务,处理的只是基本的增删改查,那么MyISAM是不二选择;
  2. 如果需要支持事务,则选择InnoDB
  3. Memory存储引擎将数据存储在内存中,由于没有磁盘/IO等待,速度极快。但由于内存存储引擎,所做的任何修改在服务器重启后都将消失;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

8. 视图

视图是一个虚拟表,其内容由查询定义。同真是的表一样,视图包含列,其数据来自对应的真实表(基表)

在这里插入图片描述

  • 视图的基本使用
    在这里插入图片描述
  • 视图细节
    在这里插入图片描述
    安全:有些字段是保密的,不能让用户直接看到;
    性能:关系型数据库往往会分表存储,建立视图可以避免使用join连接;
    灵活:淘汰旧表;

9. mysql用户

mysql中的用户,都存储在数据库mysql的user表中
SELECT host, user, authentication_string FROM mysql.user;
在这里插入图片描述
其中user表的重要字段说明:
1. host:允许登陆的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.1
2. user:用户名
3. authentication_string:密码,是通过mysql的password()函数加密之后的密码

  • 创建用户
    create user ‘用户名’@‘允许登陆的位置’ identified by ‘密码’
  • 删除用户
    drop user ‘用户名’@‘登陆的位置’
    在这里插入图片描述

9.1 Mysql权限管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用户root
在这里插入图片描述
用户zzw
在这里插入图片描述

  • 细节
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式 - 六大设计原则之LSP(里氏替换)

文章目录概述里氏替换原则问题由来里氏替换的原则里氏替换原则的作用CaseBad ImplBetter Impl抽象银行卡类储蓄卡实现类信用卡实现类单元测试小结概述 里氏替换原则(Liskov Substitution Principle , LSP) 由麻省理工学院计算机科学西教授 Barbara Lisk…

MySQL两种引擎的索引

推荐看看这个视频,将两种引擎实现的索引原理说的比较清楚 4-2 索引概述 本文转载:想飞的盗版鱼的博客​​​​​​ mysql5.5之后都是用idb了 补充一个主键和索引的关系:Are You OK?主键就是聚集索引吗? 索引类型…

五个简单常用的系统命令

一、文件扫描修复 以管理员身份进入命令提示符,输入Sfc空格/scannow 二、使用Check disk命令检查并修复磁盘错误 1、开机时连续不断的点击F11键,选择(疑难解答)-选择(高级选项)-选择(命令提示…

virtualbox运行Ubuntu系统

virtualbox安装 下载virtualbox VirtualBox 7.0.6版本下载 安装virtualbox 点击执行VirtualBox-7.0.6-155176-Win.exe即可, 直接点击"下一步" 直到 “完成” 导入以有的ova虚拟机文件 1)点击导入 2)选择下载的ova文件 3&a…

GD32F4——定时器(TIMERx)

一、概述 定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。 GD32F450ZGT6共14个定时器,分别为 (1)高级定时器(TIMERx,x0,…

LightGBM介绍

LightGBM介绍 GBDT是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好,不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被应用于多分类、点…

【ONE·C || 数据存储】

总言 C语言:数据存储相关介绍。 文章目录总言1、基本数据类型介绍1.1、整体介绍1.2、各数据类型分别说明(整型、浮点型、构造、指针、空)2、整型在内存中的存储2.1、原码、反码、补码2.1.1、总体介绍2.1.2、char、short类型在内存中的存储范围…

顺序表的具体使用方法.数据解构(二)

前言 提示:文本为数据解构(一)后续补充文: 本文具体讲解顺序表的具体使用方法 提示:以下是本篇文 系列文章目录 第一章 数据解构(一) 文章目录 前言 系列文章目录 一、静态的使用方式 二、动态的使用方式 1.定义一个结构体 2.初始化 3.扩容…

【ArcGIS微课1000例】0060:ArcGIS打开las格式点云数据的方法

文章目录 1. 使用上下文菜单创建 LAS 数据集2. 使用地理处理工具创建 LAS 数据集3. 显示LAS数据集LAS 数据集是位于文件夹中的独立文件,并且引用 LAS 格式的激光雷达数据和用于定义表面特征的可选表面约束要素。ArcGIS中,可使用创建 LAS 数据集工具或 ArcCatalog 中文件夹的上…

23种设计模式(二十)——责任链模式【数据结构】

文章目录 意图什么时候使用责任链真实世界类比责任链模式的实现责任链模式的优缺点亦称:职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility 意图 将链中的每一个节点看作是一个对象,每个节点处理的请求不同,且内部自动维护一个下一节点对象。当一个请求…

【OpenGL学习】camera and camera control

摄像机 游戏中的相机可以理解为与现实中的相机类似,可以捕获对应的游戏画面。Camera在游戏引擎中一般也会展示为现实中相机的模型,使用时有两种实现方式,一种以组件形式挂载在Character上,一种则是单独存在。通常来讲&#xff0c…

Flutter 基础-下

一、shared_preferences shared_preferences 是一个本地数据缓存库(类似 AsyncStorage) https://pub.dev/packages/shared_preferences 使用步骤 在 pubsepc.yaml 中添加 shared_preferences 依赖安装依赖(pub get | flutter packages get |…

Git使用Merge和Rebase区别及心得技巧

git rebase命令常常因为江湖上关于它是一种Git魔法命令的名声而导致Git新手对它敬而远之,但是事实上如果一个团队能够正确使用的话,它确实可以让生活变得更简单。在这篇文章中我们会比较git rebase和经常与之相提并论的git merge命令,并且在真…

【回望2022,走向2023】一个双非二本非科班的学生的旅途

目录 1.自我介绍 2.高考与暑假 梦想 幻灭 决心 暑假 3.大一上学期 4.奋进之路 5.展望未来 1.自我介绍 我是一个双非本科的大一学生,在2023年的新春之际,借着CSDN的这次年度总结活动,来好好回顾一下,2022这个平凡却又不乏…

css 2D转换

文章目录一、什么是2D转换二、rotate() 方法(旋转)三、translate() 方法(位移)四、scale() 方法(缩放)五、skew() 方法 (倾斜)一、什么是2D转换 在二维空间下对元素进行移动、缩放、…

面试官问我有没有分布式系统开发经验,我一脸懵圈…

目录 从单块系统说起团队越来越大,业务越来越复杂分布式出现:庞大系统分而治之分布式系统所带来的技术问题一句话总结:什么是分布式系统设计和开发经验补充说明:中间件系统及大数据系统 前言 现在有很多Java技术方向的同学在找工…

深度学习网络---YOLO系列

深度学习网络—YOLO yolov1(仅适用一个卷积神经网络端到端地实现检测物体的目的) 首先将输入图片resize到448448,然后送入CNN网络,最后处理预测的结果得到检测的目标;yolov1的具体思想是将全图划分为SS的格子&#xf…

结构型模式-外观模式

1.概述 有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基…

智能的本质不是数据算法算力和知识

编者按:人机之间未解决的大部分问题不是统计问题,而是统计概率分布外的问题。人是自然的,又不是自然的,还是社会的,人类和机器都可以作为认知的载体,但认知的性质是不同的,一个是生命的认知&…

GA6-BGSM/GPRS模块介绍

GA6-BGSM/GPRS模块简介GA6-B是一个4频的GSM/GPRS模块,工作的频段为:EGSM 900MHz、 GSM850MHz和DCS1800, PCS1900。GA6-B支持GPRS multi-slot class 10/ class 8(可选)和 GPRS 编码格式CS-1, CS-2, CS-3 and CS-4。模块的尺寸只有2…