`

SQL Function

 
阅读更多
php访问mysql
get_magic_quotes_gpc()函数,转义符号是否自动开启
addslashes()过滤输入数据
stripslashes()过滤输出数据
@ $db = new mysqli('localhost', 'bookorama', '123', 'books');
mysqli_connect_erroron() 连接数据库错误
$query= "select * from books where ".$searchtype." like '%".searchterm."';
$result = $db->query($query); /*$db是一个对象,函数query()是对象的一个属性。
                                $result是新构件的一个对象。
                               */
$num_results = $result->num_rows; /*$num_results是一变量,num_rows()是一属性,                                  查询返回的行数。*/
$row = $result->fetch_assoc(); /*该函数接受结果集合中的每一行,并以一个相关数组                                    返回该行,每个关键词为一个属性名,每个值为数                                     组中响应的值*/
$row = $result->fetch_row();      /*返回一个列举数组,属性值在每个数组值$row[0],                                     $row[1]等等的里面列出。*/
$row = $result->fetch_object(); /*将一行取回到一个对象中,通过$row->title
                                    $row->isbn等访问每个属性*/
prepared语句
$query= "insert into books values(?,?,?,?);
$stmt = $db->prepare($query); //告诉哪些变量应该被替换.
$stmt->bind_param("sssd", $isbn, $author, $title, $price);
/*改变这四个帮顶变量的值,并且在不用准备的情况下重新执行这个语句,这个功能对于循环批量插入操作来说是非常重要的*/
$stmt->execute();          //运行插入
echo $stmt->affected_rows.'本书插入数据库.';
$stmt->close();
$stmt->bind_result($isbn, $author, $title, $price);//将变量绑定到将通过查询返回的列
$stmt->execute();
可以在循环中调用:
$stmt->fetch();
每当该语句被调用时,他将获得下一个结果行,并填充到4个绑定变量中。

权限系统
user表:全局
更新权限命令:flush priviledges;
              mysqladmin flush-priviledges
              mysql reload
show 命令
show tables from books;
show columns from orders from books;
show columns from books.orders
show grants for bookorama
表的优化
optimize table table_name;
myisamchk -r table
备份
mysqldump --opt --all-databases >all.sql
mysqlbotcopy database /path/for/backup
存储引擎
有时成为表格类型
主要两种myisam(有索引顺序访问方法)不支持事务安全和外键,当对一个表格使用大量的        select , insert或二者集合的时候,需要全文搜索功能的时候应该使用myisam类型。
     innodb支持事务安全和外键,事务非常重要,如财务数据表格,或者在insert和           select语句交错执行的情况下应用innodb
事务:默认情况下mysql自动提交命令。
     使用事务安全表格关闭自动提交命令
       set autocommit = 0 ;
       start transaction; //打开自动提交
      完成事务后提交命令:commit;
如果改变主义,可以使用rollback;回到数据库以前的状态
只有提交了一个事务,事务才能被会话中的其他用户所见。
alter table orders type = innodb;
alter table order_items type =innodb;
insert into orders values (6, 2, 66.00, '2004-02-02');
insert into order_items values(6,'0-666-66666-4',1);
插入后退出,重新登陆,查询不到数据,因为没提交。
外键
creat table order_items
( orderid int unsigned not null references orders(orderid),
isbn.....
....);
alter table order_items type=innodb;
alter table order_items
add foreign key (orderid) references orderis(orderid);
在插入数据的时候如果orderid数据与orders表中orderid的数据不一致,插入失败。
存储过程
存储过程是一个可编程的函数,在mysql中创建并保存,他可以有sql语句和一些特殊的控制结构组成,当希望在不同的应用程序或平台上执行相同的喊住,后者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看作是对编程中的面向对象方法的模拟,他们允许控制数据的访问方式
#basic stored procedure example
delimiter //   # 分隔符设置为//
create procedure total_orders(out total float)#创建存储过程,total是参数,需要计                                              #算的值,float为参数类型,inout表示传入但可
                                        #被存储过程更改,out表示参数将被传出或返                                             #回,in表示传入。                                          
begin               #过程体必须在begin和end之间,类似{}                   
select sum(amount) into total from orders;
end
//
delimiter ;
然后可以用 call total_orders(@t); #调用过程。
select @t
存储函数
delimiter //
create fuction add_tax(price float) returns float
return price*1.1 ;
//
delimiter ;
不用使用in或者out,所有 参数都是in,returns是返回类型,return返回一个值。
select_tax(100);
110
查看定义过程和函数的代码
show create procedure total_orders;
show create function addtax;
drop procedure total_orders;
drop function addtax;
局部变量
可以在begin ..end语句块中声明局部变量
delimiter //
create function add_tax(price float) returns float
begin
declare tax float default 0.10;
return price*(1+tax);
end
//
delimiter ;
游标和控制结构
delimiter //
create procedure largest_order(out lagest_id int) #参数
begin
declare this_id int; #声明局部变量
declare this_amount float;
declare l_id int;
declare l_amount float default 0;
declare done int default 0; #变量done为循环标记,当遍历所有行后值为1,退出循环
declare continue handler for sqlstate '02000' set done =1;
#声明一个句柄,chontinue句柄执行了指定动作,并且继续存储过程的执行,exit句柄从最近的
#begin...end代码块中推出。声明句柄的下一个部分指定了句柄被调用的时间,该句柄在#sqlstate '02000'语句被执行时调用。即该句柄在无法再找到记录行后被调用。我们将逐行处#理一个结果集,而且当遍历了所有需要处理的记录时,这个句柄将被调用,也可以一指定等价#的for not found语句。其他选项还包括sqlwarning sqlexception。
declare c1 cursor for select orderid, amount form orders;
#游标类似与一个数组,它将从一个查询获得结果集,如myssqli_fetch_query()所返回的,并且允许一次只处理一行,如fetch_row()函数。
open c1;#执行查询
repeat
fetch c1 into this_id, this_amount;#从游标查询中获得一行数据。
if not done then
if this_amount > l_amount then
   set l_amount =this_amount;
   set l_id = this_id;
end if;
end if;
until done end repeat;
close c1;
set largest_id = l_id;
end
//
delimiter ;
存储过程还支持while循环
while condition do
....
end while
loop
....
end loop
这些循环么有内置语句,可以通过leave语句退出循环。
存储过程不支持for循环
if condition then
....
[else if condition then]
...
[else]
...
end if
case value
when value then statement
[when value then statement]
[else statement]
end case
CREATE FUNCTION myFunction 
05     ->    (in_string      VARCHAR(255), 
06     ->     in_find_str    VARCHAR(20), 
07     ->     in_repl_str    VARCHAR(20)) 
08     -> 
09     ->   RETURNS VARCHAR(255) 
10     -> BEGIN
11     ->   DECLARE l_new_string VARCHAR(255); 
12     ->   DECLARE l_find_pos   INT; 
13     -> 
14     ->   SET l_find_pos=INSTR(in_string,in_find_str); 
15     -> 
16     ->   IF (l_find_pos>0) THEN
17     ->     SET l_new_string=INSERT(in_string,l_find_pos,LENGTH(in_find_str),in_repl_str); 
18     ->   ELSE
19     ->     SET l_new_string=in_string; 
20     ->   END IF; 
21     ->   RETURN(l_new_string); 
22     -> 
23     -> END$$ 
24 Query OK, 0 rows affected (0.00 sec) 
分享到:
评论

相关推荐

    sql function 的使用

    sql定义一个函数使用function关键字的使用

    Oracle SQL function.ppt

    Oracle SQL 函数是数据库管理中不可或缺的一部分,它们用于处理和操作数据,提供了一种强大的工具集来执行各种计算、转换和数据提取任务。在Oracle 8i版本中,SQL内置函数涉及了数字格式化和日期格式化等多个方面。 ...

    Oracle SQL 內置函數大全 Oracle SQL function.ppt

    简绍oracle的内置函数,方便查看

    SQL FUNCTION Split 字符串分割函数 的创建

    SQL FUNCTION Split 字符串分割函数 的创建,方法加实例

    Oracle SQL function.pptx

    Oracle SQL function.pptx

    SQL_Function.rar_Function Sql_function s_sql functi_sql function

    这个名为"SQL_Function.rar"的压缩包显然包含了一组关于SQL函数的资源,适合正在学习和使用SQL的人员。让我们深入探讨一些常见的SQL函数。 1. **聚合函数**: - `COUNT(*)`:返回表中的行数。 - `SUM(column_name...

    Oracle SQL function

    1、数字格式元素 2、日期格式元素 3、SQL内置函数等

    Sqlserver 自定义函数 Function使用介绍

    SQL Server中的自定义函数是数据库开发中非常重要的组成部分,它们允许开发者创建自定义的逻辑,以便在查询中重用和简化复杂操作。本篇主要关注SQL Server 2008中的三种自定义函数:标量函数、内联表值函数和多语句...

    Oracle SQL function.

    Oracle SQL 函数是Oracle数据库系统中用于处理和操作数据的核心工具。它们允许用户在查询、更新和分析数据时执行各种计算、转换和逻辑操作。在Oracle SQL中,函数分为内置函数和用户自定义函数(UDF)。内置函数是...

    Oracle SQL function详细资料

    Oracle SQL 函数是数据库查询语言的重要组成部分,它们允许用户执行各种计算、转换和数据处理任务。在Oracle 8i版本中,内置的SQL函数提供了丰富的功能,包括对数字和日期的格式化。 在数字格式化方面,Oracle SQL...

    SQl Function 创建函数实例介绍

    SQL Function允许用户根据自己的需求创建自定义函数,这在处理复杂逻辑或满足特定业务场景时非常有用。本篇将详细介绍如何在SQL中创建函数,并通过一个实例来展示其用法。 首先,SQL提供了多种内置函数,例如聚合...

    Oracle_function_package_procedure.rar_oracle_pl sql function_pl/

    在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结构化查询语言的扩展,它允许开发人员编写复杂的数据库应用程序。本文将深入探讨在PL/SQL中Oracle的函数、过程、包以及事务管理...

    SQL Function 自定义函数详解

    SQL Function 自定义函数是SQL语言中一种强大的工具,允许用户创建自己的函数,以满足特定的业务需求或数据处理逻辑。虽然SQL已经提供了大量的内置函数,如数学、日期时间、字符串和转换函数,但自定义函数提供了更...

    ABAP字符串SQL Functions语法总结

    ABAP是一种专为SAP系统设计的编程语言,而在ABAP中处理字符串时,SQL Functions提供了许多方便的方法。本文将对ABAP SQL Functions for Strings进行详细的语法总结。 首先,我们来讨论一下如何在ABAP SQL中跨Client...

    SqlServer调用C#DLL的方法

    - 添加引用`Microsoft.SqlServer.Server`,以便可以使用`SqlFunction`特性。 2. **编写代码**: - 在项目中添加一个类,并使用`SqlFunction`特性标记需要被SqlServer调用的方法。 - 示例: ```csharp using ...

    ORA SQL Function

    Oracle数据库系统中包含丰富的SQL内置函数,这些函数在日常的数据处理和查询中起着至关重要的作用。本文将详细解析Oracle 8i版本中的一些经典且常用的SQL函数,特别是与数字和日期格式化相关的函数。 首先,我们要...

Global site tag (gtag.js) - Google Analytics