PHP和MySQL Web开发读书笔记---MySQL高级编程
来源:互联网 发布:apache 配置多个域名 编辑:程序博客网 时间:2024/04/29 16:52
1.使用LOAD DATA INFILE语句载入一个文件,如 load data infile "books.txt" into table books;
该命令把books.txt文件将原始数据读入到books表中,在默认情况下,文件中的数据必须通过Tab键隔开,每一行必须有换行符(\n)进行换行,特殊字符需转义,且每个数据需用单引号包括,要使用该语句,必须具有file权限。
2.常见的存储引擎
MyISAM--默认引擎,可以被压缩,且可以全文搜索,他们不是事务安全的,而且也不支持外键
InnoDB--事务安全,且提供了commit和rollback功能,还支持事务安全,且支持外键,但比前者慢
当对一个表格使用大量的select和insert语句时,应该使用MyISAM是最快的,如果需要全文搜索,也用这个;
3.在默认情况下,mysql是自动提交的
如果我们使用事务安全的表格类型,如InnoDB,要在当前的会话中关闭自动提交,输入该命令即可:set autocommit=0;
如果自动提交被打开了,则用如下语句开始一个事务:start transaction;,如果关闭了,就不需要使用该命令
在完成了组成事务的语句后,使用commit将其提交给数据库
如果改变主意,可以使用rollback将其回滚
4.更改表的类型
alter table table_name type=innodb
5.存储过程,这边就分析3个例子吧!
第一个:
delimiter //create procedure total_orders(out total float)BEGIN select sum(amount) into total from orders;END//delimiter ;
调用方法:
call tatal_orders(@t)
使用select @t可以查看结构是否正确
delimiter//语句表示将分隔符从当前值该为//,以保证存储过程中其他符号会被当作代码,而不是分隔符
create procedure total_orders(out total float)创建了实际的存储过程,名为total_orders,他只有total一个参数,后面的float表明该参数是浮点型的,其中参数可以用IN、OUT、INOUT描述,IN表示该值必须传入到存储过程中,OUT表示该值会被传出或者返回,INOUT表示该值可以传入且可以被存储过程修改,感觉就像是引用的意思吧
过程体必须封闭在BEGIN和END中,该过程体与常规的select语句相比使用了into total子句,改子句把结果传入到total这个参数中
最后一个delimiter ;表示把分隔符改回分号
第二个
delimiter //create function add_tax(price float) return floatreturn price*1.1;//delimiter ;调用方法;select add_tax(100)
该存储结构创建了一个函数,create function add_tax(price float) return float 这句声明了一个函数,并且表示返回一个浮点数
第三个
delimiter //create procedure largest_order(out largest_id int)begin declare this_id int; declare this_amount float; declare l_amount float default 0.0; declare done int default 0; declare continue handler for sqlstate '02000' set done=1; declare c1 cursor for select orderid,amount from orders; 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;enddelimiter ;调用方式:call largest_order(@l)select @l
最开始的4句是定义局部变量,使用了declare语句,其中l_amount的初始值为0.0
declare done int default 0;该句声明了done变量用来控制循环语句,当查看完所有的行后设置为1
declare continue handler for sqlstate '02000' set done=1;该句声明了continue这个句柄,他将在sqlstate '02000'语句被调用是执行,该语句以为这,该句柄将在无法找到记录后调用
接下来是声明游标c1,declare c1 cursor for select orderid,amount from orders;这只是把结果集保存在c1中,该查询还不会被执行
接下来的open c1;才是真正运行这个操作,fetch语句可以每次从结果集中返回一行,可以在repeat循环中完成此操作
通过该循环把最大值保存在l_id中,最后set largest_id=l_id
6.在定义了过程和函数后,可以用如下语句来查看定义他的代码
show create procedure procedure_name;
show create function function_name;
可以用如下语句来删除存储过程
drop procedure procedure_name;
drop function function_name;
- PHP和MySQL Web开发读书笔记---MySQL高级编程
- PHP和MySQL Web开发读书笔记一
- PHP和MySQL Web开发读书笔记二
- 《PHP和MySQL Web开发》-- 读书笔记
- PHP和MySQL Web开发 读书笔记
- 《PHP MySQL和WEB开发》笔记 第十三章 MySQL高级编程
- PHP和MySQL Web开发读书笔记---使用mysql数据库
- PHP和MySQL Web开发读书笔记---创建Web数据库
- PHP和MySQL Web开发读书笔记---web应用的安全
- PHP和MySQL Web开发读书笔记---面向对象的PHP
- PHP和MySQL Web开发读书笔记---错误和异常处理
- PHP和MySQL Web开发读书笔记--电子商务的安全问题
- PHP和MySQL Web开发读书笔记---使用PHP和MySQL实现身份认证
- PHP和MySQL Web开发读书笔记---使用PHP和MySQL实现安全事务
- 《php与MySQL Web开发》-读书笔记一
- 《php与MySQL Web开发》-读书笔记二
- PHP 和MySQL Web开发
- php和MySQL web开发
- PHP和MySQL Web开发读书笔记---面向对象的PHP
- nvl() 和 isnull
- PHP和MySQL Web开发读书笔记---错误和异常处理
- PHP和MySQL Web开发读书笔记---创建Web数据库
- PHP和MySQL Web开发读书笔记---使用mysql数据库
- PHP和MySQL Web开发读书笔记---MySQL高级编程
- PHP和MySQL Web开发读书笔记--电子商务的安全问题
- PHP和MySQL Web开发读书笔记---web应用的安全
- PHP和MySQL Web开发读书笔记---使用PHP和MySQL实现身份认证
- PHP和MySQL Web开发读书笔记---使用PHP和MySQL实现安全事务
- 专访邓凡平:Android开发路上的快速学习之道
- PHP和MySQL Web开发读书笔记---与文件系统和服务器的交互
- js绑定事件详解
- C语言中的可变参数函数 三个点“…”