SQLiteSpy 下载软件的下载安装步骤不再冗述,百度搜索一下很多下载链接。
1、新建一个数据库:
File->New Database,起名为SqlLearning。如下图:
2、sql语句输入区输入如下语句,按快捷键F9,创建数据库表customers。执行后效果如下图。
create table customers(
customerId INTEGER PRIMARY KEY,
name varchar(50),
city varchar(50),
customerType varchar(50),
addTime date,
addFromDepartment varchar(10),
quantity INTEGER );
3、sql语句输入区域分别输入如下的10个sql语句,插入10条记录。执行后的效果如下图。
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张志国','中国','普通客户','2011-10-22','财务部',3) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('靳红浩','法国','主要客户','2012-11-1','销售部',2) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('高武明','中国','普通客户','2013-5-12','编辑部',12) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('王玲菲','德国','特殊客户','2007-1-12','编辑部',5) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('马达达','中国','主要客户','2008-2-19','财务部',3) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('马凯文','德国','特殊客户','2000-4-23','财务部',6) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('姚明明','美国','特殊客户','2011-5-23','编辑部',2) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('余铭宏','中国','主要客户','2012-12-2','销售部',7) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张艺谋','法国','特殊客户','2013-1-2','编辑部',2) ;
insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张斯五','中国','普通客户','2010-1-3','销售部',1);
4、对customers根据customersType进行分组。
select customerType from customers group by customerType;
5、group by 常和 sum,max,min,count等聚合函数一起使用,例如:对 customers根据 customersType进行分组统计每个类别中的客户个数。
select customerType,COUNT(*) from customers group by customerType ;
6、 例如:对 customers根据 customersType进行分组获取每组的最大customersId
select customerType,MAX(customerId) as number from customers group by customerType ;
注:as number相当于起了个别名,如果不起别名的话将会显示为”MAX(customerId)“
7、group by 字句和where字句一起使用,在SQL中where字句的运行顺序是先于 group by 字句的,where字句会会在形成组和计算列函数之前消除不符合条件的行
例如:查询由财务部门添加的用户中各个类型的最大customersId
select customerType,MAX(customerId) as number from customers where addFromDepartment='财务部' group by customerType ;
where字句过滤掉了不是财务部添加的用户信息,group by对where字句的结果又进行了分组操作,没有groupby的话得到的记录将是财务部添加的用户中customerId最大的一条记录。
8、group by字句和having()字句一起使用,在SQL中 having()字句的运行顺序是后于 group by字句的, having()字句的的作用是筛选满足条件的组,例如:查询客户数超过1个的国家和客户数量。
select city ,count(*) number from customers GROUP by city having count(*)>1 ;
分析:系统会先对customers根据 city 分组,生产虚拟表,之后having字句对生成的虚拟表进行筛选,将数量不大于1的剔除