您的位置:首页 > 数据库

测试人员必知必会的SQL知识08

2012-11-12 20:35 274 查看
非常抱歉,忘记上传今天讲解使用的数据库了。特此附上:
http://download.csdn.net/detail/xc5683/4761054
今天我们学习SQL知识,我们今天开始我们的重点select查询语句。

今天用到的知识:SQL通配符和SQL函数。

先来看通配符:

通配符描述
%替代一个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]

或者

[!charlist]

不在字符列中的任何单一
SQL函数:

函数描述
***G(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 ***G(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);
--哦,出错了,怎么回事啊?我们明天继续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: