CREATE DATABASE gjp;
CREATE TABLE gjp_sort(
sid INT PRIMARY KEY AUTO_INCREMENT, -- 分类ID
sname VARCHAR(100), -- 分类名称
parent VARCHAR(100), -- 所属大分类
sdesc VARCHAR(10000) -- 描述
)
CREATE TABLE gjp_ledger(
lid INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
parent VARCHAR(100), -- 所属大分类
money DOUBLE, -- 金额
sid INT, -- 分类ID
account VARCHAR(100), -- 账户
createtime DATE, -- 创建时间
ldesc VARCHAR(1000) -- 描述
);
insert into
gjp_sort(sid,sname,parent,sdesc)
values (1,'服装支出','支出','买衣服'),
(2,'吃饭支出','支出',''),
(3,'交通支出','支出',''),
(4,'住房支出','支出',''),
(5,'工资收入','收入','fda'),
(6,'股票收入','收入',''),
(7,'礼金支出','支出',''),
(8,'其它支出','支出','');
insert into
gjp_ledger(lid,parent,money,sid,account,createtime,ldesc)
values (1,'支出',247,2,'交通银行','2015-03-02','家庭聚餐'),
(2,'收入',12345,5,'现金','2015-03-15','开工资了'),
(3,'支出',1998,1,'现金','2015-04-02','买衣服'),
(4,'支出',325,2,'现金','2015-06-18','朋友聚餐'),
(10,'收入',8000,6,'工商银行','2015-10-28','股票大涨'),
(11,'收入',5000,6,'工商银行','2015-10-28','股票又大涨'),
(12,'收入',5000,5,'交通银行','2015-10-28','又开工资了'),
(13,'支出',5000,7,'现金','2015-10-28','朋友结婚'),
(14,'支出',1560,8,'现金','2015-10-29','丢钱了'),
(15,'支出',2300,3,'交通银行','2015-10-29','油价还在涨啊'),
(16,'支出',1000,2,'工商银行','2015-10-29','又吃饭'),
(17,'收入',1000,5,'现金','2015-10-30','开资'),
(18,'支出',2000,3,'现金','2015-10-30','机票好贵'),
(19,'收入',5000,5,'现金','2015-10-30','又开资');
1、简单查询
-- 查询ledger表的所有记录
SELECT * FROM gjp_ledger;
-- 查询ledger表中所有记录的parent字段,和money字段
SELECT parent,money FROM gjp_ledger;
-- 使用别名
SELECT parent AS '分类' ,money AS '金额' FROM gjp_ledger;
-- 去掉重复值
SELECT DISTINCT parent FROM gjp_ledger;
-- 将所有的金额 + 10 显示
SELECT parent , money + 10 FROM gjp_ledger;
2.条件查询
-- 查询所有的'收入'项,要求结果显示所有字段
SELECT * FROM gjp_ledger WHERE parent = '收入';
/*********比较运算符:> , < , >= , <= , = , <> ***************/
-- 查询所有的字段,要求筛选'金额'大于1000元的记录:
SELECT * FROM gjp_ledger WHERE money > 1000;
-- 查询所有的字段,要求筛选'金额'不等于5000元的记录
SELECT * FROM gjp_ledger WHERE money <> 5000;
-- 查询所有字段,要求筛选'金额'在1000 到 5000 元之间的所有记录
SELECT * FROM gjp_ledger WHERE money >= 1000 AND money <= 5000;
SELECT * FROM gjp_ledger WHERE money BETWEEN 1000 AND 5000;
-- 查询2015年4月份的所有收入和支出记录
SELECT * FROM gjp_ledger WHERE createtime BETWEEN '2015-04-01' AND '2015-04-30';
-- 查询所有字段,要求筛选'金额'等于1000,或者2000,或者3000,或者4000,或者5000
SELECT * FROM gjp_ledger WHERE money IN (1000,2000,3000,4000,5000);-- select * from gjp_ledger where money = 1000 or money = 2000 or money = 3000 or money = 4000 or money = 5000;
-- 查询所有2015年的数据
SELECT * FROM gjp_ledger WHERE createtime LIKE '2016%';
-- 查询'说明(ldesc)'字段中,所有包含'吃'的记录
SELECT * FROM gjp_ledger WHERE ldesc LIKE '%吃%';
-- 查询gjp_sort表中sdesc字段中为'空'的所有记录
SELECT * FROM gjp_sort WHERE sdesc IS NULL;
/***********************逻辑运算符:and , or , not *****************/
-- 查询2015年所有4月份的支出记录
SELECT * FROM gjp_ledger WHERE parent = '支出' AND createtime BETWEEN '2015-04-01' AND '2015-04-30';
-- 查询所有现金账户,工行账户所有的支出记录
SELECT * FROM gjp_ledger WHERE (account = '现金' OR account = '工商银行') AND parent = '支出';
-- 查询所有非现金账户的支出记录
SELECT * FROM gjp_ledger WHERE NOT account='现金' AND parent = '支出';
3、排序
/************排序:升序:ASC(从小到大),降序:DESC(从大到小)****/
-- 查询所有2015年4月份的支出项,要求按金额升序排序
SELECT * FROM gjp_ledger WHERE parent = '支出' AND createtime BETWEEN '2015-10-01' AND '2015-10-31' ORDER BY money DESC;
-- 查询所有记录,要求按日期降序排序
SELECT * FROM gjp_ledger ORDER BY createtime DESC;
4、聚合函数
-- 查询2015年10月份总的支出是多少钱
SELECT SUM(money) FROM gjp_ledger WHERE createtime BETWEEN '2015-10-01' AND '2015-10-31' AND parent = '支出';
-- 查询2015年10月份每次平均支出多少钱
SELECT AVG(money) FROM gjp_ledger WHERE createtime BETWEEN '2015-10-01' AND '2015-10-31' AND parent = '支出';
-- 查询2015年10月份最多的一笔支出
SELECT MAX(money) FROM gjp_ledger WHERE createtime BETWEEN '2015-10-01' AND '2015-10-31' AND parent = '支出';
-- 查询2015年10月份最少的一笔支出
SELECT MIN(money) FROM gjp_ledger WHERE createtime BETWEEN '2015-10-01' AND '2015-10-31' AND parent = '支出';
-- 查询2015年10月份一共有多少笔支出
SELECT COUNT(*) FROM gjp_ledger WHERE createtime BETWEEN '2015-10-01' AND '2015-10-31' AND parent = '支出';
5、分组
-- 查询所有的支出项总金额,收入项的总金额
SELECT parent,SUM(money) FROM gjp_ledger GROUP BY parent;
-- 查询2016年10月,每天的收入的汇总金额、支出的汇总金额
SELECT createtime,parent,SUM(money) FROM gjp_ledger WHERE createtime BETWEEN '2016-10-01' AND '2016-10-31' GROUP BY createtime,parent;
SELECT * FROM gjp_ledger WHERE createtime BETWEEN '2016-10-01' AND '2016-10-31' ORDER BY createtime;
-- 查询2016年10月,每天的收入的汇总金额
SELECT createtime,SUM(money) FROM gjp_ledger WHERE createtime BETWEEN '2016-10-01' AND '2016-10-31' AND parent = '收入' GROUP BY createtime;
6、JDBC
一.JDBC:
1.将MySQL的驱动包导入到项目中,并添加构建路径;
2.注册驱动:
Class.forName("com.mysql.jdbc.Driver");
3.获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/gjp","root","1234");
4.获取SQL执行者
Statement stmt = conn.createStatement();
或者
PreparedStatement ppStmt = conn.prepareStatement(String sql);
5.执行SQL
int executeUpdate(String sql):主要执行:insert into、update、delete
ResultSet executeQuery(String sql):主要执行:select
6.处理结果集:
while(rs.next()){
System.out.println(rs.getInt(1) + "," + rs.getString("sname"));
}
7.释放资源
rs.close();
stmt.close();
conn.close();
7、MYSQL
一.MySQL5.5的安装:略
二.SQLyog安装:略
三.SQL语句:
1).DDL:数据库,表,列等。关键字:create,alter,drop等
2).DML:用来对数据库中表的记录进行更新。关键字:insert,delete,update等
3).DCL:用来定义数据库的访问权限和安全级别,及创建用户;关键字:grant等
4).DQL:用来查询数据库中表的记录。关键字:select,from,where等
四.常用SQL语句:
1.创建数据库:
create database 数据库名;
2.删除数据库:
drop database 数据库名;
3.创建表:
create table 表名(
字段名 数据类型 约束条件,
字段名2 数据类型
);
4.常用数据类型:
整数:int
浮点:double
日期:date
文本:varchar
5.插入数据:insert into
1).insert into 表名(字段列表) values(值列表):值列表要跟字段列表要对应;
2).insert into 表名 values(值列表):向表中的所有列插入数据。值列表必须包含所有列的数据;
6.修改数据:update
update 表名 set 字段名 = 值 [where 条件]
update 表名 set 字段1 = 值1, 字段2 = 值2 , 字段3 = 值3 [where 条件]
7.删除数据:delete from
delete from 表名 [where 条件]
8.查询数据:
1.基本查询:
select 字段1 , 字段2 from 表名;
select * from 表名;
2.条件查询:
1).比较运算符:>,< , >= , <= , = , <>
范围查询:between ... and ...
in列表查询:in (值列表)
模糊查询:like %(任意数量的任意字符) _(任意的一个字符)
is null:判断是否为'空'
2).逻辑运算符:and , or , not
3.排序:
order by 字段名 [asc(升序)、desc(降序)];
4.聚合函数:
sum(字段名):求和
avg(字段名):求平均值
max(字段名):求最大值
min(字段名):求最小值
count(字段名):求出现的次数
5.分组:
group by 字段名[ , 字段2 , 字段3 ....]