首页 > php与数据库

MySQL数据库结构和数据的导出和导入

导出要用到MySQL的mysqldump工具,基本用法是:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
 
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
 
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
 
mysqldump支持下列选项:
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
 
--add-drop-table
在每个create语句之前增加一个drop table。
 
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
 
-c, --complete-insert
使用完整的insert语句(用列名字)。
 
-C, --compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
 
--delayed
用INSERT DELAYED命令插入行。
 
-e, --extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#, --debug[=option_string]
跟踪程序的使用(为了调试)。
 
--help
显示一条帮助消息并且退出。
 
--fields-terminated-by=...
 
--fields-enclosed-by=...
 
--fields-optionally-enclosed-by=...
 
--fields-escaped-by=...
 
--fields-terminated-by=...
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
 
LOAD DATA INFILE语法。
 
-F, --flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
 
-f, --force,
即使我们在一个表导出期间得到一个SQL错误,继续。
 
-h, --host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
 
-l, --lock-tables.
为开始导出锁定所有表。
 
-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。

阅读全文

如何在Oracle 中实现类似自动增加 ID 的功能?

我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在ORACLE 中没有这样的 功能,我们
可以通过采取以下的功能实现自动增加ID的功能
1.首先创建 sequence
create sequence seqmax increment by 1
2.使用方法
select seqmax.nextval ID from dual
就得到了一个ID
如果把这个语句放在 触发器中,就可以实现 和 ms sql 的自动增加ID相同的功能!


阅读全文

SQL Server里面的变更周期

今天在用存储过程调用程序时, 发现SQL的时间或日期并不是跟计算机的时钟同步. 比如我把当前时间12:00改为13:00,如果马上用SQL Server的GetDate得到的时间仍为12:00. 但在经常约一分钟(也许只有半分钟),SQL时间才转到系统的正常时间上去.我的系统是Win2K SQL Server7.0, 不知你们是否也有这个问题, 欢迎跟我交流测试.

阅读全文

长期使用中型Access数据库的一点经验

Access数据库在用的过程中, 经常不断的进行删除和增加记录的操作,会出现以下问题:
1. 可能会使Update语句更新失败, 明明一条记录存在, 也可以select到,但在用Update时出现找不到记录, 更新失败的错误信息.
2. 会使数据库增大, 并且降低数据库操作的效率
3. 在删除记录时也不会减少数据库的大小, 并且没有可以改善数据库的相应语句
解决办法
下载Access数据库, 用Access软件打开, 并用"修复和压缩数据库"工具进行处理, 保存后再重新上传并覆盖掉原来的数据库即可解决以上的所有问题. 这种办法比较只适合于中小型的数据库, 大的如果采用上下载的办法太慢了.

阅读全文

SQL SERVER应用问题解答13例(一)

问:如何在SQL Enterprise Manager version 6.5下操作SQL Server 6.0的服务器?
  答:在使用SQL Enterprise Manager version 6.5来操作SQL Server 6.0之前,首先要在6.0的服务器下运行
SQLOLE65.SQL,该文件在MSSQLINSTALL的目录下。
  问:在将SQL Server 6.0升级到SQL Server 6.5之前,为什么首先要执行Chkupg65.exe这个实用工具?
  答:Chkupg65.exe会自动检测SQL Server 6.0的数据库是否处于正常状态,数据库中的各个对象是否使用了SQL
Server 6.5中的新关键字。并将检测到的出错信息记录到以OUT为后缀的输出文件中去。
  问:在SQL Servr7.0中如何将一个数据库的文件从一个磁盘移到另一个磁盘上?
  答:可以使用SP_DETACH_DB和SP_ATTACH_DB系统存储过程来实现。其步骤如下:
  运行SP_DETACH_DB将目的数据库与SQL Server分离。
  将目的数据库的数据文件(.MDF)和日志文件(.LDF)拷贝到目的磁盘上。
  运行SP_ATTACH_DB将目的磁盘上的文件恢复到SQL Server中。
  问:如何修改SQL Server7.0数据库的Character Set?
  答:使用rebuildm.exe可以修改Character Set和Sort Order。修改Character Set会影响SQL Server管理的所有数据
库,即所有数据库都会使用新的Character Set。
  问:如何在两台机器上从SQL Server6.5升级到SQL Server7.0?
  答:首先要将SQL Server6.5的运行帐户设为一个域帐户,并且在另一台机器上安装的SQL Server7.0也使用该域帐
户。其次这个域帐户要属于这两台机器的管理员组。最后,运行SQL Server6.5和SQL Server7.0的机器要在同一个域中。

阅读全文

SQL SERVER应用问题解答13例(三)

问:SQL Server启动事务有几种方式?
  答:有三种。第一种是显式声名的事务,这种事务要以BEGIN TRANSACTION为事务的起始标志。第二种是自动提交事
务,这是SQL Server的缺省设置。每一个T-SQL语句在执行完成后会被自动提交。第三种是隐含事务,在这种方式下,
SQL Server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行COMMIT或ROLLBACK为止,这时系
统又会启动一个新事务。这样就形成了一个连续的事务链。
  问:Cluster Index和Noncluster Index的区别是什么?
  答:Cluster Index和Noncluster Index的结构都是平衡树。它们的主要区别是Cluster Index的叶子节点是DATA PAGE
而Noncluster Index的叶子节点是数据在DATA PAGE中的指针。
  问:在SQL Server6.5,7.0中能否修改Table的名字?
  答:可以使用SP_RENAME来修改Table的名字。
  例如:
  use pubs
  create table test( a char(10))
  sp_rename test,newtest
  这个例子将新建的名为test的Table改为newtest。
  问:修改SQL Server7.0所在机器的机器名后,不能启动SQL Server,这种情况该如何处理?
  答:在这种情况下,要运行SQL Server7.0 Setup程序。Setup程序会根据新的机器名重新设置SQL Server。
  问:如果没有成功的安装SQL Server7.0,我该怎么办?
  答:如果您没有成功的安装SQLServer7.0,有几个文件可以帮助您确定是那一步出的错。首先在windows目录下的
SQLstp.log文件包含有setup过程的详细信息。查看这个文件可以确定Setup是在那一步出错的。
  如果Setup过程是在配置的部分出错,那么查看在MSSQL7Log目录下的错误日志和在MSSQL7Install目录下的
Cnfgsvr.out文件。SQLServer7.0Setup运行一个名为Cnfgsvr.exe的应用程序来配置SQLServer。这个程序启动SQLServer,
连接SQLServer并运行初始安装脚本。在这一过程中出现的任何错误都会被写入Cnfgsvr.out文件。
  如果您无法确定造成安装失败的原因,保存上述的文件并和微软产品支持部门联系,支持SQLServer的专业人员会协助
您解决问题。

阅读全文

SQL SERVER应用问题解答13例(二)

问:Tempdb In Ram的配置出错怎么办?
  答:SQL Server提供了将Tempdb存放在内存中的机制,以提高系统效率。但是,如果把“Tempdb In Ram”的值设置过
大,会导致SQL Server无法正常启动。如果遇到这类问题,您可以:
  在命令行提示下以最小资源模式启动SQL Server(如:C:MSSQLBINNSQLSERVR-f)。
  切换到Windows界面,以SA帐户通过ISQL_W连接到SQL Server,并执行下列命令。
  Sp_configure'Allow Update', 1
  Reconfigure with override
  Go
  Sp_configure'Tempdb In Ram', 0
  Go
  Sp_configure'Allow Update', 0
  Reconfigure with override
  使用Ctrl-C终止命令行中运行的SQLSERVR程序。以通常方式再次启动SQL Server。
  此时的Tempdb建立在磁盘上,大小约为2M。这时就可以通过SQL Enterprise Manager将Tempdb调整为合适的大小。
  问:在启动MSSQLSERVER或SQLEXECUTIVE时出现"错误1069,由于登录失败而无法启动服务"时怎么办?
  答:在控制面板中选取'服务'MSSQLSERVER / SQLEXECUTIVE'启动…',检查帐户名和密码是否正确。
  问:安装SQL Server时用Setup /t RegistryRebuild = On有何用途?
  答:Setup命令在使用该参数将只重写SQL Server在注册表中所使用的有关键值,而不重新安装SQL Server。

阅读全文

用SQL Server为Web浏览器提供图像

微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。假如使用VB或VC开发前端应用程序,在windows操作系统上运行,那么可以容易地从SQL数据库里提取图片数据,把它放入一个文件,并在屏幕上显示出来。但是,要是想从SQL Server得到图片,并在Web浏览器里显示,就不那么容易了。虽然在微软SQL Server 6.5里提供了Web助理和存储过程 sp_makewebtask、sp_runwebtask,它们能够把SQL数据库里的数据转化成HTML文件,但是我们有更好的解决办法。使用Web助理的一个问题是,它不接受图片数据类型的字段。另一方面,存储过程 sp_makewebtask 的参数太多,很难使用,而且也很难对Web页面进行自定义。
 
我们在这里提供了一个解决方案,把图片从SQL数据装载到Web浏览器,这个方案要比sp_makewebtask好。我们用一个ActiveX 动态链接库和ASP页面开发了一个Web项目。动态链接库负责打开到保存图片的SQL数据库的连接,从数据库提取图片并把它们保存在临时文件里。ASP和动态链接库进行通信,取得临时图片文件的位置。这样,当访问者点击Web站点时,图片就会下载到他的浏览器。在这篇文章里,我们要介绍设置SQL数据库的步骤。然后,我们还要介绍如何利用VB5和活动数据对象ADO 1.5建立ActiveX动态链接库。最后,我们还要讨论建立ASP Web项目、连接到SQL数据库以及编写ASP文件的处理过程。
 

阅读全文

谈谈sql查询的between

作者:啊亮
发表于ASP地带,2000-11-25 21:42
例子1:求年龄在20与22岁之间(包括20 和 22)的学生的学号和年龄
select number,age
from s
where age between 20 and 22
例子2:求年龄不在20与22岁之间的学生的学号和年龄
select number,age
from s
where age not between 20 and 22
注意:between后面是低值,and 后面是高值!

阅读全文

全文本检索的应用

基本知识
1. SQL Server7 的 DeskTop 版中没有全文本检索。
2. 一个表只能有一个全文本检索。
3. 被检索的表必须有单列的唯一索引。
4. 全文本的索引存储在文件系统中,而非数据库中。
5. 更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新。
6. 全文本索引包含在全文本目录( Full-Text Catalog )中,每个数据库可以包含一个或多个目录,但一个目录不能属于多个数据库。
7. 全文本检索只能在真正的表上创建,不能是视图,系统表,临时表。
8. 全文本检索会忽略某些噪音字( noise words),比如英文的 a,the,and,中文的'和','是'等等。
9. 如果在查询中包含 noise words ,就会引发错误,在应用程序中应去除这些 noise words。
启动全文本检索服务。
方法A:在企业管理器中打开 Support Services 文件夹,在 Full-Text Search 的右键菜单中选择 Start。
方法B:在 SQL Server Service Manager 的 Services 下拉列表中选择 Microsoft Search,并单击 Start/Continue 按钮。
方法C:使用 net start mssearch 的命令行方式。
使用全文本检索向导( Full-Text Indexing Wizard )。
step1. 选择被检索的数据库,在 Tools 的菜单中,选择 Full-text Indexing,进入欢迎( Welcome )的屏幕,单击 next。
step2. 选择被检索的表,单击 next。
step3. 选择唯一索引,单击 next。
step4. 选择被索引的列,单击 Add,该列显示在右栏中。单击 next。
step5. 选择目录(选择已存在的目录,或创建新的目录),单击 next。
step6. 选择或创建 population schedule(可选项),单击 next。
step7. 单击 finish。
使用 SQL-DMO (以 VB 为例)
step1. 在工程的引用中选择 Microsoft SQLDMO Object Library。
step2. 创建 SQLServer 对象。
Dim objSQL As New SQLDMO.SQLServer
objSQL.Connect "localhost", "sa", ""
step3. 创建新的目录,并加入到被索引的数据库目录中。
Dim objCatalog As New SQLDMO.FullTextCatalog
'使 pubs 为全文本检索的数据库
objSQL.Databases("pubs").EnableFullTextCatalogs
'创建新的目录
objCatalog.Name = "ftcPubsTest"
'将新目录加入到目录集合中
objSQL.Databases("pubs").FullTextCatalogs.Add objCatalog

阅读全文

加大MySql的最大连接数

MAX QUERIES PER HOUR --- 每小时的最大查询次数
MAX UPDATES PER HOUR  --- 每小时的最大更新次数
MAX CONNECTIONS PER HOUR --- 每小时最多连接次数
在Win下可以修改my.ini:
4.0及一下版本在[mysqld]所属下插入
set-variable=max_connections=1000(或更多) 即可。
4.1以上修改max_connections的属性
max_connections=1000(或更多) 即可。
在Unix/Linux下:
mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,可以把它适当调大
whereis safe_mysqld
找到safe_mysqld的位置,然后编辑它,找到mysqld启动的那两行,在后面加上参数
-O max_connections=1000
例如
--- safe_mysqld.orig Mon Sep 25 09:34:01 2000
+++ safe_mysqld Sun Sep 24 16:56:46 2000
@@ -109,10 +109,10 @@
if test "$#" -eq 0
then
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR
- --skip-locking >> $err_log 2>&1
+ --skip-locking -O max_connections=1000 >> $err_log 2>&1
else
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR
- --skip-locking "$@" >> $err_log 2>&1
+ --skip-locking "$@" -O max_connections=1000 >> $err_log 2>&1
fi
if test ! -f $pid_file # This is removed if normal shutdown
then
然后关闭mysql重启它,用
/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |
即新改动已经生效。
注:
在mysql 4.07版本中,在safe_mysqld文件的第274和276行
 

阅读全文