本帖最后由 小石姐姐 于 2018-1-26 12:04 编辑
学习总结 MySQL 数据库 数据库(文件系统): io流读写 效率低 数据库效率高 方便增删改查 数据库管理系统(软件):DBMS 操作管理数据库 MySQL--->管理系统--->数据库-->数据表(存储)--->数据(记录) 表名---Java类名 列名--- 类中的属性 记录1一-:类的对象1 记录-----类的对象2 cmd: net start mysql 启动命令 net stop mysql 停止命令 SQL语句 结构化查询语言 不区分大小写 建议关键字使用大写 自己定义的 小写 惯例:SQL关键字大写/数据库名.表名.字段名 等小写,便于阅读 一条SQL语句可以单行或多行书写 一条语句必须以 分号 结尾. 字符串 日期 使用 单引号 包裹. DDL数据定义语言 用来定义数据库对象(库/表等) 建库(create database +库名) DML数据操作语言 对表中的记录一进行 增 删(drop database + 库名) 改 DQL数据查询语言 对表中的记录进行 查询 show databases DCL数据控制语言 创建修改用户 权限 约束: * constraint * 作用: 就是对列中记录的值进行限制, 如果插入的数据不符合约束规则, 则该操作会被立刻终止 * 扩展: * 约束的种类: * **主键约束**: `PRIMARY KEY`, 限制该列的记录值不能为空且唯一(不能重复), 相当于同时设定了`NOT NULL`和`UNIQUE` * **自增约束**: `AUTO_INCREMENT`, 设置该列的记录值可以自动增加 * 默认从几开始? 1 * 能用于什么类型? 只能用于数字类型(如INT, DOUBLE, 小数1.23自增后是2) * 外键约束: `FOREIGN KEY`, 主要是连接另一个表的主键 * 非空约束: `NOT NULL`, 限制该列的记录值不能为空 * 唯一约束: `UNIQUE`, 唯一, 限制该列的记录值不能重复 * 检查约束: `CHECK (条件)`, 限制该列插入的记录值是否符合要求 * 默认值约束: `DEFAULT 值`, 限制该列记录如果没有插入值, 则使用默认值 高级SQL JDBC SQL注入 聚合函数 分组统计(group by 列名 having 条件 ) count sum max min avg * 注意: * 聚合函数与分组的使用效果 * 使用聚合函数后再进行分组, 才相当于汇总统计 * `SELECT zname, SUM(zmoney) FROM zhangwu GROUP BY zname;` * 不使用聚合函数的分组, 只有第一条记录的值 * `SELECT zname, zmoney FROM zhangwu GROUP BY zname;` * `HAVING`和`WHERE`的区别 * 过滤时机不同 * WHERE是在分组前先对查询结果进行过滤 * HAVING是在查询结果分组后再次过滤 * 是否可跟随聚合函数不同 * WHERE条件中不可使用聚合函数 * HAVING条件中可以使用聚合函数 * 条件可用列名不同 * HAVING条件中的列名必须是SELECT或GROUP BY中使用过的列名 * WHERE条件中可以使用表的所有列名 DBCP 连接池 * DBCP的`BasicDataSource`类: 实现了`javax.sql.DataSource`接口 * 构造方法: * `BasicDataSource()`: 创建对象 * 成员方法: * `void setDriverClassName(String name)`: 设置驱动类名 * `void setUrl(String url)`: 设置连接地址 * `void setUsername(String username)`: 设置用户名 * `void setPassword(String password)`: 设置密码 * `BasicDataSource`类的配置方法 * 成员方法: * `void setInitialSize(int size)`: 初始连接数. 连接池中最初的连接数 * `void setMaxActive(int n)`: 最大连接数量. 程序能够连接数据库的最大连接数量 * `void setMinIdle(int n)`: 最小空闲连接. 连接池中允许存在的最小空闲数量, 如果小于该数量, 则会创建新的连接, 直到满足该最小空闲连接数 * `void setMaxIdle(int n)`: 最大空闲连接. 连接池中允许存在的最大空闲数量, 如果超出该数量, 则超出的空闲连接会被真实关闭 管家婆项目 项目包结构图 gjp # 项目名称 |_ src | |_ com.itheima.gjp # 包名 | |_ app # 程序入口 | |_ controller # 控制层 | |_ dao # 数据访问层 | |_ domain # 实体类 | |_ service # 业务层 | |_ tools # 工具类 | |_ view # 视图层 |_ lib |_ commons-dbcp-1.4.jar |_ commons-dbutils-1.6.jar |_ commons-pool-1.5.6.jar |_ mysql-connector-java-5.1.28-bin.jar
|