Mysql那些琐碎

来源:转载


游标:

是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。


存储过程与函数区别:

一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。

存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。


SQL安全注入:

sql注入的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。

这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。

例如:

select * from  widget where id =1;
 ||
 //
http://widgetshop.com/widget/?id=1 



SELECT * FROM Widget WHERE ID = 1 OR 1=1
||
//
http://widgetshop.com/widget/?id=1 or 1=1

安全注入的防止:

特殊字符过滤,绑定变量,自己定义函数进行校验



Mysql特殊运算符:

---------------------算术运算符-------------------------------------

select 12-1,23-3 ;


select 3%2 , mod(3,2);

-----------------------比较运算符--------------------------------------
select 1=2 ,1=1 ,null=null;

select 1<>1,2<>1,NULL <=> NULL;

select 10 between 10 and 20,'b' between 'a' and 'd';

select 2 in(1,3),'a' in ('e','a','f');

select 0 is null ,null is null;

select 0 is not null , null is not null;

--正则表达式匹配,成功返回1,否则返回0
select  'abcdef' regexp 'ab', 'abcdefg' regexp 'k';

------------------------------------逻辑运算符----------------------------------
----not  ==> 逻辑取反  ===> !
select not 0,not 4 ,not null;


select 1 and 1,1  && 2,null and null,1 and null;


select 1 or 1,0 or 0,null or null ,1 or null,0 or null;


----XOR  ==>异或 相同为1,不同为0

select 1 xor 1,0 xor 1,null xor null,null xor 1,1 xor 2;

------------------------------------------位运算符-------------------------------------

----~    取反
select  ~1,~18446744073709551614;
-----mysql中常量数字默认会以8个字节来表示,也就是64位
select bin(18446744073709551614);
----63个1,外加一个0
------1111111111111111111111111111111111111111111111111111111111111110



---右移和左移
select 16 >>2;

select 16 << 2



版权声明:本文为博主原创文章,转载请注明出处。



分享给朋友:
您可能感兴趣的文章:
随机阅读: