• 猿创征文|MySQL基本查询语句的应用(有实例与代码)


     知识储备

    基本查询语句:

            select <要列出的属性> from <表名> where <条件>;

    查询语句,涉及关联表:

            select <要列出的属性> from <表名1> join <表名2> on <连接条件> where <条件>;

    查询为空或为空字符串的条件:

            is null        //表示为空

            = ''        //表示为空字符串

    获取当前时间

            SELECT NOW()        //输出:年-月-日 时:分:秒

            SELECT CURRENT_DATE();        //输出:年-月-日

            select time(now());        // 时:分:秒

            year(now());month(now());day(now());        //单独获取年,月,日的日期

    属性取别名:

            <旧属性名> as <新属性名>

    函数允许您对表中符合特定条件的所有行进行计数

            count()

    排序

            升序:asc  降序:desc

    限制输出

            limit n;        //只选择前n行

    数据处理

            最大:max,最小:min,平均:avg,求和:sum

    分组使用或查询:

            group by

    模糊查找表达式:

            %:任意多个任意字符

            _:一个任意字符

    判断字符长度

            select length('王小二');        //utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。

    去重:

            distinct:在对字段进行去重的时候,要保证distinct在所有字段的最前面。如果distinct关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

    索引(创建,查找,删除)

            创建索引:alter table <表名> add index <索引名>(属性);

            查看索引:show index from <表名>;

            删除索引:drop index <索引名>on <表名>;

     数据库内容

    表名

    1. mysql> show tables;
    2. +----------------+
    3. | Tables_in_csdb |
    4. +----------------+
    5. | course |
    6. | open_course |
    7. | school |
    8. | select_course |
    9. | student |
    10. | teacher |
    11. +----------------+

    数据表内容

     实例与解析

    实验原理及知识点:

    (1)掌握MySQL数据库中创建数据库和表的方法

    (2)掌握基本查询语句的应用

    1、在student表中查询出生日期在2003年以前的学生的学号、姓名和年龄

    源代码:select sno,sname,year(now())-year(sbirthday) as age from student where year(sbirthday)<2003;

    2、查询student表中女生的人数,以别名“女生人数”命名

    源代码:select count(distinct(sno)) as '女生人数' from student where ssex='女';

    3、查询teacher表中每一位教授的教师号,姓名和学历

    源代码:select tno,tname,academic from teacher;

    4、查询teacher表中没有职称的教师的教工号,姓名

    源代码:select tno,tname from teacher where professional='' or professional is null;

    5、查询选修课程号为C603的学生的学号和期末成绩,并要求平时成绩在85到100分之间

    源代码:select cno,final_grade from select_course where daily_grade>=85 and daily_grade<=100;

    6、按性别统计student表中学生的平均年龄,并输出各性别下学生的平均年龄的值(注意以平均年龄来命名)

    源代码:select ssex,avg(year(now()) - year(sbirthday)) as '平均年龄' from student group by ssex;

    7、统计选课门数超过3门以上的学生的学号及其选课门数

    源代码:select sno,count(cno) from select_course group by sno having count(cno) >= 3;

    8、统计学号是’B20190303’(或每个学生)所选课程总评成绩的平均分,

    其中总评成绩=daily*0.3+final*0.7(平均分保留小数位1位)

    源代码:SELECT sno, round(avg(daily_grade*0.3 + final_grade*0.7), 1)'总评平均成绩' from select_course group by sno;

    9、输出student表中年龄最大的男生的所有信息

    源代码:select * from student where sbirthday = (select min(sbirthday) from student where ssex = '男') and ssex = '男';

    10、显示所有姓王学生的姓名、出生日期、TEL

          源代码:select sname,sbirthday,tel from student where sname like '王%';

    11、查询总评成绩大于85分的学生的学号、课程号和总评成绩,并按照课程号的升序,再按照总评成绩的降序排列

             源代码:SELECT sno, cno, (daily_grade*0.3 + final_grade*0.7) AS '总评成绩' FROM select_course where (daily_grade*0.3 + final_grade*0.7) > 85 order by cno asc, '总评成绩' desc;

    12、查询选课在2门以上且各门课程期末成绩均高于85分的学生的学号及其总成绩,查询结果按照总成绩降序列出

    源代码:select sno,sum(daily_grade*0.3 + final_grade*0.7) as '总成绩' from select_course

        -> where final_grade >= 85

        -> group by sno having count(sno) >= 2

        -> order by '总成绩' desc;

    13、查询所选课程期末平均成绩最高的前三个学生的学号,并按期末平均成绩降序输出

          源代码:select sno from select_course group by sno order by avg(final_grade) desc limit 3;

    14、查询学生的期末总成绩大于250分的学生的学号、期末总成绩和期末平均成绩

          源代码:select sno,sum(final_grade) as '期末总成绩',avg(final_grade) as '期末平均成绩' from select_course group by sno having sum(final_grade) > 250;

    15、查询选修课程号为C601的学生的期末最高分、最低分及之间相差的分数

          源代码:select max(final_grade)as '期末最高分',min(final_grade) as '期末最低分',max(final_grade)-min(final_grade) as '期末最高分与最低分之差' from select_course where cno = 'C601';

    16、查询以"数据"开头,且倒数第3个字符为"统"的课程的详细情况。

          源代码:select cname from course where cname like '数据%统__';

    17、统计姓名中含有三个汉字的学生的数量

          源代码:select sname,count(*) from student where length(sname) >= 9 group by sname;

    18、查询选修了课程的学生的学号

          源代码:select distinct(sno) from select_course;

    19、查询参加学习的学生所学的课程号和总分

            源代码:select sno,cno,sum(daily_grade*0.3 + final_grade*0.7) as '总分' from select_course group by sno;

    20、查询参加学习的学生学号,姓名与所学课程每门课的总成绩

          源代码:select distinct student.sno,student.sname,select_course.cno,select_course.daily_grade*0.3 + select_course.final_grade*0.7as '总成绩' from student join select_course on student.sno=select_course.sno;

    21、在Student表中依据学生电话创建普通索引(或唯一索引)tel_index,查询后删除该索引

    源代码:

            创建索引:alter table student add index tel_index(tel);

            查看索引:show index from student;

            删除索引:drop index tel_index on student;

  • 相关阅读:
    Linux 系统调用IO口,利用光标偏移实现文件复制
    GEE错误——Image.select: Pattern ‘MDF‘ did not match any bands
    Java程序员毕业N年系列----毕业二年
    解决 Unity3D AssetBundle 异步加载与同步加载冲突问题
    【Kaggle】如何有效避免OOM(out of memory)和漫长的炼丹过程
    Web3失败下互联网的未来转型之路
    [附源码]计算机毕业设计springboot演唱会门票售卖系统
    layui中页面切分
    emlog文章页实现自动加关键词内链方法(非插件)
    YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享
  • 原文地址:https://blog.csdn.net/weixin_53050357/article/details/127256210