与测试共存,与朋友共勉!

发布新日志

  • SQL语句实例 5

    2010-05-15 15:30:41

     
    6.5外连接查询
    select student.snosnamessexsagesdeptcnograde

    from studentsc

    where student.sno = sc.sno(*)

    6.6复合条件连接查询

    select student.sno, student.sname

    from student, sc

    where student.sno = sc.sno and sc.cno= ' 2 ' and sc.grade > 90

    七.嵌套查询

    7.1带有in谓词的子查询

    select snosname最后在student关系中

    from student取出snosname

    where sno in

    (select sno然后在sc关系中找出选

    from sc修了3号课程的学生学号

    where cno in

    (select cno首先在course关系中找出

    from course息系统的课程号,结果为3

    where cname= ‘信息系统));

    7.2带有比较运算符的子查询

    select snosnamesdept

    from student

    where sdept =

    select sdept

    from student

    where sname= '刘晨'

    7.3带有any(某个)或all(任何一个)谓词的子查询

    all谓词select snamesage

    from student

    where sage < all

    (select sage

    from student

    where sdept= ' is ') and sdept <> ' is ’;

    用集函数select snamesage

    from student

    where sage <

    (select min(sage)

    from student

    where sdept= ' is ') and sdept <>' is

    7.4带有exists谓词的子查询

    select sname

    from student

    where not exists

    (select *

    from sc

    where sno = student.sno and cno='1')

  • SQL 语句实例4

    2010-05-15 15:28:20

    SQL语句实例

    (2)确定范围

    select snamesdeptsage

    from student

    where sage not between 20 and 23

    (3)确定集合

    select snamessex

    from student

    where sdept not in ( 'is''ma''cs' );

    (4)字符串匹配

    4.1=运算符取代like谓词;!=< >取代not like谓词

    % (百分号)代表任意长度(长度可以为0)的字符串

    _ (下横线)代表任意单个字符

    select snamesnossex

    from student

    where sname not like '%'

    4.2当用户要查询的字符串本身就含有%_时,要使用escape '<换码字符>'短语对通符进行转义。

    select *

    from course

    where cname like 'db\_%i_ _' escape ' \ '

    (5)涉及空值的查询

    使用谓词is nullis not nullis null”不能用= null”代替

    select snocno

    from sc

    where grade is not null

    (6)多重条件查询

    and的优先级高于or,可以用括号改变优先级

    select sname

    from student

    where sdept= 'cs' and sage<20

    三、对查询结果排序

    升序:asc;降序:desc;缺省值为升序

    asc:排序列为空值的元组最后显示;desc:排序列为空值的元组最先显示

    select *

    from student

    order by sdeptsage desc

    四、使用集函数

    计数count[distinct|all] *

    count[distinct|all]<列名>

    计算总和sum[distinct|all] <列名>

    计算平均值avg[distinct|all] <列名>

    求最大值max[distinct|all] <列名>

    求最小值min[distinct|all] <列名>

    distinct短语:在计算时要取消指定列中的重复值

    1.select count(distinct sno)

    from sc

    2.select avg(grade)

    from sc

    where cno= ' 1 '

    五、对查询结果分组

    5.1使用group by子句分组

    select cnocount(sno)

    from sc

    group by cno

    5.2使用having短语筛选最终输出结果

    select sno, count(*)

    from sc

    where grade>=90

    group by sno

    having count(*)>=3;

    六.连接查询

    6.1广义笛卡尔积

    select student.* , sc.*

    from student, sc

    6.2等值连接(含自然连接)

    a.等值连接select student.*sc.*

    from studentsc

    where student.sno = sc.sno

    b.自然连接

    select student.snosnamessexsagesdeptcnograde

    from studentsc

    where student.sno = sc.sno

    6.3非等值连接查询比较运算符:><>=<=!=

    6.4自身连接查询

    select s1.snos1.snames1.sdept

    from student s1student s2

    where s1.sdept = s2.sdept and s2.sname = '刘晨'

    6.5外连接查询

    select student.sno<SPAN style="COLOR: #333333

  • SQL语句实例3

    2010-05-15 15:20:54

    SQL语句实例

    4.6让定义的默认值对象应用于字段上

    use xscj

    exec sp_bindefault 'zxf_default','xs.总学分'

    go

    4.7定义表

    create table book

    (book_id char(6),

    name varchar(20) not null,

    hire_date datetime not null)

    go

    4.8默认值对象的定义

    create default today as getdate()

    go

    4.9绑定默认值对象

    use xscj

    exec sp_bindefault 'today','book.hire_date'

    例子:

    //定义数据类型birthday_date

    use xscj

    exec sp_addtype birthday_date,'datetime','null'

    go

    //定义day默认值对象

    create default day as '1960,00,00'

    //将默认值对象day绑定到birthday_date数据类型

    use xscj

    exec sp_bindefault 'day','birthday_date'

    //域完整性约束

    use xscj

    create table kc

    (课程号char(6) not null,

    课程名char(8) not null,

    学分tinyint check(学分>=0 and学分<=10) null,

    备注text null)

    go

    constraint fk foreign key(managerid) reference employees(managerid),

    constraint fk foreign key(depmid) reference deptments(depmid),

    SQL Server数据管理

    一.条件表达式

    1.1算数操作符四则运算符,如+”-”*”/”以及取摸运算符%”

    select price + 5 newprice

    from products

    1.2比较操作符=”<”<=”>”>=”!=<>”

    select customername

    from customers

    where companyarea <> ‘beijing

    1.3字符操作符like操作符通配符%”

    selec *

    from employees

    where emplyeename like ‘back%’

    1.4逻辑表达式and(与)or(或)not(非)

    select employeeid

    from employees

    where emplyeename likep%

    and daysofholiday < 3

    二.插入数据

    2.1使用valuse子句插入数据

    insert into shippers (companyname, phone)

    values ('snowflake shipping', '(503)555-7233')

    2.2使用insert… select语句添加数据

    insert costomers

    select substring(firstname, 1, 3) + substring(lastname, 1, 2),

    lastname, firstname , title, address, city, region ,

    postalcode, country, homephone, null

    from employee

    三.更新数据

    update语句

    update northwind.dbo.customers ||数据库.所有者.表名||

    set city = s.city

    from suppliers s

    where s.companyname = customers.companyname

    .删除数据

    delete语句

    delete northwind.dbo.orders

    where datediffmonthshippeddategetdate())> 6

    SQL Server数据查询

    1.    语句格式

    selectt [all|distinct] <目标列表达式> [<目标列表达式>] …

    from <表名或视图名>[<表名或视图名> ] …

    [ where <条件表达式> ]

    [ group by <列名1> [having <条件表达式> ] ]注:筛选只有满足指定条件的组

    [ order by <列名2> [ asc|desc ] ];注:升序|降序

    二.单表查询

    2.1使用列别名改变查询结果的列标题

    select sname name'year of birth: ’ birth

    2000-sage birthday,islower(sdept) department from student

    2.2.查询满足条件的元组

    (1)比较大小

    select snamesage

    from student

    where not sage >= 20

    (2)确定范围

    select snamesdeptsa

  • SQL 语句实例2

    2010-05-15 15:19:48

    SQL语句实例

    4.7定义表

    create table book

    (book_id char(6),

    name varchar(20) not null,

    hire_date datetime not null)

    go

     

    4.8默认值对象的定义

    create default today as getdate()

    go

     

    4.9绑定默认值对象

    use xscj

    exec sp_bindefault 'today','book.hire_date'

     

    例子:

    //定义数据类型birthday_date

    use xscj

    exec sp_addtype birthday_date,'datetime','null'

    go

    //定义day默认值对象

    create default day as '1960,00,00'

    //将默认值对象day绑定到birthday_date数据类型

    use xscj

    exec sp_bindefault 'day','birthday_date'

    //域完整性约束

    use xscj

    create table kc

    (课程号char(6) not null,

    课程名char(8) not null,

    学分tinyint check(学分>=0 and学分<=10) null,

    备注text null)

    go

    constraint fk foreign key(managerid) reference employees(managerid),

    constraint fk foreign key(depmid) reference deptments(depmid),

     

     

    SQL Server数据管理

    一.条件表达式

    1.1算数操作符四则运算符,如+”-”*”/”以及取摸运算符%”

    select price + 5 newprice

    from products

     

    1.2比较操作符=”<”<=”>”>=”!=<>”

    select customername

    from customers

    where companyarea <> ‘beijing

     

    1.3字符操作符like操作符通配符%”

    selec *

    from employees

    where emplyeename like ‘back%’

     

    1.4逻辑表达式and(与)or(或)not(非)

    select employeeid

    from employees

    where emplyeename likep%

    and daysofholiday < 3

     

    二.插入数据

    2.1使用valuse子句插入数据

    insert into shippers (companyname, phone)

    values ('snowflake shipping', '(503)555-7233')

     

    2.2使用insert… select语句添加数据

    insert costomers

    select substring(firstname, 1, 3) + substring(lastname, 1, 2),

    lastname, firstname , title, address, city, region ,

    postalcode, country, homephone, null

    from employee

     

    三.更新数据

    update语句

    update northwind.dbo.customers ||数据库.所有者.表名||

    set city = s.city

    from suppliers s

    where s.companyname = customers.companyname

     

    .删除数据

    delete语句

    delete northwind.dbo.orders

    where datediffmonthshippeddategetdate())> 6

     

    SQL Server数据查询

    1.    语句格式

    selectt [all|distinct] <目标列表达式> [<目标列表达式>] …

    from <表名或视图名>[<表名或视图名> ] …

    [ where <条件表达式> ]

    [ group by <列名1> [having <条件表达式> ] ]注:筛选只有满足指定条件的组

    [ order by <列名2> [ asc|desc ] ];注:升序|降序

     

    二.单表查询

    2.1使用列别名改变查询结果的列标题

    select sname name'year of birth: ’ birth

    2000-sage birthday,islower(sdept) department from student

    2.2.查询满足条件的元组

    (1)比较大小

    select snamesage

    from student<SPAN style="FONT-FAMILY: 'Arial', '

  • SQL 语句实例1

    2010-05-15 15:18:04

    SQL Server数据库管理

    一,创建数据库

    create database demo

    on

    primary

    (name=demo_data,

    filename='d:\program files\microsoft sql server\mssql\data\demo_data.mdf',

    size=1mb,

    maxsize=20mb,

    filegrowth=10%)

    log

    on

    (name=demo_log,

    filename='d:\program files\microsoft sql server\mssql\data\demo_data.ldf',

    size=1mb,

    maxsize=5mb,

    filegrowth=1mb)

     

    二,管理数据库

    1.1,手工扩展现有数据库

    use master

    go

    alter database demo

    modify file

    (name=demo_data,

    maxsize=10mb,

    size=5mb,

    filegrowth=20%)

    go

     

    1.2,添加附加的数据库文件

    use master

    go

    alter database demo

    add file

    (name=demo2,

    filename=' d:\program files\microsoft sql server\mssql\data\demo_data2.ndf',

    size=5mb,

    maxsize=10mb,

    filegrowth=20%)

     

    1.3,执行sp_helpdb系统存储过程

    exec sp_helpdb demo

    1.4修改数据库文件初始长度

    alter database demo

    modify file

    (name=exampledb2_data(文件名),size=6)

    2.1,自动收缩数据库

    exec sp_dboption 'demo','autoshrink',true

     

    2.2手动收缩数据库

    整个数据库dbcc shrinkdatabase (demo,25)

    :语法格式为dbcc shrinkdatabase (database_name,target_percent),[notruncate

    |truncateonly]

    某个文件语法格式:dbcc shrinkfile (file_name|file_id,target_size),[emptyfile|n…|t…]同上

     

    3.1查看数据库信息

    execute sp_helpdb demo

     

    3.2数据库自动关闭

    sp_dboption demo , autoclose , true

     

    4.1开启数据库

    开启:
    use master
    exec sp_dboption 'database_name', 'offline', 'false'

     

    4.2挂起数据库

    挂起:
    use master
    exec sp_dboption 'database_name', 'offline', 'ture'

     

    5.1分离数据库

    exec sp_detach_db demo

     

    5.2附加数据库

    exec sp_attach_db demo

     

    6.1删除数据库

    drop database database_name[,…n]可一次删除多个数据库

     

    7.1数据库的备份和还原

    SQL Server表管理

    1.1创建表

    create table department

    (deptid int identity(50,1) not null primary key,

    depatname char(10),

    desciption char(50),

    managerid int)

     

    2.1添加列

    alter table salary

    add othersalary money null

     

    2.2修改列

    alter table salary

    alter column othersalary int

    2.3删除列

    alter table salary

    drop column othersalary

     

    3删除表

    drop table表名,表名

     

    4数据完整性

    4.1设置双主键

    alter table employee

    add constraint pk_bh primary key (employeeid,deptid)

     

    4.2在定义表时定义一个字段的默认值约束

    use xscj

    create table xs

    (学号char(6) not null,

    姓名char(8) not null,

    专业名char(10) null,

    性别bit not null,

    出生时间smalldatetime not null,

    总学分tinyint null,

    备注text null,

    入学日期datetime default getdate() ||可在定义默认约束时指定了约束名:入学日期datetime constraint dateflt default getdate()||

    go

     

    4.3在修改表时定义一个字段的默认值约束

    use xscj

    alter table xs

    add adddate smalldatetime null

    constraint adddatedflt default getdate() with values

    4.4默认值约束的删除

    use xscj

    alter table xs

    drop constraint adddatedflt

    go

     

    4.5//默认值对象的定义

    go

    create default zxf_default as 0

     

    4.6让定义的默认值对象应用于字段上

    use xscj

    exec sp_bindefault 'zxf_default','xs.总学分 查看(403) 评论(0) 收藏 分享 管理

  • 响应时间/并发用户数/吞吐量/思考时间的计算

    2010-05-15 15:14:59

    响应时间/并发用户数/吞吐量/思考时间的计算

    一、软件性能的关注点

    对一个软件做性能测试时需要关注那些性能呢?

    我们想想在软件设计、部署、使用、维护中一共有哪些角色的参与,然后再考虑这些角色各自关注的性能点是什么,作为一个软件性能测试工程师,我们又该关注什么?

    首先,开发软件的目的是为了让用户使用,我们先站在用户的角度分析一下,用户需要关注哪些性能

    对于用户来说,当点击一个按钮、链接或发出一条指令开始,到系统把结果已用户感知的形式展现出来为止,这个过程所消耗的时间是用户对这个软件性能的直观印象。也就是我们所说的响应时间,当相应时间较小时,用户体验是很好的,当然用户体验的响应时间包括个人主观因素和客观响应时间,在设计软件时,我们就需要考虑到如何更好地结合这两部分达到用户最佳的体验。如:用户在大数据量查询时,我们可以将先提取出来的数据展示给用户,在用户看的过程中继续进行数据检索,这时用户并不知道我们后台在做什么。

    用户关注的是用户操作的相应时间。

    其次,我们站在管理员的角度考虑需要关注的性能点

    1、 系统的响应时间

    2、 服务器资源使用情况是否合理

    3、 应用服务器和数据库资源使用是否合理

    4、 系统能否实现扩展

    5、 系统最多支持多少用户访问、系统最大业务处理量是多少6、 系统性能可能存在的瓶颈在哪里

    7、 更换那些设备可以提高性能

    8、 系统能否支持7×24小时的业务访问再次

    站在开发(设计)人员角度去考虑

    1、 架构设计是否合理

    2、 数据库设计是否合理

    3、 代码是否存在性能方面的问题

    4、 系统中是否有不合理的内存使用方式

    5、 系统中是否存在不合理的线程同步方式

    6、 系统中是否存在不合理的资源竞争那么站在性能测试工程师的角度,我们要关注什么呢?

    一句话,我们要要关注以上所有的性能点

    二、软件性能的几个主要术语

    1、响应时间:对请求作出响应所需要的时间

    网络传输时间:N1+N2+N3+N4

    应用服务器处理时间:A1+A3

    数据库服务器处理时间:A2

    响应时间=N1+A1+N2+A2+N3+A3+N4

    2、并发用户数的计算公式

    系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是2000个,那么这个数量,就是系统用户数

    同时在线用户数:在一定的时间范围内,最大的同时在线用户数量

    平均并发用户数的计算:

    C=nL /

    其中C是平均的并发用户数,n是平均每天访问用户数,L是一天内用户从登录到退出的平均时间(操作平均时间),T是考察时间长度(一天内多长时间有用户使用系统)

    并发用户数峰值计算:

    C^约等于C + 3*根号C 

    其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论

    3、吞吐量的计算公式

     指单位时间内系统处理用户的请求数

     从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量

     从网络角度看,吞吐量可以用:字节/秒来衡量

     对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力

    以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。

    当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R / T

    其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间

    4、性能计数器

     是描述服务器或操作系统性能的一些数据指标,如使用内存数、进程时间,在性能测试中发挥着“监控和分析”的作用,尤其是在分析统统可扩展性、进行新能瓶颈定位时有着非常关键的作用。

     资源利用率:指系统各种资源的使用情况,如cpu占用率为68%,内存占用率为55%,一般使用“资源实际使用/总的资源可用量”形成资源利用率。

    5、思考时间的计算公式

     Think Time,从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔,而在做新能测试时,为了模拟这样的时间间隔,引入了思考时间这个概念,来更加真实的模拟用户的操作。

    在吞吐量这个公式中F=VU * R / T说明吞吐量F是VU数量、每个用户发出的请求数R和时间T的函数,而其中的R又可以用时间T和用户思考时间TS来计算:R = T / TS

    下面给出一个计算思考时间的一般步骤:

    A、首先计算出系统的并发用户数

          C=nL / T    F=R×C

    B、统计出系统平均的吞吐量

              F=VU * R / T R×C = VU * R / T

    C、统计出平均每个用户发出的请求数量

      R=u*C*T/VU

    D、根据公式计算出思考时间TS=T/

     

    用门的概念理解响应时间和吞吐量之间的关系

      性能测试的目的是检查软件的平均响应时间或者吞吐量是否符合指定的标准。

      例如,当测试前已经获知在线人数为10000,可以设定性能测试的目的是检测软件典型交易的平均响应时间是否符合小于5秒的指标值。

      例如,当测试前不知道在线人数是多少,但是已经获知该软件在一定的时间周期内(t)必须处理N笔交易,可以设定性能测试的目的是检测软件典型交易的吞吐量是否符合大于25笔交易/秒的指标值。

      但是,在第二种情况出现时,还应该考虑若软件的吞吐量符合指定的指标值时,软件典型交易的平均响应时间是否符合小于5秒的指标值。

      为什么呢?

      我们可以利用“门”的概念来理解这里面的偏差!

      首先,我们假设如下的情况:

      共有5个人;

      有1扇门;

      一个人通过这扇门需要花费1秒的时间;

      此时,这扇门的吞吐量为1人/秒。5个人通过这扇门的平均响应时间为(1+2+3+4+5)/5=3秒。

      如何才能提高人的通过效率呢?即,如何才能提高门的吞吐量呢?

      有两种方法:

      (1)减小通过门的时间;

      (2)增加门的数量

      例如,

      (1)将一个人通过门的时间减小为0.5秒,门的吞吐量变成了2人/秒;

      (2)增加一个门,门的吞吐量也变成了2人/秒

      结果是:

      (1)5个人通过改善通过时间的门的平均响应时间为(0.5+1+1.5+2+2.5)/5=1.5秒;

      (2)5个人通过两扇门的平均响应时间为(1+1+2+2+3)/5=1.8秒

      此时,你可以发现,软件开发员改进软件处理并发交易请求的方法有两个,第一种是提高单个请求的处理速率,第二种是增加处理请求的线程的数量;或者是两种方法的组合。但是,不同方法的使用并不代表吞吐量得到了提高,而同时软件典型交易的平均响应时间也获得了相同值的改善。

      因此,在性能测试以吞吐量为检测指标的时候,不光要评估吞吐量是否符合了性能指标的要求,同时也必须考虑响应时间是否符合性能指标的要求。

      假设,在测试前,规定了吞吐量为大于25笔交易/秒,平均响应时间为小于5秒,在测试后,若实际吞吐量等于27笔交易/秒,不能仅凭这个27笔交易/秒就确定该软件的性能符合要求了,还要看平均响应时间是否符合要求。这时的平均响应时间可能大于5秒。

      而,如果测试前,规定了在线人数为10000,平均响应时间为小于5秒,在测试后,仅凭实际平均响应时间等于4秒就可以判断该软件的性能符合要求。

Open Toolbar