一、视图:
一、概念:就是一个假表;
二、做用:直观,便于咱们对数据进行观察。
三、建立视图:
create view 视图名 as select 字段名1,字段名2 from 表名;
注意:多少个字段名你本身加。web
四、查看视图结构:desc 视图名;
五、查看视图所有数据:SELECT * FROM 视图名;
二、索引:
一、做用:方便快速查找;对sql的优化很是有帮助。
二、注意:
一、字段常常被看成查询对象操做才加索引。
二、一张表里面与其余表里面关系重合的,不适合加索引。sql
三、查看全部索引:
show index from 表名;
四、添加主键索引:
alter table 表名 add primary key(字段名(通常是id));
五、添加惟一索引:
alter table 表名 add unique(字段名);
注意:一张表能够有多个惟一索引,主键索引只能有一个。
六、添加全局索引:
alter table 表名 add index(表名);
七、删除索引:
alter table 表名 drop index 字段名;
三、外键:
一、做用:就是能够把多张表的关系联系起来。
二、解释:从表的外键对应的都是主表的主键。
三、要求:外键的大小、长度、类型必须与主键的同样。
四、给从表添加外键:数据库
alter table 从表名 add constraint 外键名 foreign key(从表字段名) references 主表名(主表字段名);
注意:一、从表字段名定义的时候最好与主表主键名同样。
二、删除grade表里id为1那行数据,失败,由于它有外键关联,下面添加级联操做就行了。
五、删除外键:
alter table 表名 drop foreign key 外键名;
注意:一、这样删除会还有索引,不过不要紧。
六、添加层叠关系,删除主键的数据,从表外键的数据也会删除:
alter table 从表名 add constraint 外键名 foreign key(从表字段名) references 主表名(主表字段名) on delete cascade;
七、添加set null关系,在删除主表的同时把相关联的从表数据都设为NULL:
alter table 从表名 add constraint 外键名 foreign key(从表字段名) references 主表名(主表字段名) on delete set null;
注意:一、删除主表grade id为1的数据,而后从表外键字段那个值为null。
四、触发器:
一、查看触发器:show triggers;svg
二、添加插入类型的触发器:
create trigger 触发器名 before insert on emp
for each row
insert into jixiao values(NEW.ename,NEW.esalary*0.5);
注意:插入数据的表的字段个数必定要大于或者等于被触发的表的字段个数。
#想emp表插入数据,jixiao表的数据也跟着变化
insert into emp(ename,esalary) value("Rain",200);
三、添加修改类型的触发器:
create trigger 触发器名 before update on emp
for each row
update jixiao set jmoney=NEW.esalary;
#emp修改一条数据,jixiao表也会变
update emp set esalary=500;
四、删除触发器:drop trigger 触发器名;
五、事务:
**一、概念:**一组操做,要么所有成功,要么所有失败。
二、事务的几大原则:acdl
一、a:原子性,就是最小的,不可分割的(同时执行sql语句,要么同时成功,要么同时失败)
二、c:一致性,同时执行两条sql语句,执行过程出现异常,要么回到最初状态、要么回到执行后的状态,不可能出如今中间状态。
三、d:隔离性,每一个事务都不相互影响
四、l:持久性,只要commit成功,就不会再改变了。
三、经常使用存储引擎:
一、MyISAM和Inn
四、模拟转帐功能:
一、数据库是自动提交数据库,如今set autoCommit=0,改成手动提交(意思就是jdbc那边还要有commit语句才能提交),设置开始事务start transaction;
二、执行一段update先
二、事务回滚 rollback;(永远回到上一步操做)优化