• 数据库mysql 基本命令


    。。。。。= =。。。。

    进入mysql: mysql -uroot ;

    创建一个数据库: create database [数据库名字]; (注意最后的分号不能漏)

    删除一个数据库:drop database [数据库名字];

    查看已有的数据库:show databases; (查看已存在的表类似)

    选中一个数据库:use [数据库名字];

    创建表:create table [表名] (

          [成员名]  char(8) ,

          ……);

    /*

    如果出现了中文乱码,输入:

    alter database mydb  character set utf8;

    具体看:http://www.pc6.com/infoview/article_63586.html

    修改表的操作:http://www.bkjia.com/Mysql/1122917.html

    */

    查看当前数据库的状态:status;

    查看表中元素:select*from [表名];

    向表中插入一个元素:insert into [表名] values("……","……","……","……") ;

    向表中删除一个元素:delete from [表名]

              where [符合某种特性]( 如:Sno=1 );

    删除表:drop table [表名]

    更新表中数据:update [MYTABLE] set sex=”f” where name=’hyq’; (当然sex , name是我这边表里的两个元素)

    练习:

    1.分别查询学生表和学生修课表中的全部数据。

    SELECT * FROM stu
    SELECT * FROM course
    

      

    2.查询成绩在70到80分之间的学生的学号、课程号和成绩。

    SELECT Sno,Cno,Grade 
    FROM SC
    WHERE Grade BETWEEN 70 AND 80
    

      

    3.查询C01科目的最高分

    select max(Grade)
    from SC
    where Cno='C01' ;
    

      

    查询C01科目的第二名的学号和分数

    select Sno,Grade
    from SC
    where Cno='C01'
    order by Grade desc
    limit 1,1;
    

      

    4.查询学生都选修了哪些课程,要求列出课程号。

    select Cname,Cno
    from SC
    where Cno in(select Cno from SC) ; //a in(……) 表示a属于……这个集合中的元素。
    

      

    5.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。

    select avg(Grade),max(Grade),min(Grade)
    from SC
    where Cno='C02' ;
    

      

    6.统计每个系的学生人数。

    select Major,count(*)
    from stu
    group by Major;
    

      

    7.统计每门课程的修课人数和考试最高分。

    select Cname,count(*),max(Grade)
    from SC,course
    where SC.Cno=course.Cno
    group by SC.Cno;
    

      

    8.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。

    select stu.Sname,count(sc.Sno)
    from stu,sc
    where stu.Sno=sc.Sno
    group by stu.Sname
    order by count(sc.Sno) asc ; //注意这里order by,group by两句位置不能反
    

      

    9.统计选修课的学生总数和考试的平均成绩。

    select count(distinct(Sno)) , avg(grade)
    from sc ;
    

      

    10.查询选课门数超过2门的学生的平均成绩和选课门数。

    (1)

    select stu.Sname,avg(sc.grade),count(sc.Sno)
    from stu,sc
    where stu.Sno=sc.Sno
    group by stu.Sno
    order by count(sc.Sno) asc limit 3,10 ;
    

    (2)

    select stu.sname,avg(sc.grade),count(sc.sno)
    from stu,sc
    where stu.sno=sc.sno
    group by stu.sno
    having count(sc.sno) > 2 ; //having 帅选语句
    

    11.列出总成绩超过200分的学生,要求列出学号、总成绩。

    select sc.sno , sum(sc.grade)
    from sc
    group by sc.sno
    having sum(sc.grade) > 200 ;
    

    12.查询选修了c02号课程的学生的姓名和所在系。

    select stu.sname,stu.major
    from stu,sc
    where stu.sno=sc.sno and sc.cno = 'C02' ;
    

    13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。

    select stu.Sname , sc.Cno , sc.Grade
    from stu , sc
    where stu.Sno = sc.Sno
    group by sc.Grade 
    order by sc.Grade desc
    having sc.Grade>80 ;
    

    14.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。

    select stu.Sname , stu.Ssex , sc.Grade
    from sc , stu , course
    where sc.Sno = stu.Sno and stu.Ssex = '男'
    and sc.Cno = course.Cno and course.Cname = '数据库基础';
    

    15.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。

     select A.Sname , A.Sage
     from stu A
     join stu B on(A.Sname!=B.Sname and A.Sage=B.Sage)
     group by A.Sname
     order by A.Sage;
    //表的自连接,说白了就是开两个变量
    

    16.查询哪些课程没有人选,要求列出课程号和课程名。

    select course.Cname , course.Cno
    from course
    where course.Cno not in(select Cno from sc)
    group by course.Cname;
    

    17.查询有考试成绩的所有学生的姓名、修课名称及考试成绩

     select stu.Sname , course.Cname , sc.Grade
     from stu , sc , course
     where stu.Sno=sc.Sno and sc.Cno=course.Cno and
     sc.Grade is not NULL;
    //注意这里不能写 sc.Grade != NULL

    18.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
    --并要求将这两个查询结果合并成一个结果集,
    --并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。

     select stu.Sname,stu.Ssex,course.Cname,sc.Grade
     from stu , sc , course
     where stu.Sno=sc.Sno and sc.Cno=course.Cno and
     (stu.Major='计算机' or stu.Major='信息');
    //注意这里的括号不能去掉,也可以使用union , 感觉就是分两次写一下选一门课的情况,然后中间加个union ;
    

    19.用子查询实现如下查询:

    (1)    查询选修了C01号课程的学生的姓名和所在系。

    select stu.Sname , stu.Major
    from stu
    where stu.Sno in(select Sno from sc where sc.Cno='C01');
    

    (2)    查询数学系成绩80分以上的学生的学号、姓名。

    select stu.Sno , stu.Sname
    from stu
    where stu.Sno in (
    select sc.Sno
    from sc
    where sc.Grade>80) ;
    

    (3)    查询计算机系学生所选的课程名.

    select course.Cname
    from course
    where course.Cno in(
    select sc.Cno
    from sc
    where sc.Sno in(
    select stu.Sno
    from stu
    where stu.Major='计算机')) ;
    

    20.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:

    (1)    在建表过程中插入

    create table sc1 (
    select stu.Sname , course.Cname , course.Cno
    from stu , sc , course
    where stu.Sno=sc.Sno and sc.Cno=course.Cno and
    stu.Major='计算机' and sc.Grade>80) ;
    // select * into new_table from …… 注意mysql里不能使用这种写法
    

    (2) 往表sc2插入查询得到的结果

    create table sc2 (
    Sname char(20),
    Cname char(20),
    Cno char(2)
    );
    insert sc2
    select stu.Sname , course.Cname , course.Cno
    from stu , sc , course
    where stu.Sno=sc.Sno and sc.Cno=course.Cno and
    stu.Major='计算机' and sc.Grade>80;
    

    21.从sc表中删除修课成绩小于0分的栏

    delete from sc
    where grade<0 ;
    

    22.将所有选修了"c01"课程的学生的成绩加0分

    update sc
    set grade=grade+0
    where Cno='C01';
    

    23.删除course表的hour列

    alter from course
    drop column Period;
    

      

  • 相关阅读:
    jjwt 简单使用Java
    vue鼠标悬浮图片处理
    第54天 [js] 写一个函数找出给定数组中的最大差值
    第71天 [js] 写一个方法,实现深浅拷贝
    第65天 [css]写一个小心心
    记一次ftp服务器搭建
    如何向iOS终端发送自定义推送
    对内网穿透ssh关闭密码认证
    C++特化调用模版类的模板方法
    Docker网络配置的几种常见模式
  • 原文地址:https://www.cnblogs.com/get-an-AC-everyday/p/5553408.html
Copyright © 2020-2023  润新知