1.要求:将武当派 张三 修改为 张三丰
update ren set p_name =’张三丰’ where p_name=’张三’
-- 1.查询所有人员?
-- select * from ren;
-- 2.只查询人员的姓名和年龄?
-- select p_name,p_age from ren;
-- 3.查询年龄为20岁的人有哪些?
-- select * from ren where p_age ='20';
-- 4.查询60岁以下的人员有哪些?
-- select * from ren where p_age < '60'
-- select * from ren where p_age != '60'
-- 常见的逻辑运算符 <,>,= <=,>=,<>,!=
-- 5.查询50岁以上并且工资大于8000的人员有哪些?
-- select * from ren where p_age >50 || p_sal <8000
-- 注意: and 用于连接两个条件 表示并且意思
-- 注意2: or 用于连接两个条件 表示或者意思
-- 6.查询姓[张]的人员有哪些?
-- select * from ren where p_name LIKE '张%'
-- select * from ren where p_name LIKE '%张%'
-- 7.查询哪些人员属于 武当/华山/嵩山?
-- select * from ren where p_menpai ='武当' or p_menpai ='华山' or p_menpai='嵩山';
-- select * from ren where p_menpai not in('武当','华山','嵩山');
-- 8.查询工资在 5000-8900的人员有哪些?
-- select * from ren where p_sal >=5000 and p_sal<= 8900;
-- select * from ren where p_sal between 5000 and 8900;
-- 9.查询所有人员,要求按工资倒序排列?
-- select * from ren where p_sal>3000 ORDER BY p_sal asc
-- 10.查询年龄为21岁人员的领导人是谁?
select p_leader from ren where p_age ='21'
select * from ren where p_id ='p003'
select * from ren where p_id =(select p_leader from ren where p_age ='21')
—————-聚合函数——————-
-- 11.查询当前人员中谁的工资最高?
select max(p_sal) as p_sal from ren ;
select p_name from ren where p_sal =(select max(p_sal) as p_sal from ren)
注意: max() 表示最大值
as 表示 起别名
-- 12.查询当前人员中谁的工资最低?
select p_name from ren where p_sal = (select min(p_sal) from ren)
注意:min()表示最小值
-- 13.查询所有人员的平均工资是多少?
select AVG(p_sal) from ren
注意:avg():表示平均值
-- 14.查询所有人员的工资总和是多少?
select sum(p_sal) from ren
注意 sum() 求和
-- 15.查询目前有多少个人员?
select count(p_id) from ren
注意 count(主键) 表示查询表中数据的总条数
-- 16.查询各门派的平均工资是多少?
select avg(p_sal),p_menpai,p_name from ren GROUP BY p_menpai order by avg(p_sal) desc
注意 group by 表示分组
-- 17.查询武当派最高工资是谁?
select p_name from ren where p_sal = (select max(p_sal) from ren where p_menpai ='武当') and p_menpai ='武当'
-- 18.查询当前武林中有哪些门派?
select p_menpai from ren GROUP BY p_menpai;
select DISTINCT p_menpai,p_name from ren
注意:DISTINCT 表示去重复查询,要求查询的所有字段必须一样,才认为是重复数据
-- 19.查询当前武林中有哪些门派和门派的平均工资是多少?
select p_menpai,avg(p_sal) from ren GROUP BY p_menpai
-- 20.查询当前人员表的中的第3条数据到第7条数据?
select * from ren LIMIT 2,5
注意 limit 表示分页
参数1:表示从第几条开始查询,下标从0开始
参数2:表示每次查询多少条数据
-- 21.查询没有门派的人员有哪些?
select * from ren where p_menpai is null; 表示查询字段为 null 的数据
select * from ren where p_menpai =''; 表示查询字段为 ''(空) 的数据
update ren set p_menpai = null where p_id='p008'
注意:修改字段为null 时 要写 =
-- 22.查询武当派下有哪些小弟?
select * from ren where p_leader =(select p_id from ren where p_menpai='武当' and p_leader='0')
select * from ren where p_menpai ='武当' and p_leader !='0'
-- 23.查询各门派的工资总和按倒序/正序排列
select sum(p_sal) sal,p_menpai from ren GROUP BY p_menpai ORDER BY sal
-- 24.查询人员并显示门派所在位置(多表联合查询)
select * from ren,wei where ren.p_menpai = wei.a_name
注意:如果多表联合查询不加条件则会出现(笛卡尔乘积)
注意:在使用多表联合查询时,一定要加条件
结果:符合两个表条件的结果
-- 25.查询人员表,如果人员门派存在位置则显示位置信息,不存在则不显示位置
select * from ren LEFT JOIN wei on ren.p_menpai = wei.a_name
左连接查询
注意:on 表示条件 专门配置 left join 来使用
特点:左表数据全要,右表的数据与左表数据相匹配则显示,不匹配则以NULL填充
-- 26.查询位置表,如果人员的门派有位置信息则显示人员,没有则不显示.
select * from ren RIGHT JOIN wei on ren.p_menpai = wei.a_name
-- 27.查询登记了地理位置的门派人员信息
select * from ren INNER JOIN wei on ren.p_menpai = wei.a_name
我好像在哪见过你 — 薛之谦