软件测试复习大纲

qianjiang 贡献于2017-06-13

作者 asus  创建于2017-06-01 05:04:00   修改者asus  修改于2017-06-01 05:45:00字数27967

文档摘要:
关键词:

复习大纲(个人整理) 一、中英文对照 LLD:详细设计说明书 HLD:概要设计说明书 CR:变更请求 CI:配置项 ISO:国际标准化组织 SE:需求开发人员 6Sigma:六西格玛 RTM:需求跟踪矩阵 MTBF:系统平均失效时间 MTTR:系统平均恢复时间 CCB(Change Control Board):变更控制委员会 PM(Project Manager):项目经理 CMO(Configuration Manager Officer):配置管理员 SWE(Software Engineer):软件开发工程师 STE/TE(Software Test Engineer):软件测试工程师 QA(Quality Assurance):质量保证人员 TSE(Test System Engineer):测试系统工程师CMM(Capability Maturity Model):软件能力成熟度模型 单元测试(UT),集成测试(IT),系统测试(ST) SRS(Software Requirement Specification):软件需求说明书 SQA(Software Quality Assurance):软件质量保证,监督是否按流程办事 1、 配置库权限 CMO:check in/checkout,为其他人设check in/check out; 开发人员:只读,CMO为其设置check in/check out; 测试人员/QA人员:只读,CMO为其设置check in/check out; 2、 常用的配置管理工具 Clearcase、CVS、VSS、SVN(常用) 3、 配置管理角色(软件配置管理过程中的角色) 项目负责人(Project Manager —PM) 配置管理员(Configuration Manager Officer—CMO) 开发工程师(Software Engineer—SWE) 测试工程师(Software Test Engineer—STE/TE) 测试系统工程师(Test System Engineer—TSE) 质量保证工程师(Quality Assurance—QA) 变更控制委员会(Change Control Board—CCB) 二、Linux 1、 “/”根目录部分有以下子目录 (1)/:根目录 (2)/bin:系统启动时需要的执行文件(可执行的二进制文件),这些文件可以被普通用户使用 (3)/boot:用于自举加载程序(LILO或GRUB)的文件 (4)/dev:设备文件目录 (5)/etc:操作系统的配置文件目录 (6)/home:个人的家目录,存放的是用户相关的文件 (7)/lib:linux中的共享库(类似数据库) (8)按【向上箭头】和【向下箭头】可以滚动以前使用过的命令 (9)键入了文件名、命令、或路径名的一部分,然后按【Tab】键,会把文件或路径名的剩余部分补全 (10)pwd:查看路径 (11)cd:切换目录的命令 vi:打开文件 (12)ls:查看当前目录下的信息 windows中是dir (13)cd /:打开根目录 Cd ..:返回上一层目录 Cd bin:打开bin目录 2、 用户接口、命令行接口 (1)命令行接口:root:# 普通用户:$ (2)root->普通用户:su - yexiaojuan 普通用户->root:su - root ->输口令 3、 系统管理命令 (1) 注销:logout(锁定界面) (2) 重启:reboot (3) 清屏:clear (4) 日历:cal 1):cal 2014:2014年日历 2):cal 3 2014:2014年3月 (5) 日期:date 1):date +%y%m%d:指定格式显示时间 2):date -s 07/13/2011:修改日期 3):date -s 11:55:00:修改日期 (6) 关机:shutdown 1):立刻关机:shutdown 2):5分钟后关机:shutdown +5 3):在10:30时关机:shutdown 10:30 4):立刻关闭系统并重启:shutdown -r now 5):在23:59时重启动:shutdown -r 23:59 4、 用户管理 (1) useradd XXX:建立用户账号 (2) Passwd XXX:修改用户密码 (3) Usermod -g aaa bbb:将bbb用户所属组改成aaa (4) Userdel XXX:删除用户账号 (passwd 没了,home还有) Userdel -r XXX:删除用户账号,文件 (passwd,home都没了) 若用户已删,想删里面的文件,则用别的命令。 (5) Groupadd XXX:建立用户组 (6) Groupmod -n aaa ddd:将组ddd的组名改为aaa (7) Groupdel XXX:删除组(组里没有用户可删,有用户,先删用户,再删组) 5、 目录管理 (1) mkdir XXX:创建目录 (2) rmdir XXX:删除空目录(删除的目录为空目录,若不空,则先删里面的文件,用cd打开,用rmdir删目录,rm删.txt文本文件) (3) mv test(旧) test1(新):将test目录重命名为test1 Mv重命名功能时后面对象仅是对象名,如果有路径将失效剪切功能 (4) Cd /home/yexiaojuan/test1:目录路径切换 (5) Touch 51testing.txt:创文本文件 (6) Vi:打开文本后编译,查看 1)打开后 i:插入,写数据 Esc:退出“输入” 2)退出后 X:删某一个字 dd:删一行 R+3(要替换的字):替换 操作失误,撤销:u 3)最后 :Wq:保存并退出 备注:用vi打开一个文本文件后,在文本文件里查找某个单词时,用/ 单词(不是编辑环境下) 6、 文档编辑命令 (1) vi:打开文本后编译,查看 1)进入vi命令 Vi filename:打开或新建文件,并将光标置于第一行首 Vi +n filename:打开文件,并将光标置于第n行首 Vi + filename:打开文件,并将光标置于最后一行首 Vi -r filename:在上次正用vi编辑时发生系统崩溃,恢复filename Vi filename...filename:打开多个文件,依次编辑 2)vi移动光标类命令 h:光标左移一个字符 l:光标右移一个字符 space:光标右移一个字符 backspace:光标左移一个字符 k或ctrl+p:光标上移一行 j或ctrl+n:光标下移一行 Enter:光标下移一行 W或w:光标右移一个字至自首 B或b:光标左移一个字至自首 E或e:光标右移一个字至字尾 (:光标移至句首 ):光标移至句尾 {:光标移至段落开头 }:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第N行尾 H:光标移至屏幕顶行 M:光标移至屏幕中间行 L:光标移至屏幕最后行 0:(数字0)光标移至当前行首 $:光标移至当前行尾 3)vi屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b:向文件首放一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 4)vi插入文本类命令 i:在光标前 l:在当前行首 a;光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按esc键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替 5)vi保存退出命令 :q 退出vi :wq 保存并退出vi :w 保存编辑内容l :q! 强制退出 (2) Grep:对文本文件进行查找 Grep “sort” * .doc :查找目录下所有.doc文件中带有字符串“sort”的 Grep “sort” * : 查找目录下所有文件带有字符串“sort”的 Grep -c “48” data.txt:包含48的一共有多少行 Grep -n “48” data.txt:包含48的每行都打印出来 Grep -v “48” data.txt:显示不匹配行 Grep -i “48” data.txt:不区分大小写,只限于首字母 Grep:以文本文件内容查找 find:以文本文件名字查找 (3) Sort:内容排序(小->大,数字->字母,小写->大写) Sort 51testing.txt 同一行之间不排序,行与行之间排序 (4) Wc:打印各玩意的个数 一个汉字三个字节,两个字符 Wc -c wc.txt:打印字节的个数(算”\o”) Wc -m wc.txt:打印字符的个数(算”\o”) -l:行数 -L:最长的一行多长 -w:单词的个数 (5) Cp(文件之间的复制) 1)cp -r test1 test2:将test1目录拷到test2中 2)cp test.txt aaa 3)cp test.txt /home/yexiaojuan/51test 4)cp /home/yexiaojuan/wc.txt /h ome/yexiaojuan/aaa 5)cp test1/test.txt ./ :将test1中test.txt文件拷贝到当前目录下 (6) Mv(文件之间的剪切) 1)mv test.txt aaa :将test.txt剪切到aaa 2)mv test test1:将test重命名为test1(test1要是没有出现的,新的目录) 3)mv test aaa :将test剪切到aaa (7) Rm(删除文件). 1)rm wenjian.txt :删文本文件 2)rm -rf wenjian :在home里,把用userdel删除时留在home里的文件删除 (8) Find:查找文件(~:根目录,.:当前目录) 1)find ~ -name “*.txt” -print 在根目录下查找文件名符合*.txt的文件 2)find . -name “*.txt” -print 在当前目录下查找文件名符合*.txt的文件 3)find . -name “【A-Z】*” -print 在当前目录下查找文件名以大写字母开头的文件 4)find /etc -name “host” -print 在etc目录下查找文件名是host的文件 5)find ~ -name “*” -print 查找根目录下所有的文件 也可以是 : find . -print (9) ls和ll 1) ls -a:打开所有文件(包括隐含文件) 2) ls -l:列表显示(不包含隐含文件) 3) ll:列表显示(不包含隐含文件) 7、 文档管理命令(ctrl+c:退出/操作失误) (1) Cat:显示文件内容 1)cat file1 file2 file3 :同时打开三个文件 2)cat -n XXX:显示文件内容,对显示行进行编号,包括空白行 3)cat -b XXX:显示文件内容,对显示行进行编号,不包括空白行 4)cat XXX:显示文件内容,无编号 5)cat -v XXX:显示控制字符 (2) Head:显示前几行 1)head XXX:显示文件前十行 2)head -3 XXX:显示文件前三行 (3) More:分页显示 1)more +2 -3 XXX:从第二行开始,每页显示3行,空白行也算。按回车,显示下一行。后面就是一行一行的显示。 (4) Tail:输出文件的最后部分 1)tail -2 XXX:显示文件最后2行 2)tail -f XXX:显示文件最后10行,动态文件,如日志文件 (5) tac XXX:逆向输出文件内容 8、 Linux权限管理 (1) linux权限分为只读r(read)4,可写w(write)2,执行x(execute)1 (2) d rwx r-x r-x 2 root root 4096 01-24 10:48 1 2 3 4 5 6 7 8 9 Desktop 通过LL查看权限 10 1)文件的类型:“d”表示该文件是目录,也就是通常意义的文件夹; “-”表示该文件是一般文件; “|”表示该文件是一个链接,也就是通常意义的快捷方式 2)表示文件所有者的权限 3)表示文件组内其他成员对文件的操作权限 4)表示其他成员(非组内)对文件的操作权限 5)表示文件连接数 6)表示文件拥有者 7)表示文件所属组 8)表示文件的大小 9)表示文件最近一次被修改时间(若无修改,则是创建时间) 10)表示文件名称 (3) 赋权限 1)u:文件拥有者(user) g:文件所属组(group) O:其他人(other) a:所有人(all) r(4) w(2) x(1) u+:添加权限 u-:删除权限 2)字母赋权限 Chmod u+rwx XXX :赋拥有者权限 Chmod g+rw XXX:赋组内其他人权限 Chmod o+r XXX:赋其他人(非组内)权限 Chmod rwxrw-r-- XXX 等价于上面三个的组合 3)数字赋权限 Chmod 764 XXX :赋拥有者读写执行权限,组内其他人读写权限,非组内其他人读权限 4)特例 新建的文件,一开始就存在了权限。 字母是把之前的权限合并了,数字是把前面的权限覆盖了。 若要把字母,数字弄成一样,就在一开始用数字000先赋权限,然后各自用字母、数字赋权限。 (4) Chgrp:修改文件所属组 Chgrp XXX(新的组名) XXX(文件名) (5) Chown:修改文件拥有者 Chown XXX(新的文件拥有者) XXX(文件名) (6) Diff:比较文件的不同 1)diff wc.txt wc1.txt :以wc1.txt的文件为标准,第一个文件需要做什么才能跟第二个文件一样 (7) File:检测文本类型 File XXX :检测文本类型 文本类型有 : ASCII text:我们可以改动,ASCII编码 32-bit:二进制编码,我们不可以改动 (8) Whereis:查找所有文件 Whereis passwd:查找系统内所有文件 (9) Which:查找可执行的二进制文件 Which passwd:查找可执行的二进制文件 /user/bin/passwd 9、 系统设置命令 (1) Alias:给命令起别名 alias t=”rm” :给命令rm起别名t t wc1.txt :删除wc1.txt unalias t :删除别名t (2) Echo:显示文本行或变量取值 1)echo常用功能:\c:不换行 \t:跳格 \n:换行 对于linux系统,必须使用-e使上面转义符生效 2) echo -e “hello\tboy” //操作 hello boy //结果 3)echo命令对特殊字符敏感,如果要输出特殊字符,需要用\屏蔽其特殊含义。 常用的特殊字符:双引号:“” 单引号:‘’ 反斜线:\ echo “\”\”” //操作 “” //结果 (3) Export:设置环境变量 1)设置环境变量: var_name=value;export var_name 或 var_name=value export var_name 2)查看环境变量取值 echo $var_name 3)删除某个系统环境变量 unset var_name 该命令只是从当前用户进程中删除,不会从文件/etc/profile删除 4)source:加载环境变量 5)例子 【yexiaojuan@localhost ~】$ ls -a 【..】$ vi .bashrc ... If //设置环境变量 Rongamin=huizhan;export rongamin fi 【..】$ source .bashrc //环境变量生效 【..】echo $rongamin //显示文本行或变量取值 10、 网络通信命令 (1) ifconfig 1)ifconfig :查看ip 2)修改ip: 【root@localhost root】#cd / Cd etc Cd syscofig Cd network-scripts Vi ifcfg-etho 改ip Service network restart(重启网络服务使修改生效) 再用ifconfig查看ip 或 ifconfig eth0 172.168.0.201 netmask 255.255.0.0 3)ifconfig eth0 up/down :启用/禁用网卡 (2) Netconfig:图形界面设置网络 Service network restart :重启网络服务是修改生效 (3) Netstat:查看网络状态 1)netstat:显示Tcp/ip的网络状态 2)netstat -anp:监听 进程ID号 3)netstat -anp|grep 172.168.0.99 |:管道,管道左边是输出,右边是输入。 4)netstat -|  //看端口 5)netstat -anp|grep 8080 (4) Ping:网络是否通畅 Ping ip:网络连接是否通畅 (5) Telnet:连接到远程电脑上 Telnet ip:连接到远程电脑上 (6) 另加 1)whoami 我是谁//用户 2)who am i //用户 (连接数 时间 主机ip) 3)who //所有的登录用户 4)last //最近什么用户访问服务器,ip,时间 5)history //以往的操作命令 6)hostname //查看主机名 7)uname //列出系统信息(查看linux内核) 8)uname -a //所有信息 9)uname -r //内核 10)kill 3193(进程ID号) //杀死进程 11)kill -9 3193 //强制杀死进程 11、 磁盘管理命令 (1) df:查看磁盘空间 df :查看磁盘空间 (2) du:查看指定文件大小 du XXX:查看指定文件大小 du -k XXX:查看指定文件,以kb形式显示 12、 系统资源查看 (1) top:动态查看系统资源 top -5 //5秒刷新一次,动态查看系统资源 (2) ps:静态查看系统资源 ps -e //显示所有进程 ps -ef //全格式的显示所有的进程 ps -f //全格式 ps -ef|grep 进程ID号 //查看进程ID为某某的进程状态(grep是捕获关键字) (3) free:查看内存 free:查看内存 13、 备份压缩命令 (1) Gzip:压缩 Gunzip/gzip -d:解压缩 1)gzip -r* //压缩目录下所有的文件 2)gzip -d test.txt.zip //解压缩并不保留源文件 3)gzip test.txt //压缩 4)gunzip test.txt.zip //解压缩 (2) Tar:打包(z:压缩、x:解压、v:文件内容、f:包名、c:打包) 1)文件打包:tar cvf 文件解包:tar xvf 文件压缩:tar zcvf 文件解压:tar zxvf 1)tar -cvf aaa.tar 111.txt 51test //将111.txt和51test打包到aaa.tar 2)cp aaa.tar yxj //将包aaa.tar复制到yxj文件夹中 3)tar -xvf aaa.tar //解包aaa.tar 1)tar -zcvf aaa.tar 111.txt 51test //将111.txt和51test压缩到aaa.tar 2)cp aaa.tar yxj //将aaa.tar复制到yxj文件夹中 3)tar -zxvf aaa.tar //解压缩aaa.tar (3) Zip:将文件打包为zip格式的压缩文件 Unzip:解压缩 【...】Zip hehe.zip liunx.txt 【...】Mkdir heihei 【...】Cp hehe.zip heihei 【...】Unzip hehe.zip (4) tcpdump:抓包 Tcpdump -i eth0(数字0) -s o -vv -w /root/test.pcap port 80 -i etho:某个设备(存放ip地址设备的文件) -s o:完整的包 -vv:显示完整信息 -w:生成文件 tcpdump -i any -w zhubao.cap host xxx.xxx.xxx.xxx(ip地址) tcpdump -i any -w zhubao.cap port xxx.xxx.xxx.xxx(端口号) 三、个人整理资料 ▲什么是白盒测试? 白盒测试是根本被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况 白盒测试是基于程序结构的逻辑驱动测试 ▲什么是黑盒测试? 黑盒测试是把被测对象看成一个对象,只考虑其整体特性,不考虑其内部具体实现 黑盒测试针对的被测对象可以是一个系统、一个子系统、一个模块、一个子模块、一个函数等 黑盒测试又可以被称为基于规格的测试。 ▲什么是测试? 为了发现程序中的错误而执行的过程 ▲缺陷基本项及作用 缺陷发现人 缺陷发现时间 缺陷状态 缺陷严重程度 缺陷所属版本 优先级 缺陷修改日期 再现性 回归测试 ▲通用用例要素是? 用例编号 测试项目 测试标题 重要级别 预置条件 输入参数 操作步骤 预期输出 ▲QC缺陷状态? new、open、reopen、closed、fixed、reject、abandon、postpone、duplicate ▲缺陷的严重程度? 提示、一般、严重、致命 ▲一个水杯或者其他有哪些测试点? 功能性、可靠性、效率、易用性、可维护性、可移植性 ▲手工测试与自动化测试? 手工测试:测试活动以及执行由人工来完成 自动化测试:指测试执行由计算机来完成 ▲软件项目人员组成? 分析人员、设计人员、测试人员、开发人员、配置管理人员、SQA ▲瀑布模式生命周期? 计划---需求分析----设计----编码-----测试-----运行-----评价 ▲测试过程分为? 分析阶段、设计阶段、实现阶段、执行阶段 ▲测试过程分为? 单元测试、系统测试、集成测试、验收测试(α测试、β测试) ▲回归策略分为? 完全性回归测试、选择性回归测试 ▲按照人工划分? 人工测试、自动化测试 ▲按照运行划分? 静态分析、动态分析 ▲按照熟悉代码划分? 白黑灰测试 ▲用例设计方法? 正交、等价类、边界值、因果图表、状态迁移、输入域、输出域 ▲测试的流程? 测试准备---测试计划---测试需求---测试用例---测试执行---测试缺陷管理--测试报告总结 ▲QC的作用与功能? 需求管理--用例开发---测试实施--缺陷记录---测试管理---缺陷管理 维护测试数据库,跟踪缺陷,缺陷监控解决,测试工具链接,提供全套解决方案 ▲QC五大用户:软件开发人员、软件测试人员、项目经理、项目管理员、普通查看人员 ▲oracle的端口1521、SQLserver的端口1433、MySQL的端口3306、 SVN端口是443、 HTTP端口是80 QC端口是8080 ▲常见的软件研发流程:瀑布模型,螺旋模型,RUP流程,IPD流程 ▲测试模型:瀑布模型、H模型、V&V模型 ▲软件测试终止的标准是什么? 当测试用例全部执行完毕后,严重缺陷不超过3个,一般缺陷不超过10个,提示性缺陷不超过20个 ▲oracle中dos命令中切换用户命令是什么? conn+用户 相当于su ▲su-与su的区别是什么? su- 环境变化 su 环境还是上一个用户的配置环境 ▲ CMM五个成熟等级中哪一个近似完全可靠,它的软件返工百分比是什么? 优化级,软件返工百分比是<=2% ▲ CMM五个成熟等级是什么? 初始级、可重复级、已定义级、已管理级、优化级 ▲http中get与post的区别是什么? get 提交信息都会在地址栏中看到,不安全。数据查询用get post提交信息都会放在http请求的请求体中,是看不到的。很安全。 添加删除修改用post ▲什么是回归测试? 指修改旧代码后,重新进行测试并确认修改后没有新的错误或导致其他代码产生错误 ▲回归测试的目的? a.验证错误是否修复 b.检测对代码的修改是否引入新的错误 ▲用例设计方法? 等价类、因果图表、边界值、正交、状态迁移、输入域、输出域 ▲赋权限 只读(r) 可写(w) 执行(x) u:文件拥有者 g:文件所属组 o:其他人 a:所有人 u+:添加权限 u-:删除权限 字母赋权限: chmod u+rwx XXX 赋拥有者权限 chmod g+rw XXX 赋组内其他人权限 chmod o+r XXX 赋其他人(非组内)权限 chmod rwxrw-r-- XXX 等于上面三个组合 数字赋权限: chmod 764 XXX :赋拥有者读写执行权限,组内其他人读写权限,其他人只读 ▲软件测试的目的? 证明(表达软件能够工作)----检测(发现错误)----预防(管理质量) ▲软件质量度量的手段是什么? 1.规模 2.工作量 3.进度 4.质量-缺陷 ▲质量管理的PDCA循环是什么? 1.Plan (计划设计) 2.Do (实施执行) 3.check(检测检查) 4.Act (纠正错误) ▲项目测试设计谁去写? 测试组长或者测试经理,其他人参与评审 ▲SVN常见操作是什么? 上传、下载、同步、锁定、修改 ▲ISO9000八项质量管理原则? 1.以顾客为关注焦点 2.领导作用 3.全员参与 4.过程方法 5.管理的系统方法 6.持续改进 7.基于事实的决策方法 ▲需求的种类? 业务需求、系统需求、功能需求、用户需求 ▲单元测试重点关注哪些方面? 1.单元接口 2.局部数据结构 3.独立路径 4.出错处理 5.边界条件 ▲单元测试和系统测试的区别? 测试方法不同:单元测试属于白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例, 来对内部控制流程进行测试,可完全不顾程序的整体功能实 现情况; 系统测试属于黑盒测试黑盒测试把被测对象看成一个黑盒,只考虑其整体特性,不考虑其内部具体实现。 考察范围不同:单元测试主要测数据结构,逻辑控制,异常处理等。系统测试主要测试相对于需求的符合度。 评估基准不同:单元测试主要评估逻辑覆盖率。系统测试主要考察对SRS的覆盖率 ▲单元测试是对软件基本组成单元进行的测试,就是软件设计的最小单位 单元测试的目的在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。 单元测试策略:孤立的测试策略、自顶向下、自底向上 集成测试也叫组装测试、联合测试、子系统测试或部件测试。是在单元测试的基础上,将所有模块安装概要设计要求组装成为子系统或系统,进行集成测试。 集成测试策略:大爆炸集成、自顶向下、自底向下 系统测试是将已集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起, 在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。 系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。 系统测试的测试用例应根据需求分析说明书来设计,并在实际使用环境下来运行。 ▲α与β测试区别? α测试:在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。一般由最终用户或其他人员完全,不能由程序或者测试员完成。 β测试:当开放和测试根本完成时所作的测试,最终的错误和问题需要在最终发行前找到。一般由最终用户或其他人员完全,不能由程序员或测试员完全。 ▲负载、容量、强度测试区别? 负载测试:在一定的工作负荷下,系统的负荷及响应时间 强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响 容量测试:通过预先分析出反映软件系统应用特征的某项指标的极限值,系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。 容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或者工 作量。容量测试的目的是使系统承受超额的数据容量来发行它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。 ▲请大概说明配置管理的作用和常用工具? 保证软件产品的完整性和可溯性 1. 可视性:用户/买方/卖方详细知道工作内容; 2. 管理层能够知道产品特性; 3. 管理层可看到变更的影响; 4. 管理层可选择参与的节点; 5. 所有的项目参与者在同一平台下交流; 6.了解现在和计划的配置情况; 工具: SVN ▲数据库都有哪些主要对象构成? 表、视图、序列、索引、游标、触发器、同义词、备份 ▲简述索引优缺点? 优点:加快查询速度、优化数据库系统。 缺点:索引过多会增加数据库的负担。 ▲请说明Java中break、continue的作用? 在循环语句中执行到break跳出本次循环, 在循环语句中执行到continue之后结束本次循环,继续下一次循环语句。 ▲类和对象的区别? 类是对象的类型,对象是类的实例,将类实例化得到对象 ▲说说SQA和测试的关系,以及SQA的工作范围 QA从流程方面保证软件的质量、测试从技术方面保证软件的质量、 只进行SQA或者只进行测试活动不一定能产生好的软件质量。 1.保障制度体系 2.促进过程改进 3.指导项目实施 4.增加透明度 5.评审项目活动 6.审核工作产品 7.协助解决问题 8.提供决策参考 9.进行缺陷预防 10.实现质量目标 ▲同行评审的类型有哪些 技术评审、走读、正规检视 ▲对查询出的字段去掉重复行的关键字是 distinct 对查询的字段进行条数统计数量的函数是 count ▲oracle中事务提交命令 commit 设置保存点命令 savepoint ==================================================== 1.在linux下创建一个zhangsan用户,所属组linuxtest,密码为123456,并在 用户目录创建名为51testing的文件夹 Su – root Useradd zhangsan Passwd zhangsan 123456 123456 groupadd linuxtest Usermod –g linuxtest zhangsan Su - zhangsan Mkdir 51testing ==================================================== 2.变量值互换 int a=30; int b=50; int c=0; c=a; a=b; b=c; System.out.println("a="+a); System.out.println("b="+b); //c=a=b=c ==================================================== 3. 9*9乘法表 for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+i*j); System.out.print("\t"); } System.out.println(); } ==================================================== 4.求1-100的累积和与能被7整除的数,并打印出被7整除的数 public static void main (string[] args){ int a=0; for(i=1;i<=100;i++){ a+=i; if(i%7==0) System.out.println(i); } } ==================================================== 5.为mkdir命令设置别名为m;设置别名后,用别名创建一个新的目录test; 取消这个别名。 alias m=”mkdir” m test unalias m ==================================================== 6.用Java语言写一个方法对下面的数据进行求和 int a[]={12, 8, 3, 23, 2, 11} int a[]={12,8,3,23,2,11}; int b=0; for(int i=0;i【network adapter】为bridged 两台虚拟机互ping,保证能ping通 4、在保证ping通的基础上,修改服务端虚拟机 1)设置静态IP 2)修改计算机名 5、安装server 安装包:class-server 10201_win32.iso 光盘镜像文件,直接挂载 6、安装好服务端之后 安装客户端 安装包:class-client 10201_win32.zip 解压缩工具:wrar501sc.exe 先在虚拟机安装解压缩工具,然后拖动安装包到虚拟机,解压 解压成功之后,找到setup.exe 双击setup执行安装 在【选择安装类型】界面,大家选‘管理员’ 7、客户端安装好之后,在客户端虚拟机继续安装plsql 安装包:class-plsql.iso 8、plsql连接数据库,如何确认有没有登录成功 plsql窗口左上角出现“Not logged on”,说明登录失败; 窗口左上方出现类似“scott@orcl”,登录成功 如何解锁用户和修改用户密码? 1、打开cmd 2、输入sqlplus / as sysdba dba database administrator 3、解锁用户:the account is locked alter user scott account unlock; 语句执之后提示“用户已更改”,则解锁成功 4、修改密码 alter user scott identified by 要设置的密码; 语句执之后提示“用户已更改”,则修改成功 一个客户端可以连接多个服务端 C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN 记事本打开tnsnames.ora select * from emp; ---员工表 employee select * from dept; ---部门表 department select * from salgrade; ---工资等级表 salary grade ---第一张 emp empno 员工编号 ename 员工姓名 job 工作 mgr 经理编号/主管的编号 hiredate 入职日期 sal 工资 comm 奖金/津贴 deptno 部门编号 ---第二张 部门表dept deptno 部门编号 dname 部门名称 loc 部门所在地 ---第三张 工资等级表 grade 等级 losal 该等级最低工资 low salary hisal 该等级最高工资 high salary ---数据查询语句 select 列1,列2,列3…… from 表 where 条件 --查询员工的编号(empno)、姓名(ename)、工资(sal) select empno,ename,sal from emp; --查询工资大于1500的员工的姓名、工资、奖金 select ename,sal,comm from emp where sal > 1500; 查询SMITH的工资 select sal from emp where ename = 'SMITH'; --算术运算符 + - * / 括号 数值型和日期型(只支持加减) --每个员工多发30000 --查询每个员工要发多少工资 select sal,sal+30000 from emp; --求每个员工的年薪 PS. sal是月薪 select sal,sal*12 from emp; --求每个员工的工资奖金和 select sal,comm,sal+comm from emp; --如果在算术运算的时候存在空值,那么结果为空 --空值替换函数nvl() select comm,nvl(comm,0) from emp; select sal,comm,sal+nvl(comm,0) from emp; ---括号的优先级最高 select sal*12+300,(sal+300)*12 from emp; ---列的别名 select sal,comm,sal+nvl(comm,0) 工资奖金和 from emp; select sal*12+300 三百奖金,(sal+300)*12 月涨三百 from emp; select ename 姓名,sal 工资 from emp; ---给列起别名 select ename AS 姓名,sal AS 工资 from emp;---给列起别名 select ename "姓+名",sal "Gongzi" from emp; ---给列起别名,如果别名包含特殊字符,或者要区分大小写 --那么别名,需要加英文双引号 ---连接符 || select ename||'的工资是'||sal 别名 from emp; select deptno||'部门的'||ename||'的经理是' ||mgr from emp; select ename||sal from emp; ---去重记录distinct select distinct deptno from emp; ---条件限定 where --查询部门编号是10的员工的信息 select * from emp where deptno = 10; --查询10部门中,职位是MANAGER的员工信息 select * from emp where deptno = 10 and job = 'MANAGER'; --查询20部门中,工资在1500到3000之间的员工信息 select * from emp where deptno = 20 and sal >= 1500 and sal <= 3000; --between…… and …… select * from emp where deptno = 20 and sal between 1500 and 3000; 下限 上限 ---比较运算符 = < > <= >= <> != ---其他比较运算符 --between…… and…… --in(……) --like 模糊查询 ---查询工作是CLERK,或者是MANAGER,或者是SALESMAN的员工信息 select * from emp where job = 'CLERK' or job = 'MANAGER' or job = 'SALESMAN'; ---- select * from emp where job in('CLERK','MANAGER','SALESMAN'); ---查询经理编号是7698或7566,且工资大于1500的 --员工姓名、经理编号和工资 select ename,mgr,sal from emp where mgr in(7698,7566) and sal > 1500; ---查询部门编号不是10或40,职位是MANAGER的员工信息 提示:我们有and,有or,我们也有not select * from emp where deptno not in(10,40) and job = 'MANAGER'; where deptno != 10 and deptno != 40 deptno in(10,40)等价于 deptno = 10 or deptno =40 deptno not in(10,40)等价于 deptno != 10 and deptno != 40 ---like 模糊查询 --查询姓名以S开头的员工信息 select * from emp where ename like 'S%'; --%代表零个或多个任意字符 报错的处理: 1)报错:目标主机不存在 a.检查服务端虚拟机是否启动; b.检查服务端和客户端IP是否异常; c.检查服务端和客户端ip互ping,能不能ping通 #IP异常的处理: 如果ipconfig之后发现结果是0.0.0.0 说明获取不到IP。 原因:IP冲突 解决:1、改成动态,重新获取IP 2、将获取到的动态IP改成静态 3、查看服务端的listener.ora 1)如果HOST配置的是IP地址,那也要改 2)重启监听 4、修改客户端的tnsnames.ora 2)报错:TNS无监听/TNS协议适配器错误/TNS无法解析描述符 a.检查服务端监听的服务是否启动 b.检查服务端监听配置(服务端IP或者计算机名是否有修改) c.检查客户端tnsnames.ora里的host是否与服务端IP或主机名一致 监听,位于服务端 1)监听文件listener.ora: C:\oracle\product\10.2.0\db_1\network\ADMIN 2)Net Manager 查看【监听程序】、【服务命名】 3)重启监听 a.【服务】-->Oracle……TNSListener b.监听命令(重点): lsnrctl stop lsnrctl start lsnrctl status --第二天的sql语句 ---查询工作名称中包含MANA,同时部门编号是10或20的员工的 --姓名、工作、部门号和年薪 --其中年薪这一列使用别名 select ename,job,deptno,sal*12 年薪 from emp where job like '%MANA%' and deptno in(10,20); ---like 模糊查询 --查询姓名以S开头的员工信息 select * from emp where ename like 'S%'; -- %代表零个或多个任意字符 -- _代表任意一个字符 select * from emp where ename like 'A_B'; ABB A1B A,B A%B A_B ---符合 AB ---不符合 select * from emp where ename like 'SM_TH'; select * from emp where ename like 'S_'; ---PS.执行下面任意一句,可以直接修改数据 select t.*,t.rowid from emp t; ---推荐 select * from emp for update; ---容易锁表 ---如果在执行sql语句的时候发现 --执行了很长时间也没有结束,那就有可能锁表了 rowid,oracle针对表中的每一行给的序号 select * from emp where ename like 'SM_TH'; select * from emp where ename like 'SM\_TH' select * from emp where ename like 'SM\_TH' escape '\'; 转义: 1)将特殊字符转为普通字符 例,我们like里的“_”经过转义之后,“_”不再代表任意字符 而只代表它本身 2)将普通字符转为特殊字符 例,字母b经过转义\b之后,代表的是空格 \t 代表的是tab \n 代表的是换行 insert、update、delete语句执行之后, 需要commit修改的结果才会永久保存; 语句执行之后,没有commit,那么可以rollback; ---查询奖金comm为空的员工信息 select * from emp where comm is null; ---空 select * from emp where comm is not null;---非空 ---逻辑运算符 and or not 括号 优先级:not > and > or,括号的优先级最高 --查询工作是SALESMAN或者PRESIDENT,并且工资大于1500的员工 select * from emp where job in('SALESMAN','PRESIDENT') and sal > 1500; select * from emp where (job = 'SALESMAN' or job = 'PRESIDENT') and sal > 1500; select * from emp where job = 'SALESMAN' or job = 'PRESIDENT'; --查询工作是SALESMAN,或者工作是PRESIDENT并且工资大于1500的员工 select * from emp where job = 'SALESMAN' or job = 'PRESIDENT' and sal > 1500; select * from emp where job = 'SALESMAN'; select * from emp where job = 'PRESIDENT' and sal > 1500 ---排序order by select 列1,列2…… from 表 where 条件 order by 列1,列2…… --查询员工信息,要求结果以工资的升序排序 select * from emp order by sal; ---默认升序 select * from emp order by sal asc; ---升序 select * from emp order by sal desc; ---降序 --order by一定是出现在查询语句的最后 --查询工资在1000到2000之间的员工信息,结果以部门编号升序排序 select * from emp where sal between 1000 and 2000 order by deptno asc; --查询员工信息,结果以部门编号升序排序; --如果部门编号相同,那么以工资的降序排序 提示:order by后可以加多个列 order by 列1,列2…… select * from emp order by deptno,sal desc; --查询员工的姓名、年薪、工作年限(工龄,单位:年),以年薪排序 1)如何查询工作年限? 提示:sysdate 代表当前时间 提示:日期相减,默认单位是天 2)order by 可以加列的别名吗 select ename,sal*12 年薪,(sysdate-hiredate)/365 工作年限 from emp order by 年薪; ---单组函数 分组函数 --字符函数 --数字函数 --日期函数 --字符函数 upper() lower() initcap() replace() substr() nvl() nvl2() select t.*,t.rowid from emp t; select ename,lower(ename),upper(ename),initcap(ename) from emp; select ename,upper(lower(ename)) from emp; select * from emp where lower(ename) = 'scott'; --nvl(列,空值替换) nvl2(列,非空替换,空值替换) select empno,ename,job,nvl(job,'wuye') from emp; select comm,nvl2(comm,5000,500) from emp; --replace()替换 substr(列/字符串,截取的起始位置,截取的长度)截取 select ename,replace(ename,'S','sss') from emp; select * from emp where replace(ename,'S','s') = 'sMITH'; select ename,substr(ename,2,3) from emp; select jo ps.单组函数既可以出现在select中,也可以出现在where子句中 ----不使用like,查询工作名称以SALES开头的员工信息 select * from emp where substr(job,1,5) = 'SALES'; ---数字函数 FLOOR() MOD() ROUND() TRUNC() 1)FLOOR(x) 取整,取小于或者等于x的整数 select FLOOR(5.76), FLOOR(5), FLOOR(-5.76) from dual; 2)MOD(x,y) 取余/取模 select mod(8,4),mod(1314,521) from dual; 3)ROUND(x[,y]) 四舍五入 select round(5.76),round(5.76,1),round(5.76,-1) from dual; 4)TRUNC(x[,y]) 截断 select trunc(5.76),trunc(5.76,1),trunc(05.76,-1) from dual; ---查询每个员工的工作年限,年限取整 select round((sysdate-hiredate)/365,2) 整年 from emp; dual,是oracle一张虚拟表,支持insert、update、delete 但是表里永远保持只有一行一列。作用之一是补全查询语句 PS.不要drop这张表 select * from dual; ---安装服务端后,可以用来检查是否安装成功 select sysdate from dual; ---查询系统时间 select 11*123 from dual; ---进行数学运算 select substr('qwertyu',2,3) from dual; ---日期函数 插入一条数据,其中empno为1199,入职日期为1997-12-21 select * from emp; insert into emp(empno,hiredate) values(1200,'12-21-1997'); PS. empno是主键,主键唯一,即值不能重复 --第一个办法:使用默认日期格式 select * from nls_session_parameters; NLS_DATE_FORMAT sep dec NLS_DATE_LANGUAGE alter session set NLS_DATE_FORMAT = 'MM-DD-YYYY'; alter session set NLS_DATE_LANGUAGE = 'AMERICAN'; --第二个办法:使用to_date()函数 insert into emp(empno,hiredate) values(1200,to_date('21-12-1997','DD-MM-YYYY')); --add_months(x,y) x是日期,y单位是月,正负整数 --last_day(x) x是日期,该函数求得是月的最后一天 --next_day(x,y) x是日期,y表示星期几(支持中英文和数字) select add_months(to_date('14-04-2017','DD-MM-YYYY'),-20) from dual; select next_day(to_date('14-04-2017','DD-MM-YYYY'),'星期六') from dual; ----多表联合查询 等值连接、不等值连接、外连接和自连接 ---等值连接 --查询员工姓名和所在的部门的部门名称 select ename,dname from emp,dept where emp.deptno = dept.deptno; --多表连接一定记得要在where子句中写明连接条件 --查询部门名称为SALES的员工的姓名、工作以及部门名称 select e.ename,e.job,d.deptno from emp e,dept d where e.deptno = d.deptno and d.dname = 'SALES'; ---针对不同表中的重复列,在select子句中一定要指明是哪张表的列 ---表的别名 ---不等值连接 --查询员工工资,以及每个员工的工资等级 select e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal; where e.sal >= s.losal and e.sal <= s.hisal; --查询经理编号是7698的员工的工作、工资、工资等级和经理编号 select e.job,e.sal,s.grade,e.mgr from emp e,salgrade s where e.sal between s.losal and s.hisal and e.mgr = 7698; --查询员工姓名、工资等级和部门所在地 select e.ename,s.grade,d.loc from emp e,salgrade s,dept d where e.deptno = d.deptno and e.sal between s.losal and s.hisal; ---查询林华华同学的现代史成绩 select s.aname,c.bname,r.grade from student s,class c,score r where s.ano = r.ano and c.bno = r.bno and s.aname = '林华华' and c.bname = '现代史'; ---外连接 左外连接、右外连接和全外连接 作用:把不满足连接条件的数据也查询出来 ---查询哪个部门没有员工(只要这个部门的部门) select d.deptno from emp e right outer join dept d on e.deptno = d.deptno where e.empno is null; select * from emp,dept where emp.deptno(+) = dept.deptno;---右(外)链接 select * from emp,dept where emp.deptno = dept.deptno(+);---左外连接 insert into emp(empno,ename) values(1122,'qaz'); select * from emp; ---外连接的另一种写法(推荐) select * from emp e right outer join dept d on e.deptno = d.deptno; ---右外 select * from emp e left outer join dept d on e.deptno = d.deptno; ---左外 select * from emp e full outer join dept d on e.deptno = d.deptno; ---全外 --自连接 --查询员工姓名和其经理的姓名 select * from emp; 员工的经理编号 实际上是经理的员工编号 select * from emp worker,emp manager where worker.mgr = manager.empno(+) and worker.mgr is null; --查询哪个员工没有上级,查员工姓名 select ename from emp where mgr is null; ---分组 select 列1,列2…… from 表1,表2…… where 条件,不允许出现分组函数 group by 列1,列2…… having 条件,分组之后进行条件限定 order by 列1,列2…… 求和sum() 求平均数avg() 求最大值max() 最小值min() 计数(统计) count() --PS. 空值不在计算范围内 select sum(sal),avg(sal),max(sal),min(sal) from emp; select count(*),count(ename) from emp; select avg(comm) from emp; ---求每个部门的平均工资(group by分组) select deptno,avg(sal) from emp group by deptno; ---查询每种工作的平均工资(根据什么分组呢?) select job,avg(sal) from emp group by job; ---查询每个部门里每种工作的平均工资(部门号、工作、平均工资) 1)部门分组 2)每个部门内,再根据工作分组 select deptno,job,avg(sal) from emp group by deptno,job order by deptno; select job,avg(sal) from emp group by deptno,job order by deptno; ---出现在select中的列,必须出现在group by子句中 group by中的列数 >= select中的列 ---查询平均工资大于2000的部门编号 select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000; --分组函数不允许出现在where子句中 ---查询平均工资大于2000的工作名称 --其中,如果员工的奖金不为空,则不在计算范围内 想一下,哪个条件用where 哪个条件用having select job from emp where comm is null group by job having avg(sal) > 2000; ---出现在having子句中的列(分组函数除外),也要出现在group by ---student\class\score表, class表两列,分别是bno 课程编号、bname 课程名称 score表三列,分别是ano 学生编号、bno 课程编号、grade 成绩 --查询选修计算机课的人数(提示:统计ano就可以) 1)两表连接 2)bname='计算机' 3)统计 select count(ano) from class c,score s where c.bno = s.bno and c.bname = '计算机'; 分组函数,也叫聚合函数 --子查询 --查询与SCOTT同部门(deptno)的员工信息 select deptno from emp where ename = 'SCOTT'; select * from emp where deptno = (select deptno from emp where ename = 'SCOTT'); 主查询 子查询 --查询与SMITH从事相同工作的员工信息 select * from emp where job = (select job from emp where ename = 'SMITH'); --查询比SCOTT入职晚,同时比SMITH工资高的员工信息 select * from emp where hiredate > (select hiredate from emp where ename = 'SCOTT') and sal > (select sal from emp where ename = 'SMITH'); --查询在SALES部门(部门名称是SALES)工作的员工信息 select * from emp where deptno = (select deptno from dept where dname = 'SALES'); --多行子查询 -->all 大于所有, all(select sal from emp where deptno = 30); >all,相当于"大于最大"; (select max(sal) from emp where deptno = 30); -->any大于任意(至少大于一个) any(select sal from emp where deptno = 30); -- >any,相当于"大于最小" -- (select min(sal) from emp where deptno = 30); -- in() 等价于 =any() select * from emp where sal in(select sal from emp where deptno = 30); --where sal in(1600,1250,2850,1500,950); --where deptno in(20,40); ---操作表 insert update delete --插入数据: 1)insert into 表名[(列1,列2……)] values(); 2)insert into 表名[(列1,列2……)] 子查询; create table emp57 as select * from emp where deptno = 30; select * from emp57; insert into emp57(empno,ename) values(4527,'A'); ---把emp表里20部门员工的信息:添加到emp57: insert into emp57(empno,ename,deptno) select empno,ename,deptno from emp where deptno = 20; --更新数据: 1)update 表名 set 列=值 [where ……]; 2)update 表名 set 列=(子查询) [where ……]; update emp57 set comm = 500 where comm is null; select * from emp57; --把emp57中ALLEN的工资改为emp中KING的工资 update emp57 set sal = (select sal from emp where ename = 'KING') where ename = 'ALLEN'; --给与SCOTT同部门的员工涨工资,每人涨500 update emp57 set sal = sal+500 where deptno = (select deptno from emp57 where ename = 'SCOTT'); ---更改多列 --把SMITH的奖金和工资改成与KING一致 update emp set (sal,comm) = (select sal,comm from emp where ename = 'KING') where ename = 'SMITH'; --给与SCOTT同部门的员工的工资和奖金每人都涨500 update emp57 set sal = sal+500,comm = nvl(comm,0)+500 where deptno = (select deptno from emp57 where ename = 'SCOTT'); ---管理表(DDL 数据定义语句) create alter drop truncate --创建表 create table 表名(列1 数据类型(长度), 列2 数据类型[(长度)], ……); --CTAS create table 表名 as 子查询; create table stu(id number(3), sname varchar2(10), addr varchar2(40)); create table stu2 as select empno id,ename sname from emp; select * from stu2; --修改表 alter 增加一列: alter table stu2 add birth date; select * from stu2; 删除一列 alter table stu2 drop column birth; 修改一列 alter table stu2 modify birth number(10); 修改列名 alter table stu2 rename column birth to birthday; --删除表drop、截断表truncate drop table stu2; truncate table stu2; ---类似于delete from stu2; ---把表中的数据清空,但是表还在 --比较delete、drop和truncate 1、delete是DML语句,支持commit和rollback; drop和truncate是DDL语句,自动提交,不可以rollback 2、drop是直接删除表 delete和truncate是删除表中数据,但是不删除表 3、delete可以删除表中的所有数据,也可以删除where指定的数据 truncate删除的是所有数据,也就是清空表 4、从执行速度上来说,truncate快于delete delete实际上是先备份,再删除;truncate直接删除 ---约束 主键约束,primary key,唯一和非空 外键约束,foreign key,表之间的依赖关系 非空约束,not null,非空但是值可以重复 唯一约束,unique,值唯一但是可以为空 检查约束,check, 规定某列的取值范围 check(sal between 5000 and 50000) --创建约束 --在创建表的同时,创建约束 create table stu3(sid number(4), sname varchar2(10), tel number(11) not null, addr varchar2(40), sex varchar2(4), cno number(4), constraint pk_stu3 primary key(sid), constraint fk_stu3 foreign key(cno) references dept(deptno), constraint uk_stu3 unique(addr), constraint ck_stu3 check(sex in('男','女','不详'))); insert into stu3 values(1111,'leifeng',110,'大声喊','不详',10); insert into stu3 values(null,'leifeng',119,'123','不详',10); select * from stu3; --如果表已经存在,创建约束 alter table stu3 add constraint uk_stu3_name unique(sname); alter table stu3 modify sex varchar2(4) not null; ---添加非空约束 alter table stu3 modify sex varchar2(4) null; ---删除非空 alter table stu3 drop constraint uk_stu3_name; ---删除约束 alter table stu3 modify sex varchar2(4) null; --约束的生效和失效 alter table stu3 disable constraint pk_stu3; ---约束失效 alter table stu3 enable constraint pk_stu3; ---约束生效 ---视图view 视图类似于一个窗口 我们之前接触的表,我们可以认为是物理表,占用存储空间的; 视图是逻辑表,视图的数据来自于物理表 , 可以来自于一张表,也可以来自于多张表 简化操作;提高安全性 ---创建或修改视图 create or replace view emp_v as select empno eid,ename 姓名 from emp ; ---查看视图 select * from emp_v; ---索引 index,类似于目录 --索引的作用:提高查询速度 一张表的主键一般都是表的索引 --创建索引的规则: 1、创建为索引的列要经常出现在where子句中 2、作为索引的列要经常作为连接条件 3、作为索引列的值域(取值范围)广 4、表的数据量大 --索引相关的sql语句: --创建索引 create index 索引名 on 表名(列名); --删除索引 drop index 索引名; --重建索引 alter index 索引名 rebuild; ---权限(DCL 数据控制语句) grant …… to ……; ----给用户赋权限 revoke …… from ……;----收回用户权限 ---sysdba执行 create session create database create user ………… grant create view to scott; ---把创建视图的权限赋给SCOTT用户 revoke create view from scott; ---普通用户赋权 scott emp,abc grant select on emp to abc; ---把查询emp的权限赋给abc用户 revoke select on emp from abc;---收回查询emp的权限 revoke update on emp from abc;---收回修改emp的权限 ---以上的权限也可以sysdba用户身份执行 grant select on scott.emp to abc; ---指明是谁的表scott.emp ---如何新建用户(sysdba去创建),举例--创建abc用户 create user abc identified by 密码; 报错:user ABC lacks CREATE SESSION…… grant create session to abc; ---存储过程和触发器 涉及到plsql编程 --存储过程,plsql带名块 优点:一次编译,多次运行 sql语句的封装 create or replace procedure proce(id in varchar2,vname out varchar2) as begin select ename into vname from emp where empno = id; dbms_output.put_line('name is '||vname); end; --如何调用存储过程: declare var varchar2(20); begin proce(7698,var); end; --触发器: create table spb( --商品表 spbm integer, --商品编码 spmc varchar2(30), --商品名称 shangbi varchar2(20), --商标 chandi varchar2(12), --产地 guige varchar2(20), --规格 danwei varchar2(4), --单位 danjia number(10,2), --单价 kucun number(10,2) --库存数量 ); create unique index idx_spb on spb(spbm); create table stock( --采购表 djh integer, --单据号 spbm integer, --商品编码 cgy varchar2(8), --采购员 cgd varchar2(30), --采购地 cgsl number(10,2), --采购数量 cgpc varchar2(16), --采购批次 cgrq date); --采购日期 ----创建触发器 create or replace trigger stock_ins after insert on stock for each row begin update spb set kucun=kucun + :NEW.cgsl where spbm=:NEW.spbm; end;

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档