怎么动态显示mysqlaccess数据库追加记录中新追加的数据记录

mysql 能同时更新一条数据并返回这条数据的内容吗?
想更新一个表里的一条数据并同时返回这条数据的内容,用一条sql语句完成,请问怎么写????
你更新的时候都知道要更新成什么样了,为什么还要返回?
--- 共有 2 条评论 ---
我主要的意思就是想一次就操完成这个过程,不想分两次去操作mysql数据库
我更新的时候,只更新那条记录里面某一个的内容,但我要返回整条数据的内容
我更新的时候,只更新那条记录里面某一个的内容,但我要返回整条数据的内容,
我主要的意思就是想一次就操完成这个过程,不想分两次去操作mysql数据库
写一个存储过程得了!
--- 共有 1 条评论 ---
存储过程,应该不用这么麻烦吧
这样的需求绝对有,只是这样一次性完成的方法好像没有。
可能有些字段是自动生成的,他想了解这些自动生成字段的内容
我建议还是写一个存储过程处理好了,尤其对批量添加和更新更是如此。
mysql没这种功能。
UPDATE [ ONLY ] table [ [ AS ] alias ]
SET { column = { expression | DEFAULT } |
( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
[ FROM fromlist ]
[ WHERE condition ]
[ RETURNING * | output_expression [ AS output_name ] [, ...] ]
INSERT INTO table [ ( column [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
[ RETURNING * | output_expression [ AS output_name ] [, ...] ]
使用 RETURNING 返回需要的字段即可。这也是标准的安全的获得 insert_id值的做法。
谢谢各位,看来mysql是真的没有这种写法了。查看:8115|回复:5
中级工程师
请问,能否把一个查询结果集的数据,在另一个数据库中(在同一个SQL Server实例中)插入一个新表,并命新名?谢谢!
小微企业IT帮
用LINKEDSERVER
SELECT * INTO TBL2 FROM [LINKEDSERVER].[DB1].dbo.[TBL1];
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
中级工程师
引用:原帖由 UltraSQL 于
17:49 发表
用LINKEDSERVER
SELECT * INTO TBL2 FROM [LINKEDSERVER].[DB1].dbo.[TBL1]; 请问如何连接两个数据库呢?谢谢
小微企业IT帮
sp_addlinkedserver
创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft? SQL Server?,则可执行远程存储过程。
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
= ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
= ] 'catalog' ]
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
= ] 'useself' ]
[ , [ @locallogin = ] 'locallogin' ]
[ , [ @rmtuser = ] 'rmtuser' ]
[ , [ @rmtpassword = ] 'rmtpassword' ]
[ =] 'useself'
决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUE。true 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 rmtsrvname,而忽略 rmtuser 和 rmtpassword 参数。false 值指定 rmtuser 和 rmtpassword 参数用来连接到特定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself 为 true 则无效,除非 Microsoft Windows NT(R) 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。
[ @locallogin =] 'locallogin'
本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。
不同服务器数据库之间的数据操作
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQL OLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select * from ITSV.数据库名.dbo.表名
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表
--更新本地表
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A
--3、opendatasource/openrowset
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerNUser ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerNUser ID=登陆名;Password=密码 ').数据库.dbo.表名
本帖最后由 UltraSQL 于
07:43 编辑
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
同1个instance直接插入就可以啦:
select * into db_2..new_table_name from current_table_name
如果另个instance,可以用楼上的linked server
言简意赅!
SQL Server MCITP, MVP, MCT, DBA
小微企业IT帮
嚓 看漏了 同一个实例下
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据
应用场景:
我们需要设计一个来保存多个文档中每个文档的关键字。假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字。
假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字。那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作。
具体的示意图如下所示:
首先图1是我们的原始表格:
这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入。
上图是我们整个表的概况。下面我们就用程序来总结出这样的一个表格是怎么实现的。
'''
function description : Add the fields and data dynamicly.
author : Chicho
running : python addfileds.py
'''
import MySQLdb
#connect the database
#the argvs based on the database you set.
#Generally speaking, you should change the No. of the port 3306 , because it's easy to be
#localhost = 127.0.0.1
conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '*****')
curs = conn.cursor()
# create a database named addtest
#Ensure the program can run multiple times,we should use try...exception
curs.execute('create database addtest')
print 'Database addtest exists!'
conn.select_db('addtest')
# create a table named addfields
curs.execute('create table addfields(id int PRIMARY KEY NOT NULL,name text)')
print('The table addfields exists!')
# add the fileds
for i in range(1):
sql = &alter table addfields add key%s text& %i
curs.execute(sql)
except Exception,e:
for i in range(4): #insert 5 lines
sql = &insert into addfields set id=%s& %i
curs.execute(sql)
sql = &update addfields set name = 'hello%s' where id= %s&%(i,i)
curs.execute(sql)
for j in range(5):
sql = &update addfields set key%s = 'world%s%s' where id=%s&%(j,i,j,i)
curs.execute(sql)
#this is very important
curs.close()
conn.close()
记住最后一定要记得最后三行这个语句,否则你的操作不会写入到数据库中。
最后就可以得到我们的结果,如下图所示:
程序的大体实现就是这样。
参考文献:
/rollenholt/archive//2524327.html
http://www.blogjava.net/alpha/archive//131912.html
/art/74_all.htm
感谢楼上几位博主的无私奉献精神,博主是在没有MySQL 的基础上参照这些blog实现的。如有什么地方不足欢迎提出
批评和建议。对你的意见我在此表示由衷的感谢。
1.操作数据库出现的一些错误总结
如果你长时间为队数据库进行操作,再次进行操作的时候可能会出现以下错误:
raise errorclass, errorvalue
OperationalError: (2006, 'MySQL server has gone away')
这个时候对于MySQL server 你要做的就是执行一下下面这个命令
connect your_database
对于在python中的IDLE你需要执行:
conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '****')
curs = conn.cursor()
conn.select_db('addtest')
密码输入你自己数据库中设置的。
2.UnicodeEncodeError: 'latin-1' codec can't encode characters in position
出现上述这个错误的时候可以采用下面这个方法就可以解决。
conn.set_character_set('utf8')
curs.execute('set names utf8')
curs.execute('SET CHARACTER SET utf8;')
curs.execute('SET character_set_connection=utf8;')
conn,curs和本文中参数设置是一样的。&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 mysql 数据库表记录数 的文章

 

随机推荐