找回密码
 立即注册

推荐阅读

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

武汉3班第19天笔记 视图索引存储过程

[复制链接]
本帖最后由 武汉3班-何力 于 2021-6-24 20:09 编辑

索引:
类似目录的功能,为了方便查找表的数据
创建索引的目的是为了提高查询的效率



创建一个普通索引:(如果创建表的时候添加过主键,那么表会自动生产一个索引)
create index aa on user(opens_id);  给单个字段创建索引

查看索引:
show index  from uesr;

删除索引:
alter table user drop index aa;

一个字段可以创建多个索引位
唯一索引不能创建相同的值,列的值必须唯一

索引的优点:
提高系统性能
提高查询的效率
创建索引的时候需要占用一定的资源,没必要的字段不需要进行创建索引

在工作中索引使用场景:
都是由数据库管理员或者相应的开发进行创建索引,
测试人员只负责查询

视图:
视图也是一个表,视图和原始表是关联的,修改任意表都会影响对应的表

视图的优点:
选取想要得到的数据,过滤不需要的字段
用户可以使用简单的查询就可以得到结果
相同的数据可以创建多个视图并且具有独立性,也很安全

show tables :查询所有的和视图表
create view yy as (select id,name from dcs);  创建视图
drop view yy;  删除视图

外键:
创建外键的目的是为了增强数据的一致性和完整性
一般在设计数据库结构时就已经存在,都是由开发人员和数据库人员进行创建
作用:
保证了数据的一致性完整性,对数据库的资源进行管理
可以防止数据意外删除,没有对应数据

create table dcs1(id int(4)PRIMARY key,name varchar(10))
ENGINE=INNODB ;#



mysql常见约束类型:
外键约束:

存储:
存储其实就是一款可以进行编译的函数,可以以分封装特定的功能

特点:
1,可以增强sql语句的灵活性
2,执行速度快
3,使用性强
4,分布式工作
5,可以防止sql注入
6,可以用外部程序进行调用(如Java程序)

存储过程:
1,利用与sql当中进行使用的,完成特定任务
2,程序的头部是procedure
3,sql语句当中select语句不能调用存储过程

函数:
1,作用于特定的数据
2,程序头部function
3,不能独立执行,作为表达式的一部分
4,是通过return进行返回一个特定的值


drop table  if exists worktime;
  create table worktime(id int(4),class int(4));
        insert into worktime(id,class) values (11,1506);

drop procedure if exists aaa;
create procedure aaa(n int)
begin

  declare x int(4) default(select count(*) from worktime);



         if n < x then
         select *from worktime;   #判定
   else
           while x < n do
                  insert into worktime values (22,33);
                 set x =x+1;
                 end while;
                 select *from worktime;  #循环变量判定

        end if;


end

call aaa(10)


索引:
类似目录得功能,为了就是方便查找
创建索引的目录是为了提高查询得效率
索引其实就是一种特殊结构得查询表,数据库可以利用它加速
对数据得搜索。

1.一个字段可以创建多个索引位
2.唯一索引如果有相同得值则创建失败,列得值必须唯一

优点:
创建索引可以大大提高系统得性能,可以加快查询速度
创建索引得时候,它是占用一定得资源。没必要得字段不需要进行
创建索引

在工作当中索引使用得场景:
在工作当中都是有数据库管理员或者相应得开发进行创建索引
我们测试人员只负责查询就行。




创建一个普通索引:(就是我创建表得时候给这表增加了
主键,那么他会自动生成一个索引)
create index aa on user(opens_id) 单个字段创建索引

create index bb on user(due_date,money) 多个字段增加索引

show index from sub;

create unique index sub on sub(openid)

删除一个索引
alter table sub drop openid


视图也是一个表:

show tables:查询所有得表以及视图得表

create view dcs3 as(select avg,max from wuhan3) #给对应得
字段 创建一个视图表#
select * from dcs3
select * from wuhan3

drop view dcs3 删除 一个视图
# 修改视图表里得内容,原始表也会进行修改,修改原始
#表那么相应得视图也会进行修改

视图是什么?
视图是一个虚拟表,根据原始表进行创建,创建后可以进行对
视图表得操作,增删改查

视图优缺点?
1.可以选取想要得数据,过滤不需要得字段
2.用户可以使用简单得查询就可以得到结果
3.相同数据可以创建多个视图,独立性强,安全



mysql 当中常见得约束类型:
外键约束:FOREIGN KEY
主键约束: PRIMARY KEY
非空约束: not nall
默认约束:default
自增长约束 aoto_increment

外键?
创建外键得目的,就是为了增强数据得一致性。

create table wuhan1(id int(4)PRIMARY KEY ,name varchar(20))engine =innodb; #改变mysql中引擎为innodb  MYISAMmysq当中得默认引擎

create table wuhan2(sid int(4)primary key ,aname varchar(20)
,constraint wuhan foreign key(sid) references wuhan1(id))engine=innodb;

select * from wuhan1;#武汉1主表
select * from wuhan2;#武汉2子表
delete from wuhan1 where id = 1;


1,mysql现在版本当中默认引擎为myisam他是补课创建外键,所以
改成innodb。

constraint wuhan
取一个外键名称为 武汉
foreign key(sid)
设置外键字段得一个字段名
references wuhan1(id)
参照武汉1表里id字段设置外键

外键:
一般在设计数据得结构时就已经存在,都是由开发人员/数据库人员
进行创建
作用:
                保证了数据得一致性,对数据库的资源进行管理
                可以防止数据以外删除,没有了对应的数据


存储:
                存储其实就是一款可以进行编译的函数,可以以封
        装特定的功能

那么使用insert into进行插入数据效率太低,那么就可以
用存储过程来写一个方法,进行插入数据,而且还可以重复
使用。
        存储特点:
        1.可以增强sql语句的灵活性
        2.执行速度更快
        3.适用性强
        4.分布式工作
        5.可以防止sql注入
        6.可以用外部程序进行调用(如java程序)

存储过程和函数的区别?


存储过程:
1.用于sql当中进行使用的,完成特定任务
2.程序的头部是procedure
3.sql语句当中select语句不能调用存储过程

函数:
1.作用与特定的数据
2.程序头是function
3.不能独立执行,作为表达式的一部分
4.函数是通过return 语句返回一个个特定值







drop procedure if exists ergouzi; #判断这个ergouzi存储
#过程是否存在,如果存在,那就进行删除这个存储过程
create procedure ergouzi(n int)#存储过程的名称()实际传输的参数
begin #存储过程的开始


        declare i int(4) default(SELECT count(*) from uuid); #i就等于1

        drop table if exists uuid;        #如果这个表存在那么就删除这个表
        create table uuid(id int(4),name varchar(20));
        insert into uuid(id,name)values(1,'hh');
        #存储过程里面的判定语句,if表示
                if n > i THEN   #如果n大于5那么就 查询表里面的全部内容
                SELECT * from uuid;
        else if n = i then#如果n等于5那么就 查询表里面的仅为id字段内容
                select id from uuid;
        else                                                        #否则的意思,其他条件,就查询统计表里面的长度
                select count(*) from uuid;

        end if;
  end if;#使用了几个if判断就需要加几个end if


end #存储过程的结束

call ergouzi(2) #调用这个存储过程,执行  (填入的数字)其就是n的实际参数


drop table if exists username;        #如果这个表存在那么就删除这个表
create table username(id int(4),name varchar(20));
insert into username(id,name)values(1,'hh');

drop procedure if exists wuhan;
create procedure wuhan(n int)
begin #存储过程的开始


        declare i int(4) default(SELECT count(*) from uuid);

        if n < i THEN   
                SELECT * FROM username;
        else
                while i<n do="" #="" i="" 是1="" n="" 是10=""                         insert into  username(id,name)values(2,'qq');
                        set i = i+1;  # 是1 每执行一次i+1  
                end while;
                select * from username;

select concat('user','name');

        end if;

end
call wuhan(10)



存储过程实战演练 存储过程题目:现在有一个user用户表,需要往user表中插入1000个登录 用户要求如下: 1、在插入用户前先判断是否存在1000个登录用户,如果存在则统计表中实 际的行数、如若不存在则自动补齐剩余的数据 2、表名为user,存储过程名字随意取,表中字段有id user_name user_pwd verify 格式如下(1,user1,123456,W4E38J),且id、用户名不能重复,verify 验证码字段为随机生成6位数验证码 CONCAT函数 可以把2个字符串进行连接。索引:
类似目录得功能,为了就是方便查找
创建索引的目录是为了提高查询得效率
索引其实就是一种特殊结构得查询表,数据库可以利用它加速
对数据得搜索。

1.一个字段可以创建多个索引位
2.唯一索引如果有相同得值则创建失败,列得值必须唯一

优点:
创建索引可以大大提高系统得性能,可以加快查询速度
创建索引得时候,它是占用一定得资源。没必要得字段不需要进行
创建索引

在工作当中索引使用得场景:
在工作当中都是有数据库管理员或者相应得开发进行创建索引
我们测试人员只负责查询就行。




创建一个普通索引:(就是我创建表得时候给这表增加了
主键,那么他会自动生成一个索引)
create index aa on user(opens_id) 单个字段创建索引

create index bb on user(due_date,money) 多个字段增加索引

show index from sub;

create unique index sub on sub(openid)

删除一个索引
alter table sub drop openid


视图也是一个表:

show tables:查询所有得表以及视图得表

create view dcs3 as(select avg,max from wuhan3) #给对应得
字段 创建一个视图表#
select * from dcs3
select * from wuhan3

drop view dcs3 删除 一个视图
# 修改视图表里得内容,原始表也会进行修改,修改原始
#表那么相应得视图也会进行修改

视图是什么?
视图是一个虚拟表,根据原始表进行创建,创建后可以进行对
视图表得操作,增删改查

视图优缺点?
1.可以选取想要得数据,过滤不需要得字段
2.用户可以使用简单得查询就可以得到结果
3.相同数据可以创建多个视图,独立性强,安全



mysql 当中常见得约束类型:
外键约束:FOREIGN KEY
主键约束: PRIMARY KEY
非空约束: not nall
默认约束:default
自增长约束 aoto_increment

外键?
创建外键得目的,就是为了增强数据得一致性。

create table wuhan1(id int(4)PRIMARY KEY ,name varchar(20))engine =innodb; #改变mysql中引擎为innodb  MYISAMmysq当中得默认引擎

create table wuhan2(sid int(4)primary key ,aname varchar(20)
,constraint wuhan foreign key(sid) references wuhan1(id))engine=innodb;

select * from wuhan1;#武汉1主表
select * from wuhan2;#武汉2子表
delete from wuhan1 where id = 1;


1,mysql现在版本当中默认引擎为myisam他是补课创建外键,所以
改成innodb。

constraint wuhan
取一个外键名称为 武汉
foreign key(sid)
设置外键字段得一个字段名
references wuhan1(id)
参照武汉1表里id字段设置外键

外键:
一般在设计数据得结构时就已经存在,都是由开发人员/数据库人员
进行创建
作用:
                保证了数据得一致性,对数据库的资源进行管理
                可以防止数据以外删除,没有了对应的数据


存储:
                存储其实就是一款可以进行编译的函数,可以以封
        装特定的功能

那么使用insert into进行插入数据效率太低,那么就可以
用存储过程来写一个方法,进行插入数据,而且还可以重复
使用。
        存储特点:
        1.可以增强sql语句的灵活性
        2.执行速度更快
        3.适用性强
        4.分布式工作
        5.可以防止sql注入
        6.可以用外部程序进行调用(如java程序)

存储过程和函数的区别?


存储过程:
1.用于sql当中进行使用的,完成特定任务
2.程序的头部是procedure
3.sql语句当中select语句不能调用存储过程

函数:
1.作用与特定的数据
2.程序头是function
3.不能独立执行,作为表达式的一部分
4.函数是通过return 语句返回一个个特定值







drop procedure if exists ergouzi; #判断这个ergouzi存储
#过程是否存在,如果存在,那就进行删除这个存储过程
create procedure ergouzi(n int)#存储过程的名称()实际传输的参数
begin #存储过程的开始


        declare i int(4) default(SELECT count(*) from uuid); #i就等于1

        drop table if exists uuid;        #如果这个表存在那么就删除这个表
        create table uuid(id int(4),name varchar(20));
        insert into uuid(id,name)values(1,'hh');
        #存储过程里面的判定语句,if表示
                if n > i THEN   #如果n大于5那么就 查询表里面的全部内容
                SELECT * from uuid;
        else if n = i then#如果n等于5那么就 查询表里面的仅为id字段内容
                select id from uuid;
        else                                                        #否则的意思,其他条件,就查询统计表里面的长度
                select count(*) from uuid;

        end if;
  end if;#使用了几个if判断就需要加几个end if


end #存储过程的结束

call ergouzi(2) #调用这个存储过程,执行  (填入的数字)其就是n的实际参数


drop table if exists username;        #如果这个表存在那么就删除这个表
create table username(id int(4),name varchar(20));
insert into username(id,name)values(1,'hh');

drop procedure if exists wuhan;
create procedure wuhan(n int)
begin #存储过程的开始


        declare i int(4) default(SELECT count(*) from uuid);

        if n < i THEN   
                SELECT * FROM username;
        else
                while i<n do="" #="" i="" 是1="" n="" 是10=""                         insert into  username(id,name)values(2,'qq');
                        set i = i+1;  # 是1 每执行一次i+1  
                end while;
                select * from username;

select concat('user','name');

        end if;

end
call wuhan(10)



存储过程实战演练 存储过程题目:现在有一个user用户表,需要往user表中插入1000个登录 用户要求如下: 1、在插入用户前先判断是否存在1000个登录用户,如果存在则统计表中实 际的行数、如若不存在则自动补齐剩余的数据 2、表名为user,存储过程名字随意取,表中字段有id user_name user_pwd verify 格式如下(1,user1,123456,W4E38J),且id、用户名不能重复,verify 验证码字段为随机生成6位数验证码 CONCAT函数 可以把2个字符串进行连接。
drop procedure if exists userr;
drop table if exists userr;
create table userr(id int(4),user_name varchar(20),user_pwd varchar(20),verify varchar(20));
insert into userr(id,user_name,user_pwd,verify)values(1,'user1','user22','5sd5ds');
insert into userr(id,user_name,user_pwd,verify)values(2,'user3','user33','8sdsds');
insert into userr(id,user_name,user_pwd,verify)values(3,'user4','user44','4sd6ds');
create procedure userr(n int)
BEGIN
        declare i int(4) default(select count(*) from userr);
        declare q varchar(20) default'';
  declare w varchar(20) default'';

        if i >= n then
                select count(*) from userr;
        else
                while i < n do
                        set q = (select left(uuid(),6));
                        set w = (select concat('user',i));
                        insert into userr(id,user_name,user_pwd,verify)values(3,w,q,q);
                        set i = i+1;
                        end while;
                        select * from userr;
                end if;


end

call userr(1000)




分享至 : QQ空间
收藏

0 个回复

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