JDBC(java dadabase connection)
SQL分类
- DDL:dadabase definition langnage:数据定义语言:create,alter,drop,truncate;
- DML:databae manipulation langnage:数据操作语言:insert,update,delete
- DCL:database controll langnage:数据控制怨言:grant(授权),revoke(回收权限)
修改表字段:
ddl: alter table modify/add/drop id int not null alter table drop index __. 注意:mysql删除约束使用drop,mysql默认唯一约束列为指定索引列主键约束:逻辑主键用于标示每行记录,自增,id intauto_increament primary key
外键约束:一般是建表时建立外键约束,主表删除使用级联删除从表外键约束
create table A(id int);
create table B(b_id int)
foreign key (b_id) reference A(id)
on delete cascade --级联删除
索引:drop/create index column_name_index on table.
优点:查询速度快,相当于书的目录 缺点:系统开销,数据表记录修改后需要数据库系统维护索引;存储索引需要一定的存盘空间。多表查询:
外连接:full join 左外连接: left join 左表的记录全部查询出来,右表没有匹配到的为null 右外连接:right join 右表的记录全部查询出来,左表没有匹配到的为null注意: 左连接时on后面的条件对左表没有作用,除非使用where条件,但是对右边有筛选作用 右连接时on后面的条件对右表没有作用,除非使用where条件,但是对左边有筛选作用
相关连接:http://blog.csdn.net/qq_27918787/article/details/52297309
JDBC基本编程步骤:
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/databae_name","root","root");//建立连接
Preparedstatement pre=con.Preparedstatement("select * from user where id=?"); //进行预编译
ResultSet reult=pre.excute();//得到执行结果(result.next()){System.out.println(result.getInt.....);}注意: 其中预编译PreparedStatement相比Statement优势如下:
- 预编译的语句,性能更好;
- 无需拼装sql语句,编程简单;
- 关键能够防止sql注入,安全性高
数据库连接池: 由于频繁的加载数据库驱动和连接数据库会消耗很大的内存,所以建议数据库连接池,预先创建一定的数量的数据库连接,当需要连接直接从池里面获取,使用完后关闭资源并回收连接至连接池中,供下次使用。
常用:区别见:点击打开链接
DBCP连接池,Apache公司开发的,tomcat里面使用的,但是不能自动清理无用的statement和resultset
C3P0连接池,可以自动清理不再使用的连接,自动清理statement和resultSet资源,hibernate和spring在使用
Druid连接池,阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。简单SQL语句用时10微秒以内,复杂SQL用时30微秒。通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的