MySQL的总结

目录

文章目录

前言

1. 什么是数据库?数据库的作用是什么?(☆)

2. 市面上常见的关系型数据库有哪些?(☆)

3. 如何使用MySQL数据库实现数据的操作?

4. 如何使用Navicat连接数据库操作数据库?

5. 什么是MySQL的约束?MySQL约束的种类有哪些?(☆☆☆☆)    

6. 什么是默认值?什么是自动递增?(☆☆)

7. 什么是SQL语法?SQL语法的作用是什么?(☆☆☆☆☆)

8. 什么是外键约束?外键约束的规则是什么?(☆☆☆☆☆)

9. 外键约束的种类有哪些?每种模式的外键约束规则是什么?(☆☆☆☆)

10. 什么是MySQL的索引?MySQL索引的作用是什么?(☆☆☆☆☆)

11. MySQL中有哪些可以加快查询效率的策略!(☆☆☆☆☆)

12. 什么是MySQL的事务?MySQL事务的特点是什么?(☆☆☆☆☆)

13. 如何操作MySQL的事务?(☆☆☆☆☆)

总结


前言

本文介绍了我在学习MySQL时遇到的问题以及答案。


1. 什么是数据库?数据库的作用是什么?(☆)

     数据库本质上是一组程序!可以用来操作硬盘内的数据实现数据的管理!可以提供更简单更便携的操作数据的行为方式!数据库的本质就是一种组织数据的程序!
    数据库根据数据管理的形式不同,共分为两大种类:
    (1). 关系型数据库:适合存储结构化数据,数据以表结构形式存储!由于每个数据的规则一样,所以在关系型数据库中我们可以统一使用一种编程语法对数据进行操作!这种语法称为SQL语言!不太适合存储大批量数据!(适合百万级以下!)
    (2). 非关系型数据库:适合存储非结构化数据,数据不以表结构形式存储!但是由于数据的种类特点不同,其实非关系型数据库有很多种类!并且每种数据库的操作语法都不一样!适合存储大批量数据!(适合百万级以上!)

    业务员:一家学校做调研(1000名学生),采集每个学生个人信息!(采集:学号、姓名、年龄、性别、期末成绩),采集完毕后,将这1000个学生的信息管理并发一份文件给我!
    请问:你们会首选什么办公软件来汇总这些数据?Excel(以表的形式!)
    上述:结构化数据(每条数据包含的数据种类、数量一致!)

    业务员:一家学校做调研(1000名学生),采集每个学生的姓名和个人爱好!(数量不限),采集完毕后,将这1000个学生的信息管理并发一份文件给我!
    请问:你们还会选择Excel表格进行存储数据吗?不好!以关系图表形式更好!
    上述:非结构化数据(每条数据包含的数据种类、数量不一定一致!)

2. 市面上常见的关系型数据库有哪些?(☆)

     所有关系型数据库无论种类有多少,特点都是通过表结构形式存储数据!以SQL语法来操作数据库中的数据!(无论学什么数据库,核心语法都是类似的!)
    (1). Oracle数据库:Oracle(甲骨文)公司研发,是一款功能非常强大的关系型数据库!收费非常高昂!
    (2). MySQL数据库:瑞典小公司研发,后来被Oracle收购!是一款功能很齐全的关系型数据库!收费相对人性化!
    (3). SQL Server数据库:微软研发的数据库,只局限于微软旗下产品研发时会使用

3. 如何使用MySQL数据库实现数据的操作?

     MySQL数据库操作的语法叫做SQL语法,意味着安装完MySQL程序后,所有操作数据库的行为都是基于SQL语法基础上实现的!
    (1). 安装完MySQL核心服务后,MySQL内置了一个命令行窗口(DOS框)在该窗口中通过编写SQL代码即可连接数据库实现对数据的操作!但是这个窗口界面比较丑,并且功能有限!所以我们需要一个非常强大的第三方开发工具!
    (2). 通过Navicat第三方开发工具更快捷的操作MySQL数据库实现各种操作!

4. 如何使用Navicat连接数据库操作数据库?

    (1). 点击连接 --> 新建连接 --> 声明连接名和密码 --> 创建连接!
    (2). 右键连接名 --> 打开连接 --> 新建数据库 --> 声明数据库名称和字符集(utf8) --> 确定!

    (3). 右键表 --> 新建表 --> 设置表结构具体信息
        1>. 声明列的列名(以英文命名)

        2>. 声明列的数据种类
            int        整数类型
            double        小数类型
            varchar        字符串类型
            date        日期类型(年月日)
            time        时间类型(时分秒)
            datetime    日期类型(年月日时分秒)
            text        文本类型
            longtext    长文本类型
            timestamp    时间戳类型
    
        3>. 声明列数据的最大长度
            int    默认最大长度11,不声明长度按11处理!最多也只能存储11个长度的数据!(无论你声明几个长度,都按照最大11个长度处理!)
            double    可以声明小数点表示最多保留几位小数
            varchar    默认最大长度255,不声明长度按255处理!最多也只能存储255个长度的数据!
            剩下的所有类型无需长度,因为他们有固定要求!
            text    无需声明长度!最多存储64KB大小的数据!
            longtext无需声明长度!最多存储4GB大小的数据!

        4>. 声明列的约束规则

5. 什么是MySQL的约束?MySQL约束的种类有哪些?(☆☆☆☆)
    

     MySQL的约束就是添加在某列上的一种限制条件/限制规则!他可以约束某列数据必须符合这个规则!根据约束的规则不同,MySQL中支持四种约束!
    (1). 主键约束:限制某列数据不能为空并且不能重复!(一张表只允许添加一个!)
    (2). 非空约束:限制某列数据不能为空!
    (3). 唯一约束:限制某列数据不能重复!
    (4). 外键约束:未完待续....
    Oracle数据库除了支持上面四种约束之外,Oracle还支持检查约束(自定义的约束规则!)
    (5). 检查约束:规则(age < 100)

6. 什么是默认值?什么是自动递增?(☆☆)


    如果给某列添加默认值后,表示当添加一条数据时,如果这一列没有声明数据,那么默认以默认值进行填充!
    注意:如果遇到给字符串或者日期列添加默认值!一定要在默认值左右两端声明英文单引号!
    特殊默认值:如果某一列数据类型设置为timestamp类型,将这一列默认值设定为CURRENT_TIMESTAMP时,表示自动填充当前系统时间!
    
    自动递增:自动递增本质上是一种特殊的默认值!和默认值不同之处在于自动递增每次填充的数据都是递增的!(适合应用在编号列上!)
    自动递增的设置有五个特点:
    (1). 自动递增只能设置在int类型的列上!
    (2). 一张表中只能给一列添加自动递增!最好建议添加在编号列上!
    (3). 自动递增默认从1开始递增填充!但是如果表中已经存在数据时,自动从已有数据的最大值开始继续递增!
    (4). 如果删除某些数据后,编号自动递增不会重新生成!而是继续生成下一个内容填充!
    (5). 自动递增的目的不是为了保证数据是连续的!而是为了保证数据是不重复的!

7. 什么是SQL语法?SQL语法的作用是什么?(☆☆☆☆☆)


    SQL语法:Structure Query Language(结构化查询语言),它是操作所有关系型数据库用到的统一语法结构!
    SQL语法可以用来操作数据库中所有的业务,当然也包含数据的增删改查!创建用户、删除用户、创建表、删除表、设置权限等功能也可以通过SQL来实现。所以SQL语法根据实际使用常用场景不同,共分为五种写法:
    (1). DML语法:数据操作语言,专门用于操作表结构中的数据实现数据的增删改功能!包含:insert、update、delete
    (2). DQL语法:数据查询语言,专门用于检索表结构中的数据信息!包含:select
    (3). DDL语法:数据定义语言,专门用于定义表、用户等数据信息!实现表结构、用户的增删改查操作!包含:create、alter、drop、truncate
    (4). DCL语法:数据控制语言,专门用于用户的权限操作!包含:grant(授权)、revoke(撤销)
    (5). DTL语法:数据事务语言,专门用于操作数据库事务!包含:commit、rollback(下周讲!)

8. 什么是外键约束?外键约束的规则是什么?(☆☆☆☆☆)


    外键约束必须和另一张表中的主键约束进行关联!设置外键约束的列中只能填写关联的主键约束的中的数据信息!


9. 外键约束的种类有哪些?每种模式的外键约束规则是什么?(☆☆☆☆)


    建立外键约束时,在删除数据或者更改数据时,可以设置外键的模式!
    (1). RESTRICT:默认的规则!在主键数据发生修改或者删除时,会自动报错阻止主键数据的乱修改和删除!(不允许主键数据随意更改和删除!)
    (2). NO ACTION:效果同RESTRICT!
    (3). SET NULL:在主键数据发生修改或者删除时,直接将关联的外键数据设置为Null
    (4). CASCADE:级联属性,在主键数据发生修改或者删除时,外键数据同主键进行相同的操作
    总结:没有特殊要求一定要用默认的外键种类!因为外键关联的主键数据是不允许随意更改!如果就是不能用第一种模式,删除时优先选择SET NULL,修改时优先选择CASCADE。

10. 什么是MySQL的索引?MySQL索引的作用是什么?(☆☆☆☆☆)


    假设有一本书(表),这本书共有1000页(1000条数据),每个页都对应页码(地址),当把这本书发给大家,我说大家请翻开Java讲循环的那一页!你们怎么做?先翻开目录,找到某个知识点对应的页码,然后通过页码快速找到某个内容!
    MySQL索引本质上是添加在列上的一种数据结构!这种结构的底层是由树状图构成!当给某列添加索引后,该列中所有的数据就会自动被MySQL做成树状结构图!然后在进行条件检索时,MySQL就会先从索引中检索某个数据!再利用索引中数据对应的地址快速找到某个数据。
    索引的优势:提高了条件查询的效率!
    索引的劣势:消耗一部分系统内存!大大拖慢增删改的效率!

    总结:索引到底用还是不用?好还是不好?可以用!但是不要太多!
    (1). 一张表中不建议添加过多的索引结构!(最好不要超过4个!)
    (2). 索引最好添加在重复性低的列上才有效果!(例如:编号、手机号、身份证号)
    (3). 索引最好添加在主键列、外键列或者唯一约束列上最佳!
    (4). 字符串类型的列也可以添加索引,但是不如数字列检索的效率高!

11. MySQL中有哪些可以加快查询效率的策略!(☆☆☆☆☆)


    (1). 工作中明令禁止使用*号进行查询!因为会极大的拖慢查询效率!
    
    (2). 条件查询时尽量不要出现or或者in关键字!否则MySQL会放弃使用索引改为全表检索!
        例如:select id, name from student where id = 1001 or id = 1003
        例如:select id, name from student where id = in(1001, 1003)
        改为:select id, name from student where id = 1001
              union all 
              select id, name from student where id = 1003;

    (3). 查询时声明条件尽量不要使用is或者is not对null进行判断!否则MySQL会放弃使用索引改为全表检索!
        例如:select id, name from student where id is not null;
        改为:设置非空约束或者默认值,尽量防止null数据出现即可!

    (4). 查询时声明条件中,条件尽量不要出现函数!否则MySQL会放弃使用索引改为全表检索!
        例如:select id, name from student where ifnull(id, 0) != 0;
        改为:其他书写的手段!

    (5). MySQL建议,使用<>代替!=进行不等于的判断!这样效率更高!

12. 什么是MySQL的事务?MySQL事务的特点是什么?(☆☆☆☆☆)


    事务是MySQL处理业务的最小工作单元!事务只跟DML语法有关!(增删改!)并且一个事务中可以包含一个或者多个DML语句!
    例如:释放自我 --> 脱裤子 --> 蹲下 --> 使劲 --> 呻吟 --> 使劲 --> 擦屁股 --> 起立 --> 提裤子!(整件事中所有的步骤能否只运行一半或者其中几个?)
    
    如果在真正项目中,一次转账的发生,就可以理解为一个业务!
    user表:
    id    name    money
    1001    小明    1000
    1002    小芳    500
    
    需求:小明向小芳转账500元,数据库应该做什么操作?
    update user set money = money + 500 where name = '小芳';
    update user set money = money - 500 where name = '小明';
    结论:一次转账业务包含两个SQL语法!(但是称为一个事务!)


    MySQL事务的特点有四点:
    A:Atomacity(原子性),原子就是物理学上的最小粒子!换言之事务已经是数据库运行工作的最小单元,内部的DML语法不可以继续拆分运行!即:事务中的所有SQL语法要么一起运行成功,要么一起运行失败!绝对不允许只运行成功一半的情况!
    C:Consistency(一致性),事务运行前后数据总量保持一致!数据始终是同步的!
    I:Isolation(隔离性),每个事务必须独立运行!不能与其他事务混合!
    D:Durability(持久性),一旦事务运行成功后,对数据库的影响是永久的!无论系统崩溃还是服务器宕机,数据永远不会丢失!

13. 如何操作MySQL的事务?(☆☆☆☆☆)


    MySQL对于事务的操作共有两种模式:
    (1). 自动操作事务:事务中的DML语法运行结束后,MySQL会自动提交当前事务,让事务中的DML语法立即执行成功!
    (2). 手动操作事务:事务中的DML语法运行结束后,程序员需要通过commit或者rollback指令手动结束事务的运行!

    MySQL事务的操作模式默认就是自动操作事务!每一次执行DML语法时,MySQL都会自动提交事务!事务中的DML语法会立即执行结束!
    MySQL中通过set autocommit = 0;代码可以开启手动操作事务!
    
    commit:提交事务(让事务内的所有代码运行成功并结束事务!)
    rollback:回滚事务(让当前事务内所有代码运行失败并结束事务!)(回到上次提交状态)

    总结:事务手动操作好还是自动操作好?都好!看情况!


总结

以上就是今天要讲的内容,本文介绍了MySQL的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值