数据库中不能输入中文,原因是字符编码问题。
查看:mysql> show variables like 'character%';
显示:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/
character_set_database和character_set_server 为latinl需要改为utf8
更改:
mysql> set character_set_server = utf8;
mysql> set character_set_database = utf8;
查询:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
结果:现在就可以输入中文
find /hxdata/hqserver/history/shase/ -name "609*.*" |xargs rm -rf (删除找到的内容)
sqlserver 查表结构
sp_columns wt_login_transmid
sp_help wt_login_transmid
查询:最后两条数据 select * from y1 order by id desc limit 2; (最后一条编号是0,可以省略不写)
查询倒数第二条和第三条数据 select * from y1 order by id desc limit 1,2;
查询最前面10条数据 select * from y1 limit 10
查询第二条到第五条信息 select * from y1 limit 1,5(第一条是0,默认不写是0)
order by +字段+desc/ 降序/升序
select * from y1 order by age desc --降序排序
select * from y1 order by age --默认就是升序排序
--top
--查询数学成绩最高的5名
select top 5 * from y1 order by CJ desc
--获取数学成绩最低的5名
select top 5 * from y1 order by CJ
插入数据: inster into y1 values("carry","12","girl");
更改表名: alter table y1 rename to yyy1;
添加字段:alter table yyy1 add weight int(11);
添加字段到第一列: alter table yyy1 add money int(11) not null first;
更改字段:alter table yyy1 change weight line int(11);
删除字段:alter table yyy1 drop line;
修改数据:update yyy1 set money="22200" where age=7;
修改数据:update yyy1 set age=100 where money="22200";
mysql远程别的服务器电脑:mysql -uroot -h198.28.0.83 -phtzq10jqka
utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 因为 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了
保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持(查看版本: select version(); )
1)mysql的数据格式是utf8mb4,数据库cms_pro也要支持
(可以参照http://www1350.github.io/#post/34)
步骤1:配置文件my.cnf修改 (在下面三处添加下面内容)
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET MAMES utf8mb4'
步骤2:在mysql中执行
set character_set_client = utf8mb4;
set character_set_connection = utf8mb4;
set character_set_database = utf8mb4;
set character_set_results = utf8mb4;
set character_set_server = utf8mb4;
步骤3:修改database字符集 mysql中执行
alter database cms_pro character set = utf8mb4 collate = utf8mb4_unicode_ci;
查看是否修改成功 : show variables where variable_name like 'character\_set\_%' or variable_name like 'collation%';
2)mysql数据库的表明及字段名称不区分大写
步骤:配置文件my.cnf
[mysqld]
lower_case_table_names=1
3)mysql设置group_concat_max_len(在配置文件中添group_concat_max_len = 1024000) 之后重启。
步骤:在配置文件my.cnf
[mysqld]
group_concat_max_len = 1024000
在mysql中 创建一个student库 并设置字符集:utf8 -- UTF-8 Unicode,排序规则:utf8_general_ci
mysql> create database if not exists student default charset utf8 collate utf8_general_ci;
mysqkl>create database oms_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
一、避免创建数据库及表出现中文乱码和查看编码方法 1、创建数据库的时候:CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; 2、建表的时候 CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default '', `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
导入:
导入sql脚本 自动创建所需的表。
mysql> use cbas_orige
Database changed
mysql> source /root/dbtables.sql;
导入整个数据库:先建一个空数据库,mysql>create database abc; 选择数据库mysql>use abc;
设置数据库编码mysql>set names utf8;导入数据(注意sql文件的路径)mysql>source /home/abc/abc.sql;
导入数据库/表
mysql -u用户名 -p密码 数据库名 < 数据库名.sql mysql -uroot -p abc < abc.sql
导出:
导出库/表包含内容:mysqldump -uroot -p cms_pro t_product_fund >t_product_fund.sql (一般库和表使用空格或点隔开,如果是整个库 就不需要接后面的表)
导出表结构:mysqldump -uroot -p -d cms_pro t_product_fund >t_product_fund.sql (导出的是表结构)
MYSQL:授权
grant all privileges on *.* to root@"198.28.1.19" identified by "htzq10jqka";
mysql>grant privileges all *.* root@"%" identified by "123456";
mysql>flush privileges;
MySQL:改密码
mysql>update mysql.user set passowrd=password("10jqka") where user="root" and host="%";
mysql>flush privileges;
让MYSQL不区分表名大小写的方法其实很简单:
1.用ROOT登录,修改/etc/my.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1
3.重新启动数据库即可
[root@chicago init.d]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
lower_case_table_names=1
MySQL:
如果将A库中t1表内容复制到B库中t2表,insert into B.t2 select * from A.t1; 前提是要先创建一个t2表,且表结构要和t1一样,创建完后就可以用这sql语句导入。
使一个库下所有表可以插入中文
在mysql中 我创建一个student库 并 设置字符集:utf8 -- UTF-8 Unicode,排序规则:utf8_general_ci
语句怎样的
mysql> create database if not exists student default charset utf8 collate utf8_general_ci;
mysql 初始化数据库
# mysql_install_db --user=mysql -datadir=/var/lib/mysql
查看建表过程
show create table 表名;
#msyql -uroot -p123456 mysql -e "show tables" |head
mysql>purge master logs before date_sub(current_date,interval 1 day);清理binlog(二进制)日志,只保留最近一天数据,这样是为了十分磁盘空间,如果数据太多这样也不行就只能考虑数据迁移了。
查看从是否有问题:
mysql> show slave status \G;
设置数据库插入中文字符集:
mysql> show variables like 'character%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |