Mysql常用操作

1>mysql 建数据库
create database db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2>查询所有数据库中有多少表
select count(*) from information_schema.tables;

3>查询某个数据库中有多少表
select count(*) from information_schema.tables where table_schema='数据库名';

4>查询某张表在哪个数据库中(前提是:你得有information_schema的访问权限)
select table_schema from information_schema.tables where table_name ='要查询的表名';

5>查询一张表有哪些字段
show columns from 表名;
desc 表名;	

6>远程登陆
允许用户root从ip为%(不限制ip,或者具体某个ip)的主机连接到mysql服务器,并使 用password作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;

其他:

1. dbcp数据库连接属性说明:

jdbc.initialSize=0   //初始化连接
jdbc.maxActive=30 //连接池的最大数据库连接数,设为0表示无限制
jdbc.maxIdle=20 //没有人用连接的时候,最大闲置的连接个数,设置为0时,表示没有限制。
jdbc.maxWait=1000    //超时等待时间以毫秒为单位
jdbc.removeAbandoned=true //是否自动回收超时连接
jdbc.removeAbandonedTimeout=60 //设置被遗弃的连接的超时的时间(以秒数为单位), 即当一个连接被遗弃的时间超过设置的时间,则它会自动转换成可利用的连 接。默认的超时时间是300秒。
jdbc.logAbandoned = true //是否在自动回收超时连接的时候打印连接的超时错误
jdbc.validationQuery=select 1 from dual //给出一条简单的sql语句进行验证
jdbc.testOnBorrow=true //在取出连接时进行有效验证
2. 查询MySQL服务器最大连接数
show variables like 'max_connections';
3. 查询MySQL服务器过去的最大连接数
show global status like 'Max_used_connections';
比较理想的设置是:Max_used_connections / max_connections * 100% ≈ 85%
最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接 上线就设置得过高了
4. data too long for colum
解决办法:1.在my.ini配置中设置max_allowed_packet=16M(或更大)
            2.可能是中文字符问题
5. 为什么varchar类型的字段使用数字0来匹配时还能出结果
当比较数字和varchar时,mysql会把varchar转换为数字,首字符为数字0的,或者其他字符的都会转换为0,varchar类型字段=0 只能排除首字符为非零数字的字符串
注意:所以在进行sql语句的编写时要特别注意varchar类型的和varchar类型的比,如果传入条件的数字,一定要转为字符串,防止出现此类情况
6. 性能分析
1> explain
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。
7. mysql数据库层实现SaveOrUpdate
insert into table_name(colum1,colum2)  values (colum1_value,colum2_value)  ON DUPLICATE KEY UPDATE colum2=VALUES(colum2)…;
colum1可以是主键、联合主键、唯一索引等可以唯一标识一条记录的列或多个列,但是尽量保证只使用上述三种的一种,否则后面的UPDATE要将所有的列都填进去
8. Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
在jdbc的url加上   zeroDateTimeBehavior参数:zeroDateTimeBehavior=convertToNull

详见http://blog.csdn.net/bz201/article/details/50685403

9. 还原数据,遇错继续执行

mysql -h localhost -u root  -f database < D:/filename.sql


10.建表,推荐方式
CREATE TABLE IF NOT EXISTS table_name(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `source_school_id` varchar(20) NOT NULL DEFAULT '' COMMENT '数据源学校标识',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT '**表';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值