找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

数据库索引+视图+外键约束+存储过程

[复制链接]
索引
普通索引:create index 索引名称 on 表字段名称
create INDEX xiaoli on emp(sid); 为emp表中的sid创建索引xiaoli
show INDEX from emp;  查看索引
create INDEX xiaoli1 on emp(sid,name); 为emp表中的sid,name创建索引xiaoli1
alter table emp drop index xiaoli;删除索引xiaoli

唯一索引(对应字段的值必须是唯一,但允许有空值)
create unique INDEX aa on emp(sid);  创建唯一索引

show INDEX from emp;  查看索引

主键索引:和主键约束是相辅相成的
注意:添加一个主键约束就是添加主键索引,主键索引就是添加主键约束
alter table emp drop primary key;删除主键约束
alter table emp add primary key(sid);添加主键约束
数据库视图:
视图的特点:
1.视图时由基本表产生的虚表2.视图的更新和删除会影响基础表3.基础表的更新和删除也会影响到视图
show tables;  查看视图
select sid,name,age from emp;
create view dcs as(select sid,name,age from emp);创建视图
select * from dcs;
update dcs set name="zhangsan" where sid=1789;  修改视图
update emp set name="张三" where sid=1789;==》修改基本表数据
drop view  dcs;  删除视图

DDL:数据库定义语言
create
alter table
drop
DML:数据库操作语言(表数据操作)
insert into
delete
update
select

外键约束
foregin key:对表与表之间的约束
表1:姓名,年龄,身份证号,语文,数学,英语
表2:姓名,年龄,身份证号,语文,篮球
show CREATE table emp; ==》查看建表语句
CREATE table dcs1(id int(5)PRIMARY key,name varchar(10))ENGINE=INNODB;

show CREATE table dcs1;==》查看dcs1创建语句

CREATE TABLE `dcs1` (
  `id` int(5) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE table dcs2(sid int(5)PRIMARY key,sname varchar(10),
CONSTRAINT duoceshi FOREIGN key(sid) REFERENCES dcs1(id))
engine=innodb;==》创建dcs2表同时创建外键约束



插入数据
INSERT into dcs1 VALUES(1,"zhangsan"),(2,"xiaoliu");
INSERT into dcs2 VALUES(1,"lisi"),(3,"wangwu");
如果dcs1和dcs2存在外键约束,dcs1(主表),dcs2(子表)
主表一般存放基础数据
如果主表不存在的数据,在任务子表是无法插入数据的

delete from dcs2 where sid=1;
删除数据,需先删除与主表相关的任何子表的数据;
alter table dcs2 drop foregin key duoceshi;  删除外键约束

存储过程
固定格式:
create procedure 存储过程名称(参数名,数据类型 ):创建存储过程名称
begin :存储过程开始
存储过程体
end:存储过程结束
call:调用存储过程

drop procedure if exsits dcs11;如果存在dcs11这个存储过程则删除
create procedure docs11(n int)   n是变量
begin
declare i int(5)default(select count(*) from mm);#声明变量i 默认就是表的行数
drop table if exsits mm;如果mm存在则删除
create table mm(id int(5) primrary key auto_increment,score int(10));
insert into mm values(1,60),(2,77),(3,82),(4,97);
select * from mm;
select * from mm where id=n;带参数查询
end;
call dcs11(5);

#单分支if判断
if n=0 then
select count(*) from mm;
else
select * from mm order by score desc;
end if;
#多分支if判断
if n=0 then
select count(*) from mm;
else if n>0 and n<=8 then
select * from mm order by score desc;
else if n>8 then
select max(score) from mm;
else
select * from mm;
end if;
end if;
end if;
#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(88);
  set i=i+1;
        end while;
select * from mm;
end if;
end if;
end#存储过程结束
call dcs11(2)



分享至 : QQ空间
收藏

0 个回复

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