美文网首页
数据库9.12

数据库9.12

作者: 榴莲臭豆腐 | 来源:发表于2017-09-12 18:39 被阅读0次

    1、创建表

    create table 表名(id int(4), name char(10) );

    insert into 表名(id,name) values(值1,值2...),(),();

    查询:

    select * from 表名 where语句;

    student;

    +-----+--------+-----+-----------+------------+--------------+

    | Id  | Name  | Sex | BirthYEAR | Department | Address      |

    +-----+--------+-----+-----------+------------+--------------+

    | 901 | 张老大 | 男  | 1985      | 计算机系  | 北京市海淀区 |

    | 902 | 张老二 | 男  | 1986      | 中文系    | 北京市昌平区 |

    | 903 | 张三  | 女  | 1990      | 中文系    | 湖南省永州市 |

    | 904 | 李四  | 男  | 1990      | 英语系    | 辽宁省阜新市 |

    | 905 | 王五  | 女  | 1991      | 英语系    | 福建省厦门市 |

    | 906 | 王六  | 男  | 1988      | 计算机系  | 湖南省衡阳市 |

    +-----+--------+-----+-----------+------------+--------------+

    score;

    +----+--------+--------+-------+

    | Id | Stu_id | C_name | Grade |

    +----+--------+--------+-------+

    |  1 |    901 | 计算机 |    98 |

    |  2 |    901 | 英语  |    80 |

    |  3 |    902 | 计算机 |    65 |

    |  4 |    902 | 中文  |    88 |

    |  5 |    903 | 中文  |    95 |

    |  6 |    904 | 计算机 |    70 |

    |  7 |    904 | 英语  |    92 |

    |  8 |    905 | 英语  |    94 |

    |  9 |    906 | 计算机 |    90 |

    | 10 |    906 | 英语  |    85 |

    +----+--------+--------+-------+

    1、查询student表的所有记录

    select * from student;

    2、查询student表的第2条到4条记录

    limit a,b  a当前行  b 显示的行数  从当前行下一行开始显示

    limit 1,3

    select * from student limit 1,3;

    练习:查询成绩表前三行数据

    select * from score limit 0,3;

    3、从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

    select id,name,department from student;

    4、从student表中查询计算机系和英语系的学生的信息

    select * from student where department='计算机系' or department='英语系';

    5、从student表中查询年龄18~22岁的学生信息

    select * from student where 2017-BirthYEAR between 18 and 22;

    select * from student where 2017-BirthYEAR>=18 and 2017-BirthYEAR<=22;

    count() sum()  max()  min avg  distinct()

    mod 求余

    select grade,(grade mod 3) from score;

    select grade,(grade mod 3) from score where (grade mod 3) =0;

    select..from ..(where)..group by ..having ..order by ..limit;

    group by  分组  having 分组后进行的条件选择

    order by ..asc

    order by  列名 desc

    对成绩表中各科成绩从高到低排序,如果成绩相同,则按照学号由小到大排序

    select stu_id,grade,c_name from score order by c_name desc,grade desc,stu_id asc;

    +--------+-------+--------+

    | stu_id | grade | c_name |

    +--------+-------+--------+

    |    901 |    98 | 计算机 |

    |    906 |    90 | 计算机 |

    |    904 |    70 | 计算机 |

    |    902 |    65 | 计算机 |

    |    905 |    94 | 英语  |

    |    904 |    92 | 英语  |

    |    906 |    85 | 英语  |

    |    901 |    80 | 英语  |

    |    903 |    95 | 中文  |

    |    901 |    88 | 中文  |

    |    902 |    88 | 中文  |

    +--------+-------+--------+

    between  and

    limit

    6、从student表中查询每个院系有多少人

    select count(*),Department from student group by Department;

    7、从score表中查询每个科目的最高分

    max(grade)

    select max(grade),c_name from score group by c_name;

    8、计算每个学生的总成绩

    select sum(grade),stu_id from score group by stu_id;

    总成绩大于150分的学生

    select sum(grade),stu_id from score group by stu_id having sum(grade)>150;

    哪一性别的学生人数是大于2人的?

    select sex,count(*) from student group by sex having count(*)>2;

    9、计算每个考试科目的平均成绩

    select avg(grade),c_name from score group by c_name;

    10、将计算机考试成绩按从高到低进行排序

    select grade,c_name from score where c_name="计算机"  order by grade desc;

    11、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

    like

    %全匹配

    _ 单个字符匹配

    name like “%18K%”

    select goods_name from ecs_goods where goods_name like '____18K_____';

    1、多表连接一般步骤

    ① 找涉及了哪些表

    ② 找表与表的对应关系

    ③ 建立连接关系

    ④ 写完整的SQL

    注意点:

    1、别名用法

    2、一旦用了别名,select where 都要用别名了

    3、如果查询的内容在多个表中都有相同的字段,那么必须指明是来自哪个表

    多表查询:

    1、男同学的考试科目

    select c_name,sex from score,student where student.id=score.stu_id and sex="男";

    select distinct c_name from score where stu_id in (select id from student where sex='男');

    2、姓张同学的考试科目

    select c_name from score,student where student.id=score.stu_id and name like "%张%";

    3、同时学习英语和计算机的学生信息

    select s1.* from student s1,score s2,score s3 where s1.id=s2.stu_id and s1.id=s3.stu_id and s2.c_name='计算机' and s3.c_name='英语';

    练习:

    1、女同学的考试科目

    select distinct c_name from score,student where student.id=score.stu_id and sex='女';

    2、同时学习中文和计算机的学生信息;

    select s1.* from student s1,score s2,score s3 where s1.id=s2.stu_id and s1.id=s3.stu_id and s2.c_name='计算机' and s3.c_name='中文’;

    3、姓王的同学并且有一科以上成绩大于80分的学生信息;

    select distinct student.id,name,sex,birthyear,department,address from student,score where student.id=score.stu_id and name like '%王%' and grade>80;

    1、查询李四的考试科目(c_name)和考试成绩(grade)

    2、查询计算机成绩低于95的学生信息

    3、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

    相关文章

      网友评论

          本文标题:数据库9.12

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