Sutdent表的定义

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

Id

学号

INT(10)

Name

姓名

VARCHAR(20)

Sex

性别

VARCHAR(4)

Birth

出生年份

YEAR

Department

院系

VARCHAR(20)

Address

家庭住址

VARCHAR(50)

Score表的定义

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

Id

编号

INT(10)

Stu_id

学号

INT(10)

C_name

课程名

VARCHAR(20)

Grade

分数

INT(10)

1.创建student和score表

CREATE  TABLE  student (

id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,

name  VARCHAR(20)  NOT NULL ,

sex  VARCHAR(4)  ,

birth  YEAR,

department  VARCHAR(20) ,

address  VARCHAR(50)

);

创建score表。SQL代码如下:

CREATE  TABLE  score (

id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT ,

stu_id  INT(10)  NOT NULL ,

c_name  VARCHAR(20) ,

grade  INT(10)

);

2.为student表和score表增加记录

向student表插入记录的INSERT语句如下:

INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');

INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');

INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');

INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');

INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');

INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');

向score表插入记录的INSERT语句如下:

INSERT INTO score VALUES(NULL,901, '计算机',98);

INSERT INTO score VALUES(NULL,901, '英语', 80);

INSERT INTO score VALUES(NULL,902, '计算机',65);

INSERT INTO score VALUES(NULL,902, '中文',88);

INSERT INTO score VALUES(NULL,903, '中文',95);

INSERT INTO score VALUES(NULL,904, '计算机',70);

INSERT INTO score VALUES(NULL,904, '英语',92);

INSERT INTO score VALUES(NULL,905, '英语',94);

INSERT INTO score VALUES(NULL,906, '计算机',90);

INSERT INTO score VALUES(NULL,906, '英语',85);

3.查询student表的所有记录

mysql> SELECT * FROM student;

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

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

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

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

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

mysql> SELECT * FROM student LIMIT 1,3;

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

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

mysql> SELECT id,name,department FROM student;

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

| id  | name   | department |

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

| 901 | 张老大 | 计算机系   |

| 902 | 张老二 | 中文系     |

| 903 | 张三   | 中文系     |

| 904 | 李四   | 英语系     |

| 905 | 王五   | 英语系     |

| 906 | 王六   | 计算机系   |

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

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

mysql> SELECT * FROM student WHERE department IN ('计算机系','英语系');

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

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

7.从student表中查询年龄21~25岁的学生信息

mysql> SELECT id,name,sex,2016-birth AS age,department,address

-> FROM student

-> WHERE 2016-birth BETWEEN  21 AND 25;

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

| id  | name | sex  | age  | department | address      |

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

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

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

mysql> SELECT id,name,sex,2016-birth AS age,department,address

-> FROM student

-> WHERE 2016-birth>=21 AND 2016-birth<=25;

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

| id  | name | sex  | age  | department | address      |

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

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

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

8.从student表中查询每个院系有多少人

mysql> SELECT department, COUNT(id) FROM student GROUP BY department;

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

| department | COUNT(id) |

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

| 计算机系   |         2 |

| 英语系     |         2 |

| 中文系     |         2 |

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

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

mysql> SELECT c_name,MAX(grade) FROM score GROUP BY c_name;

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

| c_name | MAX(grade) |

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

| 计算机 |         98 |

| 英语   |         94 |

| 中文   |         95 |

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

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

mysql> SELECT c_name, grade

->      FROM score WHERE stu_id=

->  (SELECT id FROM student

->    WHERE name= '李四' );

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

| c_name | grade |

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

| 计算机 |    70 |

| 英语   |    92 |

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

11.用连接的方式查询所有学生的信息和考试信息

mysql> SELECT student.id,name,sex,birth,department,address,c_name,grade

-> FROM student,score

->  WHERE student.id=score.stu_id;

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

| id  | name   | sex  | birth | department | address      | c_name | grade |

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

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

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

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

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

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

| 904 | 李四   | 男   |  1990 | 英语系     | 辽宁省阜新市 | 计算机 |    70 |

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

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

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

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

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

mysql> select a.id,a.name,a.sex,a.birth,a.department,a.address,b.c_name,b.grade from student as a

inner join score as b

on a.id=b.stu_id;
+-----+-----------+------+-------+--------------+--------------+-----------+-------+
| id | name | sex | birth | department | address | c_name | grade |
+-----+-----------+------+-------+--------------+--------------+-----------+-------+
| 901 | 张老大 | 男 | 1985 | 计算机系 | 北京海淀 | 计算机 | 98 |
| 901 | 张老大 | 男 | 1985 | 计算机系 | 北京海淀 | 英语 | 80 |
| 902 | 张老二 | 男 | 1986 | 中文系 | 北京昌平 | 计算机 | 65 |
| 902 | 张老二 | 男 | 1986 | 中文系 | 北京昌平 | 中文 | 88 |
| 903 | 张三 | 女 | 1990 | 中文系 | 湖南永州 | 中文 | 95 |
| 904 | 李四 | 男 | 1990 | 英语系 | 辽宁阜新 | 计算机 | 70 |
| 904 | 李四 | 男 | 1990 | 英语系 | 辽宁阜新 | 英语 | 92 |
| 905 | 王五 | 女 | 1991 | 英语系 | 福建厦门 | 英语 | 94 |
| 906 | 王六 | 男 | 1988 | 计算机系 | 湖南衡阳 | 计算机 | 90 |
| 906 | 王六 | 男 | 1988 | 计算机系 | 湖南衡阳 | 英语 | 85 |
+-----+-----------+------+-------+--------------+--------------+-----------+-------+
10 rows in set (0.03 sec)

12.计算每个学生的总成绩

mysql> SELECT student.id,name,SUM(grade) FROM student,score

-> WHERE student.id=score.stu_id

-> GROUP BY id;

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

| id  | name   | SUM(grade) |

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

| 901 | 张老大 |        178 |

| 902 | 张老二 |        153 |

| 903 | 张三   |         95 |

| 904 | 李四   |        162 |

| 905 | 王五   |         94 |

| 906 | 王六   |        175 |

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

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

mysql> SELECT c_name,AVG(grade) FROM score GROUP BY c_name;

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

| c_name | AVG(grade) |

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

| 计算机 |    80.7500 |

| 英语   |    87.7500 |

| 中文   |    91.5000 |

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

14.查询计算机成绩低于95的学生信息

mysql> SELECT * FROM student

-> WHERE id IN

-> (SELECT stu_id FROM score

-> WHERE c_name="计算机" and grade<95);

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

15.查询同时参加计算机和英语考试的学生的信息

mysql> SELECT *  FROM student

->  WHERE id =ANY

->  ( SELECT stu_id FROM score

->  WHERE stu_id IN (

->          SELECT stu_id FROM

->          score WHERE c_name=  '计算机')

->  AND c_name= '英语' );

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

mysql> SELECT a.* FROM student a ,score b ,score c

-> WHERE a.id=b.stu_id

-> AND b.c_name='计算机'

-> AND a.id=c.stu_id

-> AND c.c_name='英语';

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

| id  | name   | sex  | birth | department | address      |

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

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

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

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

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

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

mysql> SELECT stu_id, grade

->  FROM score WHERE c_name= '计算机'

->  ORDER BY grade DESC;

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

| stu_id | grade |

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

|    901 |    98 |

|    906 |    90 |

|    904 |    70 |

|    902 |    65 |

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

17.从student表和score表中查询出学生的学号,然后合并查询结果

mysql> SELECT id  FROM student

-> UNION

-> SELECT stu_id  FROM score;

+-----+

| id  |

+-----+

| 901 |

| 902 |

| 903 |

| 904 |

| 905 |

| 906 |

+-----+

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

mysql> SELECT student.id, name,sex,birth,department, address, c_name,grade

-> FROM student, score

-> WHERE

->  (name LIKE  '张%'  OR name LIKE  '王%')

->  AND

->  student.id=score.stu_id ;

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

| id  | name   | sex  | birth | department | address      | c_name | grade |

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

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

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

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

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

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

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

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

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

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

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

mysql> SELECT student.id, name,sex,birth,department, address, c_name,grade

-> FROM student, score

-> WHERE address LIKE '湖南%'   AND

->  student.id=score.stu_id;

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

| id  | name | sex  | birth | department | address      | c_name | grade |

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

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

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

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

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

mysql——查询练习的更多相关文章

  1. mysql查询性能优化

    mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...

  2. Mysql查询——深入学习

    1.开篇 之前上一篇的随笔基本上是单表的查询,也是mysql查询的一个基本.接下来我们要看看两个表以上的查询如何得到我们想要的结果. 在学习的过程中我们一起进步,成长.有什么写的不对的还望可以指出. ...

  3. Mysql 查询练习

    Mysql 查询练习 ---创建班级表 create table class( cid int auto_increment primary key, caption ) )engine=innodb ...

  4. mysql 查询去重 distinct

    mysql 查询去重 distinct   待完善内容..

  5. MySQl查询区分大小写的解决办法

    通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: ca ...

  6. 【转】mysql查询结果输出到文件

    转自:http://www.cnblogs.com/emanlee/p/4233602.html mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select ...

  7. MySQL查询缓存

    MySQL查询缓存 用于保存MySQL查询语句返回的完整结果,被命中时,MySQL会立即返回结果,省去解析.优化和执行等阶段. 如何检查缓存? MySQL保存结果于缓存中: 把SELECT语句本身做h ...

  8. mysql 查询数据时按照A-Z顺序排序返回结果集

    mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...

  9. MySQL查询今天/本周/上周/本月/上个月份的数据

    MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周.上周.本月.上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看. 查询当前今天的数据 SELECT name,sub ...

  10. [转]向facebook学习,通过协程实现mysql查询的异步化

    FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...

随机推荐

  1. 防止apache下面直接输入目录访问文件

    有些项目链接会暴露服务器上面的文件地址,如何访问文件被访问呢 方法一: 在项目入口文件下面新加一个.htaccess文件(apache开启重写模式才会加载这个文件,否则这个文件配置不会生效) 文件中加 ...

  2. oop、configparser、xml模块

    本节大纲:一:在python中,有两种编程思想.1:函数式编程.2:oop.无论是函数式编程还是oop都是相辅相成.并不是说oop比函数式编程就好.各有各的优缺点.在其他语言中java等只能以面向对象 ...

  3. Scalding初探之二:动手来做做小实验

    输入文件 Scalding既可以处理HDFS上的数据,也可以很方便地在本地运行处理一些test case便于debug,Source有好多种 1 TextLine(filename) TextLine ...

  4. Socket编程基础——面向连接TCP

    WinSock是Windows环境下的网络编程接口,它最初是基于Unix环境下的BSD Socket,是一个与网络协议无关的编程接口.WinSock包含两个主要版本,即WinSock1和WinSock ...

  5. CommandExtra.lua --游戏命令扩展

    --[[作者信息: Command Extra (游戏命令扩展) 作者QQ:247321453 作者Email:247321453@qq.com 修改日期:2014-3-12 功能:添加额外的命令.G ...

  6. lua的栈

    lua的栈是从栈底到栈顶: lua_pushstring(L, "test1");lua_pushstring(L, "test2");lua_pushstri ...

  7. input file上传文件扩展名限制

    方法一(不推荐使用):用jS获获取扩展名进行验证: <script type="text/javascript" charset="utf-8"> ...

  8. SSH 创建证书认证

    *******chmod 600 195-tempuser.txt******* useradd tempusersu tempusercdmkdir .sshchmod 700 .sshcd .ss ...

  9. 使用Python玩转WMI

    最近在网上搜索Python和WMI相关资料时,发现大部分文章都千篇一律,并且基本上只说了很基础的使用,并未深入说明如何使用WMI.本文打算更进一步,让我们使用Python玩转WMI. 1 什么是WMI ...

  10. I do not want to inherit the child opacity from the parent in CSS(不想让子元素继承父元素的透明度)

    Instead of using opacity, set a background-color with rgba, where 'a' is the level of transparency. ...