数据库9.12

2017-09-12  本文已影响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、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

上一篇 下一篇

猜你喜欢

热点阅读