找回密码
 立即注册
  • 便民服务
  • 关注我们
  • 社区新手

索引,外键约束,存储过程

[复制链接]
creat index 索引名称  on 表字段;


create index  xiaoliu  on emp(sid);给emp表里的sid创建一个叫xiaoliu的索引
show index from emp;查看索引
create index xiaoliu1 on emp(sid,name);给emp表里的sid、name创建一个叫xiaoliu1的索引
alter table emp drop index xiaoliu;删除索引xiaoliu1
唯一索引:
create unique index aa on emp(sid);给emp表里的sid创建一个叫aa的唯一索引
唯一索引对应字段的值必须是唯一,但允许空值;
show index from emp;
主键索引:和主键约束是相辅相成的
注意:添加一个主键约束就是添加主键索引,主键索引就是添加主键约束
*****alter table emp add primary key(sid);给emp 表中sid 添加主键索引
alter table emp drop primary key;删除主键约束
alter table table_name drop index index_name;删除索引
视图的特点:
1、视图是由基础表产生的虚表;
2、视图的更新和修改会影响基础表
3、基础表的更新和修改会影响视图
视图用于与第三方进行项目对接,出于安全考虑,不会给全部基本表,对一部分敏感信息进行保护,创建其中一部分表格视图,用于第三方查看。
show tables;查看表格视图
创建视图
create view yy as(select name,sid,age from emp);创建视图
select * from yy;
(update yy set name="zhangsan" where sid=1789;)=(update yy set name="zhangsan" where sid=1789;)修改视图数据=修改基础表数据
drop view yy;删除视图yy
DDL:数据库定义语言;
create
alter table
drop
DML:数据库操作语言(表数据操作)
insert into
delete
update
select
外键约束主要作用:保持数据一致性、完整性
外键约束:为了记录一张表数据不要太过冗余,仅仅只用于数据库内对表的解耦;
foregin key  外键约束,表与表之间的约束
表1:姓名、年龄、身份证号、语文、数学、英语
表2:姓名、年龄、身份证号、语文、体育
create table dcs1(id int(5) primary key,name varchar(10)) engine=innoDB;
show create table emp;查看建表emp的语句
references
create table dcs2(sid int(5) primary key,sname varchar(10) constraint duoceshi foregin key(sid) references dcs1(id)) engine=innoDB;
创建dcs2的同时创建外键约束
如果dcs1和dcs2存在外键约束,dcs1(主表)、dcs2(子表)
主表一般存放基础数据
如果主表不存在的数据,在任何子表都无法直接插入该数据的
删除数据,需先删除与主表相关的任何子表数据
alter table dcs2 drop foregin key duoceshi;删除外键约束duoceshi


存储过程:
存储过程 =sql语句集合+空制语句
存储过程结构:
create procedure   存储过程名称#创建存储过程
begin  #存储过程开始
#存储过程体
end #存储过程结束
call  存储过程名称#调用存储过程
eg:    drop procedure if exists  scs11;
  create procedure  dcs11(n    int)
begin
declare i  int(5) default(select count(*) from mm);
drop table if exist mm;
create table  mm(id int(5)  primary  key auto_increment,score  int(10));
insert into mm values(1,88),(2,75);
insert into mm values(3,79),(4,94);
select * from mm;
select * from mm where id=n
end  
call dcs11(n)
if单分支
drop procedure if exists  scs11;
  create procedure  dcs11(n    int)
begin
drop table if exist mm;
create table  mm(id int(5)  primary  key auto_increment,score  int(10));
insert into mm values(1,88),(2,75);
insert into mm values(3,79),(4,94);
if  n=0 then
select count(*) from mm;
else
select * from mm order by score desc;
end if
end
call dcs(n)
if 多分支
  drop procedure if exists  scs11;
  create procedure  dcs11(n    int)
begin
drop table if exist mm;
create table  mm(id int(5)  primary  key auto_increment,score  int(10));
insert into mm values(1,88),(2,75);
insert into mm values(3,79),(4,94);
if n=0   then
select  count(*) from mm;
else 0<n<=8   then
select * from mm order by socer desc;
else n>8 then
select max(socer) from  mm;
else
select * from mm;
end if
end if
end if
end  
call dcs11(n)
while语句
drop procedure if exists  scs11;
  create procedure  dcs11(n    int)
begin
declare i  int(5) default(select count(*) from mm);
if n=0   then
select  count(*) from mm;
else 0<n<=i   then
select * from mm order by socer desc;
else
while n>i do
insert into mm(score) value(88);
set i=i+1;
end while;
end if
end if
end if
end
call dcs(n)


分享至 : QQ空间
收藏

0 个回复

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