被取消的命令MySQL 之前提供了一个 rename database db_old to db_new 的命令来直接对数据库改名,可能由于实现的功能不完备(比如,这条命令可能是一个超大的事务,或者是由于之前的表很多还是 MyISAM 等),后来的版本直接取消了这条命令。更改数据库名大致上有以下几种方案:
一、mysqldump 导入导出要说最简单的方法,就是直接用 mysqldump 工具,在旧库导出再往新库导入(最原始、最慢、最容易想到)的方法:旧库 yttdb_old 导出(包含的对象:表、视图、触发器、事件、存储过程、存储函数)
二、改整库的表名利用 MySQL 更改表名的方法来批量把旧库的所有表依次遍历,改名为新库的表。这种方法比第一种要快很多倍,但是没有第一步 *** 作起来那么顺滑,不能一步到位。比如,要把数据库 yttdb_old 改名为 yttdb_new,如果数据库 yttdb_old 里只有磁盘表,那很简单,直接改名即可。或者写个脚本来批量改,非常简单。但是一般旧库里不只有磁盘表,还包含其他各种对象。这时候可以先考虑把旧库的各种对象导出来,完了在逐一改完表名后导进去。
三、历史方案其实在 MySQL 早期还有一种方法。假设 MySQL 部署好了后,所有的 binlog 都有备份,并且二进制日志格式还是 statement 的话,那就可以简单搭建一台从机,让它慢慢追主机到新的库名,等确切要更改旧库的时候,再直接晋升从机为主机即可。这里只需要从机配置一个参数来把旧库指向为新库:replicate-rewrite-db=yttdb_old->yttdb_new不过这种局限性很大,不具备标准化,不推荐。
总结其实针对 MySQL 本身改库名,大致就这么几种方法:
如果数据量小,推荐第一种;
数据量大,则推荐第二种;
数据量巨大,那就非 MySQL 本身能解决的了。
可通过部署第三方 ETL 工具,通过解析 MySQL 二进制日志或其他的方式来把旧库数据直接读取到新库达到改名的目的等等。
JET SQL 可以更改字段类型,无法更改字段名的,除非你连续使用几个JET SQL 先删除字段然后再插入字段,然后用UPDATE查询将保存再临时表的原字段数据恢复过来。
或者,直接用 ADOX 更改 TABLE 的 Columns(字段名) 对象的 NAME 属性即可。
Function Test()
ChangeTableFieldName_ADO "表1", "aa", "pic1"
End Function
Function ChangeTableFieldName_ADO(MyTableName As String, MyFieldName As String, strNewName As String)
'3个参数:
'MyTableName 字符串,表名
'MyFieldName 字符串,原来的字段名
'strNewName 字符串,新的字段名
'记得先引用 ADOX
Dim MyDB As New ADOXCatalog
Dim MyTable As ADOXTable
MyDBActiveConnection = CurrentProjectConnection
Set MyTable = MyDBTables(MyTableName)
MyTableColumns(MyFieldName)Name = strNewName
End Function
1
spfile是参数文件。这个就相当于你数据库的一些配置的信息。scope=spfile,表明在数据库下次启动的
时候生效。如果不加,表示立刻生效,下次启动依然有效。但有些参数是不能在数据库运行的状态下修改的。
2selectfrom是标准的sql语句。也就是说,你select后面必须是表的列,from后面必须是表的名称(当然,视图函数什么的就不多讲了,讲了你听着也乱)。
system
不是表的名称,所以你的语句是无效的。
alter
system
set
open_links=12,这句话你要按照英语翻译过来。意思是将系统的open_links这个参数,设置成12!而不是将system这个表修改掉。你看这句话里根本没有table这个词,当然也就不能select。
你要用show
parameter
open就可以找到这个参数了。
你最好先去看看oracle基础知识的书
常见的主要有三种方法:
如果所有表都是MyISAM类型的话,可以直接修改文件夹的名字。
关闭mysql→把data目录中的db_name目录重命名为new_db_name→开启mysql
新建数据库,在新的数据库里重命名所有旧数据库中的表,再删除旧的数据库。具体 *** 作命令如下:创建新的数据库→重命名数据表名称→删除旧的数据库。
CREATE DATABASE new_db_name;
RENAME TABLE db_nametable1 TO new_db_nametable1,db_nametable2 TO new_db_nametable2;
DROP DATABASE db_name;
利用mysqldump命令从旧的数据导出数据,再导入新数据库。具体 *** 作命令如下:导出数据→创建新的数据库→导入数据→删除旧的数据库。
mysqldump -u root -p -h ip db_name > db_name_dumpSQL
mysql -u root -p -h ip -e “CREATE DATABASE new_db_name”
mysql -u root -p -h ip new_db_name < db_name_dumpSQL
mysql -u root -p -h ip -e “DROP DATABASE db_name”
SQL中修改一个表的列名的步骤如下:
1、首先我们打开SQL软件。
2、然后右键点击想要修改的列名。
3、点击栏目框中的修改。
4、 点击完毕之后,我们这里可以看到的是在两侧的列名值是一样的 ,此时输入你想要修改的新的列名即可完成修改。
5、 然后ctrl+s保存,保存成功之后,随后在列名上右击选择刷新,就可以确认修改成功了
利用系统存储过程 sp_rename
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
语法
sp_rename [ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
参数
[@objname =] 'object_name'
是用户对象(表、视图、列、存储过程、触发器、默认值、数据库、对象或规则)或数据类型的当前名称。如果要重命名的对象是表中的一列,那么 object_name 必须为 tablecolumn 形式。如果要重命名的是索引,那么 object_name 必须为 tableindex 形式。object_name 为 nvarchar(776) 类型,无默认值。
[@newname =] 'new_name'
是指定对象的新名称。new_name 必须是名称的一部分,并且要遵循标识符的规则。newname 是 sysname 类型,无默认值。
[@objtype =] 'object_type'
是要重命名的对象的类型。object_type 为 varchar(13) 类型,其默认值为 NULL,可取下列值。
返回代码值
0(成功)或非零数字(失败)
注释
只能更改当前数据库中的对象名称或数据类型名称。大多数系统数据类型和系统对象的名称不能更改。
重命名视图时,sysobjects 表中有关该视图的信息将得到更新。重命名存储过程时,sysobjects 表中有关该过程的信息将得到更新。
每当重命名 PRIMARY KEY 或 UNIQUE 约束时,sp_rename 都会自动为相关联的索引重命名。如果重命名的索引与 PRIMARY KEY 约束相关联,那么 sp_rename 也会自动重命名主键。
重要 重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。
由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。
权限
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员或对象所有者可以执行 sp_rename。只有 sysadmin 和 dbcreator 固定服务器角色成员才能将"database"作为 object_type 来执行 sp_rename。
示例
A 重命名表
下例将表 customers 重命名为 custs。
EXEC sp_rename 'customers', 'custs'
B 重命名列
下例将表 customers 中的列 contact title 重命名为 title。
EXEC sp_rename 'customers[contact title]', 'title', 'COLUMN'
代码如下:
EXEC sp_rename '表名[原列名]', '新列名', 'column'
sp_rename
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
语法
sp_rename [ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
参数 >
修改表的名称,基本语法格式ALTER TABLE 原表名 RENAME [TO] 新表名;
2
增加表的字段,基本语法格式:ALTER TABLE表名 ADD 列名 数据类型 [FIRST|AFTER 已有的列名];
3
删除表中的字段,基本语法格式:ALTER TABLE表名 DROP 列名;
4
修改表中的数据类型,基本语法格式:ALTER TABLE表名MODIFY 列名
以上就是关于如何更改mysql数据库的数据库名全部的内容,包括:如何更改mysql数据库的数据库名、怎样使用SQL语句修改Access里的表名、oracle数据库怎么修改表名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)