SQL数据表中数据的查询

作者: Kkite | 来源:发表于2019-07-18 15:40 被阅读3次
    -- 下面是对我数据库中的学生表stuinfo进行的查询操作
    
    -- 1.查询学生信息表中的所有学生的姓名与地址
    SELECT stuName AS '姓名' , stuAddr AS '地址' FROM stuinfo;
    
    -- 2.将多个列的结果合并为一个列
    SELECT CONCAT(stuName, '-', stuAddr) AS '姓名-地址' FROM stuinfo;
    
    -- 3.过滤重复的学生姓名
    SELECT DISTINCT stuName FROM stuinfo;
    
    -- 4.限制数据查询的数量
    SELECT * FROM stuinfo LIMIT 3,6;
    
    -- 5.按照学生序号查询序号最大的三个人
    SELECT * FROM stuinfo ORDER BY stuNO DESC LIMIT 0, 3;
    
    -- 6.查询所有男生
    SELECT * FROM stuinfo WHERE stuSex = '男';
    
    -- 7.查询所有编号大于10010的学生
    SELECT * FROM stuinfo WHERE stuNO > 10010;
    
    -- 8.查询所有不是云南的的学生
    SELECT * FROM stuinfo WHERE stuAddr != '云南';
    
    -- 9.查询编号在10005到10015之间的学生
    SELECT * FROM stuinfo WHERE stuNO >= 10005 AND stuNO <= 10015;
    
    -- 10.between and 区间查询
    SELECT * FROM stuinfo WHERE stuNO BETWEEN 10005 AND 10015;
    
    -- 11.查询数据库中张三,李四, 王五的信息
    SELECT * FROM stuinfo WHERE stuName IN('张三', '李四', '王五');
    
    -- 12.查询数据库中姓名不是张三,李四,王五的信息
    SELECT * FROM stuinfo WHERE stuName NOT IN('张三', '李四', '王五');
    
    -- 13.查询学生中姓王的学生
    SELECT * FROM stuinfo WHERE stuName LIKE '王_%';
    
    -- 14.查询姓王,编号大于10005的信息
    SELECT * FROM stuinfo WHERE stuName LIKE '王_%' AND stuNO >= 10005;
    
    -- 15.查询爱好为空的数据   NULL不能使用任何运算符进行运算
    -- 只能使用IS来判定
    SELECT * FROM stuinfo WHERE stuFav IS NULL;
    SELECT * FROM stuinfo WHERE stuFav IS NOT NULL;
    
    -- 16.统计所有学生一共加起来的分数
    SELECT SUM(stuScore) AS 'TotalScore' FROM stuinfo;
    
    -- COUNT 函数用于计数(用姓名统计时 把同名的学生忽略)
    -- 17.统计学生表中一共有多少学生
    SELECT COUNT(stuNO) FROM stuinfo;
    
    -- MAX用于求列中的最小值   MIN相反
    -- 18.求分数最高的学生是多少分
    SELECT MAX(stuScore) FROM stuinfo;
    
    -- 19.求学生表中学生编号的最大差异
    -- SELECT (SELECT MAX(stuNO) FROM stuinfo) - (SELECT MIN(stuNO) FROM stuinfo)
    SELECT (MAX(stuNO) - MIN(stuNO)) FROM stuinfo;
    
    -- AVG 函数用于求取平均数
    -- 20.查询学生的平均分
    SELECT AVG(stuScore) FROM stuinfo;
    
    -- 21.求大于平均分数的学生人数
    SELECT COUNT(stuNO) FROM stuinfo
        WHERE stuScore > (SELECT AVG(stuScore) FROM stuinfo);
    
    -- 22.按地域分组查看每个省有多少个学生
    SELECT stuAddr,COUNT(stuNO) FROM stuinfo
    GROUP BY stuAddr;
    
    -- 23.按地域分组查看每个省学生的平均成绩
    SELECT stuAddr,AVG(stuScore) FROM stuinfo
    GROUP BY stuAddr;
    
    -- 24.按地域分组查看每个省成绩大于60分的学生数量
    SELECT stuAddr, COUNT(stuNO) FROM stuinfo
    GROUP BY stuAddr, stuScore
    HAVING stuScore > 60;
    
    -- 多表连接查询 常用三种 内连接(交集) 左连接() 右连接
    -- 25.查询所有学生的信息
    SELECT * FROM stuinfo, stuclass;  -- 无条件的链接会做笛卡尔集
    SELECT * FROM stuinfo, stuclass WHERE stuinfo.classID = stuclass.classID;
    SELECT * FROM stuinfo INNER JOIN stuclass ON stuinfo.classID = stuclass.classID;
    
    -- 26.左连接 优先顾全左表数据 如果左表的数据在右表中没有对应,则用NULL显示右表的列
    SELECT * FROM stuinfo LEFT JOIN stuclass ON stuinfo.classID = stuclass.classID;
    
    -- 27.右连接
    SELECT * FROM stuinfo RIGHT JOIN stuclass ON stuinfo.classID = stuclass.classID;
    
    -- 28.查询一年级所有学生的信息
    SELECT * FROM stuinfo INNER JOIN stuclass ON stuinfo.classID = stuclass.classID
    WHERE className LIKE '一年级%';
    

    如有错误或建议欢迎大家指出与评论哈,希望这篇博文能帮助到大家,大家也可以分享给需要的人。

    如需转载,请注明出处。https://www.jianshu.com/p/c38aca7dc660

    相关文章

      网友评论

        本文标题:SQL数据表中数据的查询

        本文链接:https://www.haomeiwen.com/subject/tcsllctx.html