一、查询
- 查询指定列
SELECT col1,col2... FROM tabname
- 查询所有列
SELECT * FROM tabname
- 取消相同取值的行
SELECT DISTINCT column-name FROM tabname
- 比较查询
#常见的比较运算符有:=,>,>=,<,<=,<>
#NOT + 比较运算符
SELECT * FROM tabname WHERE colum-name 比较运算符 value
- 多重条件查询
#当WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连结成复合的逻辑表达式
#其优先级由高到低为:NOT、AND、OR,用户可以使用括号改变优先级
SELECT * FROM tabname WHERE <条件1> AND <条件2> OR <条件3>
- 范围查询
#用于范围查询的运算符:BETWEEN…AND…和NOT BETWEEN…AND…
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] BETWEEN 值1 AND 值2
这与下等价
SELECT <列名> FROM <表名或视图名> WHERE <列名>>=值1 AND <列名><=值2
SELECT <列名> FROM <表名或视图名> WHERE <列名><值1 OR <列名>>值2
- 集合查询
#确定集合符号:IN,NOT IN
SELECT <列名> FROM <表名或视图名> WHERE <列名>[NOT] IN (常量1,常量2,…,常量n)
- 匹配查询
#字符匹配查询符号:LIKE,NOT LIKE
#通配符:
_(下划线):匹配任意一个字符;
%(百分号): 匹配O个或多个字符;
[ ]:匹配[ ]中的任意一个字符。
[^]:不匹配[ ]中的任意一个字符。
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] LIKE <匹配字符串>
- 空值查询
SELECT <列名> FROM <表名或视图名> WHERE <列名> IS [NOT] NULL
- 分组查询
ELECT <列名> FROM <表名或视图名>
GROUP BY<分组依据列>[,…n]
[HAVING<组提取条件>]
注1:分组依据列不能是text、ntext、image和bit类型的列。
注2:有分组时,查询列表中的列只能取自分组依据列(计算函数中的列除外)
- 排序查询
SELECT <列名> FROM <表名或视图名>
ORDER BY<列名>[ASC l DESC]
- TOP限制结果集查询
# n为非负整数,表示取查询结果的前n行; n percent:表示取查询结果的前n% 行;With ties:表示包括并列的结果。
#使用TOP谓词时注意最好与ORDER BY子句一起使用,因为这样的前几名才有意义。但当使用WITH TIES时,要求必须使用ORDER BY子句
SELECT TOP n [Percent][WITH TIES] FROM tabname
- 常用库函数及统计汇总查询
#AVG: 按列计算平均值
SELECT AVG
SUM:按列计算值的总和
MAX:求一列中的最大值
MIN:求一列中的最小值
COUNT:按列值计算个数
总数:select count(field1) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
- 将查询结果存入表中
#1SELECT INTO语句包含两个操作:首先按查询列表创建新表,然后执行查询语句,并将结果保存到新表中
#用INTO子句创建的新表可以是永久表,也可以是临时表。临时表又分为两种:局部临时表和全局临时表。局部临时表要在表名前加#,它只能用在当前的连接中;全局临时表要在表名前加##,它的生存期为创建全局临时表的连接的生存期
SELECT <列名> INTO 新表名 FROM
- 合并查询
使用UNION的格式为:
SELECT 语句1
UNION
SELECT 语句2
UNION [ALL]
SELECT 语句n
使用UNION的两个基本规则是:
A、所有查询语句中的列个数和列的顺序必须相同。
B、所有查语句中的对应列的数据类型必须兼容。
- 子查询
A、使用子查询进行比较测试
#使用子查询进行比较测试时,通过比较运算符(=、!=、<、>、<=、>=),将一个表达式的值与子查询返回的单值进行比较。
#使用子查询进行的比较测试要求子查询语句必须是返回单值的查询语句。
SELECT 学号 FROM SC
WHERE 课程号=‘c02’
and 成绩>( SELECT AVG(成绩) from SC
WHERE 课程号=‘c02’)
B、使用子查询基于集合的测试
#使用子查询进行基于集合的测试时,通过运算符IN和NOT IN,将一个表达式的值与子查询返回的结果集进行比较。这同前边在WHERE子句中使用的IN作用完全相同。
# 注意:使用子查询进行基于集合的测试时,由该子查询返回的结果集是仅包含单个列的一个列表,该列必须与测试表达式的数据类型相同。当子查询返回结果之后,外层查询将使用这些结果。
C、 使用子查询进行存在性测试
#使用子查询进行存在性测试时,往往使用EXISTS谓词。带EXISTS谓词的子查询不返回查询的数据,只产生逻辑真值和逻辑假值
#注1:带EXISTS谓词的查询是先执行外层查询,然后再执行内层查询。由外层查询 的值决定内层查询的结果;内层查询的执行次数由外层查询的结果数决定。
SELECT 姓名 FROM Student
WHERE EXISTS
(SELECT * FROM SC
WHERE 学号=Student.学号
AND 课程号=‘c01’)
二、更新
- 插入一行新数据
2.1插入一行新记录
INSERT INTO <表名>[(<列名1>[,<列名2>…])] VALUES(<值>)
- 插入一行的部分数据值
INSERT INTO <表名>[(<列名1>[,<列名2>])] VALUES(<值>)
-修改数据
UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]…
[WHERE <条件>].
- 删除数据
DELETE
FROM<表名>
[WHERE <条件>]
参考整理:
测试人员要掌握的基本sql语句