成都10班邓旭琳 发表于 2021-11-26 19:05:28

索引 视图

索引:用index表示
查看有哪些表:show tables;
select * from student;
desc student;

普通索引
create index aa on student(math);#给单个字段创建索引
show index from student;
create index cc on student(math,age);
alter table student drop index aa;

注意:给某个字段创建普通索引,字段对应的值允许有重复的;

唯一索引:
create unique index mm on student(age);
创建失败,因为age字段对应的值有重复的
create unique index cc on student(math);
创建失败,因为已经有名为‘cc’的索引
create unique index mm on student(math);
给math字段创建唯一索引,创建成功,math字段对应的值没有重复的
show index from student;
alter table student drop index mm;删除索引(和普通索引的删除方式一样)

主键索引:
一个表只允许有一个主键索引
在创建主键约束时,

alter table student add primary key(math); 报错,因为已经有id字段存在主键索引

alter table student change id id int(4); 删除自增长
alter table student drop primary key;    删除主键约束
alter table student add primary key(math); 创建主键约束,成功
show index from student; 查看索引
desc student; 查看表结构,发现math字段已存在主键约束

视图:
select * from student;
create view dcs as(select id,class,math from student); 创建视图dcs,将student
表里的‘id,class,math’ 字段作为视图表字段
show tables; 查看所有表,视图表也会显示
show create view dcs; 查看视图表结构    desc 不能查看视图表结构,只能查看基本表结构
select * from dcs;   查看视图表数据

delete from dcs where id=10;    删除视图表数据(会发现基本表相应数据也被删除,即两个表对应数据同步)
update dcs set math=99 where id=1; 更新视图表数据,基本表同步更新
update student set math=100 where id=1; 更新基本表数据,视图表对应数据同步更新

drop view dcs; 删除视图表
show create view dcs; 删除之后查看视图表结构,会提示视图表不存在



数据库中的DDL和DML:
DDL : 数据库定义语言(对表结构和表字段进行操作,一般由运维或者开发操作)
如create;alter table ;drop等
DML :数据库操作语言(对表数据进行操作)
如insert into ;delete;select;update等

MySQL数据库约束:
主键约束:primary key
非空约束:not null
自增长约束:auto_increment
默认值约束:default
以上,主要是约束表的字段

外键约束:foreign key约束的是表与表之间的关系
create table dcs1(id int(4) primary key,name varchar(10)) engine=innodb;
==》创建一个dcs1表(主表)
create table dcs2(sid int(4) primary key,sname varchar(10),constraint dcs foreign key(sid) references dcs1(id) engine=innodb);
==》创建一个dcs2表(子表),并对sid字段创建外键约束,引用和参考的是dcs1表的id字段
constraint dcs :约束 外键约束名称为dcs #constraint :意思是 限制,约束
foreign key(sid) :(外键约束)创建在dcs2表的sid字段上
references dcs1(id) :引用和参考的是dcs1表的id字段
engine=innodb : 数据库存储引擎为innodb,mylsam对外键不起作用

show create table dcs1;
show create table dcs1;

#往表中插入数据
insert into dcs1 values(1,'xiaoyi'),(2,'xiaoer');
insert into dcs2 values(1,'xiao1'),(3,'xiao2');
#插入失败,在子表中插入的数据必须在主表中已存在(只针对有外键约束的两个字段)

页: [1]
查看完整版本: 索引 视图