数据库
本质是一个文件系统 数据按照指定的格式将数据储存起来
数据库管理系统(DataBase Management System)
是操作和管理数据的软件
C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/a0fe628b4420497981119e2797a5f7aa/clipboard.png
services.msc
启动服务 net start mysql
停止服务 net stop mysql
SQL
Structured Query language 结构化查询语言.
DDL :data defination language, 数据定义语言,用来定义数据库对象(库,表等)
~CREATE
~ALTER
~DROP
DML Data Manipulation language, 数据操作语言,对表中的记录进行增删,查改
INSERT
DELETE
UPDATE
DQL :Data Manipulation Language,. 数据查询
SELECT
FROM
WHERE
类型
int 整形
double 浮点型
varchar 字符串型
date 日期类型
创建数据库: CREATE DATABASE 数据库名;
删除数据库: DROP DATABASE 数据库名;
开打数据库: USE 数据库名
创建表: CREATE TABLE 表名( 列名1 数据类型 约束 , 列名2 数据类型 约束 );
添加列:ALTER TABLE 表名 ADD 列表,数据类型,约束
修改列中数据类型约束 :ALTER TABLE 表名MODIFY 列名 数据类型 约束
修改列名, ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 约束
删除列: ALTER TALBE 表名 DROP 列表;
修改表名 RENAME TABLE 表名 TO 新名
向数据表中添加数据
INSERT INTO 表名(列名 1,列名 2 ,列名3) values(值1,值2,值3)
修改表
UPDATE 表名 SET 列名1=新值 WHERE 条件
删除
DELETE FROM 表名
SHOW TALBS;
DESC 表名;
DROP TABLE 表名;
查询
SELECT * FROM 表名 DISTINCT 用于去除重复记录
查询重新命名列 AS 关键字
主键约束 PRIMARY KEY 该记录不能为空,不能重复
自增约束 AUTO_INCREMENT 设置该列的记录值可以自动增加
外键约束 FOREIGN KEY 主要是连接另一个表的主键
非空约束 NOT NULL 限制该列的记录值不能为空
唯一约束 UNIQUE 唯一,该列的记录值不能重复
检查约束 CHECK 条件,限制该列插入的记录值是否符合要求
默认值约束: DEFAULT 值
* 条件查询:
* 即按指定条件查询记录返回符合条件的结果集, 使用`SELECT`和`WHERE`组合
* `WHERE`:
* 作用: 条件子句, 过滤符合条件的结果
* 运算符
* 比较运算符
* `=`: 相等
* `<>`或`!=`: 不等
* `>`: 大于
* `<`: 小于
* `>=`: 大于等于
* `<=`: 小于等于
* `BETWEEN...AND...`: 在一个范围内(包含头和尾), `BETWEEN 0 AND 10;` 0~10
* 如:
* `IN ()`: 在列表中, 满足列表中一个即可
* 如: `IN (1, 3, 5)`
* `IS NULL`: 是空
* `LIKE 通配符`: 模糊查询
* 通配符种类
* `%`: 一个百分号可以表示任意个字符. 比如`王%`, `王大锤`, `王五`
* `_`: 一个下划线可以表示一个字符. 比如`王_`, 只能匹配`王五`
* 逻辑运算符
* `AND`: 与. 两边条件同时成立才成立
* `OR`: 或. 两边条件只要有一个成立就成立
* `NOT`: 非, 取相反结果
* `NOT BETWEEN ... AND ...`: 不在范围内
* `NOT IN`: 不在列表中
* `NOT LIKE`: 不匹配
* `IS NOT NULL`: 非空
* 日期也是可以比较的
聚合函数
count(列名):对表中的数据个数求和
注意值为NULL的记录不会被统计
sum(列名):对一列中数据进行求和
MAX(列名):对某列数据,获取最大值
AVG(列名):计算一个列所有数据的平均数
如果指定列类型不是数值类型,则结果为0
分组查询
GROUP BY 列名 HAVING(对查询结果进行分组显示后,在次按条件过滤) 条件
* 聚合函数与分组的使用效果
* 使用聚合函数后再进行分组, 才相当于汇总统计
* `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条件中可以使用表的所有列名
JDBC
JAVA DataBase Connectivity java数据库连接,是一种技术的名称
JDBC 步骤
1.注册驱动
告知JVM使用的是那一个数据库的驱动
2.获得连接
使用JDBC中的类,完成对Mysql数据库的连接
3.获得语句执行平台
通过连接对象获取SQL语句的执行对象
4.执行sql语句
使用执行者对象,向数据库执行SQL语句
获取数据库的执行后的结果
5.处理结果
* 根据项目的业务需求对结果进行操作
6.释放资源 一堆close()
PreparedStatement (SQL预编译储存,多次高效的执行SQL)
PreparedStatement
C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/3198768f646b4b6e80836ffa9311af05/clipboard.png
* 在工具类中定义5个静态变量:
* private static Connection conn;
* private static String driverClass;
* private static String url;
* private static String username;
* private static String password;
* 定义读取配置文件的方法:
* private static void readConfig()
* 其中使用ClassLoader加载配置文件, 读取配置, 对静态变量driverClass, url, username, password进行初始化
* 定义静态代码块, 在其中
* 调用readConfig()方法读取配置
* 调用Class.forName(driverClass)加载驱动
* 调用conn = DriverManager.getConnection(url, username, password)对连接对象进行初始化
* 定义public static Connection getConnection()方法
* close()释放资源方法不用再定义, 后面会使用DbUtils里面的释放资源的方法
DBUTILS工具类 三个核心类一个更好的JDBC工具类
QuerRunner类,提供操作SQL语句的API
*QuerRunner():创建对象
*int update
* eqery
C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/eab67a8d686e48baadf721919f0fc234/clipboard.png