1、sql查询语句
查询语句,在开发中使用的次数最多,此处使用“zhangwu” 账务表。
- 创建账务表:
CREATE TABLE zhangwu(
id INT PRIMARY KEY AUTO_INCREMENT,-- 账务ID
name VARCHAR(200),-- 账务名称
money DOUBLE -- 金额
);
- 插入表记录:
INSERT INTO zhangwu(id,name,money) VALUES (1,'吃饭支出',247);
INSERT INTO zhangwu(id,name,money) VALUES (2,'工资收入',12345);
INSERT INTO zhangwu(id,name,money) VALUES (3,'服装支出',1000);
INSERT INTO zhangwu(id,name,money) VALUES (4,'吃饭支出',325);
INSERT INTO zhangwu(id,name,money) VALUES (5,'股票收入',8000);
INSERT INTO zhangwu(id,name,money) VALUES (6,打麻将支出,8000);
INSERT INTO zhangwu(id,name,money) VALUES (7,null,5000);
- 查询的语法:
查询指定字段信息
SELECT 字段1,字段2....FROM 表名;
例如:
SELECT id,name FORM zhangwu;
查询表中所有的字段
SELECT * FORM 表名;
DISTINCT用于去除重复记录
SELECT DISTINCT 字段 FROM 表名;
别名查询,使用的as关键字,as可以省略的.
别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。
--表格别名格式:
SELECT *FROM 表名 AS 别名;
-- 或
SELECT * FROM 表名 别名;
列别名格式:
SELECT 字段名 AS 别名 FROM 表名;
SELECT 字段名 别名 FROM 表名;
2、条件查询
where语句表条件过滤。满足条件操作,不满足不操作,多用于数据的查询与修改。
格式 :select 字段 from 表名 where 条件;
while条件的种类如下:
比较运算符 | > < <= >= = <> | 大于、小于、大于(小于)等于、不等于 |
BETWEEN …AND… | 显示在某一区间的值(含头含尾) | |
LIKE 通配符 | 模糊查询,Like语句中有两个通配符;% 用来匹配多个字符;例first_name like ‘a%’;_ 用来匹配一个字符。例first_name like ‘a_’; | |
IS NULL | 判断是否为空;is null; 判断为空;is not null; 判断不为空 | |
逻辑运算符 | and | 多个条件同时成立 |
or | 多个条件任一成立 | |
not | 不成立,例:where not(salary>100); |
例如:
查询所有吃饭支出记录
SELECT * FROM zhangwu WHERE name=‘吃饭支出’;
查询金额大于等于1000的信息
SELECT * FROM zhangwu WHERE money >= 1000;
查询金额在2000-5000之间的账务信息
SELECT * FROM zhangwu WHERE money >= 2000 AND money <= 5000;
或者
SELECT * FROM zhangwu WHERE money BETWEEN 2000 AND 5000;
查询金额是1000或3500或5000的商品信息
SELECT * FROM zhangwu WHERE money =1000 or money=3500 or money=5000;
或者
SELECT * FROM zhangwu WHERE money IN(1000,3500,5000);
查询出账务名称包含"支出"的账务信息
SELECT * FROM zhangwu WHERE name LIKE "%支出%";
查询出账务名称中是五个字的账务信息
SELECT * FROM zhangwu WHERE name LIKE "_____";-- 5个下划线,一个下划线代表一个字符
查询出账务名称不为null的信息
SELECT * FROM zhangwu WHERE name IS NOT NULL;
SELECT * FROM zhangwu WHERE NOT(name IS NULL);
3、聚合查询
- COUNT:统计指定列不为NULL的记录行数;
- SUM:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
- MAX:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
- MIN:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
- AVG:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0
例如:
- 统计账务表中共有多少条记录
SELECT COUNT(*) FROM zhangwu;
- 统计账务表中金额大于3000的有多少条记录
SELECT COUNT(*) FROM zhangwu WHERE money>3000;
- 统计有多少收入的账务信息
SELECT SUM(money) FROM zhangwu WHERE name LIKE ‘%收入%’;
- 统计出记录中支出的平均值
SELECT AVG(money) FROM zhangwu WHERE name LIKE ‘%支出%’;
4、分组查询
GROUP BY 分组查询,必须跟随聚合函数一起使用
select查询的时候,被分组的列,要出现在select选择列的后面
SELECT SUM(money),name FROM zhangwu GROUP BY name;
对name内容进行分组查询求和,但只要支出
SELECT SUM(money) AS ‘getsum’,name FROM zhangwu WHERE name LIKE ‘%支出%’ GROUP BY name ORDER BY SUM(getsum) DESC;
对name内容进行分组查询求和,但是只要支出,显示金额大于5000
*结果集是分组查询后,再次进行筛选,不能使用where,分组后再次过滤需要使用关键字having
SELECT SUM(money) AS ‘getsum’,name FROM zhangwu WHERE name LIKE ‘%支出%’ GROUP BY name ORDER BY HAVING getsum>5000;