Mysql数据库基础知识点(范式、索引)/四

数据库设计三范式

1.设计字段不可再分解

2.每个表只说明一个事物

3.非主键字段不能相互依赖

事物(transaction)

事务是由一组DML语句组成,完成一个相对完整的功能,这一组DML语句要么全部执行,要么全部放弃执行。

start transaction 或者 begin 开启事务

commit 提交事务,提交未存储的事务

rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句)

savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退。

 

回滚

create table t5(id int PRIMARY key auto_increment,name varchar(20),gender varchar(20));
insert into t5(name,gender) values('zs','man');
insert into t5(name,gender) values('ls','man');
insert into t5(name,gender) values('ww','man');
insert into t5(name,gender) values('zq','man');


start TRANSACTION;
insert into t5(name,gender) values('张飞','man');
insert into t5(name,gender) values('关羽','man');
select * from t5;
-- 回滚
ROLLBACK;
select * from t5;

右侧黑屏中begin设置事物开始点,commit设置事物结束点,等到事物提交上去之后才能在左侧黑屏中查看到结果。在事物执行过程中左侧不能查看到数据变化 ,等到事物结束之后才能查看到。

索引

使用索引的目的:提高查询速度。

索引特点:创建和维护索引会消耗很多时间与磁盘空间,但是查询速度大大提高。

创建普通索引
create table t2(
id int PRIMARY KEY auto_increment,
name VARCHAR(20),
age int,
index name_index(name)
); 
show create table t2;

添加唯一索引
create table t3(
id int PRIMARY KEY auto_increment,
name varchar(20),
idCard char(20) unique
);

create table t4(
id int PRIMARY KEY,
name VARCHAR(20)
);
alter table t4 add unique(name);

主键索引(主键本身默认就是索引)

CREATE TABLE `t7` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(20) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone_index` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
alter table t7 add PRIMARY key(id); 

多列索引
create table t6(
id int PRIMARY KEY,
name1 VARCHAR(20),
gender VARCHAR(20),
phone VARCHAR(20)
);
alter table t6 add index(name1,gender,phone);

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/89204162