sql简简单单的学习和复习

sql入门

1.sql的查询,排序

(1)排序
SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序);
特点:只对英文和数字有效,对汉字无效
实例代码:

数据库初始化:

# 准备数据
drop database day13;
create database day13;
use day13;
# 执行
create table category (
  cid int primary key auto_increment,
  cname varchar(50)
);
create table products(
  pid int primary key ,
  pname varchar(50),
  price int,
  flag varchar(2),				#是否上架标记为:1表示上架、0表示下架
  category_id int
);
alter table products add foreign key (category_id) references category (cid);


#分类
insert into category(cid,cname) values(1,'家电');
insert into category(cid,cname) values(2,'服饰');
insert into category(cid,cname) values(3,'化妆品');
#商品
insert into products(pid, pname,price,flag,category_id) values('1','联想',5000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('2','海尔',3000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('3','雷神',5000,'1',1);

insert into products (pid, pname,price,flag,category_id) values('4','杰克琼斯',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('5','真维斯',200,'1',2);
insert into products (pid, pname,price,flag,category_id) values('6','花花公子',440,'1',2);
insert into products (pid, pname,price,flag,category_id) values('7','劲霸',2000,'1',2);

insert into products (pid, pname,price,flag,category_id) values('8','香奈儿',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('9','相宜本草',200,'1',2);

操作sql语句

#查询商品价格(降序)---指定一个列
SELECT * FROM  products ORDER BY price DESC;

#查询商品价格(降序),按照类排序(降序) ----指定多个列
SELECT * FROM products ORDER BY price DESC,category_id DESC;

#3.显示商品的价格(去重复),并排序(降序) -- distinct去掉重复
SELECT DISTINCT price   FROM products ORDER BY price DESC;

sql 聚合函数的查询

(1)何为聚合函数?
类似于java中的函数 例如:.length();

(2)sql常见的聚合函数
1.sum():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0

2.max():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算

3,avg():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

4.min():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

5.count():统计指定列不为NULL的记录行数

(3)语句执行顺序
from ->where ->count(*)
SELECT COUNT(*) FROM product WHERE price > 200;

1 查询商品的总条数
SELECT COUNT(*) FROM products;

2 查询价格大于200商品的总条数
SELECT COUNT(*) FROM products WHERE price>200;

3 查询分类为 1 的所有商品的总和
SELECT SUM(price) FROM products WHERE category_id=1;

4 查询分类为 2 所有商品的平均价格
SELECT AVG(price) FROM products WHERE category_id=2;

5 查询商品的最大价格和最小价格
SELECT MAX(price),MIN(price) FROM products ;

sql的分组查询

(1)何为分组?
通过指定的方法将原数据库分为N组

(2)如何分组?
select【查询内容】 from 【查询的表】 group by 【分组字段 】having 【分组条件】

from > group by -> count(*) ->having -> select

(3)示例代码:

1. 统计各个分类商品的个数
SELECT COUNT(*) FROM products GROUP BY category_id;

2. 统计各个分类商品的个数,且只显示个数大于3的信息
SELECT COUNT(*) AS c  FROM products GROUP BY category_id HAVING  c>3;

练习

(1)初始化数据

-- 1、按员工编号升序排列不在10号部门工作的员工信息
SELECT * FROM emp  WHERE NOT(deptno=10) ORDER BY empno ASC;

-- 2、查询姓名第二个字母不是”A”且薪水大于800元的员工信息,按年薪降序排列
SELECT * ,((sal*12) +IFNULL(comm,0) )nx FROM emp  WHERE ename NOT LIKE('_A%') ORDER BY nx DESC;

-- 3、求每个部门的平均薪水
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;

-- 4、求各个部门的最高薪水
SELECT deptno,MAX(sal) FROM emp GROUP BY deptno;

-- 5、求每个部门每个岗位的最高薪水
SELECT deptno,job,MAX(sal) FROM emp GROUP BY deptno ,job;

-- 6、求平均薪水大于2000的部门编号
SELECT deptno,AVG(sal)AS pj FROM emp GROUP BY deptno HAVING pj>2000 ;

-- 7、将部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列

SELECT deptno, AVG(sal) AS pj FROM emp GROUP BY deptno HAVING pj>1500 ORDER BY pj DESC ;

总结:

对于sql查询还是不太熟练,在查询多个条件时总会想到使用where语句,感觉繁琐;但其实运用分组方法时特别简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值