标签:使用字符串 acid fun title 的区别 可重复 code 数据类型 分类
数据库
聚合函数
AVG()
COUNT()
MIN()
MAX()
SUM()
GROUP_COUNT(col)返回属于一组的列值连接组合而成的结果
表连接
内连接
外链接
交叉连接
自连接
子查询 IN ?NOT IN ?EXIST \NOT EXIST?= <>
子查询低于连接查询
事务的四个属性 原子性一致性隔离性持久性ACID
事务的四种隔离级别
1.read uncommitted(未提交读) 脏读
2.read committed提交读
3.repeatable read可重复读
4.serializable(可串行化) 最高隔离级别
MySQL中的事务
事务的实现基于数据库的存储引擎 不同的存储引擎对事物的支持度不一样
mysql的存储引擎支持事务的innoDB
事务的隔离级别分别是通过锁实现的,而事务的原子性一致性持久性是通过事务日志实现的
事务日志 重做日志redo undo只要为事务的回滚服务
一种特殊的文件,InnoDB数据表上的索引是表空间的一个组成部分,包含数据表里所有文件的指针
索引是创建在数据库表对象上的,由表中的一个字段或者多个字段生成的键组成.这些键存储在数据结构上(B-树或者哈希表) 通过mysql可以快速有效的查找与兼职相关联的字段
根据存储类型分为B-树(InnoDB\MyISAM)和哈希索引(Memoery)
普通索引最基本的索引无任何限制myiasm中默认的Btree类型的索引
--直接创建
create INDEX index_name ON table (colum(length))
--修改表结构添加
alter Table table_name ADD INDEX index_name ON (colum(length))
--创建表时同时创建索引
create table'table_name'(
'id' int(11) NOT NUll AUTO_increment,
'title' char(255) character set utf8 collate utf8_general_ci NOT NULL,
'content' character set utf8 collate utf8_general_ci NULL,
'time' int(10) NULL default NULL,
primary key('id'),
INDEX index_name (title(length))
)
--删除索引
DROP INDEX index_name ON table_name
唯一索引
--创建唯一索引 与普通类似 索引的列必唯一 但可有空值
create unique index ON table (colum(length))
主键索引 一支特殊的唯一索引不允许有空值
全文索引
FULLTEXT索引仅仅可用于MyISAM表
大容量的表使用全文索引索然速度更快,但产生全文索引是一个非常消耗时间和磁盘的做法
组合索引(最左前缀)
指定索引列时指定多个列
只有查询条件中使用了所关联的字段中的第一个索引字段,多列索引才会被使用
经常在where后出现的字段
分组所用的字段即groupby后边的字段
主键或者外键字段
设置有唯一完整性约束的字段
查询中很少使用的\拥有很多重复值的字段
show table like "Handler_read%";--查看索引
索引优化
一组预编译的SQL语句集
优
缺
存储过程的使用
存储过程
create procedure Rroc()
Begin
Select * from tb_person;
END;
存储函数
create function QUery_score(classID INT,studentID INT)
returns INT return
(select grage from tb_score where cID=classID and sID=studentID);
两者区别
应用场景
主从复制读写分离
分库分表
--查看MySQL的存储引擎
show engines
myisam和inndb的区别
区别 | myiasm | innodb |
---|---|---|
存储结构 | 三个文件第一个以表的名字开始.扩展名指出文件类型.frm文件存储表定义.MYD数据文件.MYI索引文件 | 所有表都保存在同一个文件,表的大小只受限于操作系统文件的大小,一般为2g |
存储空间 | 可被压缩 | 需啊哟更多的内存和存储空间 |
可移植性\备份\恢复 | 数据是以文件的形式存储,跨平台数据转移很方便 | 免费的方案可以拷贝备份binlog或者mysqldump数据量达到几十个g就难受了 |
事务支持 | 不支持 | 提供事务支持事务 |
表锁差异 | 只支持表级锁 | 支持事务和行级锁 |
Auto_increment | 可以和其他字段一起建立联合索引,自动增长列必须是索引,组合索引可以不是第一列 | 必须包含值又该字段的索引,自动增长列必须是索引,如果是组合索引必须是第一列 |
全文索引 | 支持FULLText类型的全文索引 | 不支持FullText,但可使用sphinx插件,效果更好 |
表主键 | 允许没有任何主键和索引的表存在,索引都是保存行的地址 | 如果没有设定主键或者非空唯一索引,会自动生成一个6字节的主键,数据是主索引的一部分,附加索引保存的是主索引的值 |
表的具体行数 | 保存有表的总行数,count(*)直接输出 | 没有保存总行数,count效率低,加了where,select两者相同 |
CRUD | 适合大量select | 适合大量Insert\update |
外键 | 不支持 | 支持 |
表锁
行锁(共享锁和排它锁)
共享锁:读锁
select ...lock in share mode
排它锁:写锁
select ...for update
乐观锁和悲观锁
悲观锁
select ...for update或者lock in share mode
乐观锁
版本(version)记录机制
时间戳(timetamp)
from -> where ->group by ->having ->计算式所的表达式 ->group by ->select 输出
标签:使用字符串 acid fun title 的区别 可重复 code 数据类型 分类
原文地址:https://www.cnblogs.com/lishisan/p/11219515.html