结识天下软件测试奇才,请多多指教。

测试人员应掌握的数据库

上一篇 / 下一篇  2008-12-10 16:18:24

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

测试人员要掌握的基本的SQL语句(上)

                                               

                                               MSN:nanans126@hotmail.com

2008-11-14        Nancy

目录  
一、DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)  
二、DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)  
三、DCL—数据控语言(GRANT,REVOKE) 

四、下半部分内容(主要是PL/SQL:函数,存储过程,事务等)

说明:本文档的使用对象是对SQL有一些了解的软件测试人员,我只是把我知道的知识结合网上的资料进行二次总结,不正之处望多请教。本文档配置附有SQL范例脚本。

一、DDL数据定义语言

首先,简要介绍基础语句,作为测试人员一般测试时,已经由数据库设计师建好了数据库,数据库设计师可能也不用语句的方式来建表,但我们应该能看懂各语句的使用格式,语句的含义,有兴趣再作深入了解。 


1、创建数据库 
CREATE DATABASE [database-name] 


2、删除数据库 
DROP DATABASE dbname1,dbname2


3、备份数据库 
--- 创建 备份数据的 device 
USE master 
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' 
--- 开始 备份 
BACKUP DATABASE pubs TO testBack  


4、创建表 
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 

例如: CREATE TABLE S

(SNO CHAR(10) NOT NULL ,

SN VARCHAR(20),

AGE INT,

SEX CHAR(2) DEFAULT '' ,

DEPT VARCHAR(20)); 


根据已有的表创建新表:  
A:create table tab_new like tab_old (使用旧表创建新表) 
B:create table tab_new as select col1,col2… from tab_old definition only


5、删除表

drop table tabname  


6、增加字段
Alter table tabname 

ADD <列名><数据类型>[NULL|NOT NULL] 

7、修改字段

 ALTER TABLE<表名>

ALTER COLUMN <列名><数据类型>[NULL|NOT NULL]


8、删除字段

ALTER TABLE<表名>

DROP COLUMN <列名><数据类型>[NULL|NOT NULL]

9、添加主键

 Alter table tabname add primary key(col)  

10删除主键

Alter table tabname drop primary key(col)  


11、创建索引

create [unique] index idxname on tabname(col….)  

12删除索引

drop index idxname 
注:索引是不可更改的,想更改必须删除重新建。 


13、创建视图

create view viewname as [select statement ]


14删除视图

drop view viewname 

二、DML—数据操纵语言

1、数据查询

数据查询是数据库中最常见的操作。在本文档里将作重点介绍。SQL语言提供SELECT语句,通过查询操作可得到所需的信息。

SELECT语句的一般格式为:

SELECT〈列名〉[{,〈列名〉}]

FROM〈表名或视图名〉[{,〈表名或视图名〉}]

[WHERE〈检索条件〉]

[GROUP BY <列名1>[HAVING <条件表达式>]]

[ORDER BY <列名2>[ASC|DESC]];

SELECT语句的执行过程:

根据WHERE子句的检索条件,从FROM子句指定的基本表或视图中选取满足条件的元组,再按照SELECT子句中指定的列,投影得到结果表。

如果有GROUP子句,则将查询结果按照<列名1>相同的值进行分组。

如果GROUP子句后有HAVING短语,则只输出满足HAVING条件的元组。

如果有ORDER子句,查询结果还要按照<列名2>的值进行排序。

1.1、查询指定列

SELECT <列名> FROM <表名或视图名>

1.2、查询全部列

SELECT * FROM <表名或视图名>

或SELECT <全部列名> FROM <表名或视图名>

1.3、取消相同取值的行

在查询结果中有可能出现取值完全相同的行了。

SELECT DISTINCT <列名> FROM <表名或视图名>

1.4、比较大小

比较运算符有=,>,>=,<=,<,<>,!>,!<

NOT+上述比较运算符

SELECT <列名> FROM <表名或视图名> WHERE <列名> [比较运算符] <比较的值>

1.5、多重条件查询

WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符ANDORNOT将其连结成复合的逻辑表达式。

其优先级由高到低为:NOTANDOR,用户可以使用括号改变优先级。

SELECT <列名> FROM <表名或视图名> WHERE <条件1> AND <条件1> OR <条件1>

1.6、确认范围查询

用于确定范围运算符有:BETWEENAND和NOT BETWEENAND

SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] BETWEEN  值1 AND 值2

这与下等价

SELECT <列名> FROM <表名或视图名> WHERE <列名>>=值1 AND <列名><=值2

SELECT <列名> FROM <表名或视图名> WHERE <列名><值1 OR <列名>>值2

1.7、确认集合

确定集合符号:IN,NOT IN

SELECT <列名> FROM <表名或视图名> WHERE <列名>[NOT] IN  (常量1,常量2,,常量n)

1.8字符匹配查询

字符匹配查询符号:LIKE,NOT LIKE

SQL Server 2000支持如下四种通配符:

_(下划线):匹配任意一个字符;

%(百分号): 匹配O个或多个字符;

[ ]:匹配[ ]中的任意一个字符。如[acdg]表示匹配a或c或d或g,如果[ ]中的字符是有序的,则可以使用连字符一来简化[ ]中的内容,例如[abcde]可简写为:[a-e];

[^]:不匹配[ ]中的任意一个字符。如[^acdg]表示不匹配a、c、d、g,如果[^]中的字符是有序的,也可以使用简化形式例如[^abcde]可简写为:[^a-e]。

SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] LIKE <匹配字符串>

1.9空值查询

空值不同于零和空格,它不占任何存储空间。

判断某个值是否为NULL值,不能使用普通的比较运算符(一、!一等),而只能使用专门的判断NULL值的子句来完成。 

SELECT <列名> FROM <表名或视图名> WHERE <列名IS [NOT] NULL

1.10常用库函数及统计汇总查询

常用的库函数

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

注1:SQL规定,当使用计算函数时,列名不能与计算函数一起使用(除非他们出现在其他集合中)。

例如查询年龄最大的学生的姓名和年龄,如下写法是错误的:

SELECT 姓名,MAX(年龄)FROM Student

注2:计算函数不能出现在WHERE子句中。    .

 例如查询年龄最大的学生的姓名如下写法是错误的:

SELECT 姓名 FROM Student WHERE 年龄=MAX(年龄)

正确的命令应为:

  SELECT 姓名,年龄 FROM Student 

 Where  年龄=(select max(年龄) from student)

1.11分组查询

SELECT <列名> FROM <表名或视图名> 

GROUP BY<分组依据列>[,n]

[HAVING<组提取条件>]

注1:分组依据列不能是text、ntext、image和bit类型的列。

注2:有分组时,查询列表中的列只能取自分组依据列(计算函数中的列除外)

1.12对查询结果进行排序

SELECT <列名> FROM <表名或视图名> 

ORDER BY<列名>[ASC l DESC][,n]

1.13数据表连接查询

TAG:

tudou027的个人空间 引用 删除 tudou027   /   2010-06-23 11:02:54
5
FISHY'S TRIBE 引用 删除 fishy   /   2008-12-11 13:51:44
http://bbs.51testing.com/thread-133499-1-1.html
出自51Testing论坛呢
 

评分:0

我来说两句

我的栏目

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 1821
  • 日志数: 1
  • 文件数: 2
  • 建立时间: 2008-12-10
  • 更新时间: 2008-12-10

RSS订阅