视图: 也就是一个虚拟表(不是真实存在的),它的本质就是根据SQL语句获取动态的数据集,并为其命名。用户使用时只需要使用命名的视图即可获取结果集,并可以当做表来使用。它的作用就是方便查询操作,减少复杂的SQL语句,增强可读性,更加安全。

①创建视图

  1. -- 创建视图
  2. -- 格式 create view 视图名称 as SQL语句
  3. create view user_view as select name,age,gender from userinfo
  4.  
  5. userinfo的表:

  1. 生成的视图user_view:

 ②删除视图:

  格式:drop view 视图名称

  drop view user_view

 

 ③修改视图:

  1. -- 修改视图
  2. -- 格式 alter view 视图名称 as SQL语句
  3. alter view user_view as select name,age,gender from userinfo where age > 20
  4.  
  5. 修改后的视图user_view:

    索引:是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据,对于索引,会保存在额外的文件中。是专门用于帮助用户快速查询数据的一种数据结构,类似于字典中的目录,查找字典内容时可以根据目录查找到数据库的存放位置,然后直接获取即可

    ①特点

      a:由数据库中一列或多列组合而成,作用就是提高对表中数据的查询速度

      b:创建和维护索引需要耗费时间,会减慢写入速度

②索引分类

      a:普通索引--仅加速查询,数据列可以重复,不做约束

      b:唯一索引--加速查找,约束列数据不能重复,可以有null

      c:主键索引--加速查找,约束列数据不能重复,不能为null

      d:组合索引--多列可以创建一个索引文件,联合唯一,加速查找,约束列数据不能重复,不能为null

      e:全文索引--对文本的内容进行分词,进行搜索

③创建索引 

  1. -- 创建索引
  2. -- 格式
  3. -- 创建表的时候创建
  4. CREATE TABLE tb_name
  5. )(
  6. 字段名称 字段类型 [ 完整性约束条件 ], [ UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY [ 索引名称 ] (字段名称 [(长度) ]) [ ASC | DESC ]
  7. );
  8.  
  9. -- 已存在表创建
  10.  
  11. 1,CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON 表名{字段名称[(长度)] [ASC|DESC]}
  12. 2,ALTER TABLE tb_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称(字段名称[(长度)] [ASC|DESC]);
  13.  
  14. -- 删除索引
  15. DROP INDEX 索引名称 ON tb_name

触发器:是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,比数据库本身标准功能有更精细更复杂的数据控制能力。

    

 ④普通索引

  1. -- 普通索引
  2. create table tb1(
  3. nid int not null auto_increment primary key,
  4. name varchar(32) not null,
  5. email varchar(64) not null,
  6. extra text,
  7. index ix_name(name)
  8. )
  9. -- 查看索引
  10. show index from tb1

   

⑤唯一索引

  1. -- 创建唯一索引
  2. create table tb1(
  3. nid int not null auto_increment primary key,
  4. name varchar(32) not null,
  5. email varchar(64) not null,
  6. extra text,
  7. unique ix_name (name)
  8. ) 

      ⑥主键索引

  1. create table tb1(
  2. nid int not null auto_increment primary key,
  3. name varchar(32) not null,
  4. email varchar(64) not null,
  5. extra text,
  6. index ix_name (name)
  7. )

    

         存储过程:简单地说就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能。

    ①优点:

      a:通过把处理封装在容易使用的单元中,简化复杂操作

      b:由于不要求反复建立一些列处理步骤,这保证了数据的完整性,如果开发人员和应用程序都使用同一存储过程,则所使用的代码是相同的。还有                              就是防止错误,需要执行的步骤越多,出错的可能性越大。防止错误保证了数据的一致性。

      c:简化对变动的管理,如果表名,列名或业务逻辑有变化,只需要更改存储过程的代码,使用它的人员不会改自己的代码了

      d:提高性能,因为使用存储过程比使用单条语句要快

      e:存在一些职能用在单个请求的MySql元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码

      总结起来就是:简单,安全,高性能

    ②缺点:

      a:不同的数据库,语法差别大,移植困难,换了数据库,需要重写编写

      b:不好管理,把过多的业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务

           ③创

  1. -- 创建
  2. -- 如果存储过程存在,则先删除
  3. drop procedure if exists p1;
  4. -- delimiter 替换默认的输入结束符
  5. delimiter //
  6. -- procedure
  7. create procedure p1()
  8. begin
  9. select * from course;
  10. end//
  11. delimiter ;
  12.  
  13. -- 通过call来执行
  14. call p1()
  15.  
  16. 对于存储过程,可以接收三个参数:
      in:仅用于传入参数用
      out:仅用于返回值用
      inout:既可以传入又可以当做返回值
  1. drop procedure if exists p1;
  2. delimiter //
  3. create procedure p1(
  4. in i1 int,
  5. in i2 int,
  6. inout i3 int,
  7. out r1 int
  8. )
  9. begin
  10. declare temp1 int;
  11. declare temp2 int default 0;
  12. set temp1 = 1;
  13. set r1 = i1 + i2 + temp1 + temp2;
  14. set i3 = i3 + 100;
  15. end//
  16.  
  17. delimiter ;
  18.  
  19. -- 执行过程
  20. -- @表示变量
  21. set @t1 = 4;
  22. set @t2 = 0;
  23. call p1(1,2,@t1,@t2);
  24.  
  25. -- 返回值就是inout out对应的结果
  26. select @t1,@t2;

    注:存储过程的作用就是获取两类数据--普通值和结果集,它可以执行多个sql语句,结果集只能是一个,也就是说,在存储过程中,如果有多个select只会拿一个

触发器:是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,比数据库本身标准功能有更精细更复杂的数据控制能力。

函数:http://www.cnblogs.com/kissdodog/p/4168721.html

自定义函数:

  1. -- 自定义函数
  2. drop function if exists f1;
  3. delimiter \\
  4. create function f1(
  5. i1 int,
  6. i2 int
  7. )
  8. returns int
  9.  
  10. begin
  11. declare num int;
  12. set num = i1 + i2;
  13. return(num);
  14. end;
  15. \\
  16.  
  17. delimiter;
  18.  
  19. -- 在查询中使用
  20. select f1(11,nid) as "result",name from tb;

与存储过程的区别:不能获取结果集,不允许写sql语句,通过returns返回,而存储过程可以写sql语句,通过out或inout返回

MySQL视图 索引 存储过程 触发器 函数的更多相关文章

  1. 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器

    @ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...

  2. MySql视图、存储过程、函数、索引

    一.视图 视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 - ...

  3. 八、mysql视图、存储过程、函数以及时间调度器

    .create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 .drop view emp_view 删除视图 ...

  4. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  5. 在PowerDesigner中设计物理模型3——视图、存储过程和函数

    原文:在PowerDesigner中设计物理模型3--视图.存储过程和函数 视图 在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL ...

  6. MySQL 第十天(视图、存储过程、函数、触发器)

    MySql高级-视图.函数.存储过程.触发器 目录 一.视图    1 1.视图的定义    1 2.视图的作用    1 (1)可以简化查询.    1 (2)可以进行权限控制,    3 3.查询 ...

  7. mysql事务、触发器、视图、存储过程、函数

    存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控 ...

  8. 第七章 mysql 事务索引以及触发器,视图等等,很重要又难一点点的部分

    [索引] 帮助快速查询 MyISAM ,InnoDB支持btree索引 Memory 支持 btree和hash索引 存储引擎支持 每个表至少16个索引   总索引长度至少256字节   创建索引的优 ...

  9. mysql 视图,存储过程,游标,触发器,用户管理简单应用

    mysql视图——是一个虚拟的表,只包含使用时动态查询的数据 优点:重用sql语句,简化复杂的SQL操作,保护数据,可以给用户看到表的部分字段而不是全部,更改数据格式和表现形式 规则: 名称唯一,必须 ...

随机推荐

  1. 三、TortoiseGit之配置密钥

    TortoiseGit使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥. 也就是说使用 ssh-keygen  -t rsa  -C "username@email.co ...

  2. Java 在 CMD 环境下编译

    1. 未引用第三方 Jar 包类(该 Java 类默认无包名) # 定位到类存放地址 cd E:\tsgg # 编译命令 javac Test.java # 执行命令 java Test 2. 引用第 ...

  3. [NOI 2017]蚯蚓排队

    Description 题库链接 蚯蚓幼儿园有 \(n\) 只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从 \(1\) 到 \(n\) 的连续正整数编号.每只蚯蚓的长度 ...

  4. IOS 获取的时间显示为NAN 解决方法

    var regTime= item.BeginDate.replace(/\-/g, "/"); ------ item.BeginDate 我的日期年月日的    (/\-/g, ...

  5. c#:HttpClient加标头

    using (var client = new HttpClient()) { string requestUrl = string.Format("{0}{1}", ConstD ...

  6. Java学习笔记之——switch-case条件结构

    语法: switch(变量){ case 常量1: 执行语句: break: case 常量2: 执行语句: break: case 常量3: 执行语句: break: ………… default: 语 ...

  7. Matlab Euler's method

    % matlab script to test efficiency of % Euler's method, classical Runge-Kutta, and ode45 % on Arenst ...

  8. git常用命令以及如何与fork别人的仓库保持同步

    简单常用命令1.git status查看当前仓库是否有文件改动a:提示Your branch is up-to-date with 'origin/master'.nothing to commit, ...

  9. hdu-3790 最短路径问题(双重权值)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input ...

  10. cf666E. Forensic Examination(广义后缀自动机 线段树合并)

    题意 题目链接 Sol 神仙题Orz 后缀自动机 + 线段树合并 首先对所有的\(t_i\)建个广义后缀自动机,这样可以得到所有子串信息. 考虑把询问离线,然后把\(S\)拿到自动机上跑,同时维护一下 ...