• 多测师肖老师__三表(9.1)


    表结构:

    Student学生表(学号、姓名、性别、年龄、编辑)

    Course课程表(编号、课程名称)

    sc选课表(选课编号、学号、课程编号、成绩)

     create table student(
    
    stu_no int,
    
    stu_name varchar(10),
    
    sex char(1),
    
    age int(3),
    
    edit varchar(20) )
    DEFAULT  charset=utf8;
    insert into student values
    
    (1,'wang','',21,'hello'),
    
    (2,'小明','',22,'haha2'),
    
    (3,'hu','',23,'haha3'),
    
    (4,'li','',25,'haha4');
    
    create table course(
    
    c_no int,
    
    c_name varchar(10)
    
     )
    
    DEFAULT  charset=utf8;
    
    insert into course values
    
    (1,'计算机原理'),
    
    (2,'java'),
    
    (3,'c'),
    
    (4,'php'),
    
    (5,'py'); 
    
    #rop  table   sc;
    
    create table sc(
    
    sc_no int,
    
    stu_no int,
    
    c_no int,
    
    score int(3))
    
    DEFAULT  charset=utf8;
    
    insert into sc values
    
    (1,1,1,80),
    
    (2,2,2,90),
    
    (3,2,1,85),
    
    (4,2,3,70),
    
    (5,2,4,95),
    
    (6,2,5,89);



    select * from student ;
    select * from sc ;
    select * from course ;

     ======================================

    student

     sc

     course

     

      ======================================

     1、三表隐藏内连接

    格式:

    select * FROM 表1   ,表2,表3  where 表1.关联字段=表2.关联字段    and  表2.关联字段=表3.关联字段 ;

     

     

    案例:select * FROM student a,sc b,course c where a.stu_no=b.stu_no and b.c_no=c.c_no ;

     

     

     2、三表普通内连接

     格式:select * FROM 表1   inner  join   表2 on  表1.关联字段=表2.关联字段   inner  join   表3   on   表2.关联字段=表3.关联字段 ;

    案例:select * FROM student a INNER JOIN sc b on a.stu_no=b.stu_no INNER JOIN course c on b.c_no=c.c_no ;

     3、三表左连接

     格式:select * FROM 表1   left  join   表2 on  表1.关联字段=表2.关联字段   left  join   表3   on   表2.关联字段=表3.关联字段 ;

    案例:select  *   FROM   student a  left JOIN sc b   on    a.stu_no=b.stu_no  left JOIN course c on  b.c_no=c.c_no ;

    4、三表右连接

     格式:select * FROM 表1   right join   表2 on  表1.关联字段=表2.关联字段   right  join   表3   on   表2.关联字段=表3.关联字段 ;

    案例:select  *   FROM   student a  right JOIN sc b   on    a.stu_no=b.stu_no  right JOIN course c on  b.c_no=c.c_no ;

    5、先合两个表,在合另一张表

    格式:select   *  from (select    字段名   FROM 表1   right join   表2 on  表1.关联字段=表2.关联字段 )别名,表3 where 

    合表.关联字段=表3.关联字段

    select  *  from  (select  a.stu_no,stu_name,sex ,age ,edit ,sc_no ,c_no ,score FROM   student a  right JOIN sc b   on    a.stu_no=b.stu_no)s ,course c  where s.c_no=c.c_no  ;

     6、把三表单成单表理解

     (SELECT b.*,c.* FROM sc a,student b,course c WHERE a.stu_no=b.stu_no AND a.c_no=c.c_no)s 当成单表
    select * from (SELECT b.*,c.* FROM sc a,student b,course c WHERE a.stu_no=b.stu_no AND a.c_no=c.c_no)s

    =============================================

    (1)写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名

    条件: c_name=“计算机原理”

    结果:stu_no     stu_name

    方法一:

    SELECT stu_name,stu_no from student where stu_no in(SELECT stu_no from sc where c_no =(SELECT c_no from course where c_name='计算机原理') )

    方法二:

    select student.stu_no,stu_name from student left JOIN sc on student.stu_no=sc.stu_no left join course on course.c_no=sc.c_no where c_name='计算机原理';

    方法三:

    SELECT stu_name FROM sc a,student b,course c WHERE a.stu_no=b.stu_no AND a.c_no=c.c_no and c_name='计算机原理';

    方法四:

    select a.stu_no,stu_name from  student a INNER JOIN sc  b on  a.stu_no=b.stu_no INNER JOIN course c on b.c_no=c.c_no  where c_name='计算机原理'

     

    (2)写一个SQL语句,查询“小明”同学选修的课程名称

    条件: stu_name='小明'

    结果:c_name

    方法一:

    SELECT c_name FROM sc a,student b,course c WHERE a.stu_no=b.stu_no AND a.c_no=c.c_no and stu_name='小明';

     

    (3)写一个SQL语句,查询选修了5门课程的学生学号和姓名

    SELECT a.stu_no,stu_name FROM sc a,student b,course c WHERE a.stu_no=b.stu_no AND a.c_no=c.c_no group by stu_name HAVING COUNT(stu_name)=5

     

     

     

    =============================================

    (1)备份表结构:


    create table sc1 like sc ;

    (2)备份数据

    a、插入全部数据

    案例1:INSERT into  sc1  select  *  from  sc ;

    b、插入部分数据

    案例2:INSERT into sc2(sc_no,c_no)  select  sc_no,c_no from  sc ;

    (3)备份表和数据

    create table sc3 as(select * from sc)

    =============================================

    linux中备份

    1、备份  

    格式:mysqldump -u root -p  原库>新的脚本名.sql

    案例:mysqldump -u root -p dcs>ss.sql

    2、还原:

    格式:mysql -u root -p 新库<备份好的数据脚本.sql文件

    mysql -u root -p dcs<ss.sql

  • 相关阅读:
    JLOI2014 聪明的燕姿【搜索-细节】
    JOI2014 バス通学【思维】
    【线段树】USACO 08FEB Hotel G
    USACO20FEB Equilateral Triangles P【思维-曼哈顿距离-切比雪夫距离】
    USACO 2019DEC Milk Visits
    【规律】ABC179 E Sequence Sum
    【前缀和优化dp】ABC179 D Leaping Tak
    SPOJ2916 GSS5-Can you answer these queries V【线段树】
    SPOJ1557 GSS2-Can you answer these queries II【线段树】
    推荐系统之余弦相似度的Spark实现
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/15711102.html
Copyright © 2020-2023  润新知