本帖最后由 武汉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表同时创建外键约束
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)#调用存储过程
|
|