MySQL数据库相关的知识

 (一)手写数据库基本的SQL语句:

    库、表、字段、索引: 

     (1.0)数据库 的增删改查:

1. create database  yy【库名】 charset utf-8【一般都是用UTF-8编码】;删2. dorp  database  yy; 

查3.  show database  yy; 

改4.   根据存储引擎划分:(1.)  MyISAM 可以直接修改库目录名字。  (2.) InnoDB不支持直接修改【原因:可能会出现数据丢失】:---->修改方法:①创建目标数据库。②将原库数据表资源移动到新库。                                    

     (2.0)数据表 的增删改查:

增1.  crate table  tyy(XXX);删2.  drop  table  tyy;

查 3. show tables;show table     改 4.  alter table xx【旧表名】  rename  to  新表名;

     (3.0)字段 的增删改查:   

增1.【一般在创建表的时候就添加了】或者  : alter table yy  add  xxx【添加字段的名字】 + 字段类型【varchar】; 

删2.  alter  table  yy  drop xxx【字段】;

查3.  SELECT username FROM manager  ;

改4.   alter table yy  change username【旧字段】   user【新字段】   varchaer(20) not  null;

     (4.0)索引的增删改:请点击:索引的增删改详解 

     (5.0)多表查询:请点击:多表查询详解 

(二)常见的SQL优化。请点击:常用的SQL优化

 (三)MySQL索引的数据结构请点击:查看详情

       (1.0)B-Tree

       (2.0)B+Tree 

 (四)SQL关键字的执行顺序:


 (五)什么时候该(不该)建索引。

            该(建在哪些字段上面):

          (1.)较为频繁出现的字段。

            不该的:

          (1.)数据量很小的时候。【索引也需要维护,需要占用空间】(2页的手册,就不用翻目录了)

           (2.)数据经常大量修改的时候。【索引维护成本增加】

           (3.)唯一性太差的字段不适合建立索引。

           (4.)不出现Where条件的字段不适合建立索引。

            (5.)Where子句里面对索引列使用不等于(>  <),使用索引效果一般。   

(六)什么时候索引会失效。

            (1.)如果条件中有or,即使其中有部分条件带索引也不会使用(这也是为什么尽量少用or的原因),例子中user_id无索引


注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

     (2.)对于多列索引,不是使用的第一部分,则不会使用索引

     (3.)like查询是以%开头


       (4.)存在索引列的数据类型隐形转换,则用不上索引,比如列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引


        (5.) where 子句里对索引列上有数学运算,用不上索引

image

         (6.) where 子句里对有索引列使用函数,用不上索引

image

(七)Explain包含哪些列详情请点击:此处查看



(八)type包含哪几种值

           

猜你喜欢

转载自blog.csdn.net/qq_36381855/article/details/80005730