找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
什么是索引
普通索引
CREATE INDEX 索引名称 on 表字段名称;
CREATE INDEX  zhang on emp(sid);    为emp表创建索引名为zhang
CREATE INDEX  zhang1 on emp(sid,name)   为emp表中的sid,name 创建个索引为 zhang1;
show INDEX from emp    查看索引
alter table emp drop index zhang;                                  删除索引zhang
alter table emp drop index zhang1;                                删除索引zhang1

唯一索引(对应字段的值必须是唯一的,单允许有空值
CREATE UNIQUE INDEX zhang on emp(sid)           创建唯一索引
show INDEX from emp                                            查看唯一索引   

主键索引:和主键约束相辅相成
注意: 添加一个逐渐约束就是添加主键索引、主键索引就是添加主键约束
alter table emp drop   PRIMARY key;
show index from emp;
alter table emp add PRIMARY key(sid);



数据库视图
视图的特点
1.视图是由基本表产生的虚表
2.视图的更新和删除会影响基础表
3.基础表的更新和删除也会影响到视图       
show tables ;                                                显示目前有哪些视图
SELECT name,age from emp                       查询基本表字段
CREATE VIEW tu as(SELECT name,age from emp);    创建一个视图为tu
update tu set name="zhangsan" where did=1789           修改视图数据
update emp set name="张三" where did=1789                修改基本表数据
drop view tu                                                   删除视图

DDL:指的是数据库定义语言
create
alter table
drop

DML: 指的是数据库的操作语言

insert into
delete
update
select

外键约束
foregin key                                                   表与表之间的约束
表一: 姓名 年龄 身份证号 语文 数学 英语
表二: 姓名 年龄 身份证号 语文 篮球


如果dcs1和dcs2存在外键约束,dcs1(主表)、dcs2(子表)
主表一般存放基础数据,如果主表不存在的数据,在任务子表里是无法插入该数据的。
增加数据需要从主表开始添加, 删除数据需要从子表开始删除;
如果要删除主表的数据,需要与先删除与主表相关的任何子表的数据;

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

call 存储过程名称()  调用存储过程
drop procedure if exists zhangkai;#如果存在zhangkai这个存储过程则删除
create procedure zhangkai(n int)  #创建存储过程名称为zhangkai,n是变量
begin
drop table if exists kk; #如果kk存在则删除
create table kk(id int(5)primary key auto_increment,score int(10));
insert into kk values(1,88),(2,75);
insert into kk values(3,79),(4,94);
insert into kk values(5,85),(6,63);
insert into kk values(7,91),(8,99);
select * from kk;
select * from kk where id=n;#带参数查询
*/
/*#单分支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 zhangkai(8)  #调用存储过程


分享至 : QQ空间
收藏

0 个回复

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