本帖最后由 小石姐姐 于 2018-5-11 10:04 编辑
数据库+JDBC总结 数据库总结 简单说,操作数据库就是对数据库中的结构和数据库中的记录进行增删改查这四个操作-----CRUD 数据库操作 增: create database 库名 [character set 字符集 collate 字符集校对规则]; 删 drop database 库名; 改 (修改数据库的操作可能会导致数据丢失,所以不会使用) alter database 库名 character set 字符集 collate 校对规则; 查 show databases; 查看数据库服务器中一共有哪些库 使用某个库 use 库名; 查看正在使用哪个库 select database(); 表操作 增 creat table 表名(字段名1 字段类型(长度) 约束,字段名2 字段类型(长度) 约束,字段名3 字段类型(长度) 约束........); 【字段与字段之间用逗号隔开,最后一个字段不加逗号】 删 drop table 表名; 改 添加列:alter table 表名 add 列名 类型(长度) 约束; 修改列类型 长度约束:alter table 表名 modify 列名 类型(长度) 约束; 修改列名称:alter table 表名 change 旧列名 新列名 类型(长度) 约束; 删除列:alter table 表名 drop 列名; 修改表名:rename table 表名 to 新表名; 修改表的字符集:alter table 表名 character set 字符集; 查 查询某个库下的所有表show tables;查看某个表的表结构desc 表名; 单 表记录操作 增 insert into insert into 表名 (字段名1,字段名2,字段名3.....)values(值1,值2,值3...); 填入的值得类型必须与定义的字段一直,长度必须在字段定义的范围之内char varchar和时间类型的值,用单引号引起来 insert into 表名 values(值1,值2,值3......); 这条语句是表中有多少个字段,就需要写多少个值。 删 delete from delete from 表名 [where 条件]; 一般都是根据条件删除记录的,但是如果不加条件的话,就是删除整个表中的所有数据。 delete from 表名 和 truncate table 表名之间的区别: delete 是一条一条的删除,不清空auto_increament的记录数truncate是直接将整个表删除,在重新按原来的表结构创建,auto_increament 将置零,重新开始。 改 update 表名 set update 表名 set 列名=值,列名=值 [where 条件]; 查 select * from select [distinct] * |列名 from 表名 [where 条件 group by having 条件 order by ]; < >= <= <> = llike 模糊查询 - 和%是占位符,-只能代表一个字符,%可以代表0个或者任意个字符 in 范围查询 and or not 条件关联 排序查询 :order by 字段名 asc | desc 聚合函数一般配合分组查询使用 聚合函数:sum(字段名) ---------求和 count(字段名)----统计个数 max(字段名)------最大值 min(字段名)---------最小值 avg(字段名)-----------平均值 多表 一对多:在多的那张表中添加一个字段,指向一的那张表中的主键 多对多:创建中间表,至少有两个字段,分别指向两张表的主键 一对一:先假设为一对多的关系,在其中一张表中添加一个字段,指向另一张表中的主键,然后再这个字段上天加唯一约束unique 多表查询 1、交叉连接: cross join select * from 表一 cross join 表二; select * from 表一,表二; cross join 可以省略不写。 结果是两张表的笛卡尔积 2、内连接 inner join 显示内连接 select * from 表一 inner join 表二 on 关联关系; 隐式内连接 select * from 表一,表二 where 关联关系; 3、外链接 outer join 左外链接 left outer join select * from 表一 left outer join 表二 on 关联关系; 右外链接 right outer join select * from 表一 right outer join 表二 on 关联关系; 4、子查询 ------即一个sql语句的结果可以是另一个sql语句的条件----sql的嵌套 in---在范围之内 exists----如果记录存在,前边的sql才会执行 any-----符合范围内的最低要求 all-----比范围内的最高要求还要高的 事务 事务:指的是逻辑上的一组操作,这组操作的各个逻辑单元要么都成功,要么全失败。事务的特性: 原子性 一致性 隔离性 持久性开启事务:start transaction;提交事务:commit回滚事务:rollback 隔离级别:read uncommitted read committed repeatable read serializable JDBC 导入jar包 编写 .properties文件 编写JDBCUtils工具类 读取 .properties文件 Properties p = new Properties(); p.load(new FileInputStream(".properties")); p.getProperty(“键名”); 注册驱动 Class.forName("com.mysql.jdbc.Driver"); 获取连接 Connection conn = DriverManager.getConnection(url,username,password); 编写sql语句 String sql = "“; 预编译sql PreparedStatement ps = conn.prepareStatement(sql); 为占位符赋值 ps.setXXX(索引,值)-----索引是从1开始的 执行sql ResultSet rs = ps.executeQuery();或者ps.exectureUpdate(); 有结果集就遍历,没有就算了 while(rs.next()){ rs.getXXX("字段名或者别名") } 释放资源 if(rs/ps/conn != null) { rs/ps/conn.close();-------会抛异常,try catch捕获一下 rs/ps/conn = null;--------手动置为null,提早释放资源 }
|