MySQL常用操作及优化总结

MySQL连接
    1:主机IP
    2:主机PORT
    3:数据库用户及密码
    4:使用MySQL不需要申请表空间,但需要schema

linux通过MySQL客户端连接数据库
    mysql -h127.0.0.1 -P3316 -umysql -pmysql

schema
    1:亦可以叫做database,库、数据库,是MySQL中组织和管理表的一个结构。
    2:进行创建表及相关curd操作,必须先有schema
    3:MySQL默认包含4个schema,test用户可以操作,其余3个系统使用

MySQL使用
    1:创建数据库  create database 数据库名;
    2:查看数据库  show databases;
    3:选择数据库  use 数据库名;
    4:删除数据库  drop database 数据库名;
    5:查看建表语句    show create table 表名;
    6:mysql支持标准SQL

MySQL基本操作
    1:查看表结构    desc tablename
    2:复制表        create table 新表名 like 源表名
    3:删除表        drop table 表名1[,表名2...]
    4:修改表        alter table 表名 更改动作1[,更改动作2...]
                    -- alter table student add addr(25)  --增加表字段
                    -- alter table student changes addr text --更改表字段名和字段类型
                    -- alter table student drop addr --删除表字段
                    -- alter table student rename to stu --更改表名称

limit
    MySQL使用limit n,m分页,limit位于select整个查询语句之后
    limit n,m 表示从第n行开始取m行数据,n可省略,默认从0开始


事务控制
    1:设置事务提交方式
        set autocommit = 0|1  --自动提交:1(mysql默认自动提交) --自行控制提交:0
    2:开始事务    start transaction|begin
    3:提交事务    commit
    4:回滚事务    rollback

MySQL存储引擎
    1:MySQL支持多种存储引擎,在处理不同的应用时,可以通过选择不同的存储引擎来提高应用效率,灵活存储
    2:MySQL存储引擎包括:InnoDB、MyISAM、BDB、MEMORY、等,其中只有InnoDB和BDB提供事务安全表,其它存储
    引擎都是非事务安全表
    3:创建表时可以指定表使用的存储引擎和字符集
        -- create table mydb(id int,name char(20)) engine=InnoDB charset=utf8
    4:InnoDB存储引擎
        -- MySQL默认存储引擎
        -- 支持事务
        -- 行锁设计,提供高并发性
        -- 支持外键,确保数据完整
        -- 独立的ibd文件存储表结构和数据
        -- 支持全文索引
        适用场景:强调可靠性和需要支持事务的处理
    5:MyISAM存储引擎
        -- 不支持事务(指的是对数据不能进行回滚这些,并不是部分成功部分失败,数据库本身会保证原子性)
        -- 表锁设计
        -- 不支持外键
        -- 支持全文索引
        -- 使用数据压缩和索引优化
        -- 特点:可靠性高、适用范围广、检索速度快
        适用场景:强调数据检索速度,读写并发不多场景,写少读多


MySQL支持的基本数据类型
    -- Numeric类型
    -- data and time 类型
    -- String类型
    选择原则:根据选定的存储引擎,确定合适的数据类型
    1:按照存储引擎选择数据类型
        InnoDB存储引擎和数据列,建议使用varchar类型
        --对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有的数据行都指向数据列值
            的头指针)因此在本质上,使用固定长度的char列不一定比使用可变长度varchar列简单。因而,主要
            性能的因素是数据行使用的存储总量。由于char占用的平均空间多余varchar,因此使用varchar来最
            化需要处理的数据行。
        5:MyISAM存储引擎和数据列
        -- MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列
    2:数据类型选择
        1:数字型,字符串
            优先使用数字类型,占用空间少,处理速度快
        2:优先使用ENUM或SET
            字符串,固定选项值
            -- `sex` enum('F','M') comment '性别'
        3:避免使用null字段
            -- 很难进行查询优化
            -- null列加索引,需要额外空间,需要避免
            -- 含null复合索引无效
        4:少用并拆分text/blob
            -- 很难进行查询优化
            -- 强制生成硬盘临时表,浪费更多空间
            -- 若必须使用则拆分成单独的表

MySQL的索引
    1:MySQL表所有列都可以建索引
    2:在MySQL5.6中,对于InnoDB表,整字段索引最大支持767字节,前缀最大可以支持3072字节长。
    索引的建立
        1:搜索的所以列,不一定是要选择的列,最适合索引的列是出现在where字句中的列
        2:使用唯一索引,考虑某列中值的分布
        3:使用短索引,如果对串列进行索引,应该指定一个前缀长度。
        4:使用利用最左前缀

SQL语句优化
    1:sql要尽可能简单,复杂sql要尽量拆成小的sql
    2:事务要简单,整个事务的时间长度不要太长
    3:避免使用触发器、函数、存储过程
    4:降低业务耦合度,业务各自使用独立的库、表
    5:避免在数据库中进行数字运算
    6:不要用select*,查询那几个字段就select这几个字段即可
    7:sql中使用or的改写为in(),因为or的效率没有in高,in里边的数字个数建议控制1000以内
    8:limit分页注意效率,limit越大,效率越低
    9:使用union all 代替 union
    10:避免使用大表的join
    11:使用group by 分组排序
    12:在sql语句中,尽量避免前缀是%的like
    13:SQL语句中不可以出现隐式转换,比如select id from stu where id='1' 会把id隐式转换为字符


Oracle与MySQL的一些差异
    1:自动增长的数据类型处理
        MySQL有自动增长数据类型,插入数据时不用操作此字段,会自动获得数据值。
        Oracle没有此类型
        MySQL自增列的定义:
            CREATE TABLE t1 (
                             c1 INT(11) NOT NULL AUTO_INCREMENT,
                             c2 VARCHAR(10) DEFAULT NULL,
                             PRIMARY KEY (c1)
                            ) ENGINE=InnoDB;
        默认自增长从1开始增长;
    2:单引号处理
        MySQL里可以用单引号、双引号包起字符串,Oracle里只可以用单引号包起字符串。
        在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
    3:翻页的sql语句处理
        MySQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;Oracle处理翻页的SQL语句就比较
        繁琐了。每个结果集只有一个ROWNUM字段标明它的位置。
        -- MySQL:select * from test limit 1,10;
    4:日期字段处理
        MySQL日期时间字段分DATE、DATETIME、TIMESTAMP、TIME、YEAR,
        Oracle日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒,
        或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’) 年-月-日 24小时:分钟:秒
        的格式YYYY-MM-DD HH24:MI:SS TO_DATE()日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD
        HH24:MI:SS’) 日期字段的数学运算公式有很大的不同。MySQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE((NOW(),INTERVAL 7
        DAY)Oracle找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
    5:空字符的处理
        MySQL的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。 
        按MySQL的NOT NULL来定义Oracle表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,
        如果为NULL或空字符,需要把它改成一个空格的字符串。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 从零开始带你成为MySQL实战优化高手(130节),是一套涵盖了MySQL数据库优化的全面学习教程。MySQL是一款常用的关系型数据库管理系统,优化MySQL的性能对于提高数据库操作的效率至关重要。 该教程的130节从基础知识开始,包括MySQL的安装和配置、基本SQL语句的使用,以及索引的原理和使用等。接着介绍了数据库表的设计优化和数据类型的选择,帮助读者了解如何优化数据库的结构。 在进一步深入学习中,该教程重点讲解了查询优化和索引优化的技巧。它详细介绍了MySQL查询执行的流程和性能影响因素,以及如何通过使用合适的索引和优化查询语句来提高查询效率。此外,还介绍了锁定机制和事务处理的优化方法,帮助读者更好地应对并发操作和高负载压力。 除了优化数据库性能外,该教程还涵盖了备份和恢复、监控和诊断等方面的内容。它介绍了MySQL的备份和恢复策略,以及如何通过监控工具来追踪和分析数据库的性能问题。此外,该教程还分享了一些常见的优化实践和技巧,帮助读者更好地应用所学知识。 通过学习该教程,读者将掌握MySQL数据库优化的核心概念和技能,并能够在实际工作中应用这些知识。无论是从事数据库管理、开发还是运维工作,通过成为MySQL实战优化高手,读者都能够提升工作效率,优化数据库性能,提供更好的用户体验。 ### 回答2: 要成为MySQL实战优化高手,需要通过学习和实践来提升自己的技能和经验。以下是从零开始带你成为MySQL实战优化高手的步骤和内容: 1. 基础知识学习:从MySQL的基本概念、架构和常用命令开始学习,理解数据库的基本原理和操作方法。 2. SQL语句优化:学习如何编写高效的SQL语句,包括合理选择表达式、索引的使用、避免全表扫描等技巧。 3. 索引设计:深入了解MySQL索引的原理和不同类型的索引使用场景,学习如何为表设计合适的索引,提高查询性能。 4. 查询性能优化:学习如何通过查询优化器、查询执行计划等工具来分析和优化查询语句,提高查询的执行效率。 5. 数据库参数调优:了解MySQL常用参数设置和优化原则,学习如何根据实际需求和硬件配置来调整参数,提升数据库性能。 6. 数据库架构设计:学习如何合理划分数据库表、使用数据分区、设计合适的数据类型等,提高系统的扩展性和性能。 7. 事务和并发控制:了解事务的基本概念和特性,学习如何正确使用事务和锁机制,保证数据的一致性和并发性能。 8. 数据库备份与恢复:学习如何进行数据库的备份和恢复,包括全量备份、增量备份、物理备份和逻辑备份等方法。 9. 数据库监控和性能调优:学习如何使用MySQL自带的监控工具和第三方性能分析工具,对数据库进行实时监控和性能调优。 10. 实践项目:通过参与实际项目的开发和维护,积累实战经验,提升自己的实际操作能力和解决问题的能力。 总结来说,成为MySQL实战优化高手需要坚持学习和实践,不断提升自己的技能和经验。同时,多参与实际项目和团队协作,通过和他人的交流和互动,加速自己的成长和进步。 ### 回答3: 要成为MySQL实战优化高手,首先需要掌握MySQL的基本知识和使用方法。建议从学习数据库的基础知识开始,了解数据库的概念、关系型数据库和非关系型数据库等的特点和应用场景。 接下来,学习MySQL的安装和配置,掌握MySQL的常见命令行操作和GUI工具的使用。了解MySQL的体系结构和数据存储方式,熟悉MySQL的各种数据类型和索引类型。 学习MySQL的SQL语句,包括数据的增删改查操作、表的创建和修改、条件查询、多表查询、排序、分组等常用的SQL语句。熟悉MySQL的事务和锁机制,了解如何处理并发访问和脏读、幻读等问题。 进一步学习MySQL的性能优化技巧,包括索引设计、查询优化、SQL语句性能调优、数据库参数和配置优化等方面。学习如何通过explain查询计划、慢查询日志等工具进行性能分析和优化。 深入学习MySQL的高级特性,包括分区表、分布式数据库、存储过程、触发器、事件调度器等。了解MySQL的复制、备份和恢复机制,熟悉主从复制、多主复制等架构。 通过实战项目来提升自己的实战能力。可以尝试从零开始搭建一个具有一定规模和复杂度的MySQL数据库,模拟真实的应用场景,进行数据建模、查询优化、性能调优等工作。 不断阅读学习MySQL的相关技术文档、博客和社区,在实践中积累经验,与其他MySQL开发者和优化高手交流讨论问题,提升自己的专业水平。 最后,坚持学习和实践,持续关注MySQL的最新动态和发展趋势,保持学习的热情和好奇心,才能逐渐成为MySQL实战优化的高手。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值