找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
#索引分为三种索引
#1、普通索引
create index dcs09 on student(id,name,age);
show index from student;
alter table student drop index dcs09;

#2、唯一索引
create unique index dcs009 on student(name);
show index from student;    #查询表中所有的索引
alter table student drop index dcs009;

#3、主键索引  ====》一个表创建主键的时候会同时创建主键索引
alter table student modify id int;
desc student;
alter table student drop primary key;

alter table student add PRIMARY key(id);   #增加一个主键索引(主键约束)
alter table student change id id int PRIMARY key;


show tables;    #查看所有的表与视图
create view dcs9 as (select id,name,class from student);  #创建一个名称为dcs9的视图
select * from dcs9;      #查看视图的数据

show create view dcs9;  #=====》查看视图的结构

select * from dcs9;  #查询视图中dcs9中的所有数据

insert into dcs9 values(11,"xiaoliu",1832);  #给dcs9这个视图中插入一条数据

DELETE from student where id=11;

drop view dcs9;


#外键约束
create table dcs1(id int PRIMARY key,name varchar(10)) ENGINE=innodb;
create table dcs2(sid int PRIMARY key,chinese int,math int,english int,constraint dcs foreign key(sid) references dcs1(id)) engine=innodb;

#把dcs1叫做是主表 ====》可以用来存放基础数据
#把dcs2叫做是子表
select * from dcs1;
select * from dcs2;

#当主表里面没有的数据,与主表相关的任何子表都不能插入与之相关的数据
insert into dcs1 values(2,'lisi');
insert into dcs2 values(2,79,76,99);

#要删除主表里面的数据,必须要删除与主表相关的任何子表的数据
delete from dcs2 where sid=2;
delete from dcs1 where id=2;


alter table aa ENGINE=innodb;   #将表aa的引擎修改为innodb


#存储过程
drop procedure if exists dcs09;
create procedure dcs09(n int)   #创建一个名称为dcs09的存储过程,n是一个变量,也称为形式参数(形参),定义了该参数数据类型为int型
BEGIN   #存储过程的开始
#sql的集合,存储过程的函数体
        declare i int default(select count(*) from mm); #定义一个变量i,数据类型为int,默认值为表中的行数
        declare j int DEFAULT(select max(score) from mm);  #定义一个变量j,默认值为表中最大分数
--         drop table if EXISTS mm;
--         create table mm(id int PRIMARY key auto_increment,score int);
--         insert into mm values(1,98),(2,78);
--         insert into mm values(3,45),(4,86);
--         insert into mm values(5,68),(6,94);
--         insert into mm values(7,99),(8,75);
        #select * from mm;
        #不带参数进行查询
        #select * from mm where id=1;

        #带参数进行查询
        #select * from mm where id=n;

        #if条件判断语句单分支
        /*
        if n=0 THEN       
                select count(*) from mm;
        ELSE
                select * from mm;
        end if;*/

        #if条件判断语句多分支
        /*if n=0 THEN
                        select count(*) from mm;
        else if n>0 and n<8 THEN
                        select max(score) from mm;
        else if n>=8 THEN
                        select min(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 && n<=i  THEN
                        select max(score) from mm;
        ELSE
                        while n>i DO   #n表示自己传的实际参数,i就是表示表中的行数,当n>i时,则执行Do下面的sql集合
                                        set j=j+1;  #在插入数据前先对表中的最高分数加1
                                        insert into mm(score) values(j);
                                        set i=i+1;  #每执行一次则会把i的值增加1,然后再赋值给到i变量
                        end while;  #当n不大于i的时候退出循环体
        end if;   #有多少个if,就有多少个end if
        end if;

END    #存储过程的结束

call dcs09(8)  #8表示为n的实际参数(实参)

分享至 : QQ空间
收藏

0 个回复

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