欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实验4 简单查询—单表无条件和有条件查询

程序员文章站 2022-05-30 22:38:35
...

直接上简单查询的SQL语句------------

(1) 查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。
SELECT * FROM students; SELECT * FROM course;SELECT * FROM sc;
(2) 查询所有学生的学号、姓名、性别和出生日期。
SELECT sno,sname,ssex,bday FROM students;
(3) 查询所有课程的课程名称。
SELECT cname as 课程名称 FROM course;
(4) 查询前10门课程的课号及课程名称。
SELECT cno,cname FROM course  LIMIT 0,10;
 (5) 查询所有学生的姓名及年龄,要求结果中列名显示中文。
 SELECT sname as 学生姓名,YEAR(NOW())-YEAR(bday) as 学生年龄 FROM students;
 (6) 查询所有年龄小于20岁的女生的学号和姓名。
 SELECT sno,sname,bday FROM students WHERE ssex='女' AND YEAR(NOW())-YEAR(bday)<20;
(7) 查询所有男生的信息。
SELECT * FROM students WHERE ssex='男'; 
(8) 查询所有任课教师的姓名(Tname)和所在系别(Tdept)。
SELECT tname,tdept FROM teachers;
(9) 查询“信息学院”的学生姓名、性别和出生日期。
SELECT sname,ssex,bday FROM students WHERE sdept='信息学院'; 
(10) 查询Students表中的所有系名,要求结果中系名不重复。
SELECT DISTINCT sdept FROM students;
(11) 查询“0000010”课程的课名、先修课号和学分。
SELECT cname,cpno,ccredit FROM course WHERE cno='0000010'; 
(12) 查询成绩在80~90分之间的选课成绩情况。
SELECT * FROM sc WHERE score>=80 and score<=90;
(13) 查询在1970年1月1日之前出生的男教师信息。
SELECT * FROM teachers WHERE YEAR(tbirthday)<1970 and tsex='男'; 
(14) 输出有成绩的学生学号和课号。
SELECT sno,cno FROM sc WHERE score IS null;
(15) 查询所有姓“刘”的学生信息。
SELECT * FROM students WHERE sname LIKE '刘%';
(16) 查询生源地不是“山东”省的学生信息。
SELECT * FROM students WHERE bplace not LIKE '%山东%';
(17) 查询成绩为79分、89分或69分的记录。
SELECT * FROM sc WHERE score=79 OR score=89 OR score=69;
(18) 查询名字中含有“明”字的男生的学生姓名和班级。
SELECT sname,class FROM students WHERE ssex='男' AND sname LIKE '%明%'; 
(19) 查询名称以“DB_”开头的课程名称。
SELECT cname FROM course WHERE cname like 'DB%'; 
(20) 查询非信息学院和机电学院的学生信息。
SELECT * FROM students WHERE sdept not LIKE'%信息%' and sdept not in('信息学院','机电学院'); 
(21) *查询名字中第二个字是“小”或“晓”字的男生的学生姓名和地址。
select sname,bplace from students where ssex='男' and (sname like '_小%' or sname like '_晓%'); 
(22) 查询姓名是两个字的学生信息。
SELECT * FROM students WHERE sname LIKE'__';
 (23) 查询学生表中没有联系电话的学生信息。	
 SELECT * FROM students WHERE phone IS null;

五、观察与思考
1、LIKE的通配符有哪些?分别代表什么含义?% 有零个或更多个字符组成的任意字符串_ 任意单个字符[ ] 用于指定范围,例如[A ~ F],表示A ~ F范围内的任何单个字符[ ^ ] 表示指定范围之外的,例如[ ^A ~ F ],表示A ~ F 范围以外的任何单个字符。
2、知道学生的出生日期,如何求出其年龄?YEAR(NOW())-YEAR(出生日期)
3、IS能用“=”来代替吗?如何周全地考虑“空数据”的情况?不可以,is是用来判断null的,=是用来比较值的。给个默认值。
4、关键字ALL和DISTINCT有什么不同的含义?关键字ALL是否可以省略不写?ALL表示所有的字段,查找有重复的2条,2条都显示。DISTINCT表示如果有重复的,只取一条(过滤)。可以省略,但是在UNION子句里建议不要省略。