Mysql数据库学习(4)阶段性完结

-- 倒序输出全部用户的权限信息
SELECT * from users order by powers  desc
-- 统计女生人数,灵活使用count,看题目要求,你要计算的是什么?
SELECT  COUNT(sid) FROM `student` WHERE ssex='f'
-- 统计一共开设了多少了专业
SELECT COUNT(DISTINCT szhuanye) as 专业数 FROM student
-- 统计每个专业的人数
SELECT szhuanye AS 专业名称,COUNT(sid) as 学生人数 FROM student GROUP BY szhuanye
-- 统计每个专业的男生和女生的人数
SELECT szhuanye AS 专业名称,ssex AS 性别,COUNT(sid) as 学生人数 FROM student GROUP BY szhuanye,ssex
-- 统计每个专业的学生的人数,只显示超过5个人的记录,HAVING对的是查询结果进行操作,
-- 但是where是对字段进行操作,去了别名之后就不需要加所谓的单引号、双引号
SELECT szhuanye,COUNT(sid)as 学生人数 FROM student GROUP BY szhuanye HAVING 学生人数>5
-- 统计每门课程的平均分、最高分和最低分
select cname 课程名称,avg(score) 平均分, max(score) 最高分,min(score) 最低分
from score sc,course c
where sc.cid=c.cid  GROUP BY sc.cid
-- 计算每个学生的总成绩
select sname 姓名,SUM(score) as 总成绩 from student s,score sc
where s.sid = sc.sid GROUP BY sc.sid
-- 计算英语专业成绩低于75分的学生信息
select s.sid,sname,sage,ssex,szhuanye,score,cname
from student s,course c, score sc
where s.sid=sc.sid and c.cid=sc.cid
and cname='英语'
and score<75
-- 在students表中利用模糊查询完成操作:
 -- 1. 找出所有姓刘的同学,显示全部信息
select * from student where sname LIKE '刘%'
-- 2. 找出姓名中含有"敏"的同学,显示全部信息
select * from student where sname LIKE '%敏%'
-- 3. 找出所有姓张,且姓名中含有"妹"的同学,显示全部信息
select * from student where sname LIKE '张%妹%'
-- 4. 找出所有姓林,最后一个字为"如"的同学,显示全部信息
select * from student where sname LIKE '林%如'


-- 难点、经典例题
create database nba;
use nba;


create table teams(
    tid TINYINT PRIMARY KEY auto_increment,
    tname varchar(20) not null
)charset='utf8';

create table results(
    id TINYINT PRIMARY KEY auto_increment,
    hid tinyint not null,
    gid tinyint not null,
    match_time datetime ,
  result varchar(10) not null
)charset='utf8';

insert into teams values(default,'小牛'),(default,'爵士'),(default,'火箭'),
(default,'雷霆'),(default,'老鹰');

insert into results values(default,2,4,'2016-12-01 08:00:00','99:83');
insert into results values(default,3,4,'2016-12-02 08:00:00','84:101');
insert into results values(default,2,5,'2016-12-02 19:30:00','78:87');
insert into results values(default,5,1,'2016-12-03 08:00:00','121:109');
insert into results values(default,3,5,'2016-12-03 19:30:00','99:103');

select * from teams;
select * from results;


use score
select t1.tname 主队名称,t2.tname 客队名称,match_time,result
from teams t1
RIGHT JOIN
results r
on r.hid= t1.tid
LEFT JOIN teams t2
on r.gid = t2.tid

select * from langTable

id pid name

2   6         精品钱包
3   4     单冷空调
4   1     空调
5   5       箱包
6   5         男士包
1   1   家用电器

家用电器  空调  单冷空调
    电视    平板
        液晶
        
箱包

-------  利用递归思想实现(从第一级开始找,找到以它为pid的第二级,再找以当前id为pid的第三级,找完后回到第二级再继续找其它第二级目录...)

脚本语言  编程语言
编译语言 编程语言
PHP       脚本语言

-- ----------------------------
-- Table structure for langtable
-- ----------------------------
DROP TABLE IF EXISTS `langtable`;
CREATE TABLE `langtable` (
  `lid` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) NOT NULL,
  `lname` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`lid`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of langtable
-- ----------------------------
INSERT INTO `langtable` VALUES ('1', '9', '脚本语言');
INSERT INTO `langtable` VALUES ('2', '9', '编译语言');
INSERT INTO `langtable` VALUES ('3', '1', 'PHP');
INSERT INTO `langtable` VALUES ('4', '1', 'JS');
INSERT INTO `langtable` VALUES ('5', '1', 'Python');
INSERT INTO `langtable` VALUES ('6', '9', 'C');
INSERT INTO `langtable` VALUES ('7', '9', 'C++');
INSERT INTO `langtable` VALUES ('8', '9', 'Java');
INSERT INTO `langtable` VALUES ('9', '9', '编程语言');
select l1.lname 语言,l2.lname 父语言 from langTable l1
LEFT JOIN langTable l2
ON l1.pid = l2.lid

猜你喜欢

转载自blog.csdn.net/formydream111/article/details/82757862
今日推荐