mysql学习(三)——进阶(关系存储、自关联、视图、事务、索引、时间监测)

  • 关系的存储
    实体与实体有三种对应关系
    一对一,一对多和多对多
    一般情况下:
    1当A表与B表中的数据为1对1的关系时,字段可以建立在A和B任意一张表中。
    2当A表对B表为1对N时,数据存储在 B 表中,在B表中建立字段对应A。
    3当A表与B表为N对N时,可以利用一定办法处理(还不是很懂,先占位置)

  • 自关联
    数据库新建一张表的开销比在一张表中存储更多的数据开销更大,因此当两张表内容所具有的字段相似又具有一定逻辑关系时,可利用一个或几个字段存储它们之间的逻辑关系,将其存储在一张物理表中,但逻辑上仍为多张表,达到节省开销的目的。
    例:省份和市在行政上属于从属关系
    create table areas(
    id int primary key,
    title varchar(20),
    parent_id int,
    foreign key(parent_id) references areas(id) #即自己的字段作外键
    );
    在插入数据时,如果是省,则parent_id=NULL,如果是市,则parent_id=对应省份id。
    按照上述操作,可以将省、市放在同一张表中,记录之间又有逻辑上的关联。

  • 视图
    一些查询经常用到,且查询语句相对复杂,这时候可以利用视图,将查询进行封装,类似函数,形成一个特殊的表。
    相关操作:
    创建视图
    create view 视图名 as
    select * from 表名;
    查看
    select * from 视图名;#以后只要写这一句,相当于写了很大一串查询语句

  • 事务
    为保证一个业务逻辑完整性而提出的。
    支持事务的engine:innodb或者dbd
    事务的过程:begin,commit,rollback
    使用事务的情况:当表被改动时,如update,insert,delete时。
    使用举例:如要修改学生id为1的姓名
    begin;#开启事务
    update student set name=‘Bob’ where id = 1;
    接下来commit和rollback二选一结束事务
    commit; #将结果提交
    rollback;#将刚才的结果撤销

  • 索引
    一般的应用系统,读写比例在10:1左右,而写操作和更新操作很少遇到性能问题,性能问题常常在查询时出现,因此优化查询是非常重要的。索引可以提高访问性能。主键就是一个特殊的索引。
    索引使用的原则:
    选择列的数据类型,越小的数据类型越好。
    尽量避免null,尽量指定列为not null,mysql中,含有null的很难优化。对这种情况,可选择用0或者其他特殊值来表示null。
    在写where +or 组合时,尽量将有确定值的条件写在前面。
    索引相关操作
    查看某个表的索引
    show index from 表名;
    创建索引
    create index 索引名 on 表名(字段名(长度)); #长度是指对字段内容里多长的内容建立索引,如果是数字或者datetime等,可以不指定。
    删除索引
    drop index 索引名 on 表名;

  • 监测命令使用的时间
    set profiling=1; #开启监测
    执行命令
    show profiles; #显示在开启监测后的命令所用的时间
    set profiling=0; #关闭监测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值