mysql 数据库,更新字段语句:
一、UPDATE:
UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。
UPDATE table_anem SET column_name1 = value1, column_name2 = value2, ...
WHERE ... 。
如下面的语句将users表中id等于123的记录的age改为24。
UPDATE users SET age = 24 WHERE id = 123。
同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = 'Mike' WHERE id = 123。
上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。
在使用UPDATE更新记录时,如果被更新的字段的类型和所赋的值不匹配时,MySQL将这个值转换为相应类型的值。如果这个字段是数值类型,而且所赋值超过了这个数据类型的最大范围,那么MySQL就将这个值转换为这个范围最大或最小值。如果字符串太长,MySQL就将多余的字符串截去。如果设置非空字段为空,那么将这个字段设置为默认值,数字的默认值是0,字符串的默认值是空串(不是null,是"")。
有两种情况UPDATE不会对影响表中的数据:
1. 当WHERE中的条件在表中没有记录和它匹配时。
2. 将同样的值赋给某个字段时,如将字段abc赋为'123',而abc的原值就是'123'。和INSERT、REPLACE一样,UPDATE也返回所更新的记录数。但这些记录数并不包括满足WHERE条件的,但却未被更新的记录。如下同的UPDATE语句就未更新任何记录。
UPDATE users SET age = 30 WHERE id = 12。
Query OK, 0 rows affected (0.00 sec)。
注意:如果一个字段的类型是TIMESTAMP,这个字段在其它字段更新时自动更新。
在有些时候需要得到UPDATE所选择的行数,而不是被更新的行数。可通过一些API来达到。如MySQL提供的C API提供了一个选项可以得到想要的记录数。而MySQL的JDBC驱动得到的默认记录数也是匹配的记录数。
UPDATE和REPLACE基本类似,但是之间有两点不同。
1. UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。
2. UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除,再插入新的记录。也就是说,将所有的字段都更新了。
二、DELETE和TRUNCATE TABLE:
在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。
如果要清空表中的所有记录,可以使用下面的两种方法:
DELETE FROM table1。
TRUNCATE TABLE table1。
其中第二条记录中的TABLE是可选的。
如果要删除表中的部分记录,只能使用DELETE语句。
DELETE FROM table1 WHERE ...。如果DELETE不加WHERE子句,那么和TRUNCATE TABLE是一样的,但有一点不同,那就是DELETE可返回被删除的记录数,而TRUNCATE TABLE返回的是0。
如一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成功。如不想这样做的话,可在DELETE语句中加上WHERE,如WHERE 1或WHERE true。
DELETE FROM table1 WHERE 1。
上面的语句在执行时将扫描每一条记录。并不比较,这个WHERE条件永远为true。这样做可保持自增的最大值,由于扫描了所有的记录,执行成本要比没有WHERE子句的DELETE大得多。
DELETE和TRUNCATE TABLE的区别:DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。且还可返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,且不能返回被删除的记录。但执行得非常快。和标准的SQL语句不同,DELETE支持ORDER BY和LIMIT子句,通过这两个子句,可更好地控制要删除的记录。如当我们只想删除WHERE子句过滤出来的记录的一部分,可以使用LIMIB,如果要删除后几条记录,可通过ORDER BY和LIMIT配合使用。假设要删除users表中name等于"Mike"的前6条记录。可使用如下的DELETE语句:
DELETE FROM users WHERE name = 'Mike' LIMIT 6。
一般MySQL并不确定删除的这6条记录是哪6条,为保险,可使用ORDER BY对记录进行排序。
mysql数据库软件怎么使用,如何连接数据?
mysql数据库软件的使用及连接方法:
一、安装MySQL。
1、准备好安装包,双击Setup.exe文件,开始mysql的安装。
2、按照提示一步一步往下执行直到安装完成。
3、安装完成之后配置MySQL服务,用以创建数据库及登录数据库账户密码:
选择Standard Configuration 标准配置,然后一路点next,直到配置好用户名密码。
更多详细信息及可能出现故障及解决方法请参考:http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html
二、连接数据库:
连接数据库有很多种方式,包括:
1、使用MySQL提供的dos登录方式,登录方法:在dos输入mysql -hlocalhost -uuser -ppwd
其中-h表示主机,-u表示用户,-p表示密码,登录成功会显示mysql>,如图:
2、使用数据库连接工具进行连接,比如:navicat、Heidi Sql等工具都可以用来连接MySQL数据库。
3、在程序中使用jdbc方式连接。详细程序实现可以参考:http://www.cnblogs.com/cy163/archive/2008/08/22/1274413.html
三、MySQL的使用:
MySQL用于系统存储数据,其操作方法就是使用sql(structure query language 结构化查询语言)来实现对数据库的操作。
sql语句的具体写法请参考百度文库资料:http://wenku.baidu.com/view/051716e49b89680203d82594.html进行学习。
mysql数据库监控软件有哪些
sql server 自带的SQL SERVER Profiler 就很好用
mysql 查看所有数据库名命令
所有数据库名的命令 show databases
表结构和列结构 desc tablename
如何发布使用mysql作为后台数据库的软件
数据库部分是不是把datadir目录下的所有文件拷贝过去,还有my.ini或者my.cnf文件拷贝过去,这个数据库就可以正常运行了?有没有真正时间过的朋友?
我从帮助上看到,上面这个方法的一个必要条件是目标机器和我的机器的浮点数类型一致,请问这个是什么意思?是不是兼容x86的cpu都是一致的?无论是intel还是AMD.
2,请问大家使用什么方式连接mysql数据库,我使用的是myODBC,听说还有OLEDB,有没有用过的朋友?那个好?
附:
将 InnoDB 数据库移动到另一台机器中
只要机器的的浮点数格式一致,那 InnoDB 的数据和日志文件在任何平台上均是二进制兼容的。 你可以通过简单地复制所有相关文件的方式来移动一个 InnoDB 数据库,方法 已在上面的章节中给以描述。如果在两台机器上浮点格式是不同的,但是你没有在你的表中使用 FLOAT 或 DOUBLE 数据类型,那么也可以使用这种方法:仅仅是复制相关文件。如果机器的格式不同而又使用了浮点数据,那么你不得不通过使用 mysqldump 和 mysqlimport 来移动那些表。
当向数据库中导入数据时最好将自动提交(autocommit)开关关闭将提高性能,如果插入事务用尽所有可用表空间将会引起大的大的回滚。建议在插入完整个表或表片段后再提交事务。
------Solutions------
你存成SQL语句发布不就可以了吗?
------Solutions------
服务器端需要安装MySQL,其实你看看自己装的MySQL,是MySQL Server and Client。
至于字节顺序,MyISAM的平台无关性表示不受直接顺序的影响。InnoDB表就不一样了,因为它的数据库整个是一个二进制数据的文件,不同架构的计算机肯定不能兼容。这里,不同架构一般是指Intel体系和Alpha、PowerPC等其他CPU的区别。
但是,实际上没有说把文件拷贝了来发布数据库内容的,一般程序不包括数据库内容,只包括结构,如果有内容,通过导入、导出就行了,没那么麻烦。
我使用MySQL C API连接据库,效率高、发布方便(都链接好了)。
------Solutions------
谢谢 Mackz(在相互)
用程序来初始化,我也考虑过,但有一个问题,如果root用户的密码被
不怀好意的人掌握,他可以通过看processlist来看到你的所有初始化过程,
包括修改密码动作,我想到了解决办法,但是还没有实践。
另外,我使用的是VB开发,你说的mysql C API是不是直接
连接?是否是用C来开发才可以用的,
如果让我用C来开发,我想我会疯的。
------Solutions------
VB
就用 MyODBC 吧,
建议用 Delphi ,
------Solutions------
问题很简单,1安装程序先安装myxql 2 执行sql语句建立数据库和表,3 用mysql 的loadfile 从文本文件里道入你要的数据,用C 接口一点也不麻烦,myodbc的效率损失太大
------Solutions------
谢谢 kkk3k3k() 老兄指点,我在实践中发现处理办法比你说的还简单。我的做法是:
1,把文件(包括数据文件)拷贝到安装路径。
2,修改my.ini文件
3,运行mysqld-nt --install注册服务
我现在的程序是VB做的,使用ADO,目前测试记录在20000左右,觉得速度还可以。
对于用C来写程序,我比较感兴趣,因为我想在做报表统计分析的时候使用,
也许可以提高速度。
有个问题想请教?使用C接口就不用通过myodbc?如果服务器和客户端在一台机器上,
用C不通过odbc可以访问数据库吗?
------Solutions------
使用linux的sock连接,连接性能通常可以提高30%左右!
在数据移植过程中,通常直接复制文件是最快的,但如果是从win32移到linux系统中,请确认移植后的所有myi,myd文件后缀名为大写,否则系统会提示数据库损坏!
------Solutions------
系统数据复制过程中,如果主机数据库不能停止使用,如果此时库中使用的是不是innodb格式,建议采用系统热备份的形式来实现。如使用的是innodb格式,目前无办法,听说5.0可以解决!
------Solutions------
系统热备份?如何实现,有文章吗?
是通过系统(比如说linux)还是mysql本身
------Solutions------
系统热备份不是免费的,记得www.mysql.com上面有这方面的资料
------Solutions------
如果青春之歌开发的不是遵循GPL的软件,就这种行为我有充分的理由把他列入黑名单。
------Solutions------
系统热备份是免费的!
------Solutions------
系统热备份是免费的!自己看manual.html之replication!
------Solutions------
除了innodb的热备份是收费的,他是另外专门开发的。
------Solutions------
的确是免费的,我也看了。
可能我以前看到热备份是第三方的商业软件
------Solutions------
呵呵,这一类数据热备份程序与MIS系统应用比起来要简单得多了,
大伙在做系统时完全可以自己编程来实现,
:)
对于数据库的备份方式 ,
一般来说可分为两大类,
1、 数据导入与导出
2、 直接复制数据库表二进制文件,
第一种方式是在数据库服务不停止的状态下进行数据备份的,
第二种方式必须将数据库服务停止
第一种方式转储的数据是以一个文本文件的方式保存的,但数据被损坏时很容易看得出来
第二种方式数据是以一个二进制文件形式保存的,当数据被损坏时不容易被发现
第一种方式可以将数据恢复到任何一个系统平台上,
第二种方式却有所限止
如果使用的是 MySQL 3.23,
对于 MyISAM 表,如果两种系统的体系结构支持同样的
浮点格式,那就可以直接将 `.frm', `.MYI', and `.MYD' 文件拷贝过去,
否则需要使用数据导出
对于 ISAM 表,只要是在两种不同的系统或不同的体系结构之间移动数据,
就必须使用数据导出与导入
而对于 InnoDB 表, 只要机器的的浮点数格式一致,
那么数据和日志文件在任何平台上均是二进制兼容的。
你可以通过简单地复制所有相关文件的方式来移动一个 InnoDB 数据库,
并将 my.cnf 配置文件一同复制到新的系统中。
如果在两台机器上浮点格式是不同的,
但是你没有在你的表中使用 FLOAT 或 DOUBLE 数据类型,
那么也可以使用这种方法:仅仅是复制相关文件。
如果机器的格式不同而又使用了浮点数据,
那么你不得不通过使用 mysqldump 和 mysqlimport 来移动那些表。
上面都说了第一种方式的优点,
但是,第一种方式有一个最大的缺点就是:
当你在做转储时,为了保证数据是当前最新的,你不得不使用 LOCK TABLE !
在数据导入时,也是如此,因此这会阻塞其它用户的连接
它的备份与恢复速度比较慢,
第二种方式的备份与恢复速度很快,
通常,两种方式同时使用是被极力推荐的。
MYSQL有那些专用的数据库同步软件?
HKROnline SyncNavigator 是一款 SQL Server,MySQL 数据库同步软件。它为您提供一种简单智能的方式完成复杂的数据库数据同步,分发操作。
SyncNavigator 可以帮助您快速的完成数据库的数据同步。
不需要专业的数据库知识,只需要进行简单的设置即可实现数据库的同步,分发以及热备份。即使是大容量数据库也能快速完成同步。
它对数据库的支持非常完整,您可以将 SQL Server/MySQL 数据库同步到其他不同版本的数据库上而不需要考虑其数据库结构。
它支持断点续传功能,即使出现网络中断或者数据库故障
也能继续同步数据库,并确保数据完整性。
如何对MySQL数据库中的数据进行实时同步
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日
志中记录的日志项,包涵数据库表中所有数据,那么, 就可以恢复本地数据库的全部数据了)。 而这个二进制日志,
如果用作远程数据库恢复,那就是replication 了。这就是使用replication 而不用sync 的原因。这也是为什么要设
置bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。下面就介绍
下怎样实现两个Mysql数据库之间的主从同步。
一、 概述
MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、
互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。
二、 环境
操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN)
Mysql版本:5.0.45-4.fc8
设备环境:PC(或者虚拟机)两台
三、 配置
数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下
为/etc/my.cnf。
3.1 设置环境:
IP的设置:
A主机 IP:10.10.0.119
Mask:255.255.0.0
B主机 IP:10.10.8.112
Mask:255.255.0.0
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态
。如果防火墙状态为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命
令来禁用或定制。
最终以两台主机可以相互ping通为佳。
3.2 配置A主(master) B从(slave)模式
3.2.1 配置A 为master
1、增加一个用户同步使用的帐号:
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权
限才可以。
2、增加一个数据库作为同步数据库:
create databbse test;
3、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
4、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id = 1 #Server标识
log-bin
binlog-do-db=test #指定需要日志的数据库
5、重起数据库服务:
service mysqld restart
查看server-id:
show variable like ‘server_id’;
实例:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
6、用show master status/G命令看日志情况。
正常为:
mysql> show master status/G
*************************** 1. row ***************************
File: mysqld-bin.000002
positiion: 198
Binlog_Do_DB: test,test
Binlog_Ignore_DB:
1 row in set (0.08 sec)
3.2.2 配置B 为slave
1、增加一个数据库作为同步数据库:
create databbse test;
2、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
3、修改配置文件:
修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id=2
master-host=10.10. 0.119
master-user=backup #同步用户帐号
master-password=1234
master-port=3306
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=test #告诉slave只做backup数据库的更新
5、重起数据库服务:
service mysqld restart
查看server-id:
show variables like ‘server_id’;
实例:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
1 row in set (0.00 sec)
6、用show slave status/G命令看日志情况。
正常为:
mysql> show slave status/G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.0.119
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 236
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test,test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 236
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.01 sec)
3.2.3 验证配置
分别使用insert, delete , update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配
置成功。
3.3双机互备模式
如果在A主机加入slave设置,在B主机加入master设置,则可以做B->A的同步。
1、在A主机的配置文件中 mysqld配置项加入以下设置:
master-host=10.10.8.112
master-user=backup
master-password=1234
replicate-do-db=test
master-connect-retry=10
2、在B的配置文件中 mysqld配置项加入以下设置:
log-bin
binlog-do-db=test
注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave
start。
重起A、B机器,则可以实现双向的热备份。
总之,成功完成以上配置后,在主服务器A的test库里添加数据或删除数据,在从服务器B的test库里马上也能
看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。
转载请注明出处51数据库 » mysql数据库通知软件 mysql数据库更新字段语句