数据的增、删、改、查;

本文详细介绍了SQL的基本操作,包括数据查询、条件筛选、排序、聚合函数和分组等核心功能,并通过具体实例展示了如何管理和分析财务数据。
DROP DATABASE gjp;
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 ....]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值