单表无条件和有条件查询的SQL语句

话不多说,直接上实验4 简单查询—单表无条件和有条件查询的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 not 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子句里建议不要省略。

猜你喜欢

转载自blog.csdn.net/zlc2351951436/article/details/106356631