Mysql综合案例

考核要点:创建数据表、单表查询、多表查询

  已知,有一个学生表student和一个分数表score,请按要求对这两个表进行操作。student表和score分数表的表结构分别如表1-1和表1-2所示。

表1-1student表结构

  字段名   数据类型  主键  外键  非空   唯一  自增  字段描述

  stu_id    INT(10)   是    否    是     是    否     学号

  stu_name   VARCHAR(20) 否    否    是     否    否     姓名

  sex     VARCHAR(2)  否    否    否     否    否     性别

  birth     YEAR    否    否    否     否    否   出生年份

  department  VARCHAR(20) 否    否    是     否    否     院系

  addr    VARCHAR(50) 否    否    否     否    否   家庭住址

表1-2score表结构

  字段名   数据类型  主键  外键  非空  唯一  自增  字段描述

  score_id  INT(10)   是    否   是    是     是    编号

  stu_id    INT(10)   否    否   是    否     否    学号

  c_name  VARCHAR(20)  否    否   否    否     否   课程名

  grade     INT(10)   否    否   否    否     否    分数

  表1-1和表1-2中分别对student表和score表中字段的数据类型、主键、外键、非空、唯一约束、自增和字段描述做了说明,其中这两个表中都有stu_id字段,用于表示学号,该字段使student表和score表实现了关联。

    (1)启动MySQL服务器。

  如果MySQL服务器是未启动的状态,可以在cmd窗口中,通过命令来启动服务器,具体命令如下所示:

net start mysql

(2)登录MySQL服务器。

  在cmd窗口中登录MySQL服务器,用户名为root,密码为root,具体命令如下所示:

mysql -uroot -proot

(3)创建数据库。

  创建一个名为my_db的数据库,具体SQL语句如下:

create database my_db;

(4)切换当前数据库。

  将名为my_db的数据库切换为当前数据库,具体SQL语句如下:

use my_db;

    (5)创建学生表student,插入6条记录。

  创建学生表student,SQL语句如下所示:

CREATE TABLE student (
stu_id INT(10) PRIMARY KEY,
stu_name VARCHAR(20)NOT NULL,
sex VARCHAR(2),
birth YEAR,
department VARCHAR(20),
addr VARCHAR(50)
);

  上述SQL语句执行成功后,表示学生表student创建成功,这时,使用INSERT语句向表中插入数据,SQL语句如下所示:

INSERT INTO student VALUES
( 901,'张飞', '男',1985,'计算机系', '河北省涿州市'),
( 902,'关羽', '男',1986,'中文系', '山西省运城市'),
( 903,'貂蝉', '女',1990,'中文系', '山西省忻州县'),
( 904,'刘备', '男',1990,'英语系', '河北省涿州市'),
( 905,'小乔', '女',1991,'英语系', '安徽省潜山市'),
( 906,'赵云', '男',1988,'计算机系', '河北省正定市');

  上述INSERT语句执行成功后,向表中插入了6条记录,分别是学生的学号、姓名、性别、出生年份、院系和出生地址,这时,使用SELECT语句查看stu表中的数据信息

mysql> select * from student;

  从查询结果可以看出,在当前的数据库中创建了一个student表,并成功插入了6条记录,student表的主键为id。

    (6)创建分数表score,插入10条记录。

  首先创建分数表score,SQL语句如下所示:

CREATE TABLE score (
score_id INT(10) PRIMARY KEY AUTO_INCREMENT ,
stu_id INT(10) NOT NULL ,
c_name VARCHAR(20) ,
grade INT(10)
);

  上述SQL语句执行成功后,表示分数表score创建成功,接下来,使用INSERT语句向score表中插入数据,SQL语句如下所示:

INSERT INTO score(stu_id,c_name,grade) VALUES(901, '计算机',98),
(901, '英语', 80),(902, '计算机',65),(902, '中文',88),
(903, '中文',95),(904, '计算机',70),(904, '英语',92),
(905, '英语',94),(906, '计算机',90),(906, '英语',85);

  上述SQL语句执行成功后,向表中插入了10条记录,分别是学生的学号、姓名、所在学校和报考的学校名称,这时,使用SELECT语句查看score表中的数据信息:

mysql> select * from score;

  从查询结果可以看出,score表创建成功,同时向表中插入了10条记录,score表的主键为score_id。

    (7)从student表中查询计算机系和英语系学生的信息。

  该操作属于单表查询操作,SQL语句如下所示:该操作属于单表查询操作,SQL语句如下所示:

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

  上述SQL语句执行成功后,顺利查询出了计算机系和英语系的学生的信息,上面的SQL语句使用了in操作符,针对本操作其实还有另外一种查询方式,SQL语句如下所示:

mysql> SELECT * FROM student
-> WHERE department='计算机系' OR department='英语系';

  从查询结果可以看出,使用or操作符也得到了正确的查询结果。

    (8)从student表中查询年龄25~28岁的学生信息。

  该操作属于单表查询操作,SQL语句如下所示:

mysql> SELECT stu_id,stu_name,sex,
-> 2016-birth AS age,department,addr
-> FROM student
-> WHERE 2016-birth BETWEEN 25 AND 28;

  上述SQL语句中,2016-birth表示当前年份减去学生出生年份,得到的就是学生的年龄,并使用as操作符为列取别名为age,BETWEEN... AND...操作符用于表示某个范围之间的数。从查询结果可以看出,顺利得到要求的结果。

  针对本操作也可以不使用BETWEEN... AND...操作符,改为使用关系运算符来对年龄范围进行限制,SQL语句如下所示:

mysql> SELECT stu_id,stu_name,sex,
-> 2016-birth AS age,department,addr
-> FROM student
-> WHERE 2016-birth>=25 AND 2016-birth<=28;

    (9)在student表中统计每个院系各有几个学生。

  该操作属于单表查询操作,使用GROUP BY 分组查询,通过院系department来分组, SQL语句如下所示:

mysql> SELECT department AS "院系", COUNT(id) AS "人数"
-> FROM student
-> GROUP BY department;

  从上述查询结果可以看出,每个院系的学生均为2个人。

    (10)查询每个院系学生中的最高分。

  该操作属于多表查询操作,SQL语句如下所示:

mysql> SELECT MAX(grade),department
-> FROM score
-> LEFT JOIN student ON score.stu_id = student.st
-> GROUP BY department;

  上述SQL语句执行成功后,顺利查询出了每个院系学生的最高分。

    (11)查询学生貂蝉的考试科目(c_name)和考试成绩(grade)

  该操作属于多表查询操作,SQL语句如下所示:

mysql> SELECT stu_name,c_name,grade
-> FROM score
-> LEFT JOIN student ON score.stu_id = student.stu_id
-> WHERE stu_name= "貂蝉";

    (12)查询计算机成绩低于95的学生信息。

  SQL语句如下:

mysql> SELECT stu_name,sex,birth,addr,c_name,grade
-> FROM student
-> LEFT JOIN score ON score.stu_id = student.stu_id
-> WHERE c_name = "计算机" AND grade<95;

 

    (13)查询同时参加计算机和英语考试的学生的信息。

  SQL语句如下:

mysql> SELECT *
-> FROM student
-> WHERE stu_id =ANY(
-> SELECT stu_id
-> FROM score
-> WHERE stu_id IN (SELECT stu_id
-> FROM score WHERE c_name= '计算机')
-> AND c_name= '英语' );

    (14)从student表和score表中分别查询出学生的学号,然后合并查询结果。

  SQL语句如下:

mysql> SELECT stu_id  FROM student
-> UNION
-> SELECT stu_id FROM score;

 

    (15)查询姓张或者姓王的同学的个人信息、院系和考试科目及成绩。

  SQL语句如下:

mysql> SELECT student.stu_id, stu_name,sex,birth,
-> addr, c_name,grade
-> FROM student, score
-> WHERE (stu_name LIKE '张%' OR stu_name LIKE '王%')
-> AND (student.stu_id=score.stu_id) ;

    (16)查询山西省的学生的姓名、出生年份、院系、考试科目及成绩。

  SQL语句如下:

mysql> SELECT stu_name,birth,department, c_name,grade
-> FROM student, score
-> WHERE addr LIKE '山西%'
-> AND student.stu_id=score.stu_id;

Mysql综合案例的更多相关文章

  1. jquery-easyUI第二篇【综合案例】

    基于easyUI开发的一个综合案例模版 <%@ page language="java" pageEncoding="UTF-8"%> <!D ...

  2. 企业级应用,如何实现服务化五(dubbo综合案例)

    这是企业级应用,如何实现服务化第五篇.在上一篇企业级应用,如何实现服务化四(基础环境准备)中.已经准备好了zookeeper注册中心,和dubbo管理控制台.这一篇通过一个综合案例,看一看在企业级应用 ...

  3. Solr综合案例深入练习

    1. 综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2. 分析 开发人员需要 ...

  4. Shell 编程综合案例

    Shell编程综合案例 Shell也学习了大概的知识,现在这篇文章就大概讲述下如何使用shell编写一个脚本呢?下面就展示一个大家常用的数据库备份案例来进行展示. 需求分析 1)每天凌晨2:10分备份 ...

  5. solr综合案例

    1.  综合案例 1.1. 需求 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字.分类.价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能. 界面如下: 1.2分析 开发人员需要的 ...

  6. Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化

    知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...

  7. spring基础:什么是框架,框架优势,spring优势,耦合内聚,什么是Ioc,IOC配置,set注入,第三方资源配置,综合案例spring整合mybatis实现

    知识点梳理 课堂讲义 1)Spring简介 1.1)什么是框架 源自于建筑学,隶属土木工程,后发展到软件工程领域 软件工程中框架的特点: 经过验证 具有一定功能 半成品 1.2)框架的优势 提高开发效 ...

  8. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  9. JavaScript:综合案例-表单验证

    综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...

随机推荐

  1. Oracle PLSQL Demo - 09.Open、Fetch遍历游标[Open, Fetch, Close Record CURSOR]

    declare r_emp scott.emp%rowtype; cursor cur_emp is select t.* from scott.emp t; begin open cur_emp; ...

  2. Sql Server数据库自增长字段标识列的插入或更新修改操作办法

    写在前面的话:在日常的Sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录编号等等.自增长的标识很大程度上方便了数据库程序的开发,但有时候这 ...

  3. Python中关于类和函数的初体验之"__init__"和"__str__"不是"_init_"和"_str_"

    刚刚接触Python,今天就是怎么也调试不过去了,上网上查直到晚上才查到一个有效信息,真是坑啊!原来Python中的这些“魔法”方法的命名里就有陷阱…… 上图中的那两个红圈圈,一定要记住哦,这些Pyt ...

  4. WPF教程六:布局之Grid面板

    Grid:网格面板 Grid顾名思义就是“网格”,以表格形式布局元素,对于整个面板上的元素进行布局,它的子控件被放在一个一个事先定义好的小格子里面,整齐配列. Grid和其他各个Panel比较起来,功 ...

  5. 〖wordpress实用小技巧〗添加几个字符实现子目录访问转移到域名直接访问

    http://www.henghengzhu.com/share/127.html —————————————————————————————————————————————————————————— ...

  6. Jquery实现仿腾讯微薄的广播发表

    前言: 由于这几天在学习Jquery的一些知识,比以前的感觉就是Jquery太强大了,很多很简单的功能以前在JavaScript要写几十行的代码而在Jquery中只用几行代码就搞定了,所以我决定好好学 ...

  7. 关于Cocos2d-x对象的定义和创建

    游戏可以包含很多个场景,每个场景又包含很多的层,每个层又包含很多的节点,这些节点,层,场景都可以看成一个一个的对象,我们把每一个彼此不同但又是同类型的对象归为一个类,为它创建一个单独的类,这个类有这些 ...

  8. Docker之删除container和image

    删除所有停止的container: docker rm $(docker ps -a -q) 删除所有未标记的image docker rmi $(docker images | grep " ...

  9. C 学习之大小端

    题外话:如有误,请留言通知我. 大小端,是数值在内存中的排列方式:数值的高低位与内存地址的大小 的关系. 大/小端,英文Big/Little Endian. 注意:endian,就是字节序.字节存储顺 ...

  10. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...