最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true,而 true 与任何布尔值的 or 运算的结果都是 true,那么无论正确密码是什么“Password='1' or '1'='1'”的计算值永远是 true,这样恶意攻击者就可以使用任何帐户登录系统了.这样的漏洞就被称作“SQL 注入漏洞(SQL Injection)”. 对付 SQL 注入漏洞有…
在实际开发的时候有的时候希望一次执行多句SQL语句,又不想使用Transcation的话,可以直接将多句SQL语句拼接起来.例如: var sql = "Begin " + "Update tabUser Set UserName = :UserName Where UserId = :UserId; " + "Update tabUser Set UserPassword = :UserPassword Where UserId = :UserId An…
众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的.这个得益于Mysql允许在SQL语句内使用@变量.以下是示例代码. 创建表格 CREATE TABLE `treenodes` ( `id` int , -- 节点ID `nodename` ), -- 节点名称 `pid` int -- 节点父ID ); 插入测试数据 INSERT INTO `treenodes` (`id`, `nodename`, `pid`)…
select count(*) + 1 from `table` where rank > (select rank from `table` where id = *) 上面那句SQL 给了我一启示,查出比当前用户积分多的记录的总记录数+1,就是当前用户在所有用户中的排名... 如果是按积分的大小来排名的话,积分一样,排名启不是一样?…
ACCESS 例子: insert into products (ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai) select ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai from product22 1.用一句sql从一个表里面取出数据导入另外一个表里面.这个对不同程序之间的数据转换很有用处,而且速度快,数据完整: insert into table1 (c…
--一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colorder=1 Then isnull(F.value,'') Else '' End, 字段序号 = A.colorder, 字段名 = A.name, 字段说明 = isnull(G.[value],''), 标识 = Case When COLUMNPROPERTY( A.id,A.name,'…
对于MySQL而言,其实分为客户端与服务端. 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端. 客户端,负责发送请求到服务端并从服务端获取数据,客户端可以有多种形式,可以是我们通过mysql -uroot -p1234打开的黑窗口,也可以是我们使用的Nativecat.SQLyog等数据库连接工具,甚至我们的程序,也可以称作MySQL的客户端. 而当我们在mysql窗口或者数据库连接工具中输入一句sql后,我们就可以获取到想要…
pl/sql 代码块: SELECT count(distinct t2.so_nbr) INTO v_count2 FROM KFGL_YW_STEP_qd t2 WHERE t2.partition_id_month=to_number(substr(p_month, 5, 2)) AND t2.area_id = cur_area.area_id AND t2.prod_id in (20201010,20201011,20202011,20203030); sql 直接运行 SELECT…
表1 Id Name 1 张三 2 李四 3 王五 表二 Id Name1 Name2 1 1 2 2 2 1 3 2 3 4 1 3 我现在要查出结果如下: Id Name1 Name2 1 张三 李四 2 李四 张三 3 李四 王五 4 张三 王五 这条sql怎么写? 注:SQL Server数据库 第一种比较笨的:  select id,(select top 1 name from t1 as b where b.id=a.name1 ) as name1,(select top 1 n…
一.     选择题 1.SQL语言是( C )语言. A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库     redis 是 3.如果在where子句中有两个条件要同时满足,应该用哪个逻辑符来连接(C ) A.OR B.NOT C.AND D.NONE 4.外连接的条件可以放在以下的那一个子句中(  B) A.  FROM B.   WEHRE C.   SELECT D.   HAVING  group by分组后必须用  聚合函数只能在having中用 5.在从两个表中查询数…