sql 语句 插入数据 返回值问题】的更多相关文章

1. 主键ID 自增 ,插入数据后返回这条数据的ID值 insert into tableName() values() select @@identity 2.主键ID 使用GUID类型值 ,插入数据后返回这条数据的ID值 insert into tableName() output inserted.id values() 如果想返回插入数据的其他字段的值可以修改 inserted.id.…
过去我执行拼凑出来的动态SQL语句,都直接使用EXEC @sql 的方式.有好几次,都看到有资料说,应该尽量使用 sp_executesql. 究其原因,是因为仅仅参数不同的情况下,sp_executesql可以重用执行计划,这不就有跟存储过程一样的优势了吗?同时,sp_executesql还可以提供动态SQL语句执行的返回值,方便得很. 但sp_executesql的使用方式看上去比较复杂,一点都不像EXEC那样直观. 用法: EXEC sp_executesql SQL语句,参数声明,参数…
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件,排序等参数,而对于搜索的话,可能要根据搜索条件判断来动态执行SQL语句. 在SQL Server中有两种方式来执行动态SQL语句,分别是exec和sp_executesql.sp_executesql相对而言具有更多的优点,它提供了输入输出接口,可以将输入输出变量直接传递到SQL语句中,而exec只…
1,php和MySQL建立连接关系 2,打开 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?phpmysql_connect("localhost","root","");//连接MySQLmysql_select_db("hello");//选择数据库?> 当然,前提是已经安装WEB服务器.PHP和MySQL,并且建立MySQL表"webjx…
SQL语句之 数据约束 什么是数据约束 数据约束用来限制用户对数据的非法的修改操作. 1.约束字段的默认值 如果插入记录时,没有给某个字段赋值,那么我们可以设置它的默认值 关键字:default CREATE TABLE test1( tin INT, tname ) DEFAULT '待定' ); ); SELECT * FROM test1; 2.非空约束 约束一个字段,使它的值不能为空 关键字: not null CREATE TABLE test1( tin INT, tname ) N…
今天在实践过程中遇到一个问题, 我想往数据库插入多条数据时,使用了如下语句: insert into 表1 (字段1,字段2) values (1,2),(2,3),(3,4); 这条语句在mysql中执行的话,语法一点毛病都没有,但是,在oracle上执行一直报错:ORA-00933: SQL 命令未正确结束 后来有了如下的解决办法: /* --一.建表 create or replace table pm_ci ( ci_id  varchar2(20) not null, stu_ids…
ibatis插入数据返回ID的方法 主要就是利用seelctkey来获取这个ID值,但是oracle和mysql的区别还是很大的 oracle的用法 <insert id="insertOperation"> <selectKey resultClass="long" keyProperty="Id" > select operation_seq.nextval as id from desc </selectKey…
在通过SQL Server向导中的SQL语句导数据时,默认情况下源表中的nvarchar字段类型会变成202,解决此问题的方法是,要重新选择一下对应的数据接收表.…
存储过程往拼接的sql语句中传递日期值 declare @start datetime declare @end datetime set @start='2014-3-1' set @end='2014-3-31' ) set @sql=' select * from search_record where (Name!='' or Phone!='') and (thedate between @st and @en )' exec sp_executesql @sql,N'@st date…
java通过jdbc访问mysql,update数据返回值的思考 先不说那么多,把Java代码贴出来吧. public static void main(String[] args) throws InterruptedException, IOException { try { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.…
使用SQL语句对数据或者表进行复制,一般用于两张表结构相同的时候使用. SQL Server中,如果目标表存在: insert into 目标表 select * from 原表; SQL Server中,,如果目标表不存在: select * into 目标表 from 原表; Oracle中,如果目标表存在: insert into 目标表 select * from 原表; commit; Oracle中,如果目标表不存在: create table 目标表 as select * fro…
预备知识:SQLServer的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:identity (数据类型,标识种子,标识增长量)举例:select identity (数据类型,标识种子,标识增长量) AS 列名 into 新表 from 原表名 每个表都可以有一个自动增长列,众所周知的就是IDENTITY列.一个IDENTITY列总是被当作表的主键处理(因此,多列主键不可能有一个…
通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "'," + TextBox2.Text + ",0," + TextBox3.Text + ",'','" + DropDownList1.SelectedItem.Text + "','" + Session["username&quo…
预备知识:SQL Server的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:identity (数据类型,标识种子,标识增长量)举例:select identity (数据类型,标识种子,标识增长量) AS 列名 into 新表 from 原表名 每个表都可以有一个自动增长列,众所周知的就是IDENTITY列.一个IDENTITY列总是被当作表的主键处理(因此,多列主键不可能有一…
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. 使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 但要获取此ID,最简单的方法就是在查询之后select @@indentity. sql代码: INSERT INTO table_name (.....) VALUES(...…
insert into Tb_People(uname,era,amount) values( '兆周','老年','10000') select @@identity --当运行完插入语句后,执行select @@identity就可得到自动生成的id --如果是sql server 最好用select SCOPE_IDENTITY() as id --因为@@identity全局的 select SCOPE_IDENTITY() as id select IDENT_CURRENT ('Tb…
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. 使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 3. 但要获取此ID,最简单的方法就是在查询之后select @@indentity. sql代码: INSERT INTO table_name (.....) VALUES(…
  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 insert into Tb_People(uname,era,amount) values( '兆周','老年','10000')   select @@identity   --当运行完插入语句后,执行select   @@identity就可得到自动生成的id   --如果是sql server 最好用select SCOPE_IDENTITY() a…
一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, val2, ...),...]     字符型:单引号     数值型:不需要引号     日期时间型:不需要引号     空值:NULL,不能写成 '' 如向tutors表插入两行数据: mysql> INSERT INTO tutors(Tname,Gender,Age) VALUES('Sam…
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro…
一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max(column3) from user where id>1 group by column1,colum2 having count(column1)>1 order by colum2. sqlserver 2005 各个环节简单介绍: ()))<Top Num> <selec…
关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status 状态 sudo /etc/init.d/mysql start 开启 sudo /etc/init.d/mysql stop 停止 .... restart 重启 .... reload 生效配置[热],不是所有都可以生效 2 客户端连接 mysql -h 主机地址 -u 用户名 -p 密码 my…
一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max(column3) from user where id>1 group by column1,colum2 having count(column1)>1 order by colum2. sqlserver 2005 各个环节简单介绍: (8)SELECT (9)DISTINCT  (11)&l…
我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用getJdbcTemplate() public int saveUser(String userName,int age,String password){ getJdbcTemplate().update(new PreparedStatementCreator() { public Prepa…
首先在我的Student表中插入几条数据,由于我的表已经创建完成了,所以就没有创建表的 sql 语句了,不过可以看我的上一篇文章: http://www.cnblogs.com/Brambling/p/6649350.html 插入数据sql语句: insert into Student(S_StuNo,S_Name,S_Sex,S_Height) ' union ' union ' union ' union ' 当然,也可以像下面这样写,不过我个人习惯用上面这种方法. ') ') ') ')…
示例存储过程:create procedure proc_loginusername varchar(20),password varchar(20)asdeclare @result intselect @result=count(*) from loginuser where user=@username and pass=@passwordif @result=0return 0return 1go Delphi代码:var ret:integer;......      with ADO…
SQL Server 表在导入数据时,有时需要将自增长列指定数值,来保证导入前后的数据完全一致,如何实现? SQL Server 提供了方法: SET IDENTITY_INSERT,允许将显式值插入表的标识列中. 参考文档:SET IDENTITY_INSERT | Miscosoft Docs 语法: SET IDENTITY_INSERT [ database_name . [ schema_name] . ] table { ON | OFF } 用法: -- SET IDENTITY_…
通常使用mybatis对数据进行增删改会进行返回值的判断, 返回值不为1时说明该条语句执行失败,不过今天遇到程序报错返回值不为1,去数据库查看却发现插入成功了,后来知道原来是因为mybatis一次对多条数据进行操作成功后返回值为 -1,而我是通过调用存储过程对数据进行的操作,同时插入了多条数据. 一次只修改一条语句 成功返回 1 一次修改两条及以上语句 成功返回 -1 原文地址:https://www.jianshu.com/p/f98f81d790c0…
按照应用需要,常常要取得刚刚插入数据库表里的记录的ID值,在MYSQL中可以使用LAST_INSERT_ID()函数,在MSSQL中使用 @@IDENTITY.挺方便的一个函数.但是,这里需要注意的是,当使用INSERT语句插入多条记录的时候,使用LAST_INSERT_ID()返 回的还是第一条的ID值,而@@IDENTITY返回最后一条.    很简单的一个函数应用,不过,有时候会遗忘,记录一下,提醒自己.…
在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert into tb (my_str) values('%s')" % (data) cursor.execute(sql) 其中values('%s')中的%s外面也要有引号,这个引号与data中的引号匹配导致了内容错误 解决办法一: MySQLdb.escape_string() 在MySQLdb模…