李亚胜
/*
Navicat MySQL Data Transfer

Source Server         : ce
Source Server Version : 50549
Source Host           : localhost:3306
Source Database       : st

Target Server Type    : MYSQL
Target Server Version : 50549
File Encoding         : 65001

Date: 2020-12-01 23:00:12
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for courses
-- ----------------------------
DROP TABLE IF EXISTS `courses`;
CREATE TABLE `courses` (
  `corseNO` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`corseNO`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of courses
-- ----------------------------
INSERT INTO `courses` VALUES ('1', 'linux');
INSERT INTO `courses` VALUES ('2', 'python');
INSERT INTO `courses` VALUES ('3', 'java');
INSERT INTO `courses` VALUES ('4', 'C#');
INSERT INTO `courses` VALUES ('5', null);

-- ----------------------------
-- Table structure for scores
-- ----------------------------
DROP TABLE IF EXISTS `scores`;
CREATE TABLE `scores` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `corseNo` int(10) DEFAULT NULL,
  `studenNo` varchar(10) DEFAULT NULL,
  `score` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of scores
-- ----------------------------
INSERT INTO `scores` VALUES ('1', '1', '001', '80');
INSERT INTO `scores` VALUES ('2', '2', '002', '45');
INSERT INTO `scores` VALUES ('3', '1', '003', '60');
INSERT INTO `scores` VALUES ('4', '3', '004', '78');
INSERT INTO `scores` VALUES ('5', '4', '005', '89');
INSERT INTO `scores` VALUES ('6', '2', '006', '82');
INSERT INTO `scores` VALUES ('7', '3', '007', '72');
INSERT INTO `scores` VALUES ('8', '4', '008', '67');
INSERT INTO `scores` VALUES ('9', '2', '009', '100');
INSERT INTO `scores` VALUES ('10', '3', '010', '73');
INSERT INTO `scores` VALUES ('11', '4', '011', '87');
INSERT INTO `scores` VALUES ('12', '2', '012', '70');
INSERT INTO `scores` VALUES ('13', null, null, null);

-- ----------------------------
-- Table structure for stu
-- ----------------------------
DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
  `studenNo` varchar(20) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `sex` varchar(4) DEFAULT NULL,
  `hometown` varchar(50) DEFAULT NULL,
  `age` varchar(10) DEFAULT NULL,
  `class` varchar(10) DEFAULT NULL,
  `card` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`studenNo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of stu
-- ----------------------------
INSERT INTO `stu` VALUES ('001', '诸葛亮', '男', '广东', '12', '01班', '421282819945041345');
INSERT INTO `stu` VALUES ('002', '刘备', '女', '黑龙江', '23', '02班', '421282819945041345');
INSERT INTO `stu` VALUES ('003', '张飞', '女', '河南', '19', '01班', '421282819945041345');
INSERT INTO `stu` VALUES ('004', '孙尚香', '男', '上海', '34', '02班', '421282819945041345');
INSERT INTO `stu` VALUES ('005', '孙权', '男', '河南', '23', '03班', '421282819945041345');
INSERT INTO `stu` VALUES ('006', '关羽', '女', '北京', '34', '04班', '421282819945041345');
INSERT INTO `stu` VALUES ('007', '曹操', '男', '山东', '34', '01班', '421282819945041345');
INSERT INTO `stu` VALUES ('008', '李世民', '男', '河南', '45', '03班', '421282819945041345');
INSERT INTO `stu` VALUES ('009', '曹丕', '男', '河南', '24', '02班', '421282819945041345');
INSERT INTO `stu` VALUES ('010', '刘禅', '男', '广西', '26', '04班', '421282819945041345');
INSERT INTO `stu` VALUES ('011', '周瑜', '男', '河南', '26', '02班', '421282819945041345');
INSERT INTO `stu` VALUES ('012', '公孙大娘', '女', '天津', '30', '02班', null);
INSERT INTO `stu` VALUES ('013', '李白', '男', '北京', '20', '02班', ' ');

 

  

- 去重
select distinct sex from stu

select age from stu where name ='诸葛亮3'
-- 条件查询
select * from stu where age <'20'

select * from stu where hometown !='河南'

-- 查询学号为“003”学生身份证号
select card from stu where studenNo='003'
-- 查询“01班”以外的学生信息
select * from stu where class !='01班'
-- 查询年龄大于“20岁”学生的姓名和性别
select name ,sex from stu where age >'20'
-- 查询年龄小于20岁的女同学
select * from stu where age <'20' and sex='女'
-- 查询女学生或者为01班的学生
select * from stu where sex ='女' or class ='01班'
-- 查询家乡不是河南的学生
select * from stu where not hometown ='河南'
-- 查询广东或河南的学生
select * from stu where hometown ='广东' or hometown ='河南'
-- 查询01班的河南学生
select * from stu where class='01班' and hometown ='河南'
-- 查询非20岁的学生
select * from stu where not age ='20'
-- 查询姓刘的学生
select * from stu where name like '刘%'
-- 查询姓曹且名字是一个字的学生
select * from stu where name like '曹_'
-- 查询叫婵的学生
select * from stu where name like '%禅'
-- 查询家乡是广东或者河南或者山东
select * from stu where hometown ='广东' or hometown ='河南' or hometown ='山东'
select * from stu where hometown in ('广东','河南','山东')
-- 查询年龄大于18岁小于40岁的学生信息
select * from stu where age >=18 and age <= 40
select * from stu where age between 18 and 40
-- 查询年龄在19或23或34的女生
select * from stu where age in ('19','23','34') and sex ='女'
-- 查询年龄在18到30岁以外的学生信息 
select * from stu where NOT age between 18 and 30

-- 查询没有填写身份证号的学生信息
select * from stu where card is NULL
-- 查询空字符串的身份证号的学生信息
select * from stu where card =''
-- 查询填写身份证的学生信息
select * from stu where NOT card is null 
-- 查询学生所有信息,按照年龄从小到大排序(默认不写asc也是升序),即升序
select * from stu group by age asc
-- 查询学生所有信息,按照年龄从大到小排序,即降序
select * from stu group by age desc
-- 按照名字进行排序【对中文进行排序】
select * from stu group by CONVERT(name USING gbk)


-- 【聚合函数】
-- 查询学生总数
select count(*) from stu
-- 查询女生最大年龄
select max(age) from stu where sex ='女'
-- 查询1班最小年龄

-- 查询所有学生的最大年龄、最小年龄、平均年龄
select max(age),min(age),avg(age) from stu 
-- 01班共有多少个学生
select count(*) from stu where class= '01班'
-- 查询3班小于50岁的年龄有多少
select count(*) from stu where age < 50 and class='03班'

-- 查询各种性别
select sex as 性别, count(*) as 性别总人数 from stu group by sex
-- 查询各种年龄的人数
select age , count(*) from stu group by age

-- 查询各个班级学生的平均年龄、最大年龄、最小年龄
select class as 班级, count(class) as 班级, avg(age) as 平均年龄,max(age) as 最大年龄,min(age) 最小年龄 from stu group by class

-- 分别查询别个班下面的男女各多少人
select class ,sex ,count(*) from stu group by class ,sex
-- 查询男生总人数
select count(*) from stu where sex ="男"
select sex, count(*) from stu group by sex having sex='男'


-- 查询除01班以外其他班级的平均年龄、最大年龄、最小年龄

select class, avg(age),max(age),min(age) from stu where class !="01班" group by class
select class, avg(age),max(age),min(age) from stu group by class having not class='01班'

-- 统计每个班级中每种性别的学生人数,且按照班级进行升序
select class,sex,count(*) from stu group by class , sex order by class

-- 查询前3条数据
select * from stu LIMIT 0,3
select * from courses

select * from scores
-- 等值查询
select * from stu,scores where stu.studenNo=scores.studenNo
-- 内连接
select * from stu inner join scores on stu.studenNo=scores.studenNo
-- 查询课程信息及课程的成绩
select * from courses inner join scores on courses.cuseNo=scores.curseNo

-- 查询学生信息及学生的课程对应的成绩
select * from stu
inner join scores on stu.studenNo=scores.studenNo
inner join courses on courses.corseNo=scores.corseNo


-- 查询张飞的成绩,要求显示姓名,课程号,成绩
SELECT
stu.name as 姓名,courses.corseNO as 课程号 , stu.studenNo as 学号 , scores.score as 成绩
FROM
stu
INNER JOIN scores ON stu.studenNo = scores.studenNo
INNER JOIN courses ON courses.corseNo = scores.corseNo
where stu.`name`='张飞'

-- 查询男生中最高成绩,要求显示姓名,课程名,成绩
select stu.`name` as 姓名,courses.`name` as 课程名 , scores.score as 成绩 from stu inner join scores on stu.studenNo=scores.studenNo
inner join courses ON courses.corseNO=scores.corseNo where sex='男'order by score desc LIMIT 0,1

-- 查询所有学生的成绩,包括没有成绩的学生
-- 左连接join 前面的表示为左表,join 后面的表示为右表
select * from stu left join scores on stu.studenNo=scores.studenNo
-- 查询所有学生的成绩,包括没有成绩的学生,显示课程名
select * from stu left join scores on stu.studenNo=scores.studenNo
left join courses on courses.corseNO=scores.corseNo

 

posted on 2020-12-23 10:21  liyasheng  阅读(87)  评论(0编辑  收藏  举报