修改数据库字符集
ORACLE修改数据库的字符集编码为UTF-8

ORACLE修改数据库的字符集编码为UTF-81、查看数据库字符集?数据库服务器字符集:select * from nls_database_parameters,其来源于props$,是表⽰数据库的字符集。
客户端字符集环境:select * from nls_instance_parameters,其来源于v$parameter,表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表会话字符集环境select * from nls_session_parameters,其来源于v$nls_parameters,表⽰会话⾃⼰的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters⼀致。
客户端的字符集要求与服务器⼀致,才能正确显⽰数据库的⾮Ascii字符。
如果多个设置存在的时候,alter session>环境变量>注册表>参数⽂件字符集要求⼀致,但是语⾔设置却可以不同,语⾔设置建议⽤英⽂。
如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
2、修改Oracle的字符集,如下例把字符集GB2312修改为UTF-8 步骤: 1.在SQL*PLUS 中,以DBA登录 conn ⽤户名 as sysdba 2.执⾏转换语句: SHUTDOWN IMMEDIATE; STARTUP MOUNT EXCLUSIVE; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE NATIONAL CHARACTER SET UTF8; SHUTDOWN IMMEDIATE; STARTUP;注意:如果没有⼤对象,在使⽤过程中进⾏语⾔转换没有什么影响,(切记设定的字符集必须是ORACLE⽀持,不然不能start)按上⾯的做法就可以,但是可能会出现ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data existsORA-12717: 存在 NCLOB, NCHAR 或 NVARCHAR2 数据时, 不能发出 ALTER DATABASENATIONAL CHARACTER SET 命令这样的提⽰信息要解决这个问题有两种⽅法⼀个是,利⽤INTERNAL_USE 关键字修改区域设置,还有⼀个是利⽤re-create,但是re-create有点复杂,所以请⽤internal_use, SHUTDOWN IMMEDIATE; STARTUP MOUNT EXCLUSIVE; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8; SHUTDOWN IMMEDIATE; STARTUP;如果按上⾯的做法做,National charset的区域设置就没有问题。
mysql修改和查看字符集(数据库全局、schema、表、列)

mysql修改和查看字符集(数据库全局、schema、表、列)mysql修改和查看字符集(数据库全局、schema、表、列)⼀、查看字符集1.查看MYSQL数据库服务器和数据库字符集mysql> show variables like '%character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | /opt/mysql/share/charsets/ |+--------------------------+----------------------------+8 rows in setmysql>mysql> show variables like 'collation%';+----------------------+-----------------+| Variable_name | Value |+----------------------+-----------------+| collation_connection | utf8_general_ci || collation_database | utf8_general_ci || collation_server | utf8_general_ci |+----------------------+-----------------+3 rows in setmysql>2.查看MYSQL所⽀持的字符集mysql> show charset;+----------+---------------------------------+---------------------+--------+| Charset | Description | Default collation | Maxlen |+----------+---------------------------------+---------------------+--------+| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 || dec8 | DEC West European | dec8_swedish_ci | 1 || cp850 | DOS West European | cp850_general_ci | 1 || hp8 | HP West European | hp8_english_ci | 1 || koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 || latin1 | cp1252 West European | latin1_swedish_ci | 1 || latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 || swe7 | 7bit Swedish | swe7_swedish_ci | 1 || ascii | US ASCII | ascii_general_ci | 1 || ujis | EUC-JP Japanese | ujis_japanese_ci | 3 || sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 || hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 || tis620 | TIS620 Thai | tis620_thai_ci | 1 || euckr | EUC-KR Korean | euckr_korean_ci | 2 || koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 || gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 || greek | ISO 8859-7 Greek | greek_general_ci | 1 || cp1250 | Windows Central European | cp1250_general_ci | 1 || gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 || latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 || armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 || utf8 | UTF-8 Unicode | utf8_general_ci | 3 || ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 || cp866 | DOS Russian | cp866_general_ci | 1 || keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 || macce | Mac Central European | macce_general_ci | 1 || macroman | Mac West European | macroman_general_ci | 1 || cp852 | DOS Central European | cp852_general_ci | 1 || latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 || utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 || cp1251 | Windows Cyrillic | cp1251_general_ci | 1 || utf16 | UTF-16 Unicode | utf16_general_ci | 4 || utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 || cp1256 | Windows Arabic | cp1256_general_ci | 1 || cp1257 | Windows Baltic | cp1257_general_ci | 1 || utf32 | UTF-32 Unicode | utf32_general_ci | 4 || binary | Binary pseudo charset | binary | 1 || geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 || cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 || eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 || gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |+----------+---------------------------------+---------------------+--------+41 rows in setmysql>3.查看库的字符集语法:show database status from 库名 like 表名;mysql> SHOW CREATE DATABASE shuxiaoer;+-----------+--------------------------------------------------------------------+| Database | Create Database |+-----------+--------------------------------------------------------------------+| shuxiaoer | CREATE DATABASE `shuxiaoer` /*!40100 DEFAULT CHARACTER SET utf8 */ |+-----------+--------------------------------------------------------------------+1 row in setmysql>4.查看表的字符集语法:show table status from 库名 like 表名;mysql> SHOW CREATE TABLE sys_mgr_config-> ;--------------------------------------------------------------------------------+| Table | Create Table +----------+| sys_mgr_config | CREATE TABLE `sys_mgr_config` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`config_type` varchar(50) DEFAULT NULL COMMENT '配置项类型',`config_sub_type` varchar(50) DEFAULT NULL COMMENT '配置项⼦类型',`config_name` varchar(255) DEFAULT NULL COMMENT '配置项名称',`config_cn_name` varchar(50) DEFAULT NULL COMMENT '配置项的中⽂名称',`config_value` varchar(500) DEFAULT NULL COMMENT '配置项值',`config_desc` varchar(255) DEFAULT NULL COMMENT '配置项描述',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',`create_user` varchar(100) DEFAULT NULL COMMENT '创建⼈',`update_user` varchar(100) DEFAULT NULL COMMENT '修改⼈',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 |+---+1 row in setmysql>5.查看表中所有列的字符集语法:show full columns from 表名;mysql> SHOW FULL COLUMNS FROM sys_mgr_config;+-----------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------+| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |+-----------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------+| id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | 主键 || config_type | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项类型 || config_sub_type | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项⼦类型 | | config_name | varchar(255) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项名称 || config_cn_name | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项的中⽂名称 | | config_value | varchar(500) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项值 || config_desc | varchar(255) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 配置项描述 || create_time | timestamp | NULL | YES | | NULL | | select,insert,update,references | 创建时间 || update_time | timestamp | NULL | YES | | NULL | | select,insert,update,references | 修改时间 || create_user | varchar(100) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 创建⼈ || update_user | varchar(100) | utf8_general_ci | YES | | NULL | | select,insert,update,references | 修改⼈ |+-----------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------+11 rows in set⼆、设置字符集设置字符集⼀般有两种⽅法,⼀种是在创建表的时候设置字符集,另⼀种是表建成之后修改字符集。
oracle alter set 语句的用法

Oracle Alter Set 语句的用法Oracle Alter Set 语句用于修改数据库的设置,包括数据库名称、字符集、时区、排序规则等。
Alter Set 语句可以单独使用,也可以与其他语句一起使用,如Create Database、Alter Database等。
语法ALTER SET <parameter> = <value>;其中,<parameter>是需要修改的设置,<value>是新的值。
常用参数参数描述DB_NAME 数据库名称CHARACTER SET 字符集TIME ZONE 时区SORT 排序规则NLS_DATE_FORMAT 日期格式NLS_TIMESTAMP_FORMAT 时间戳格式NLS_NUMERIC_CHARACTERS 数字字符SESSIONS 最大会话数PROCESSES 最大进程数COMMIT_WAIT 提交等待时间IDLE_TIME 空闲时间LOG_BUFFER 日志缓冲区大小OPEN_CURSORS 最大打开游标数SQL_TRACE SQL 追踪用法1. 修改数据库名称ALTER SET DB_NAME = 'new_database_name';2. 修改字符集ALTER SET CHARACTER SET = 'UTF8';3. 修改时区ALTER SET TIME ZONE = 'Asia/Shanghai';4. 修改排序规则ALTER SET SORT = 'BINARY';5. 修改日期格式ALTER SET NLS_DATE_FORMAT = 'YYYY-MM-DD';6. 修改时间戳格式ALTER SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS';7. 修改数字字符ALTER SET NLS_NUMERIC_CHARACTERS = ',.';8. 修改最大会话数ALTER SET SESSIONS = 1000;9. 修改最大进程数ALTER SET PROCESSES = 1000;10. 修改提交等待时间ALTER SET COMMIT_WAIT = 10;11. 修改空闲时间ALTER SET IDLE_TIME = 30;12. 修改日志缓冲区大小ALTER SET LOG_BUFFER = 10240;13. 修改最大打开游标数ALTER SET OPEN_CURSORS = 100;14. 修改 SQL 追踪ALTER SET SQL_TRACE = TRUE;注意•Alter Set 语句只能修改数据库的设置,不能修改表、视图、存储过程等对象的设置。
数据库中乱码问题解决方案

数据库中乱码问题解决方案数据库中乱码问题是一个常见的问题,特别是在多语言环境下。
在这种情况下,有时候我们会发现数据库中存储的数据出现乱码,这可能导致数据的有效性受到影响。
以下是一些解决方案,可以帮助您解决这个问题。
1. 确认数据库的字符集在创建数据库的时候,需要确认数据库的字符集是否正确。
如果字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下查询语句来查看数据库的字符集:SHOW VARIABLES LIKE 'character_set_database';如果发现字符集有误,可以通过以下语句来修改数据库的字符集:ALTER DATABASE database_name CHARACTER SET utf8;2. 确认连接字符集连接字符集也可能导致乱码问题。
如果您的连接字符集与数据库字符集不同,那么在查询数据时就会出现乱码问题。
可以通过以下语句来查询连接字符集:SHOW VARIABLES LIKE 'character_set_connection';如果连接字符集有误,可以通过以下语句来修改连接字符集:SET NAMES utf8;3. 确认表的字符集在创建表的时候,需要确认表的字符集是否正确。
如果表的字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下语句来查询表的字符集:SHOW CREATE TABLE table_name;如果发现字符集有误,可以通过以下语句来修改表的字符集:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;4. 确认字段的字符集在创建字段的时候,需要确认字段的字符集是否正确。
如果字段的字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下语句来查询字段的字符集:SHOW FULL COLUMNS FROM table_name;如果发现字符集有误,可以通过以下语句来修改字段的字符集:ALTER TABLE table_name MODIFY column_name varchar(255) CHARACTER SET utf8;5. 确认应用程序的字符集除了数据库和连接字符集之外,应用程序的字符集也需要与数据库的字符集相同。
MySQL之修改数据库

MySQL之修改数据库
在 MySQL中,可以使⽤ ALTER DATABASE 语句来修改已经被创建或者存在的数据库的相关参数。
修改数据库的语法格式为:ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
语法说明如下:
ALTER DATABASE ⽤于更改数据库的全局特性。
这些特性存储在数据库⽬录的 db.opt ⽂件中。
使⽤ ALTER DATABASE 需要获得数据库 ALTER 权限。
数据库名称可以忽略,此时语句对应于默认数据库。
CHARACTER SET ⼦句⽤于更改默认的数据库字符集
修改数据库的字符集及对应的规则
1、查看数据库
show databases;
show create database <数据库名>
3、查看某个字符集对应的编码
show collation like ‘gb%’;
4、⽤alter命令修改数据库对应的字符集;
alter database test default character set gb2312 collate gb2312_chinese_ci;。
mysql创建数据库设置字符集的规则

mysql创建数据库设置字符集的规则以mysql创建数据库设置字符集的规则为标题在使用MySQL创建数据库时,设置字符集是非常重要的一步。
字符集决定了数据库中存储和处理数据的方式,直接影响着数据的准确性和完整性。
本文将介绍MySQL创建数据库时设置字符集的规则。
一、了解字符集在MySQL中,字符集是一种编码方式,用于将字符映射为二进制数据存储在数据库中。
常见的字符集有UTF-8、GBK、Latin1等。
不同的字符集支持的字符范围和存储方式不同,因此在创建数据库时需要选择合适的字符集。
二、创建数据库时设置字符集在创建数据库时,可以通过在CREATE DATABASE语句中指定字符集来设置数据库的默认字符集。
例如:CREATE DATABASE mydatabase DEFAULT CHARACTER SET utf8;上述语句将创建一个名为mydatabase的数据库,并将其默认字符集设置为UTF-8。
三、修改数据库字符集如果已经创建了数据库,但需要修改其字符集,可以使用ALTER DATABASE语句来实现。
例如:ALTER DATABASE mydatabase CHARACTER SET utf8;上述语句将将名为mydatabase的数据库的字符集修改为UTF-8。
四、设置表的字符集除了设置数据库的字符集,还可以在创建表时指定表的字符集。
通过在CREATE TABLE语句中使用CHARACTER SET子句来实现。
例如:CREATE TABLE mytable (id INT,name VARCHAR(20)) CHARACTER SET utf8;上述语句将创建一个名为mytable的表,并将其字符集设置为UTF-8。
五、修改表的字符集如果已经创建了表,但需要修改其字符集,可以使用ALTER TABLE语句来实现。
例如:ALTER TABLE mytable CHARACTER SET utf8;上述语句将将名为mytable的表的字符集修改为UTF-8。
MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法在使用MySQL数据库过程中,经常会遇到中文乱码的问题。
这是由于MySQL默认使用的字符集是Latin1,而大部分中文系统使用的是UTF-8字符集所致。
本文将介绍在MySQL中解决中文乱码问题的几种方法。
一、修改MySQL配置文件MySQL配置文件(f)是MySQL服务器的设置文件,通过修改该文件可以改变MySQL的默认字符集。
在Linux系统中,该文件通常位于/etc/mysql/f或者/etc/f。
在Windows系统中,该文件通常位于MySQL安装目录下的my.ini文件。
步骤如下:1. 找到f或my.ini文件并打开。
2. 在[mysqld]部分添加或修改以下内容:```[mysqld]character-set-server=utf8collation-server=utf8_general_ci```3. 保存文件并重启MySQL服务。
二、修改数据库、数据表、字段字符集如果修改MySQL配置文件没有解决中文乱码问题,可以尝试直接修改数据库、数据表、字段字符集。
1. 修改数据库字符集可以使用ALTER DATABASE语句修改数据库的字符集。
例如:```ALTER DATABASE database_name CHARACTER SET utf8 COLLATEutf8_general_ci;```2. 修改数据表字符集可以使用ALTER TABLE语句修改数据表的字符集。
例如:```ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;```3. 修改字段字符集可以使用ALTER TABLE语句修改字段的字符集。
例如:```ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;```其中,table_name为表名,column_name为字段名。
oracle 数据库 NLS_CHARACTERSET 字符集的修改

修改Oracle 数据库字符集总结:修改方式大约有3种:方法一: (最安全的方法)数据库创建以后,如果需要修改字符集,通常需要重建数据库,通过导入导出的方式来转换。
方法二: (最常用的方法)通过"alter database character set ZHS16GBK;" 方式修改,但并不总是有效。
该命令在Oracle8时被引入Oracle,这个操作在本质上并不转换任何数据库字符,只是简单的更新数据库中所有跟字符集相关的信息。
(意味,你只能在新字符集是旧字符集严格超集的情况下使用这种方式转换。
)方法三: (最不安全的方法)修改SYS.props$表,使用"update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';" 方式更改字符集时候,只是修改了props$ 表,只完成了十几的十二分之一的内容,存在数据完整性的隐患。
(value$值输入了不正确的字符集,后果可能导致数据库无法启动。
)只对更改后的数据有效,即数据库中原来的数据仍以原字符集被存储。
注意:1.修改数据库字符集时必须谨慎,修改之前一定要做数据库全量备份。
(由于不能回退该项操作,因此可能会造成数据丢失或者损坏。
)2.使用"alter database character set ZHS16GBK;" 方式更改字符集时候,至少需要更改12张数据字典表;3.使用"update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';" 方式更改字符集时候,只是修改了props$ 表,只完成了十几的十二分之一的内容,存在数据完整性的隐患。
因此,更改字符集尽量使用正常的途径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.更改数据库字符集为GBK
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16; 更改国际字符集
ALTER DATABASE CHARACTER SET ZHS16GBK; 更改本地字符集
SHUTDOWN IMMEDIATE;
STARTUP ;
2.如果错误信息,请对照一下信息
如果提示:
ORA-12717: Cannot issue ALTER DATABASE NATIONAL CHARACTER SET when NCLOB, NCHAR
or NV ARCHAR2 data exists
则更改使用以下语句:
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
如果提示:
ORA-12712: new character set must be a superset of old character set
则更改使用以下语句:
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
如果提示:
ORA-12721: operation cannot execute when other sessions are active
则更改使用以下语句:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
如果提示:
ORA-01109: database not open
则更改使用以下语句:
ALTER DATABASE OPEN;
如果提示:
ORA-12719: operation requires database is in RESTRICTED mode
则更改使用以下语句:
ALTER SYSTEM ENABLE RESTRICTED SESSION;。