求问下段vsg代码和m代码区别的含义

PHP中,SQL 查询数据库语句 不等于怎么写?pid !=1 order by A.pid limit该表中pid不等于1的所有数据,SQL语句怎么写?我想列出这样写不对
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;中写查询语句?不知道怎么写?
全部答案(共2个回答)
比如包含这个信息的表 是person表。
控制年龄这个信息的列 是age列。
那么查询语句为: select * from person where age&2...
下面语句正确执行的前提是,学生表和课程表都必须正确存在。
CREATE TABLE 成绩(学号 char(10), 课号 char(30), 成绩 int...
说明一个小问题, OR的优先级要比AND低那么一点点(真的,他俩排倒数1和2)所以你的语句逻辑是错的如果你吃不准优先级,推荐你用万能的括号select * fr...
这两个SQL语句看起来都未能使用上索引,都是tablescan表扫操作,但是第一个SQL语句用了两个LIKE,一个NULL的判断。一般情况下,IS NOT NU...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续
sql server:
解1: select top 10 * from A where id not in (select top 30 id from
解2: select top 10 * from A where id & (select max(id) from
(select top 30 id from A )as A);
以t_test为例:
select rownum num,tid from (select rownum num,tid from t_test)
where num&=30 &and num&=41;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。SQL SELECT 语句
SQL SELECT 语句
本章讲解 SELECT 和 SELECT * 语句。
SQL SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例
如需获取名为 &LastName& 和 &FirstName& 的列的内容(从名为 &Persons& 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
&Persons& 表:
Oxford Street
Fifth Avenue
Changan Street
SQL SELECT * 实例
现在我们希望从 &Persons& 表中选取所有的列。
请使用符号 * 取代列的名称,就像这样:
SELECT * FROM Persons
提示:星号(*)是选取所有列的快捷方式。
Oxford Street
Fifth Avenue
Changan Street
在结果集(result-set)中导航
由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。
类似这些编程函数不在本教程讲解之列。如需学习通过函数调用访问数据的知识,请访问我们的您所在的位置: &
教您使用参数化SQL语句
教您使用参数化SQL语句
SQL语句的使用非常灵活,通过各种SQL语句,可以实现不同功能的操作,下面将为您介绍参数化SQL语句,供您参考,希望对您有所帮助。
SQL语句的使用非常灵活,通过各种语句,可以实现不同功能的操作,下面将为您介绍参数化SQL语句,供您参考,希望对您有所帮助。
SQL注入的方法有两种:
一是所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些性能,并且存储过程可以由专门的数据库管理员(DBA)编写和集中管理,不过这种做法有时候针对相同的几个表有不同条件的查询,SQL语句可能不同,这样就会编写大量的存储过程,所以有人提出了第二种方案:参数化SQL语句。例如我们在本篇中创建的表UserInfo中查找所有女性用户,那么通常情况下我们的SQL语句可能是这样:
select * from UserInfo where sex=0
在参数化SQL语句中我们将数值以参数化的形式提供,对于上面的查询,我们用参数化SQL语句表示为:&
select * from UserInfo where sex=@sex
再对代码中对这个SQL语句中的参数进行赋值,假如我们要查找UserInfo表中所有年龄大于30岁的男性用户,这个参数化SQL语句可以这么写:
select * from UserInfo where sex=@sex and age&@age
下面是执行这个查询并且将查询结果集以DataTable的方式返回的代码:&
SqlConnection connection = new SqlConnection(&server=database=uid=pwd=''&);&
SqlCommand command = new SqlCommand(&select * from UserInfo where sex=@sex and age&@age&, connection);&
command.Parameters.AddWithValue(&@sex&, true);&
SqlParameter parameter = new SqlParameter(&@age&, SqlDbType.Int);
parameter.Value = 30;&
command.Parameters.Add(parameter);
SqlDataAdapter adapter = new SqlDataAdapter(command);&
DataTable data = new DataTable();
上面的代码是访问SQL Server数据库的代码。如果本文中提到的数据分别在Access、MySQL、Oracle数据库,那么对应的参数化SQL语句及参数分别如下:
select * from UserInfo
where sex=? and age&?
select * from UserInfo
where sex=?sex and age&?age
select * from UserInfo
where sex=:sex and age&:age
OleDbParameter
MySqlParameter
OracleParameter
实例化参数
OleDbParameter p=new OleDbParameter(&?&, OleDbType. Boolean);
MySqlParameter p=new MySqlParameter(&?sex&, MySqlDbType.Bit);
OracleParameter p=new OracleParameter(&:sex&, OracleType.Byte);
p.Value=1;
p.Value=1;
通过上面的实例代码我们可以看出尽管SQL语句大体相似,但是在不同数据库的特点,可能参数化SQL语句不同,例如在Access中参数化SQL语句是在参数直接以&?&作为参数名,在SQL Server中是参数有&@&前缀,在MySQL中是参数有&?&前缀,在Oracle中参数以&:&为前缀。
注意:因为在Access中参数名都是&?&,所以给参数赋值一定要按照列顺序赋值,否则就有可能执行出错。
Command对象传参效率测试
在.net平台,普通的insert语句有两种写法,不带参数insert into test(c1,c2) values(var1,var2)和带参数insert into test(c1,c2) values(:c1,:c2),它们的执行效率如何呢?
做了个试验,代码如下:(数据库是oracle)
public partial class WebForm1 : System.Web.UI.Page
&&&&&&&&protected void Page_Load(object sender, EventArgs e)
&&&&&&&&&&&&
&&&&&&&&&&&&test2();
&&&&&&&&private void test1()
&&&&&&&&&&&&OracleConnection con = new OracleConnection();
&&&&&&&&&&&&con.ConnectionString = &Data Source=User Id=Password=Persist Security Info=T&;
&&&&&&&&&&&&System.Random r = new Random((int)System.DateTime.Now.Ticks);
&&&&&&&&&&&&string strCommand = &insert into test(c1,c2) values({0},{1})&;
&&&&&&&&&&&&OracleCommand com = new OracleCommand();
&&&&&&&&&&&&com.Connection =
&&&&&&&&&&&&con.Open();
&&&&&&&&&&&&DateTime dt = DateTime.N
&&&&&&&&&&&&Label1.Text = &不传参:&+DateTime.Now.ToLongTimeString();
&&&&&&&&&&&&for (int i = 0; i & 50000; i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&mandText = string.Format(strCommand, r.Next(), r.Next());
&&&&&&&&&&&&&&&&com.ExecuteNonQuery();
&&&&&&&&&&&&}
&&&&&&&&&&&&mandText = &truncate table test&;
&&&&&&&&&&&&com.ExecuteNonQuery();
&&&&&&&&&&&&con.Close();
&&&&&&&&&&&&Label2.Text = DateTime.Now.ToLongTimeString();
&&&&&&&&private void test2()
&&&&&&&&&&&&OracleConnection con = new OracleConnection();
&&&&&&&&&&&&con.ConnectionString = &Data Source=User Id=Password=Persist Security Info=T&;
&&&&&&&&&&&&System.Random r = new Random((int)System.DateTime.Now.Ticks);
&&&&&&&&&&&&string strCommand = &insert into test(c1,c2) values(:c1,:c2)&;
&&&&&&&&&&&&OracleCommand com = new OracleCommand();
&&&&&&&&&&&&com.Parameters.Add(&:c1&, OracleType.Number);
&&&&&&&&&&&&com.Parameters.Add(&:c2&, OracleType.Number);
&&&&&&&&&&&&mandText = strC
&&&&&&&&&&&&com.Connection =
&&&&&&&&&&&&con.Open();
&&&&&&&&&&&&Label1.Text = &传参:&+DateTime.Now.ToLongTimeString();
&&&&&&&&&&&&for (int i = 0; i & 50000; i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&com.Parameters[&:c1&].Value = r.Next();
&&&&&&&&&&&&&&&&com.Parameters[&:c2&].Value = r.Next();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&com.ExecuteNonQuery();
&&&&&&&&&&&&}
&&&&&&&&&&&&com.Parameters.Clear();
&&&&&&&&&&&&mandText = &truncate table test&;
&&&&&&&&&&&&com.ExecuteNonQuery();
&&&&&&&&&&&&con.Close();
&&&&&&&&&&&&Label2.Text = DateTime.Now.ToLongTimeString();
执行结果:
10000记录:
不传参数?5:46:19 15:46:34 15秒
传参数:?5:50:51 15:51:01 10秒
50000记录:
不传参数& 16:09:03 16:10:24 81秒
传参数::16:15:43 16:16:36 53秒
这只是2个参数的情况,如果参数很多会不会影响更大呢?
10000记录,7个参数:
不传参数:17:11:01 17:11:18 17秒
传参数:17:13:46 17:13:59 13秒
50000记录:7个参数:
不传参数:17:19:02 17:20:25 1分23秒
传参数:17:15:09 17:16:10 1分1秒
需要相差不大,但是向command对象传递参数既可以避免sql注入问题,也可以提高性能。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
MySQL 5.6.10已经发布,Oracle将其称之为MySQL 5.6正式版。51CTO
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
MySQL众多的管理工具,是广大DBA管理好数据库的利器。
本专题将带领大家走入MongoDB的世界,MongoDB是一个基
MySQL集群由三部分组成,管理节点、存储节点和SQL节点
在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,
51CTO旗下网站

我要回帖

更多关于 g代码和m代码区别 的文章

 

随机推荐