51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 20591|回复: 28
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-1-19 19:03:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
                                      

                                         目录


一、DDL—数据定义语言(CREATEALTERDROPDECLARE)  
二、DML—数据操纵语言(SELECTDELETEUPDATEINSERT)  
三、DCL—数据控制语言(GRANTREVOKE)

四、下半部分内容(主要是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、确认范围查询
用于确定范围运算符有: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

1.7、确认集合
确定集合符号:INNOT IN
SELECT <列名> FROM <表名或视图名> WHERE <列名>[NOT] IN  (常量1,常量2,常量n)

1.8字符匹配查询
字符匹配查询符号:LIKENOT LIKE
SQL Server 2000支持如下四种通配符:
_(下划线):匹配任意一个字符;
%(百分号) 匹配O个或多个字符;
[ ]:匹配[ ]中的任意一个字符。如[acdg]表示匹配acdg,如果[ ]中的字符是有序的,则可以使用连字符一来简化[ ]中的内容,例如[abcde]可简写为:[a-e]
[^]:不匹配[ ]中的任意一个字符。如[^acdg]表示不匹配acdg,如果[^]中的字符是有序的,也可以使用简化形式例如[^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

1SQL规定,当使用计算函数时,列名不能与计算函数一起使用(除非他们出现在其他集合中)
例如查询年龄最大的学生的姓名和年龄,如下写法是错误的:
SELECT 姓名,MAX(年龄)FROM Student
2计算函数不能出现在WHERE子句中。   
例如查询年龄最大的学生的姓名如下写法是错误的:
SELECT 姓名 FROM Student WHERE 年龄=MAX(年龄)
正确的命令应为:
  SELECT 姓名,年龄 FROM Student
Where  年龄=(select max(年龄) from student)

1.11分组查询
SELECT <列名> FROM <表名或视图名>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2024-9-5 09:14
  • 签到天数: 2432 天

    连续签到: 1 天

    [LV.Master]测试大本营

    29#
    发表于 2014-9-29 09:34:10 | 只看该作者
        长知识了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2014-4-4 16:46:39 | 只看该作者
    强烈支持,楼主万岁!












    慈众营销团队!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2013-5-8 10:55:49 | 只看该作者
    已收藏。善于总结,会更好的提高。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2012-9-6 19:46:43 | 只看该作者
    不错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
    发表于 2012-8-10 11:30:47 | 只看该作者
    谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24#
    发表于 2012-7-19 16:38:00 | 只看该作者
    谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23#
    发表于 2012-1-14 17:14:27 | 只看该作者
    很常用的语句
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22#
    发表于 2011-11-29 16:25:32 | 只看该作者
    总结的很全面
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21#
    发表于 2011-11-22 10:41:37 | 只看该作者
    多谢楼主的总结
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2011-9-23 16:23:00 | 只看该作者
    感谢楼主了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2011-6-7 16:16:43 | 只看该作者
    不错,学习了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2011-5-31 21:09:58 | 只看该作者
    怎么跟之前的一个一样的,只是他的是附件而已
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-5-18 02:11:49 | 只看该作者
    咦,没有文档?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-6 15:38
  • 签到天数: 189 天

    连续签到: 1 天

    [LV.7]测试师长

    16#
    发表于 2011-4-29 09:24:20 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2011-4-1 12:43:27 | 只看该作者
    算术函数在sql查询中常用吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-3-23 11:22:19 | 只看该作者
    满基础。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-3-21 10:33:55 | 只看该作者
    多谢!受教了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-5-19 14:08:51 | 只看该作者
    很基础,总结的很好
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-11-20 10:40:35 | 只看该作者
    谢谢
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-3 02:19 , Processed in 0.102172 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表