数据的简单查询

it2023-06-03  85

实验内容

1.进行简单的查询语句。

2.在查询语句中使用聚合函数(SUM、MIN、MAX、AVG、COUNT等)。

3.一些常用函数的使用。

实验步骤

1.依据以下要求创建数据库和对应的表

(1) 创建数据库educ。

mysql> create database educ; Query OK, 1 row affected (0.00 sec)

(2)创建数据表student

mysql> use educ; Database changed mysql> CREATE TABLE `student` ( -> `sno` char(8) NOT NULL, -> `sname` char(8) NOT NULL, -> `sex` char(2) default NULL, -> age tinyint(4) NULL, -> `native` char(20) default NULL, -> `birthday` date default NULL, -> `dno` char(6) default NULL, -> `entime` date default NULL, -> `home` varchar(40) default NULL, -> `tel` varchar(40) default NULL, -> PRIMARY KEY (`sno`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) mysql>

(3)创建数据表course

mysql> CREATE TABLE `course` ( -> `cno` char(10) NOT NULL, -> `cname` char(20) NOT NULL, -> `experiment` tinyint(4) default NULL, -> `lecture` tinyint(4) default NULL, -> `credit` tinyint(4) default NULL, -> PRIMARY KEY (`cno`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.02 sec) mysql>

(4)创建数据表student_course

mysql> CREATE TABLE `student_course` ( -> `sno` char(8) NOT NULL, -> `cno` char(10) NOT NULL, -> `score` tinyint(4) default NULL, -> PRIMARY KEY (`sno`,`cno`), -> KEY `cno` (`cno`), -> CONSTRAINT `student_course_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`), -> CONSTRAINT `student_course_ibfk_2` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.03 sec) mysql>

(5)插入如下数据

mysql> insert into student -> values('s060101','王东明','男',22,'广西','1998/3/1','计算机','2008/9/1','陕西省西安市','13572067534'); Query OK, 1 row affected (0.01 sec) mysql> insert into student -> values('s060102','张小芬','女',21,'广西','1999/12/1','信电','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060103','李鹏飞','男',21,'广西','1999/3/12','信电','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060104','陈晓丽','女',20,'杭州','2000/4/1','管理','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060105','赵青山','男',20,'宁波','2000/11/21','管理','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060106','胡汉明','男',20,'温州','2000/4/5','电子商务','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060107','王俊青','男',20,'太原','2000/7/11','电子商务','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student -> values('s060108','吴双红','女',20,'金华','2000/8/19','计算机','2008/9/1','陕西省西安市',NULL); Query OK, 1 row affected (0.00 sec) mysql> mysql> insert into course values('c01001','C++程序设计',20,48,3); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c01002','数据结构',20,48,3); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c01003','数据库系统概论',24,40,2); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c02001','管理信息系统教程',16,16,3); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c02002','ERP原理设计实验',20,48,3); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c02003','会计信息系统',20,48,2); Query OK, 1 row affected (0.00 sec) mysql> insert into course values('c03001','电子商务',20,48,2); Query OK, 1 row affected (0.00 sec) mysql> mysql> insert into student_course values ('s060101','c01001',90); Query OK, 1 row affected (0.00 sec) mysql> insert into student_course values('s060101','c01002',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student_course values('s060103','c01001',78); Query OK, 1 row affected (0.00 sec) mysql> insert into student_course values('s060103','c02002',NULL); Query OK, 1 row affected (0.00 sec) mysql> insert into student_course values('s060104','c01003',89); Query OK, 1 row affected (0.00 sec) mysql> insert into student_course values('s060108','c01001',85); Query OK, 1 row affected (0.01 sec) mysql>

数据查询

1.查询student表中学生的学号,姓名,性别

mysql> select sno,sname,sex from student; +---------+--------+------+ | sno | sname | sex | +---------+--------+------+ | s060101 | 王东明 || | s060102 | 张小芬 || | s060103 | 李鹏飞 || | s060104 | 陈晓丽 || | s060105 | 赵青山 || | s060106 | 胡汉明 || | s060107 | 王俊青 || | s060108 | 吴双红 || +---------+--------+------+ 8 rows in set (0.00 sec)

2.选择student表的所有列

mysql> SELECT * FROM student; +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ | sno | sname | sex | age | native | birthday | dno | entime | home | tel | +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ | s060101 | 王东明 || 22 | 广西 | 1998-03-01 | 计算机 | 2008-09-01 | 陕西省西安市 | 13572067534 | | s060102 | 张小芬 || 21 | 广西 | 1999-12-01 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | | s060103 | 李鹏飞 || 21 | 广西 | 1999-03-12 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | | s060104 | 陈晓丽 || 20 | 杭州 | 2000-04-01 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060105 | 赵青山 || 20 | 宁波 | 2000-11-21 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060106 | 胡汉明 || 20 | 温州 | 2000-04-05 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060107 | 王俊青 || 20 | 太原 | 2000-07-11 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060108 | 吴双红 || 20 | 金华 | 2000-08-19 | 计算机 | 2008-09-01 | 陕西省西安市 | NULL | +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ 8 rows in set (0.00 sec)

3.计算student表中的总行数,使用函数,总行数起别名

mysql> select count(*) totalnumber from student; +-------------+ | totalnumber | +-------------+ | 8 | +-------------+ 1 row in set (0.00 sec)

4.查找student表中学生最大年龄,查询结果列起别名,使用函数

mysql> select max(age) maxage from student; +--------+ | maxage | +--------+ | 22 | +--------+ 1 row in set (0.00 sec)

5.计算学生的平均年龄

mysql> select avg(age) avgage from student; +---------+ | avgage | +---------+ | 20.5000 | +---------+ 1 row in set (0.00 sec)

6.给出服务器当前的系统日期与时间

mysql> select curdate(),current_time(); +------------+----------------+ | curdate() | current_time() | +------------+----------------+ | 2020-10-20 | 13:22:53 | +------------+----------------+ 1 row in set (0.00 sec)

7.查询所有女同学的信息

mysql> select * from student where sex='女'; +---------+--------+------+------+--------+------------+--------+------------+--------------+------+ | sno | sname | sex | age | native | birthday | dno | entime | home | tel | +---------+--------+------+------+--------+------------+--------+------------+--------------+------+ | s060102 | 张小芬 || 21 | 广西 | 1999-12-01 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | | s060104 | 陈晓丽 || 20 | 杭州 | 2000-04-01 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060108 | 吴双红 || 20 | 金华 | 2000-08-19 | 计算机 | 2008-09-01 | 陕西省西安市 | NULL | +---------+--------+------+------+--------+------------+--------+------------+--------------+------+ 3 rows in set (0.00 sec)

8.查询年龄在18岁和20之间的学生信息

mysql> select * from student where age between 18 and 20; +---------+--------+------+------+--------+------------+----------+------------+--------------+------+ | sno | sname | sex | age | native | birthday | dno | entime | home | tel | +---------+--------+------+------+--------+------------+----------+------------+--------------+------+ | s060104 | 陈晓丽 | 女 | 20 | 杭州 | 2000-04-01 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060105 | 赵青山 | 男 | 20 | 宁波 | 2000-11-21 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060106 | 胡汉明 | 男 | 20 | 温州 | 2000-04-05 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060107 | 王俊青 | 男 | 20 | 太原 | 2000-07-11 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060108 | 吴双红 | 女 | 20 | 金华 | 2000-08-19 | 计算机 | 2008-09-01 | 陕西省西安市 | NULL | +---------+--------+------+------+--------+------------+----------+------------+--------------+------+ 5 rows in set (0.00 sec)

9.查询所有学生的信息并按学号降序排列

mysql> select * from student order by sno desc; +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ | sno | sname | sex | age | native | birthday | dno | entime | home | tel | +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ | s060108 | 吴双红 | 女 | 20 | 金华 | 2000-08-19 | 计算机 | 2008-09-01 | 陕西省西安市 | NULL | | s060107 | 王俊青 | 男 | 20 | 太原 | 2000-07-11 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060106 | 胡汉明 | 男 | 20 | 温州 | 2000-04-05 | 电子商务 | 2008-09-01 | 陕西省西安市 | NULL | | s060105 | 赵青山 | 男 | 20 | 宁波 | 2000-11-21 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060104 | 陈晓丽 | 女 | 20 | 杭州 | 2000-04-01 | 管理 | 2008-09-01 | 陕西省西安市 | NULL | | s060103 | 李鹏飞 | 男 | 21 | 广西 | 1999-03-12 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | | s060102 | 张小芬 | 女 | 21 | 广西 | 1999-12-01 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | | s060101 | 王东明 | 男 | 22 | 广西 | 1998-03-01 | 计算机 | 2008-09-01 | 陕西省西安市 | 13572067534 | +---------+--------+------+------+--------+------------+----------+------------+--------------+-------------+ 8 rows in set (0.00 sec)

10.返回课程表的前两挑记录

mysql> select * from course limit 2; +--------+-------------+------------+---------+--------+ | cno | cname | experiment | lecture | credit | +--------+-------------+------------+---------+--------+ | c01001 | C++程序设计 | 20 | 48 | 3 | | c01002 | 数据结构 | 20 | 48 | 3 | +--------+-------------+------------+---------+--------+ 2 rows in set (0.00 sec)

11.查询姓王且名字为两个字的学生信息

mysql> select * from student where sname='王_'; Empty set (0.00 sec)

12.查询“计算机”系的学生学号和姓名

mysql> select sno,sname from student where dno='计算机'; +---------+--------+ | sno | sname | +---------+--------+ | s060101 | 王东明 | | s060108 | 吴双红 | +---------+--------+ 2 rows in set (0.00 sec)

13.求选修了课程的学生学号

mysql> select sno from student_course; +---------+ | sno | +---------+ | s060101 | | s060103 | | s060108 | | s060101 | | s060104 | | s060103 | +---------+ 6 rows in set (0.00 sec)

14.求选修“c01001”课程的学生学号和成绩,并要求对查询结果的成绩降序排列,如果成绩相同则按学号升学排列

mysql> select sno,score from student_course where cno='c01001' order by score desc,sno asc; +---------+-------+ | sno | score | +---------+-------+ | s060101 | 90 | | s060108 | 85 | | s060103 | 78 | +---------+-------+ 3 rows in set (0.01 sec)

15.求“计算机”系和“信电”系的姓“张”的学生的信息

mysql> select * from student where dno in('计算机','信电')and sname like'张%'; +---------+--------+------+------+--------+------------+------+------------+--------------+------+ | sno | sname | sex | age | native | birthday | dno | entime | home | tel | +---------+--------+------+------+--------+------------+------+------------+--------------+------+ | s060102 | 张小芬 | 女 | 21 | 广西 | 1999-12-01 | 信电 | 2008-09-01 | 陕西省西安市 | NULL | +---------+--------+------+------+--------+------------+------+------------+--------------+------+ 1 row in set (0.00 sec)

16.求缺少成绩的学号和课程号

mysql> select sno,cno from student_course where score is null; +---------+--------+ | sno | cno | +---------+--------+ | s060101 | c01002 | | s060103 | c02002 | +---------+--------+ 2 rows in set (0.00 sec)

最新回复(0)