存储过程,PHP学习笔记

储存进程:

积攒进程,视图,临时表,事务等那一个从前只是学过,但不曾稳重想过是干啥的,什么状态下用。所以那就疑似外人让你去北边,你就去北边,但去了北部,却不明了去那干啥? 所认为了灵活应用,前天就来聚焦下。

视图

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

也希望对我们有支持~

 视图概念

  1、视图是一张设想表,它表示一张表的片段数据或多张表的归纳数据,其协会和数码是树立在对表的查询功底上。
  2、视图在操作上和数据表未有何分别,本质分歧是:数据表是事实上存储记录的地点,但是视图并不保留任何笔录。
  3、相近的数据表,依照区别客商的例外部需要求,能够创建不一样的视图(不相同的查询语句卡塔尔
  4、视图的指标是福利查询,日常境况下无法对视图实行增加和删除改
  5、优点:
    - 筛选表中的行,裁减数据库的复杂程度
    - 放置未经许可的客商访问敏感数据
  6、创制视图:
    create View vw_TblArea
    as
    select
      t1.AreaId 城市编号,
      t1.AreaName 城堡称号,
      t1.AreaName 省份名称
    from TblArea as t1
    inner join TblArea as t2 on t1.AreaId = t2.AreaPid
  7、使用视图:
    select * from vw_TblArea 或者
    select * from vw_TblArea where 城市编号 > 10; --注意这里只好用视图中突显的称号,假诺有别称,只好用小名查询
  8、总计:视图就万分数据库的三个对象,存款和储蓄那个sql语句;视图只可以存款和储蓄sql查询语句,存储进程能够写任何事物

  因为言语被编写翻译过,所以专门切合用来推行,查询、存款和储蓄等常用命令,比方小说公布、作品删除、会员注册、会员登陆等常用query大家都可以构建存款和储蓄进度。

---1.临时表

常常视图

  并不存款和储蓄数据(设想表卡塔 尔(英语:State of Qatar),访问的是真心实意表中的多寡;

  使用注意事项:1、视图查询不可能用ordery by

视图:

不常表相信广大人都用过,也有肯能,你用了,但不明了本人用了。那么就介绍下什么样是有时表。

索引视图

 

计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

概念:看名就能够知道意思,不经常表固然存款和储蓄一时数据的。当数据库关闭,不常表会自动灭亡。

  通过视图,大家能够很便利把多少个表查询的结果串在贰个设想表,方便我们询问,而不须要每一遍都写多表查询的口舌。与此同不日常间,虚构表的字我们都足以写重命名的字,数据库安全性获得提高。

  使用范围:  1.当有二个子查询被重复使用时,可以做成一时表,进步查询功用。 2.当写存款和储蓄进度复杂逻辑时,大家也足以用偶尔表存款和储蓄风华正茂部分数码,然后从不时表查询我们须要的数额

一时表分为三种:黄金时代种是地方有的时候表,生机勃勃种是全局一时表

本地临表破绽纵然当查问窗口关闭了,再打开就询问不到了。 而全局有时表,只要数据库没休憩,就能够继续查询。

===本地不常表成立情势(二个#号):1).create table #一时半刻表名(ID int,UserName vnarchar(20))

  2).select * into #一时表名 from 你的表 (常用方式卡塔 尔(阿拉伯语:قطر‎

===全局不经常表制造格局,作者就不重复写了,便是把上边的三个#改为七个#即可了哈~

---2.视图

 视图其实和有的时候表有形似的地,正是都以一设想的表,不存款和储蓄任何数据。 差异的是,视图能够永久保存起来,然后利用sql语句能够平昔对视图进行查询。

视图和有时表经常都以座谈的查询方面。

  使用范围:1.将多个根深蒂固的查询封装成三个视图,那样重复行使就绝不写了,减弱Coding   2.只提供体现当中某几列,遮盖其余音信。

简单的阐述示下:(使用Sql调用视图,和接纳正规的sql语句流程是相似的卡塔尔

go
create view Vw_LinShi
as
select LName from LeiGe where LId=2

go

select *from Vw_LinShi;

 

--3.仓库储存进程

积攒进度,说白了正是Sql Server里面包车型大巴逻辑语句。它通过预编译,然后调用时比传递Sql语句快超多。那样也得以削减网络带宽。

1.积存进程能够独自实践一条Sql语句 2.囤积进程也得以实行其它Sql语句 3.存款和储蓄进度在开立的时候就在服务器实行了编写翻译,所以进行起来比单个Sql语句快

go
create proc Pro_Handler
as
begin
select *from LeiGe where LAge=17
end
go
execute Pro_Handler   --执行存储过程

 

--4.事务

 事务正是承保专门的学问的完整性,在失误时会自动实行回滚到原本状态。

事务在C#中的使用:

支配台部分:

图片 1图片 2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using 三层__登录;
using System.Data;
using System.Data.SqlClient;

namespace 视图查询复习
{
    class Program
    {
        private static string strConn = "server=.;database=Inferno1;integrated security=true;";   
        static void Main(string[] args)
        {

             object obj=-1;//接受事务返回的查询结果
            //事务的使用
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    try
                    {
                        string sql = "insert into LeiGe values(@name,@age);select @@IDENTITY";
                        SqlParameter[] pms = new SqlParameter[]{
                     new SqlParameter("@name",SqlDbType.NVarChar,5),
                     new SqlParameter("@age",SqlDbType.Int)
                     };
                        pms[0].Value = 11111;
                        pms[1].Value = "aaa";
                     obj =SqlHelper.GetSingle(conn, trans, sql, pms);
                       trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();

                    }
                }
            }

            Console.WriteLine(obj);
            Console.ReadKey();
        }
    }
}

View Code

扶助类部分:

图片 3图片 4

      //Tansnsiction
       /// <summary>
       /// 2012-2-21新增重载,执行一条计算查询结果语句,返回查询结果(object)。
       /// </summary>
       /// <param name="connection">SqlConnection对象</param>
       /// <param name="trans">SqlTransaction事务</param>
       /// <param name="SQLString">计算查询结果语句</param>
       /// <returns>查询结果(object)</returns>
       public static object GetSingle(SqlConnection connection, SqlTransaction trans, string SQLString, params SqlParameter[] cmdParms)
       {
           using (SqlCommand cmd = new SqlCommand())
           {
               try
               {
                   PrepareCommand(cmd, connection, trans, SQLString, cmdParms);
                   object obj = cmd.ExecuteScalar();
                   cmd.Parameters.Clear();
                   if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                   {
                       return null;
                   }
                   else
                   {
                       return obj;
                   }
               }
               catch (System.Data.SqlClient.SqlException e)
               {
                   //trans.Rollback();
                   throw e;
               }
           }
       }
       private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
       {
           if (conn.State != ConnectionState.Open)
               conn.Open();
           cmd.Connection = conn;
           cmd.CommandText = cmdText;
           if (trans != null)
               cmd.Transaction = trans;
           cmd.CommandType = CommandType.Text;//cmdType;
           if (cmdParms != null)
           {


               foreach (SqlParameter parameter in cmdParms)
               {
                   if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                       (parameter.Value == null))
                   {
                       parameter.Value = DBNull.Value;
                   }
                   cmd.Parameters.Add(parameter);
               }
           }
       }

View Code

 

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:存储过程,PHP学习笔记

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。