SQL篇-Mysql操作

mysql重启出现的问题
问题描述:
重启mysql,发现启动不了
通过cmd,调用mysqld --console
去找到问题出在哪了

jdbc操作mysql:
1.获取连接
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName(“com.mysql.jdbc.Driver”);
String useName = “root”;
String password = “”;
String url = “jdbc:mysql://localhost:3306/test”;
Connection con = DriverManager.getConnection(url, useName, password);
return con;
}

2.Result的用法,通过getMedeDate获取元数据,从而获取列数,字段类型之类的数据
Result rs = pre.excuteQuery();
rs.getMedeDate()
获取列的数量
rs.getColumnCount;
获取列的别名或者列名,推荐使用
rs.getColumnLable;

3针对特殊字段,或表名,用“·”字段包裹
order,desc等等

4、针对字段的大小写,可以用binary关键字
where binary name = ‘DD’ 只会去找DD的数据

注意事项:
preparestament .excute 如果是查询,有结果返回true,而update,delete,insert是没有返回结果的,为false,
因此updata操作是用excuteUpdate()返回int类型,>0成功,代表影响的行数

优化插入操作:
方式一:批量插入:首先先在url后面加上这个属性rewriteBatchedStatements=true
String url = “jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true”;
然后sql的版本在5.1.37以上
代码上先addbatch,积累到一定量,再excutebatch,然后clearbatch

方式二:先设置不提交;最后结束时在提交,默认是excute都提交
conn.setAutoCommit(false)
conn.setAutoCommit(true)

DDL:数据定义语言 自动提交事务
DML:数据操作语言 一定执行就会立即提交 可以设置conn.setAutoCommit(false)
DCL:数据控制语言
DQL:数据查询语言

默认关闭时提交事务
利用DBUtil实现CRUD

索引
增加索引提高查询效率,但是也会降低更新表的效率,因为每次插入或者更新都需要维护索引的信息

数据库sql操作
show profile: 查看sql执行周期
explain sql语句:查看sql语句的执行效率
limit pageNum,pageSize (pageNum = (pageNum-1)*pageSize)
create index idx_field on table (field)给某个field字段加索引
drop index idx_field on table 删除索引
create index idx_field1_field2 on table (field1,field2) 创建符合索引
举例:create index idx_age_name on test(age,name)
例子2:create index id_age_name_id on test(age,name,id) 组合索引,但是当你查询中没有按照按照
索引的顺序去查询,后续的索引是不起效果的。
如:select * from age,id where age =12 and id = 11 (这是id索引是不起效果的,因为索引的效果是按照age,name,id排序的,当id前面的索引都存在的情况,id索引才有作用)
例子2:如果中间的索引是一个范围,后续的索引也不起作用。如:age>10,则name与id索引都不起作用

不起索引的情况:
在使用不等于(!=或<>)条件时,无法使用索引进行全表扫描
is not null也无法使用索引,is null可以
like 以通配符开头(%abc…)索引也会失效
字符串不加单引号索引失效
左连接时,驱动表的索引时不起作用的,应该在被驱动表加上索引
无过滤不索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值