首页
友链
Search
1
01-快捷命令
134 阅读
2
寒假计划
129 阅读
3
03-概念解析
121 阅读
4
浏览器规范(ES module)和 node.js 规范(Common JS)
121 阅读
5
学期计划(大三下学期)
103 阅读
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
登录
Search
标签搜索
spring
mysql
vue
ansible
CSS
面试
计划
收获
JAVA面试题
spring-mvc
Starrylsi
累计撰写
106
篇文章
累计收到
37
条评论
首页
栏目
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
页面
友链
搜索到
8
篇与
的结果
2024-09-17
08-sql执行顺序
掌握: sql执行顺序和注意点关键点: 查询完成后排序,大致顺序不便关键: 分析一个需求,给出解决思路#sql语句的执行顺序 #语法 : #select 关键字 列名... from 表名 where 表达式 group by 列名... having 表达式 order by 列名... #执行顺序 :from -> where -> group by -> having -> select -> order by #注:where 不支持组函数参加表达式 # having 支持组函数 并且会预加载组函数结果 #语句中的 任意功能都视情况添加 #只有mysql支持 直接编写having #其他数据库要求having子句必须在group by之后 #错误写法 : select * from employees having salary > 5000; #group by 关键字 允许分组多列 且分组后 一定不存在重复数据 所以在某些情况下 分组可以起到去重的功能 #如果select 语句中 存在普通列和组函数列 则group by 要求必须对所有普通列进行分组
2024年09月17日
18 阅读
0 评论
0 点赞
2024-09-08
07-数据库的连接
目标掌握连接数据库的四个步骤理解工厂模式概念1.工厂模式三种工厂模式都是为了解决对象创建过程中的耦合问题,使得系统更容易扩展和维护。简单工厂模式适用于创建逻辑相对简单的情况;工厂方法模式适用于有多个产品族需要创建的情况;抽象工厂模式适用于需要创建一系列相关或依赖的产品对象的情况。2.java为了保证支持所有的数据库 提供给所有的数据库厂商三个核心接口 Connection 连接Statement 语句ResultSet 结果集3.java访问数据库 需要提供四个步骤{timeline}{timeline-item color="#19be6b"}1.注册驱动{/timeline-item}{timeline-item color="#19be6b"}2.提供数据库的url 规则:jdbc:mysql://ip:端口号/database名称{/timeline-item}{timeline-item color="#19be6b"}3.提供用户名、密码{/timeline-item}{timeline-item color="#19be6b"}4.根据参数 生成Connection对象{/timeline-item}{/timeline}导入jar包1.根目录新建文件夹命名为 lib2.右键jar包->添加至构建路径案例都是三个阶段: 1.准备(获取连接,定义sql,定义statement或prepareStatement)2.使用(stmt.executeUpdate,存储参数和pstmt.executeUpdate)3.销毁(关流).connection案例代码public class ConnectionTest { public static void main(String[] args) { try { //1.注册驱动 //DriverManager.registerDriver(new Driver()); //1.1也可以使用反射加载驱动 //1.8版本之后 可以不加载 自动加载 // Class.forName("com.mysql.jdbc.Driver"); //2.提供数据库的url String url = "jdbc:mysql://localhost/?"; //3.提供用户名、密码 String password = "?"; String username = "?"; //4.生成连接对象 Connection con= DriverManager.getConnection(url, username,password); System.out.println(con); } catch (SQLException e) { e.printStackTrace(); } } }statement案例代码public class StatementTest { public static void main(String[] args) { //1.获取连接 Connection conn = JDBCUtils.getConnection(); Date date = new Date(); //2.定义sql String sql = "insert into test6(name,password,create_date) " + "values('李思','123','"+ new java.sql.Date(date.getTime()) +"')"; //3.获取Statement对象 Statement stmt = null; try { stmt = conn.createStatement(); //4.执行DML语句时 使用executeUpdate int result = stmt.executeUpdate(sql); System.out.println(result > 0 ? "添加成功" : "添加失败"); } catch (SQLException e) { e.printStackTrace(); } finally { //5.关流 JDBCUtils.close(conn,stmt); } } } prepareStatement 案例代码/** * 由于Statement存储数据时需要拼接字符串 * 会造成sql注入问题 * * sql注入:拼接字符串时 被强行插入不符合规则数据 造成数据库宕机 * * 所以java提供了Statement接口的子接口 * PreparedStatement 可以用来提供可变参数 * * * * * * */ public class PrepareTest { public static void main(String[] args) { //1.获取连接 Connection conn = JDBCUtils.getConnection(); //2.声明PreparedStatement对象 PreparedStatement pstmt = null; //3.定义sql String sql = "insert into test6 values(null,?,null,?)"; try { //4.生成pstmt对象 pstmt = conn.prepareStatement(sql); //5.存储参数 pstmt.setString(1, "赵柳"); pstmt.setDate(2, new java.sql.Date(new Date().getTime())); //6.执行sql并获取返回值 int result = pstmt.executeUpdate(); System.out.println(result > 0 ? "添加成功" : "添加失败"); } catch (SQLException e) { e.printStackTrace(); } finally { //7.关流 JDBCUtils.close(conn, pstmt); } } } result 案例代码查询多行数据public class ResultSetTest1 { public static void main(String[] args) { //0.声明一个Person对象 Person person = null; //1.获取连接 Connection conn = JDBCUtils.getConnection(); //2.声明pstmt和rs对象 PreparedStatement pstmt = null; ResultSet rs = null; //3.定义sql String sql = "select * from test6 where id = ?"; try { //4.根据sql生成pstmt pstmt = conn.prepareStatement(sql); //5.传递参数 pstmt.setInt(1, 2); //6.执行sql并获取rs对象 rs = pstmt.executeQuery(); //7.遍历rs对象 并获取数据 while(rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String password = rs.getString("password"); Date createDate = rs.getDate("create_date"); person = new Person(id, name, password, createDate); } } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(conn, pstmt, rs); } System.out.println(person); } }
2024年09月08日
18 阅读
0 评论
0 点赞
2024-09-08
06-事物
目标掌握一个案例解释事物目录:1. 概念 2. 案例 1. 概念事物: 是数据库实际应用时最重要的知识点之一提供了两个功能 1.提交 commit 2.回滚 rollback数据库事物默认提交需要手动开启事物SET AUTOINCREMENT=FALSE;当开启事物时 数据不会立刻提交 在其他客户端无法查看当前数据2. 案例
2024年09月08日
18 阅读
0 评论
1 点赞
2024-09-08
05-简单操作
目标复制表数据和复制表复制表结构删除和修改语句的额外操作1.复制表数据和复制表没有主键约束复制表数据的sql 插入数据时 不允许使用as关键字 也不允许使用values关键字INSERT INTO TEST (SELECT * FROM TEST)1.1注复制数据时 要注意主键 如果表中有主键约束 则不能复制主键如果表中没有主键 复制所有数据 会导致表几乎不能修改mysql没有重复数据只能操作一个功能,orcle提供了多个数据根据行号操作的功能2.复制表结构有主键复制表的sql 复制表时 允许使用as关键字 但可省略 为了和insert语句统一 建议复制数据时 不使用as关键字复制的关键点是,在查询语句之后提供一个返回false条件即可INSERT INTO TEST (SELECT * FROM TEST WHERE 1 > 2)3. 删除和修改语句的额外操作删除表数据 truncate清空表数据 与delete from 不同 该操作无法恢复TRUNCATE TEST删除语句和修改语句 都允许使用条件语句 比如子查询
2024年09月08日
14 阅读
0 评论
0 点赞
2024-09-08
04-DQL-视图
掌握视图
2024年09月08日
13 阅读
0 评论
0 点赞
1
2