请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
  • 便民服务
  • 关注我们
  • 社区新手

MySQL—索引,视图,存储过程

[复制链接]
本帖最后由 武汉8期-胡钧俊 于 2021-10-22 22:31 编辑

【索引】
作用:可以利用索引快速访问数据库中特定信息;
show index from dcs  ===>查看索引



普通索引
create index a1 on emp(name);  ===》为emp表中name创建一个索引a1
create index aa on emp(name,age);  ===为emp表中name,age同时创建一个索引aa》
alter table emp drop index a1; ====》删除索引a1


唯一索引----对应的字段的值必须是唯一的,允许有空值
create unique index aa on  emp(sid);  ===》为emp表中的sid创建索引aa
alter table emp drop index aa;  ===>删除索引aa


主键索引----和主键约束相互相辅相成(不允许有空值)
注意:添加一个主键约束就是添加了主键索引,添加主键索引就是添加了主键约束
alter table emp drop  primare key:  ===》删除主键约束
alter table emp add primary key(sid);====》 添加回主键约束


视图
create view dd as(select name,sid,age from emp); ===》创建一个只显示name,sid,age 的视图名为dd
select * from dd; ====》查看视图
update emp set name="zhangsan" where sid =1789;===》 修改emp表name
update dd set name="张三" where sid = 1789;====》 修改dd视图name
drop view dd;====》 删除视图



外键约束
主键约束----primary key
非空约束---not null
默认约束---defaulf
自增长约束---foreign key
前四种都是对表结构的约束,外键约束是对表与表之间的约束
show create table dcs1;===》 查看建表语句create table dcs1(id int(5) PRIMARY key,name VARCHAR(10))engine=innodb;  ===》创建dcs1表,修改类型为innodb;create table dcs2(sid int(5)PRIMARY key,sname varchar(20),CONSTRAINT dcs8 foreign key(sid) REFERENCES dcs2(id))engine=innodb;  ==》创建dcs2表同时创建外键约束
]$`FH1)JT8QPA9}NKCA$}CT.jpg

MKW)US}73BA9FP~KCKE(3}Q.jpg



DDL数据库定义语言
create
alter table
drop

DML数据库操作语言(表数据操作)
insert into
delete
update
select


存储过程
单分支
if 条件 THEN
   执行sql
else
  执行sql
end if



drop procedure if exists duoceshi;  ====》如果存在duoceshi这个存储过程则删除
create procedure duoceshi() ===》创建一个名叫duoceshi这个存储过程
BEGIN  ===》存储过程的开始
drop table if exists xiaohu;  ===》如果xiaohu存在则删除
create table xiaohu(id int(5)primary key auto_increment,score int(5));   
insert into xiaohu values (1,89),(2,29);
insert into xiaohu values (3,39),(4,49);              ===》存储过程里面可以写SQL集合
insert into xiaohu values (5,56),(6,69);
insert into xiaohu values (7,86),(8,99);
select * from xiaohu;
select * from xiaohu where id=1;单分支判断语句
if n=0 THEN
        select count(*) from xiaohu;
else
        select * from xiaohu order by score desc;
end if;
end
end  ===》存储过


多分支判断语句
if 条件 THEN
执行sql
else if 条件 THEN
执行sql
else if 条件 THEN
执行sql .............
else执行sql
end if
end if
end if


if n=0 THEN
        select count(*) from xiaohu;
else if n>0 and n<=i then
        select * from xiaohu order by score desc;
else if n>i then
        select max(score) from xiaohu;
else
        select * from xiaohu;
end if;
end if;
end if;
end



while循环
while 条件 do
   执行循环体(sql)
end while;

注意:


#while循环
if n=0 then
   select count(*) from mm;
else if n>0 and n<=i then
  select * from mm order by score desc;
else
   while n>i do
   insert into mm(score)values(95);
   set i=i+1;
   end while;
end if;
end if;
end#存储过程的结束


call duoceshi(15)#调用存储过程


分享至 : QQ空间
收藏

0 个回复

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