一、数据库
2.1 DDL
2.1.1 操作database
-- 1.创建database
create database 数据库名;
-- 2.查看database
show databases;
show create database 数据库名;
-- 3.修改database
alter database 数据库名 character set 字符集
-- 4. 删除database
drop database 数据库名;
-- 5. 使用database
use 数据库名;
select database();
2.1.2 操作table
-- 1. 创建table
create table 表名称(
字段名 类型 [约束],
...
字段名 类型 [约束]
);
-- 2. 查看table
show tables;
show create table 表名称;
desc 表名称; -- 查看表结构
-- 3. 删除table
drop table 表名称;
-- 4. 修改table
-- 4.1 重命名表
rename table 表名称 to 新名称;
-- 4.2 添加字段
alter table 表名称 add 字段名 类型 [约束];
-- 4.3 修改字段类型
alter table 表名称 modify 字段名 新类型 [约束];
-- 4.4 修改字段名称
alter table 表名称 change 字段名 新字段名 类型 [约束];
-- 4.5 删除字符
alter table 表名称 drop 字段名;
2.2 DML
-- 1. 插入数据
insert into 表名称 (字段1, 字段2,...) values (值1,值2,...);
-- 2. 修改数据
update 表名称 set 字段1=值1, 字段2=值2,... where 条件;
-- 3. 删除数据
delete from 表名称 where 条件;
2.3 DQL
2.3.1 单表查询
-- 1.简单查询
select * from 表名称;
select 字段1,字段2,... from 表名称;
select ifnull(字段,默认值) from 表名称;
select 字段1+字段2, 字段3+100,... from 表名称;
select 字段1 as 别名1, 字段2 别名2 from 表名称;
-- 2.条件查询:>,<,>=,<=,=,<>,like, between...and..., in(), and, or, not
select * from emp where salary > 5000;
select * from emp where ename like '张%'; -- %表示任意个任意字符; _表示一个任意字符
select * from emp where salary between 2000 and 10000;
select * from emp where dept_id in (10, 30);
-- 3.排序查询:order by 排序字段 排序规则 desc降序,asc升序
select * from emp order by age desc;
-- 4.聚合函数:聚合函数会忽略null值
select count(*) from emp;
select sum(salary) from emp;
select avg(salary) from emp;
select max(salary) from emp;
select min(salary) from emp;
-- 5.分组查询:group by 分组字段 having 分组后过滤条件
select dept_id, count(*) from emp group by dept_id having count(*) > 10;
-- 6.分页查询:limit 起始索引, 查询数量
select * from emp limit 0, 5;
2.3.2 多表查询
-- 1.内连接查询:查询表之间必定有关联的数据
select * from emp e, dept d where e.dept_id = d.id;
select * from emp e inner join dept d on e.dept_id = d.id;
-- 2.外连接查询:查询一张表的全部数据,及另外一张表的关联数据
select * from emp e left join dept d on e.dept_id = d.id;
select * from emp e right join dept d on e.dept_id = d.id;
-- 3.子查询:是查询技巧没有固定语法,是查询嵌套
select * from emp where salary = (select max(salary) from emp);
select * from dept where id in (select dept_id from emp where salary > 10000);
select * from dept d, (select * from emp where salary > 10000) t where d.id = t.dept_id;
2.4 DCL
-- 1. 创建用户
create user 'tom'@'%' identified by 'tom';
-- 2. 用户授权
grant all on *.* to 'tom'@'%';
-- 3. 查看权限
show grants for 'tom'@'%';
-- 4. 取消授权
revoke delete on *.* from 'tom'@'%';
-- 5. 删除用户
drop user 'tom'@'%';
-- 6. 修改密码
set password for 'tom'@'%' = password('1234');
2.5 TCL
-- 1. 开启事务
start transaction; -- 或者 set autocommit = 0;
-- 2. 执行多条DML语句
-- ......
-- 3. 关闭事务:提交事务
commit;
-- 3. 关闭事务:回滚事务
rollback;
JDBC+预编译对象
//1.注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
//2.获取连接
Connection conn = DriverManager.getConnection(“url”,“username”,“password”);
//3.创建SQL执行平台
PreparedStatement pstmt = conn.prepareStatement(“使用?处理过的sql语句”);
pstmt.setXXX(参数序号, 参数值);
//4.执行SQL语句 executeUpdate(), execute()
ResultSet rs = pstmt.executeQuery();
//5.处理结果
while(rs.next()){
XXX value = rs.getXXX(“字段名称”);
}
//6.释放资源
rs.close();
pstmt.close();
conn.close();
连接池
4.1 c3p0连接池的使用
4.2 druid连接池的使用
导入jar包:数据库驱动包,druid的jar包
提供配置文件
编写代码使用连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(Properties对象);
Connection conn = dataSource.getConnection();
//使用conn操作数据库
conn.close();
JdbcTemplate
5.1 使用步骤
5.2 常用方法
//1. 查询一个值,比如:查询表里的数量
Integer value = jdbcTemplate.queryForObject("sql", Integer.class, params);
//2. 查询多条数据,得到JavaBean的集合
List list = jdbcTemplate.query("sql",new BeanPropertyRowMapper<>(JavaBean类名.class), params);
//3. 查询一条数据,得到一个JavaBean对象
JavaBean obj = jdbcTemplate.queryForObject("sql",new BeanPropertyRowMapper<>(JavaBean类名.class),params);