精华内容
下载资源
问答
  • 答:①将重复性很高一些操作,封装到一个存储过程中。简化了对这些SQL调用。②批量处理sql+循环③统一接口注意:mysql中,存储功能相对较弱。使用较少。二、基本建立语法例1:DELIMITER $$CREATE PROCEDURE ...

    一、使用场景

    1.执行时简单:名字+参数

    2.存储过程中可以有一个、多个sql语句。

    问:为啥要用存储过程?

    答:

    ①将重复性很高的一些操作,封装到一个存储过程中。简化了对这些SQL的调用。

    ②批量处理sql+循环

    ③统一接口

    注意:mysql中,存储功能相对较弱。使用较少。

    二、基本建立语法

    例1:

    DELIMITER $$

    CREATE PROCEDURE delete_matches(IN p playerno INTEGER)

    BEGIN

    DELETE FROM MATCHES

    WHERE playerno=p_playerno;

    END$$

    DELIMITER;

    call delete_matches(6);

    例2:

    delimiter $$

    CREATE PROCEDURE dorepeat(p1 INT)

    BEGIN

    SET @x = 0; --》用set赋值, repeat循环

    REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;

    END$$

    delimiter ;

    CALL dorepeat(1000);

    SELECT @x;

    执行后:@x的值为1001

    @变量名字的作用:

    ①存储过程中定义,存储过程中进行处理,加减乘除。

    ②存储过程外面可以访问这个@变量,这个变量保存了存储过程中对这个变量处理后的值。

    @x:用户变量

    存储过程外面可以访问,一直被保存。

    直接使用set @x=0;就可以生成这么一个变量,不需要数据类型。

    三、存储过程参数

    三类:in(输入参数)、out(输出参数)、inout(输入和输出参数)

    存储过程需要是活的–》输入不同的参数,执行不同的操作,处理不同的行等等。

    IN参数

    DELIMITER $$

    CREATE PROCEDURE delete matches(IN p playerno INTEGER)

    BEGIN

    DELETE FROM MATCHES

    WHERE playerno=p_playerno;

    END$$

    DELIMITER;

    call delete_matches(6);

    IN参数可以是:数值100、赋值了的变量 set @a=100;

    OUT参数

    delimiter $$

    CREATE PROCEDURE simpleproc (OUT param1 INT)

    BEGIN

    SELECT COUNT(*) INTO param1 FROM PLAYERS;

    END$$

    delimiter ;

    CALL simpleproc(@a);

    SELECT @a;

    OUT参数:变量就可以,可以没有赋值。 @a

    INOUT参数

    delimiter $$

    CREATE PROCEDURE simpleproc1(INOUT param1 INT)

    BEGIN

    SELECT COUNT(*) INTO param1 FROM PLAYERS where PLAYERNO<=param1;

    END$$

    delimiter ;

    set @a=10;

    CALL simpleproc1(@a); --》调用存储过程时,只要引用变量就行!

    SELECT @a;

    INOUT参数:只能是赋了值得变量。 set @a=100;

    一个存储过程如果想有返回值:

    1.out参数

    2.inout参数

    3.在存储过程内部定义用户变量

    @变量名字

    建议:返回值使用out参数;输入值使用in参数。

    四、begin…end语法

    为什么需要begin…end?

    答:

    ①因为begin…end语句之间的n条语句属于一条语句,一个整体。

    ②成对出现。

    BEGIN

    sql语句

    END$$

    五、变量

    1.用户变量@

    随处可定义,随处可使用;

    不定义可直接使用;

    随处可见;

    内部定义,外部可见。

    2.局部变量,只有名字,没有@符号

    先定义,再使用;

    只在存储过程内部可见;只能定义在begin后面!

    注意:在存储过程内部,使用局部变量,不要使用用户变量。

    用户变量和局部变量的区别:

    ①局部变量前面没有@符号

    ②当begin…end块处理完后,局部变量就消失了,而用户变量存在于整个会话之中。

    定义局部变量:

    DECLARE 变量名字 类型 [default] –》而且declare必须紧接着begin!

    例:

    DECLARE var_name [, var_name] ... type [DEFAULT value]

    delimiter $$

    CREATE PROCEDURE sp1 (x VARCHAR(10))

    BEGIN

    DECLARE newname VARCHAR(10);

    DECLARE xid INT;

    SELECT xname, id INTO newname, xid

    FROM table1 WHERE xname = x;

    SELECT newname;

    END$$

    delimiter ;

    call sp1('a');

    初始化局部变量:

    delimiter $$

    CREATE PROCEDURE test1(OUT num1 INTEGER)

    BEGIN

    DECLARE num2 INTEGER DEFAULT (SELECT count(*) FROM PLAYERS);

    SET num1 = num2;

    END$$

    delimiter ;

    begin…end的作用域:

    外层看不到内层;

    内层可以看到外层;

    平行互相看不见。

    SET

    可以给用户变量和局部变量赋值

    用户变量内外都可以使用

    局部变量,只有begin end之间可以使用,而且需要declare定义

    六、IF…ELSE

    DELIMITER $$ --》定义$$为分界符

    CREATE PROCEDURE difference(

    IN p1 INTEGER, --》整数

    IN p2 INTEGER,

    OUT p3 INTEGER)

    BEGIN

    IF p1 > p2 THEN

    SET p3 = 1;

    ELSEIF p1= p2 THEN

    SET p3 = 2;

    ELSE

    SET p3 = 3;

    END IF;

    END$$

    DELIMITER ;

    mysql> call difference(1,10,@p);

    Query OK, 0 rows affected (0.00 sec)

    mysql> select @p;

    +------+

    | @p |

    +------+

    | 3 |

    +------+

    1 row in set (0.01 sec)

    七、函数

    1.返回值

    两个return:一个标志返回什么类型;一个实际的返回值。

    2.调用函数:函数需要出现在=的右边

    例子:

    DELIMITER $$

    CREATE FUNCTION SimpleCompare(n INT, m INT)

    RETURNS VARCHAR(20)

    BEGIN

    DECLARE s VARCHAR(20);

    IF n > m THEN SET s = '>';

    ELSEIF n = m THEN SET s = '=';

    ELSE SET s = '

    END IF;

    SET s = CONCAT(n, ' ', s, ' ', m);

    RETURN s;

    END$$

    DELIMITER ;

    mysql> select SimpleCompare(1,2) ;

    +--------------------+

    | SimpleCompare(1,2) |

    +--------------------+

    | 1 < 2 |

    +--------------------+

    1 row in set (0.01 sec)

    mysql> set @a=SimpleCompare(1,2) ;

    Query OK, 0 rows affected (0.01 sec)

    mysql> select @a;

    +-------+

    | @a |

    +-------+

    | 1 < 2 |

    +-------+

    1 row in set (0.00 sec)

    八、case…end case

    例1:

    DELIMITER $$

    CREATE PROCEDURE difference1(

    IN p1 INTEGER,

    IN p2 INTEGER,

    OUT p3 INTEGER)

    BEGIN

    CASE

    WHEN p1 > p2 THEN

    SET p3 = 1;

    WHEN p1= p2 THEN

    SET p3 = 2;

    ELSE

    SET p3 = 3;

    END CASE;

    END$$

    DELIMITER ;

    mysql> call difference1(1,100,@a);

    Query OK, 0 rows affected (0.01 sec)

    mysql> select @a;

    +------+

    | @a |

    +------+

    | 3 |

    +------+

    1 row in set (0.00 sec)

    例2:

    DELIMITER $$

    CREATE PROCEDURE p(x INT)

    BEGIN

    DECLARE v INT DEFAULT 1;

    set v=x;

    CASE v

    WHEN 2 THEN SELECT v;

    WHEN 3 THEN SELECT 0;

    ELSE

    BEGIN

    END;

    END CASE;

    END$$

    DELIMITER ;

    mysql> call p(2);

    +------+

    | v |

    +------+

    | 2 |

    +------+

    1 row in set (0.00 sec)

    Query OK, 0 rows affected (0.01 sec)

    mysql> call p(3);

    +---+

    | 0 |

    +---+

    | 0 |

    +---+

    1 row in set (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    九、while

    例题:

    DELIMITER $$

    CREATE PROCEDURE dowhile(x int)

    BEGIN

    DECLARE v1 INT DEFAULT 5;

    set v1=x;

    WHILE v1 > 0 DO

    select v1;

    SET v1 = v1 - 1;

    END WHILE;

    END$$

    DELIMITER ;

    mysql> call dowhile(10);

    +------+

    | v1 |

    +------+

    | 10 |

    +------+

    1 row in set (0.01 sec)

    +------+

    | v1 |

    +------+

    | 9 |

    +------+

    1 row in set (0.01 sec)

    。。。一直到1

    十、repeat…until

    先执行,再判断。

    例题:

    delimiter //

    CREATE PROCEDURE dorepeat1(p1 INT)

    BEGIN

    SET @x = 0;

    REPEAT

    SET @x = @x + 1;

    UNTIL @x > p1

    END REPEAT;

    END//

    delimiter ;

    mysql> call dorepeat1(10);

    Query OK, 0 rows affected (0.01 sec)

    mysql> select @x;

    +------+

    | @x |

    +------+

    | 11 |

    +------+

    十一、loop配合leave

    leave:跳出语句块

    DELIMITER $$

    CREATE PROCEDURE small_exit(OUT p1 INTEGER,OUT p2 INTEGER)

    BEGIN

    SET p1 = 1;

    SET p2 = 1;

    block1: BEGIN

    LEAVE block1; --》就不再执行下面那个p2=3了!!

    SET p2 = 3;

    END block1;

    SET p1 = 4;

    END$$

    DELIMITER ;

    mysql> call small_exit(@a,@b);

    Query OK, 0 rows affected (0.00 sec)

    mysql> select @a,@b;

    +------+------+

    | @a | @b |

    +------+------+

    | 4 | 1 |

    +------+------+

    1 row in set (0.00 sec)

    loop

    DELIMITER $$

    CREATE PROCEDURE wait_n(IN wait_seconds INTEGER)

    BEGIN ---》PS:interval 间隔

    DECLARE end_time datetime DEFAULT now() + INTERVAL wait_seconds SECOND;

    wait_loop:LOOP

    IF now() > end_time THEN

    LEAVE wait_loop;

    END IF;

    END LOOP wait_loop;

    END$$

    DELIMITER ;

    mysql> call wait_n(10);

    Query OK, 0 rows affected (10.55 sec)

    while:先判断再执行

    repeat…until:先执行再判断

    loop:判断可以放在loop…end loop之间的任意位置

    iterate:跳出本次循环

    十二、ITERATE

    DELIMITER $$

    CREATE PROCEDURE doiterate3(p1 INT,p2 INT)

    BEGIN

    label1: LOOP

    SET p1 = p1 + 1;

    SET p2 = p2 + 1;

    IF p1 < 10 THEN

    select p1;

    ITERATE label1; --》跳出本次label1循环!继续下次label1循环。

    select p2; --》一直没执行

    END IF;

    LEAVE label1;

    END LOOP label1;

    SET @x = p1;

    END$$

    DELIMITER ;

    mysql> call doiterate3(10,10); --》直接就执行leave label1

    Query OK, 0 rows affected (0.01 sec)

    mysql> call doiterate3(1,1); ---》显示p1=2,3,4...9

    +------+

    | p1 |

    +------+

    | 2 |

    +------+

    1 row in set (0.00 sec)

    +------+

    | p1 |

    +------+

    | 3 |

    +------+

    1 row in set (0.00 sec)

    十三、select info经典用法

    DELIMITER $$

    CREATE PROCEDURE total_penalties_player(

    IN p_playerno INTEGER,

    OUT total_penalties DECIMAL(8,2))

    BEGIN

    SELECT sum(amount) ---》去掉into的select只能返回一行数据!

    INTO total_penalties --》把select 的结果into给(多个)变量!!

    FROM PENALTIES

    WHERE playerno = p_playerno;

    END$$

    DELIMITER ;

    mysql> call total_penalties_player(44,@a); ---》计算44号人的罚款总额,结果赋给@a

    Query OK, 1 row affected (0.01 sec)

    mysql> select @a;

    +--------+

    | @a |

    +--------+

    | 130.00 |

    +--------+

    1 row in set (0.00 sec)

    小结:

    1.经典的方式:将select返回的多列单行数据赋值给相应的变量(一个列对应一个变量)

    2.这些变量经常是out参数

    3.也就是变相的将select的结果传给了存储过程,让外面的程序可见。

    例2:into给多个参数:

    DELIMITER $$

    CREATE PROCEDURE get_address(

    IN p_playerno SMALLINT,

    OUT p_street VARCHAR(30),

    OUT p_houseno VARCHAR(4),

    OUT p_town VARCHAR(30),

    OUT p_postcode VARCHAR(6))

    BEGIN

    SELECT street, houseno, town, postcode

    INTO p_street, p_houseno, p_town, p_postcode

    FROM PLAYERS

    WHERE playerno = p_playerno;

    END$$

    DELIMITER ;

    mysql> call get_address(44,@a,@b,@c,@d);

    Query OK, 1 row affected (0.01 sec)

    mysql> select @a,@b,@c,@d;

    +--------------+------+-----------+--------+

    | @a | @b | @c | @d |

    +--------------+------+-----------+--------+

    | Lewis Street | 23 | Inglewood | 4444LJ |

    +--------------+------+-----------+--------+

    1 row in set (0.00 sec)

    展开全文
  • 展开全部存储过程(Stored Procedure)是一组为了完成特定功32313133353236313431303231363533e4b893e5b19e31333361303633能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储...

    展开全部

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

    一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

    存储过程通常有以下优点:存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

    存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

    存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

    存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

    存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

    MySQL存储过程创建的格式如下:

    CREATE PROCEDURE 过程名 ([过程参数[,...]])

    [特性 ...] 过程体

    举例代码如下:CREATE PROCEDURE proc1(OUT s int)

    BEGIN

    SELECT COUNT(*) INTO s FROM user;

    END

    存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

    过程体的开始与结束使用BEGIN与END进行标识。

    注意:MySQL在5.0以前并不支持存储过程

    展开全文
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户数据库应用系统进行性能和风险评估,参与配合进行...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}}

    展开全文
  • 视图是一个有select语句指定,用以检索数据库表中某些行或列数据语句存储定义 2、创建水平视图  视图常见用法是限制用户只能存取表中某些数据行,用这种方法产生视图成为水平视图 create view view_...

    1、什么是视图?

    视图不占物理存储空间,它是一种逻辑对象,可以将其看成一个''虚表'

    视图是一个有select语句指定,用以检索数据库表中的某些行或列数据的语句存储定义

    2、创建水平视图

         视图的常见用法是限制用户只能存取表中的某些数据行,用这种方法产生的视图成为水平视图

    create view view_student

    as

    select * from student where classi_d="10"


    3、投影视图

    限制用户只能读取表中部分列的数据,那么使用这种方法创建的视图称作投影视图,即列中的子集

    create view  view_student2

    as

    select   student_id as '学号, student_name as '姓名',sex as'性别'   from student where sex=1

    with check option ' /*强制视图上执行的所有修改语句必须符合由select 语句设置的准则*/

    4 创建联合视图

    用户可以生成从多个表中提取数据的联合视图,把查询的结果可看做一个单独的可见表。

    5  什么是索引?

    索引是数据库对象之一,索引是为了加速表中数据行的检索而创建的一种分散的一种存储结构

    索引是针对一个表而建立的,它是有数据页面以外的索引页面组成的

    create unique clustered index book_id _index--唯一性聚集索引

    on book(book_id   asc)

    with

    fillfactor=50


    非聚簇索引

    create   nonclustered index student_course_index

    on   student_course (student_id  asc, course_id)  asc

    with

    fillfactor=50

    6 什么是存储过程?

    存储过程是一系列预先编译好的,能够实现特定数据操作功能的SQL代码集,它与特定的数据库相关联,存储在SQL SERVER服务器上

    example:


    //创建一个实现加法运算结果作为输出参数的存储过程

    create procedure sp_add

    @value1 int(10),

    @value2 int (10),

    @result int output

    as

    select @result=@result1+@result2

    go

     

    ///执行存储过程

    declare @value1 int(10)

    declare @value2 int (10)

    declare @result   int(10)

    set @value1=1

    set  @value2=2

    exec sp_add @value1,@value2,@result output

    print  convert(char(5),@value1)+"+"+convert(char(5),@value2)+'='+convert(char(5),@result)


    7、什么是触发器?

    触发器是一种实施复杂数据完整性的特殊存储过程,他对表进行增删改查的时触发自动执行,以防止数据进行不正确,未授权货不一致的参数

     触发器能够维持两个表之间的参照完整性,就像外键一样 ,外键执行效率更高,因为他们在数据改变之前被测试,而不想触发器在数据改变之后才触发

    8、什么是游标?

            游标是一种处理数据的方法,为了查看或者处理结果集中的数据,游标提供了结果集中向前或者向后浏览数据的能力

             游标的使用步骤:1、创建游标 2、打开游标 3、读取数据 4、数据操作 5、关闭和释放游标

    declare @taocan nvarchar(50),@youhui nvarchar(50)
      declare taocan_cursor scroll cursor --声明游标
      for
      select Taocan,youhui from [189Shop].[dbo].[Table_TaocanType] 
      for read only
      open taocan_cursor ---打开游标
      fetch from taocan_cursor  into @taocan,@youhui --从游标中提取行
      while @@FETCH_STATUS=0--表示成功完成FETCH 语句
      begin
      print '套餐:'+@taocan+',优惠:'+@youhui
      fetch from taocan_cursor into @taocan,@youhui
      end
      close taocan_cursor --关闭游标
      deallocate taocan_cursor --释放游标

    9、什么是事务?

        事务是一系列操作,这些操作要么被执行,要么不被执行,他是一个不可分割的单元


































     




    展开全文
  • 数据库试题和名词解释《数据库技术及应用》一、单项选择题(30分)1. 关系数据库中,实现实体之间联系是通过表与表之间( )A公共索引 B公共存储 C公共元组 D公共属性2. 事务日志是用于保存( )A数据操作 B对数据库...
  • 1第1章名词解释1、软件开发工具:在高级程序设计语言(第三代语言)基础上,为提高软件开发质量和效率,从规划、分析、设计、测试、成文和管理各阶段,对软件开发者提供各种不同程度帮助(支持)一类广泛软件。...
  • 物联网名词解释

    2020-05-09 11:46:15
    它采用一种可编程存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作指令,通过数字式或模拟式输入输出来控制各种类型机械设备或生产过程。 DCS: 集散控制系统是以微处理器为基础,...
  • MySQL中常见的名词解释

    千次阅读 2018-05-08 15:26:07
    过程管理器:支持mysql独有语法 函数库 支持在sql语句中插入mysql独有函数 2.常用术语 1.存储引擎 名称 含义 MyISAM 无事务,速度快 INNODB 有事务,功能全,常用 ...
  • 2、图像处理内容它是研究图像获取、传输、存储、变换、显示、理解与综合利用一门崭新学科。根据抽象程度不同可分为三个层次:狭义图像处理、图像分析和图像理解。Unit21、图像数字化是将一幅画面转化成计算机...
  • 是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在...
  • ElasticSearch名词解释

    千次阅读 2017-04-14 10:21:48
     分析的过程就是将全文(full text)转换成 术语/分词(terms)。 这取决于使用那个分析器,这些短语:“FOO BAR”, “Foo-Bar”, “foo,bar”,可能会拆分成” foo”和“bar”。这些拆分后词实际上是存储在索引中...
  • 索引,视图和存储过程的利弊

    千次阅读 2014-03-26 19:54:28
    在网上看到有关视图和存储过程的一道面试题,就整理一下。本文参考到维基百科还有其他网站的的一些解释。 索引:索引是一本书籍的重要组成部分,它把书中的重要名词列罗列出来,并给出它们相应的页码,方便读者快速...
  • 几个名词的解释

    2007-12-07 17:48:00
    存储过程set nocount off 表示该存储过程返回受影响行数,为on话就不返回。/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...
  • 是研究数据元素(DataElement)之间抽象化相互关系和这种关系在计算机中的存储表示(即数据逻辑结构和物理结构),并对这种结构定义相适应运算,设计出相应算法,且确保经过这些运算后所得到新结构仍然是...
  • 年轻人,你渴望力量吗?你渴望拥有对象吗?让我们面向对象重建“家园”吧!一.面向对象简介众所周知,python是一门面向...\color{blue}{通俗来讲,对象就是内存中用来存储指定数据一块区域。}通俗来讲,对...
  • 系统具有完备触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好数据安全性。Sybase通常与SybaseSQLAnywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制...
  • 序列化:将一个数据结构转换成一个字节序列的过程。区块链在内部使用编码格式称为递归长度前缀编码(RLP),在这里有描述 帕特里夏树:一种数据结构,它会存储每个帐户状态。这个树建立是通过从每个节点...
  • .net中几个名词解释

    2009-03-06 19:29:00
    A: XX工厂(Factory):生成某个对象运用了工厂模式,负责生成(生产)对象任务对象叫做工厂。...一个非托管应用程式(比如sql server2005)需要运行托管代码(比如C#写的存储过程),那么就需要在他...
  • 【vb.net机房重构】存储过程

    热门讨论 2015-03-28 10:58:16
    关于存储过程官方的解释是说它是放在服务器上预先编译好SQL语句。看到这里,作为文科生人可能又要迷糊了,什 么是服务器呀?为什么叫预先编译好SQL语句呀?它又是在哪里编译呢?  如何建立: 下面让...
  • Elasticsearch文档存储过程

    千次阅读 2018-03-17 22:35:09
    参考:ES官方文档分片内部原理:https://www.elastic.co/guide/cn/elasticsearch/guide/current/inside-a-shard.htmlES分片原理:http://blog.csdn.net/mgxcool/article/details/49250341索引的解释名词的索引:指...
  • 序列化:将一个数据结构转换成一个字节序列的过程。虚拟币在内部使用编码格式称为递归长度前缀编码(RLP),在这里有描述 帕特里夏树:一种数据结构,它会存储每个帐户状态。这个树建立是通过从每个节点...
  • 以下是对msdn中关于sp_excutesql存储过程描述理解: msdn关于sp_excutesql描述分成三个方面: 自包含批处理 替换参数值 重用执行计划 自包含批处理: 理解自包含批处理最好先理解“批处理”概念。“批处理”是...
  • 名词解释 子程序:PL/SQL的过程和函数统称为子程序。 匿名块:以DECLARE或BEGIN开始,每次提交都被编译。匿名块因为没有名称,所以不能在数据库中存储并且不能直接从其他PL/SQL块中调用。 命名块:除匿名块之外...
  • Linux系统存储之LVM

    2019-11-11 15:35:36
    1.lvm存在意义及名词解释 - lvm存在意义: 解决存储容量问题: - 图解lvm如何解决存储容量问题 - 名词解释 2.lvm建立 pvcreate---->vgcreate---->lvceate 在创建过程中我们可以用以下命令监控,可以...
  • 名词解释: 索引覆盖:select id,name form tbl where name = ‘张三’,如果name是表索引,那么先去查找辅助索引,辅助索引叶子节点上存是主键值,此时从辅助索引就可以查到对应字段,就不用再去主键
  • 一、名词解释1.地址映射把用户程序装入内存时对有关指令地址部分修改定义为从程序地址到内存地址地址映射,或称为地址重定位。2.动态重定位地址变换过程在程序执行期间,随着对每条指令或数据访问自动进行...
  • Linux下系统存储--LVM

    2019-11-14 19:24:07
    LVM存在意义及名词解释 1、LVM存在意义: 2、LVM图解 3、名词解释 LVM建立 1、查看LVM信息 pvs #查看pv信息 vgs #查看vg信息 lvs #查看lvm信息 2、步骤 在创建过程中我们可以用以下命令监控,...
  • 18.Linux高级存储管理

    2021-02-21 10:13:49
    名词 解释 pv物理卷 被处理过物理分区 vg物理卷组 捆绑pv到一个组中 pe物理扩展 设定存储最小单元 lv逻辑卷 最终使用设备 watch -n 1 "pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /weixin...
  • ceph存储 性能测试常见问题

    千次阅读 2018-09-12 15:50:19
    名词解释 性能测试FAQ 1. 性能测试基本过程是什么? 2. 如何准备测试环境? 3. 准备环境时,由于条件限制,机器系统硬件环境可能不同,机器硬件cpu主频,单双核,硬盘转速等对性能测试影响情况如何,在...
  • 名词解释 当前栈帧:一条线程在执行过程中,一个时间点上,只会有一个活动栈帧(栈顶栈帧,当前正在执行方法对应栈帧) 当前方法:当前栈帧对应方法 定义这个方法类:当前类 栈的存储结构 上面已经...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

存储过程的名词解释