mysql--创建表,插入数据,修改表名,删除表,简单查询/内连接、左/右连接

创建表mm:  其中id为主键且自增长

create table mm(id int(10) primary key not null unique auto_increment,

name varchar(20) not null,

age int(10),

class varchar(20) not null

);

为表mm,插入数据

insert into mm(id,name,age,class) values
(801,'刘*洋','',21,'XY'),
(802,'周X','',18,'uuy'),
(803,'YU全','',26,'lf');

修改表名mm为students:

alter table mm rename students;

删除mm表里所有的数据:

delete from mm;

删除整张表:(删除mm这张表)

drop table mm;

查询students表里的第2到4条记录:

select * from students limit 1,3;

从students表查询所有学生的学号(id)、姓名(name)和班级(class)的信息

select Id,name,class from studens;

从students表中查询XY和lf的学生信息:

select * from students where class ='XY' or class='lf';
or
select * from students where class in ('XY','lf');

从students表中查询年龄18~25岁的学生信息

select * from students where age>=18 and age<=25;
or
select * from students where age between 18 and 25;

从students表中查询每个班有多少人

select class, count(*) from students group by class;

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

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

查询周X的考试科目(c_name)和考试成绩(grade)

///内连接:利用内连接可获取两表的公共部分的记录

select c.c_name,sc.grade from student s,score sc,course c where s.name='周X' and sc.Stu_id=s.Id and sc.c_name=c.Id;

 外连接:

外连接:分左连接(left join)和右连接(right join)

关于左连接和右连接总结性的一句话:
左连接where只影向右表,右连接where只影响左表。

左连接:

 左连接后的检索结果是显示students表的所有数据和score表中满足where 条件的数据,若左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

select s.* ,sc.* from students s left join score sc on s.Id=sc.Stu_id;

右连接:

右连接检索结果是score表的所有数据和students中满足where 条件的数据。

select s.*,sc.* from students s right join score sc on s.Id=sc.Stu_id;

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

select a.C_name,avg(b.Grade) from course a,Score b where a.Id=b.C_name GROUP BY a.id;

 

posted @ 2018-12-05 16:10  我已不爱凯蒂  阅读(612)  评论(0编辑  收藏  举报