非常抱歉,忘记上传今天讲解使用的数据库了。特此附上:
http://download.youkuaiyun.com/detail/xc5683/4761054
今天我们学习SQL知识,我们今天开始我们的重点select查询语句。
今天用到的知识:SQL通配符和SQL函数。
先来看通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一 |
函数 | 描述 |
---|---|
AVG(column) | 返回某列的行数 |
COUNT(column) | 返回某列的行数(不包括NULL值) |
COUNT(*) | 返回被选行数 |
COUNT(DISTINCT column) | 返回相异结果的数目 |
FIRST(column) | 返回在指定的域中第一个记录的值(SQLServer2000 不支持) |
LAST(column) | 返回在指定的域中最后一个记录的值(SQLServer2000 不支持) |
MAX(column) | 返回某列的最高值 |
MIN(column) | 返回某列的最低值 |
SUM(column) | 返回某列的总和 |
USE TeachingDB;
--查询Student中的所有信息
SELECT * FROM StudentInfo;
--查询student中的学生的Sname和Saddress信息
SELECT Sname,Saddress FROM StudentInfo;
--查询student中的学生的Sname和Saddress信息,并设定别名
SELECT Sname AS '姓名',Saddress AS '地址' FROM StudentInfo;
SELECT Sname '姓名',Saddress '地址' FROM StudentInfo;
SELECT Sname 姓名,Saddress 地址 FROM StudentInfo;
SELECT Sname AS 姓名,Saddress AS 地址 FROM StudentInfo;
--这里的四种方法都行,但是建议用第一种方法
--查询student表中的前5行信息,用top
SELECT TOP 5 Sname,Sage FROM StudentInfo;
--查询student表中前10%的信息
SELECT TOP 10 PERCENT * FROM StudentInfo;
--这个表中共有30条记录,所以这个结果显示前3条信息
--那么查询倒数5行信息呢?SQL中没有down之类的语句,大家思考一下这个问题
--下面用下面这个表看一下
SELECT * FROM StudentCourse;
--这个表中的Sno有重复的项,共60条记录啊
--那么怎么去掉重复项呢?
SELECT DISTINCT Sno FROM StudentCourse;
--现在就剩30条了
--查询地址为四川绵阳的学生
SELECT * FROM StudentInfo
WHERE Saddress='四川绵阳';
--查询年龄大于19岁的学生信息
SELECT * FROM StudentInfo
WHERE Sage>19;
--查询年龄在18和20之间的
SELECT * FROM StudentInfo
WHERE Sage>18 AND Sage<20;
SELECT * FROM StudentInfo
WHERE Sage BETWEEN 18 AND 20;
--注意观察这两个区别?范围有区别的哦
--查询学生地址为四川自贡和四川成都的学生信息
SELECT * FROM StudentInfo
WHERE Saddress='四川自贡' OR Saddress='四川成都';
--查询学生地址不是自贡的学生信息
SELECT * FROM StudentInfo
WHERE NOT(Saddress='四川自贡');
SELECT * FROM StudentInfo
WHERE Saddress!='四川自贡';
SELECT * FROM StudentInfo
WHERE Saddress<>'四川自贡';
--查询Sno以02开头的学生信息
SELECT * FROM StudentInfo
WHERE Sno LIKE '02%';
--查询Sname中带有小字的学生信息
SELECT * FROM StudentInfo
WHERE Sname LIKE '%[小]%';
SELECT * FROM RankPayment;
--查询平均payment
SELECT AVG(payment) FROM RankPayment;
select * from courseinfo;
--统计所有的行数
SELECT COUNT(*) FROM CourseInfo;
--查询coursehour最大的课程信息
SELECT MAX(CouresHour) FROM CourseInfo;
--查询coursehour最小的课程信息
SELECT min(CouresHour) FROM CourseInfo;
--查询coureshour大于平均课时的课程信息
SELECT * FROM CourseInfo
WHERE CouresHour>avg(coureshour);
--哦,出错了,怎么回事啊?我们明天继续