1.mysql中中文字符乱码问题解决:
(1)修改配置文件;
(2)对于已经创建好的数据库和表,要把数据库和表的字符编码都修改为utf8格式
2.使用group by分组查询的时候,select后面只能加函数或者group by后面的字段
举例:
(1) select name,dept,max(age) from table group by dept;
此处为错,select后面去掉name才是对的
3.缓存与缓冲的区别
缓存是用来读信息的,缓冲是用来写信息的
4.mysql逻辑架构
(1)客户端发起连接,指向连接池;
(2)然后访问缓存与缓冲,如果访问缓存能命中,就能直接从缓存中读信息,加快速度;
(3)如果不能命中,则访问sql接口,然后运行解析器,分析接口,然后指向优化器;
(4)优化器在不改变查询结果前提下,修改查询顺序,生成执行计划;
(5)存储引擎按计划分类执行,将结果返回,同时会给缓存一份。
5.mysql存储引擎
5.1.show engines;查看存储引擎(Myisam和InnoDB)
5.2.两个存储引擎:
(1)myisam是表锁,InnoDB是行锁,适合高并发,但是行锁会出现死锁;
(2)myisam只缓存索引,innoDB还缓存真实数据,所以对内存要求高;
(3)默认用的是InnoDB
6.mysql没有全连接,oracle才有
7.mysql单表限制50万条数据
8.索引
索引是帮助mysql高效获取数据的数据结构
8.1.优劣势
优势:
(1)提高数据检索的效率,降低数据库的IO成本
(2)降低数据排序的成本,降低了CPU的消耗
劣势:
(1)降低了更新表的速度,因为不仅需要更新数据,还需要更新索引
(2)索引实质上也是一张表,该表保存主键与索引字段,并指向实体表的记录,所以所以也要占用空间
8.2索引的结构(B+树)
B树与B+树
B树包含指向数据的指针,要比B+树占用的空间大,B+树结构一次加载的内容能比B树多1/3,所以采用B+树
8.3.索引分类:
(1)单值索引
(2)唯一索引
(3)主键索引:mysql建表的时候默认创建
(4)复合索引:一个索引包含多个列
8.4.创建索引的情况
(1)主键自动建立唯一索引
(2)频繁作为查询条件的字段应该创建索引
(3)查询中与其他表关联的字段,外间关系建立索引
(4)组合索引的性价比更高
(5)查询中排序的字段应该建立索引,能大大提高排序速度
(6)同理,统计或者分组字段要建立索引
8.5.不建索引的情况
(1)表记录太少
(2)经常增删改的表或者字段
(3)where条件里用不到的字段不创建索引
(4)过滤性不好,即字段可取的值种类很少,不建索引
8.6.索引失效情形:
(1)like模糊查询时,如果开头是通配符,索引会失效
(2)不在索引列上的操作会导致索引失效
(3)mysql在使用不等于(!=或<>)的时候无法使用索引
(4)is not null无法使用索引,但是is null可以使用索引
(5)字符串不加单引号会导致索引失效
8.7.两个表关联查询
(1)两个表分为驱动表和被驱动表,只能给被驱动表添加索引,驱动表添加索引没用
9.三大范式
(1)第一范式
数据表中每一列必须都是不可再拆分的,如地址列中,可以再拆分为国家,省,市等,这就不符合第一范式。
(2)第二范式
首先应该满足第一范式,然后所有非主属性都完全依赖于主键,可以是直接依赖也可以是间接依赖。
符合第二范式的关系模型可能存在数据冗余、更新异常问题。
(3)第三范式
首先应该满足第二范式,然后所有非主属性都直接依赖于主键,不能是间接依赖。
10.事务性
事务处理的特性,即ACID特性。
A,atimicity,原子性。事务的原子性表示事务执行过程中,把事务作为一个工作单元处理,一个工作单元可能包括若干个操作步骤,每个操作步骤都必须完成才算完成,若因任何原因导致其中的一个步骤操作失败,则所有步骤操作失败,前面的步骤必须回滚。
C,consistency,一致性。事务的一致性保证数据处于一致状态。如果事务开始时系统处于一致状态,则事务结束时系统也应处于一致状态,不管事务成功还是失败。
I,isolation,隔离性。事务的隔离性保证事务访问的任何数据不会受到其他事务所做的任何改变的影响,直到该事务完成。
D,Durability,持久性。事务的持久性保证加入事务执行成功,则它在系统中产生的结果应该是持久的。
11.完整性
三大完整性。
(1)列(域)完整性
是指对数据表中字段属性,也就是每一列的约束,通常指数据的有效性,包括字段的值域、类型等,确保不输入无效的值。
(2)行(实体)完整性
是指对关系中的记录唯一性,也就是主键的约束。
(3)参照完整性
是指对数据库中存在关联关系的数据表之间引用的约束,也就是对外键的约束,