(一)手写数据库基本的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.)存在索引列的数据类型隐形转换,则用不上索引,比如列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
(七)Explain包含哪些列: 详情请点击:此处查看(5.) where 子句里对索引列上有数学运算,用不上索引
(6.) where 子句里对有索引列使用函数,用不上索引
,
(八)type包含哪几种值: