实验目的:
1.掌握SELECT 语句的基本语法格式。
2.掌握SELECT 语句的简单查询、条件查询、内连接查询、匹配查询的语法格式。
实验内容:
实验要求:在JWXT数据库中对数据进行以下查询操作,写出SQL命令:
1.查询所有教师的信息。
2.查询所有教师的姓名、性别、职称和年龄。
3.查询具有“教授”职称的教师姓名和性别。
4.查询部门号为“0001”的男教师的姓名、性别、职称。
5.查询哪些教师已安排有教学任务,显示其教师号。
6.查询职称为空值的教师信息。
7.查询“计科本201”班的学生姓名和性别。
8.查询选修“C语言程序设计”课程的学生姓名。
9.查询“信息学院”教师的姓名、性别和职称。
10.查询“计算机网络”课程的任课教师姓名和性别。
11.查询所有非姓“李”教师的姓名和其所在的院系名称。
12.查询教师姓名中含有“明”字的教师信息。
13.查询20级(班号前两位是20)且专业名中包含“工程”两字的班级信息。
14. 查询单名单姓(即姓名为两个字)的教师的姓名、性别和职称。
15.查询学号中第5、6位是“01”的学生信息。
16.查询专业名中不含“网”和“数”两字的所有班级信息。
实验环境
硬件环境:分辨率至少在1024*768像素之上的显示器;P-III及其兼容处理器,或更高型号;处理器速度至少600MHz,推荐1GHz或更高;内存至少512MB,推荐1GB或更大;2G以上硬盘空间。
软件环境:安装Windows 7/10操作系统和MySQL5.7以上版本、Navicat for MySQL
实验重点及难点
重点:启动服务并登录MySQL 5.7数据库;SQL 语句创建、删除数据库的方法
难点: SQL 语句创建、删除数据库的方法
实验内容过程及结果:
1.查询所有教师的信息。
SELECT * FROM TEACHER
2.查询所有教师的姓名、性别、职称和年龄。
SELECT TNAME 姓名,TSEX 性别,TTITLE 职称,
YEAR(CURRENT_DATE())-YEAR(TBIR) 年龄
FROM TEACHER
3.查询具有“教授”职称的教师姓名和性别。
SELECT TNAME 姓名,TSEX 性别 FROM TEACHER,DEPARTMENT
WHERE TEACHER.DNO=DEPARTMENT.DNO
AND (TTITLE='教授' )
4.查询部门号为“0001”的男教师的姓名、性别、职称。
SELECT TNAME 姓名,TSEX 性别,TTITLE 职称 FROM TEACHER
WHERE DNO='0001' AND TSEX='男'
5.查询哪些教师已安排有教学任务,显示其教师号。
SELECT DISTINCT TNO FROM TEACHING
6.查询职称为空值的教师信息。
SELECT * FROM TEACHER WHERE TTITLE IS NULL
7.查询“计科本201”班的学生姓名和性别。
SELECT SNAME 姓名,SSEX 性别 FROM STUDENT,CLASS
WHERE CLNAME='计科本201'
8.查询选修“C语言程序设计”课程的学生姓名。
SELECT SNAME FROM COURSE,STUDENT WHERE CNO IN
(SELECT CNO FROM COURSE
WHERE CNAME= 'C语言程序设计' )
9.查询“信息学院”教师的姓名、性别和职称。
SELECT TNAME,TSEX,TTITLE FROM TEACHER,DEPARTMENT
WHERE TEACHER.DNO=DEPARTMENT.DNO
AND (DNAME='信息学院' )
10.查询“计算机网络”课程的任课教师姓名和性别。
SELECT TNAME,TSEX FROM TEACHER,COURSE,TEACHING
WHERE TEACHER.TNO=TEACHING.TNO
AND COURSE.CNO=TEACHING.CNO
AND CNAME= '计算机网络'
11.查询所有非姓“李”教师的姓名和其所在的院系名称。
SELECT TNAME 姓名,DNAME 院系名称 FROM TEACHER,DEPARTMENT
WHERE TEACHER.DNO=DEPARTMENT.DNO
AND TNAME NOT LIKE '李%'
12.查询教师姓名中含有“明”字的教师信息。
SELECT * FROM TEACHER
WHERE TNAME LIKE '%明%'
13.查询20级(班号前两位是20)且专业名中包含“工程”两字的班级信息。
SELECT CLNAME FROM CLASS
WHERE CLNO LIKE '20%'
AND SPECIAL LIKE '%工程%'
14. 查询单名单姓(即姓名为两个字)的教师的姓名、性别和职称。
SELECT TNAME,TSEX,TTITLE FROM TEACHER,DEPARTMENT
WHERE TEACHER.DNO=DEPARTMENT.DNO
AND TNAME LIKE '__'
15.查询学号中第5、6位是“01”的学生信息。
SELECT * FROM STUDENT
WHERE SNO LIKE '____01____'
16.查询专业名中不含“网”和“数”两字的所有班级信息。
SELECT * FROM CLASS
WHERE SPECIAL NOT LIKE '%网%'
AND SPECIAL NOT LIKE'%数%'
思考:
1. LIKE的通配符有哪些?分别代表什么含义?
答:(1)“%”可以代表任意长度的字符串,长度可以为0。
(2)“_”只能表示单个字符。
2. 知道学生的出生日期,如何求出其年龄?
答:用当前日期减去出生日期就可以得出学生的年龄。
3. 查询“空数据”时,IS能用“=”来代替吗?
答:不能。因为IS UNLL是一个整体,不能将IS换成“=”。
4. 关键字DISTINCT有什么含义?
答:可以去除重复的查询记录。
仅个人实验结果,如发现有错误,欢迎在评论区批评指正!