视图 view 虚拟表(sql的查询结果)
创建 create view vuser as select cat_id,avg(shop_price) as pj from goods group by cat_id;
删除
视图其实是物理表的投影
作用:权限控制 通过视图开放一列或者几列
简化复杂查询
如果视图的每一行与物理表是一一对应的则可以互相更新
视图的一行是由物理表进行计算得到的结果 则视图不能够更新
视图的算法
merge 存储视图语句 合并
temptable 视图本身比较复杂 执行视图创建语句 结果集形成内存中的临时表 然后查临时表
create algorithm =merge view goods.v1 as select goods_id,avg(shop_price) as pj,avg(market_price) as mpj from goods;
algorithm=temptable
alter view
drop view v1;
show create view v1;
查看表 desc goods;
删除表 drop table goods;
查看建表过程 show create table goods;
查看表信息 show table status ;
查看具体表的详细信息 show table status where name='goods';
修改表名称 rename table old to new;
初始化表数据 truncate table; 相当于drop和create
存储引擎 数据库对同样的数据 有着不同的存储方式和管理方式
默认引擎:InnoDB
Myisam 批量插入速度 高
InnoDB 低 支持事务安全 日志系统健全 不易丢失
字符集 UTF8
查看支持的编码 show character set;
查看支持的校验规则 show collation;
编码校验规则:用于排序和比较使用 _ci不区分大小写的比对
字段指定编码格式未指定校对规则,会采用该编码默认校对规则
字符集mysql环境 show variables like "%character%";
设置mysql字符集环境 client connection database filesystem results server system
set character_set_client=utf-8; 设置为utf-8
索引 index
作用:数据的目录,能快速定位行数据的位置。
代价:提高了查询速度,降低了增删改的速度(索引也会发生变化)
一般在查询频率高的列上加,而且列重复度低的列上 效果更好
普通索引 key
唯一索引 unique key 便于查询和约束数据 email char(20) unique key email(email(10)) 针对email列的前10个字符 建立索引 email
主键索引 primary key id int primary key(id)
全文索引 fulltext 中文环境下无效果 (分词+索引 sphinx)
多列索引 把多列的值看成一个整体
create table t1(xing char(2),ming(char(10),key xm(xing,ming));
explain select * from t1 where xing=‘你’ and ming=‘真是’ \G; 查看如何利用索引来处理这条语句执行情况 \G将字段打印到单独的行 使用到了索引
explain select * from t1 where xing=‘你’ 使用到了索引
explain select * from t1 where ming=‘真是’ 没用使用索引 左前缀 从左往右 由左可以确定 由右不可以确定
冗余索引 某一个列上可能有多个索引
create table t1 (xing char(2),ming char(10),key xm(xing,ming),key m(ming));
show index from t1; 查看索引
alter table t1 drop index ming 删除索引
drop index ming on t1 删除索引
alter table t1 add index xm(xing,ming) 增加索引
alter table t1 add unique m(ming);增加索引