找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
索引
1索引   用index表示
2索引分为   普通索引   唯一索引  主键索引
3 select * student
普通索引
create   index   aa  on student (math)  给student表的math字段创建名为aa
show  index  from  student     查看student有哪些索引
create   index   bb   on   student  (math,age) 同时给多个字段创建普通索引,同一个字段可以存在多个不同的普通索引
alter  table   student   drop   index   bb    删除索引名为bb的普通索引
唯一索引
唯一索引与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值
creat   unique  index  cc   on   student(math)  给math创建唯一索引math字段不重复
show  index  from   student  查看索引
alter  table   student  dorp   index  cc   删除索引   





视图:起到保护表数据的作用
show tables;
select * from student;
create view dcs as(select id, class ,math from student);5根据student表创建视图,dcs为视图名字,比如我只想把这三个字段暴露出去;
show tables; 查看视图
select * from dcs; 查看创建了视图的这个虚拟表,给三个字段创建了视图
B show create view dcs;查看视图的结构
CREATE ALGORITHM=UNDEFINED DEFINER=i rooti @~ %^ SQL SECURITY DEFINER VIEWdcs AS ( select studenti . idi AS、 id^ , student. classi AS、 classi , student . mathi AS、 math 、from
student~)这句是在视图结构的第二个字段复制出来的内容,创建视图的详细过程
selete from dcs where id=10;
删除视图里面的数据,然后分别查询视图表和原表的数据,同步被删除。
update dcs set math=100 where id=1 ;
update student set math=99 where id=1 ;
分别改视图表和原表的数据,验证数据同步被修改。
drop view dcs;
showcreateviewdcs;查看创建视图的结构,报不存视图表
. 2021/9/26 20:19:34
外键约束

主键约束 pr imary key
非空约束 not null
自增长约束 auto_ increment
默认值约束default

总结:这里的4个约束,主要是约束表的字段

外键约束 foreign key约束的 是表与表之间的关系
create table dcs1(id int(4) primary key, name varchar(10)) engine=innodb;           主表
create table dcs2(sid int(4) primary key , sname varchar(10) , CONSTRAINT dcs foreign key( sid) references dcs1(id)) engine=innodb;         子表
给dcs1创建一 -个名称为dcs的外键约束在dcs2的sid字段。

dcs1 主表
dcs2 子表.
constraint dcs:约束 外键约束名称叫dcs
foreign key(sid):创建在dcs2表的sid字段上面
references dcs1(id): 引用和参考的是dcs1表的id字段
engine=innodb: 数据库的存储引擎为innodb
如果不指定引擎,默认使用myisam, 使用的这个默认引擎不起作用
show engines; 查看MySQL数据库所有引擎。

. 2021/9/26 20:19:40
show create table dcs1 ;
show create table dcs2; #查看表结 构
CREATE TABLE、dcs2 (sid int(4) NOT NULL,sname varchar(10) DEFAULT NULL,PRIMARY KEY (sid),CONSTRAINT、dcs FOREIGN KEY (i sid~) REFERENCES 、 dcs1 ( id )ENGINE=InnoDB DEFAULT CHARSET=utf8

select * from dcs1;
select * from dcs2;

插入数据
insert into dcs1 values(1, 'xiaoyi'),(2,'xiaoer');
insert into dcs2 values(1, ' xiaosan'),(3, ' xiaosi');
插入数据报错,在dcs1里 面id只存在1和2,那么往dcs2表插入数据也之只能插入1和2;

insert into dcs2 values(1, ' xiaosan'),(2,' xiaosi') ;插入1和2就可以插入成功38结论:主表不存在的数据,在任何的子表当中无法插入与之相关的数据

. 2021/9/26 20:26:30
delete from dcs1 where id=1;    第一次删除主表的数据失败,报错提示存在一个子表里面有无它相关的外键
delete from dcs2 where sid=1 ;先删除子表的数据,在执行上面删除主表数据的sql就能删除成功

alter table dcs2 drop foreign key dcs; 删除外键,使他们不存在约束
show create table dcs2 ;

CREATE TABLE dcs2( sid int(4) not null,sname varchar(10) DEFAULT NULL,PRIMARY KEY ( sid )

ENGINE=InnoDB DEFAULT CHARSET=utf8
删除之后,可以看出dcs2表没有外键了

delete from dcs1 where id=2;
alter table dcs2 add constraint dcs foreign key(sid) references dcs1(id);
创建外键约束必须保证两个表有相同属性字段对应的相同数据

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册