




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、章informix online动态服务器性能调整所谓性能调整就是平衡时间、空间、资金、可靠性等几个因素之间的关系,使设备达到最 好的使用效果。其中任何一个因素的改变都会影响到其他因素的变动,要想单纯的改变某一个 因素是不可能的。只能尽量地接近而不能超越最优状况下的实际性能。影响性能的主要因素 CPU要素指令执行的时间、处理时间和 CPU利用率。磁盘要素访问时间内存要素实际内存需求量、换页率、对换和 I/O访问时间。进行性能评测的工具硬件厂商提供的工具1、time :显示执行一个程序所耗费的时间。2、vmstat:报告有关进程、内存、磁盘和CPU的统计信息。3、sar:用来查看系统的实时记录。
2、 INFORMIX工具1、on stat:列出在命令运行的瞬间Online共享内存结构中的情况。Online 系2、on check :用于修复磁盘中受到破坏的索引和数据页,还可用于监测 统磁盘上的其它数据结构。合理的磁盘布局1.2.性能调整的几个方面磁盘布局的目标是平衡所有设备的I/O操作!确定磁盘布局的步骤检查应用的SQL以决定I/O的频繁程度、vmstat -g iof (对已使用的数据库)、检查应用(对未使用的数据库)找出使用最频繁的表确定online系统可使用的磁盘资源决定如何在磁盘间分布I/O如何进行磁盘布局分割的种类1、表的分割2、索引的分割分割的方式1、基于表达式方式分割特点:
3、数据的存取是不均匀分布的、查询的选择性很强、基于列的某个条件的 查询可以消除某些分片的查询。2、基于循环方式分割 特点:数据的均匀分布、最高的数据可用性、没有了对表达式进行求值的过程从而可得到最高的数据装载效率。数据分割的原则1、2、3、4、5、6、7、对 DSS 重点是数据的分割 对 OLTP 重点是索引的分割 对顺序扫描读的表采用循环方式进行分割 分割表达式应尽量简单、 尽量将最可能满足的表达式放在前面 避免在表达式中有类型转换操作 不要针对经常改变的字段进行分割 Chunk的影响Chunk 加到系统中的顺序也会影响系统的性能。因为在系统检查点期 间, 给 Chunk 分配清页线索是根据
4、Chunk 加到系统中的顺序进行的。 临时空间的建立如果系统支持 DSS 查询,就需要频繁的创建和使用临时表和排序文件, 那么临时数据空间的位置对性能的影响是很大的,此时应考虑建立一个或多个临时 空间,并且不同的临时空间应尽量分布在不同的磁盘上,道理同Chunk 顺序。4。磁盘布局地监控 onstat -g iof 命令监控磁盘活动。 使用 UNIX 工具 sar -d 1 5 显示磁盘利用率。5. 磁盘布局的改变用ALTER FRAGMEN语句改变现有磁盘布局。该语句可以重新设置新的分割策略,可以 增加、删除、修改一个分片,可以将几个结构相同的表合并或将一个表分成几个结构相同的 表。 正 确
5、地调整影响 I/O 性能的几个参数1 缓冲区参数的设置 OLTP 环境下,应将共享内存的大部分分配到驻留部分。 DSS环境下,应将共享内存的大部分分配到虚拟部分。2. NUMAIOV P参数的设置 KAIO (核心异步 I/O )和 AIO 的概念以及两者的区别。 Onstat -g ath 监测系统是否使用 SAIO。配置NUMAIOVP参数1、对于使用KAIO并且所有chunk都是原始设备的 只需把 NUMIOVP设为1或2。2、对于不使用 KAIO的Online系统,应把 AIO vp 的磁盘的数目。3、对于同时使用了核心 AIO和操作系统文件设备的Online 系统,的数目设置成存放数
6、据库表Online 系3.4.统,应把AIO vp的数目设置成与使用操作系统文件设备来做 放数据库表的磁盘的数目。监控I/O队列长度使用 on stat -g ioqLRU队列参数据的设置 LRU (最少最近使用)队列的作 用来管理工共享内存缓冲区。如何配置LRU队列的数目(由参数 LRUS决定) 配置LRU队列的数目的目的是减少LRU队列的长度!1、 对大型多处理系统,一般将 LRUS设成CPU vp的数量。2、 对单处理机系统或小型多处理系统,将LRUS设为4。3、LRU队列数的取值范围是 4-32个。配置1、2、3、监控命令列出有关I/O请求队列长度的信息。LRU百分比的原则LRU_MA
7、X_DIRT和 LRU_MIN_DIRTY参数。百分比设得过高时。百分比设得过低时。LRU队列on stat -R命令显示LRU队列中FLRU和MLRU所占的百分比。有关检查点活动参数的设置检查点的概念检查点持续时间和间隔的概念chunk以存影响检查点持续时间的因素1、有多少脏页需要从缓冲写到磁盘上。缓冲池的大小LRU参数脏页能够写多快。磁盘的数量和速度磁盘布局清页线索的数量影响检查点间隔的因素1、CHPTINTVL 参数2、物理日志的大小3、系统中的写操作。4、一些系统的管理操作。5.5、Online系统管理员强制执行。清页线索的监控 Online缓冲区写操作的类型1、Chunk 写2、LR
8、U写3、前台写监控清页线索的活动1、2、3、4、清页线索活动的发生。清页线索的数目是通过 CLEANERS参数来确定的。使用命令onstat -F显示关于清页线索活动的详细信息。对于面向批处理的系统应把 LRU的百分比定的高一些。检查点间隔中和检查点期间的页清理活动的区别检查点期间是chunk写,比较有效,而检查点间隔中是LRU写。检查点间隔中的页清理活动不引起其它用户进程等待,而检查点期间 的页清理活动正好相反。6. 合理调整日志缓冲区为获得优化的性能,应把物理和逻辑日志缓冲区配置的足够大,以尽量减少把 物理日志和逻辑日志写到磁盘上所需的物理I/O的数量。使用命令onstat -I的输出信息
9、来判断日志缓冲区的大小是否是优化的。(bufsize 和 Pgaes/io两个参数。)7. 预读的配置预读的概念预读参数:RA_PAGES 和 RA_THRESHOLD 监控预读:onstat -P数据库性能策略1. 数据库日志模式和性能的关系缓冲日时局模式:数据库先将事务记录发送到一内存缓冲区内,当缓冲区满时 写到磁盘上。非缓冲日志模式:数据库也是先将事务记录发送到一内存缓冲区内,但一旦有 一个事务提交,内存缓冲区马上被写到磁盘上。2. 添加索引对系统性能的影响B+树的概念47索引的填充度(参数 FILLFACTOR 决定)的概念12182430节点监控索引的填充度oncheck -pT d
10、atabase:table有效的使用BLOB大型的BLOB数据应放在blobs pace上。由于BLOB数据占据的空间比较 大,可能占据缓存中的几个页,和其它数据一起存放会降低整个Online系统的缓存命中率。BLOB页的大小应设置成在 blobs pace中的BLOB数据的平均长度。合理配置CPU vps1. C PU vp类将所有密集CPU活动的操作放在其中的进程上运行,从而使这些进程总 保持工作而较少睡眠。要想提高系统性能,应尽量使该类VP保持忙碌。2.监测CPU vp的使用on stat - g glo显示正在运行的 vp的CPU使用情况的信息。On stat -g rea用来监测就绪
11、队列中的项目情况。3.合理调整CPU vps对单或双处理器系统1、临界区的概念。2、SINGINE_CPU_VP=1避免了很多的临界区调用。3、MULT IP ROCESSOR=0对于多处理器系统,调整该参数将对性能产生显著影响,但应遵循以下原则:1、一次只增加一个CPU vp.2、CPU vp的数量不要越过硬件处理器的数量。3、应随时检查系统处理器的使用率。正确使用内存1. Online系统中共享内存的三个部分 驻留部分:包含缓冲区缓存和其它系统信息。 虚拟部分:包含会话和线索所使用的各种内存池。 消息部分:包含消息缓冲区。2. Online中使用内存的主要部分 Online系统内存1、缓冲
12、池2、存储过程缓冲池会话内存1、排序2、杂凑连接3、中间文件3. 内存管理OLTP和DSS对内存的需要情况1、对OLTP纯环境2、对DSS纯环境3、OLTP 和 DSS昆合环境(参数 DS_TOTAL_MEMORY4.SHMMAXSHMSEGSHMTOTALBUFFERS影响内存使用的几个参数:共享内存的最大尺寸。:每个进程能访问的共享内存段数。:限制共享内存的总空间。DS TOTAL MEMORY:调整缓冲区池的大小。_限制DSS查询的内存空间。5。监控共享内存的使用on stat -g seg命令,确定动态服务器分配到的和使用的内存数量。Onm ode -F 命令,用来释放不再使用的共享内
13、存段。对c/s结构和分布式通讯调整网络配置参数1 数据库服务器与客户应用位于同一台机器上时只要CPU的利用率不接近100%并且有足够的内存可用于运行所有的进程,而不 需要额外的换页,则就可以在同一台机器上运行应用进程和数据库服务器。此时 可使用共享内存或 TCP/IP来通讯。2 数据库服务器与客户应用不在同一台机器上时 对要多次使用的 SQL语句实现做好 Prep are.FET SIZE对于把多个SQL语句作为一组来执行的任务,就使用存储过程。 当传送大量的行,特别是一行的数据量很大时,可通过增加环境变量 的值以减少网络通讯量。3 对于有大量客户的系统命令来监测网络负载。 listen (侦
14、听)线索的作用。线索处理接收消息。监测网络负载使用 netstat -I 2 poll(探询)线索和1、应有足够的poll可通过在参数 NETTYPE勺第四个域中指定为 NET Poil线索将在它们自己 vp 的上运行,若指定为 CPU则poll线索将在CPUvp上运行。2、应有足够的listenx 线索处理同时连接。在文件 $INFORMIX/etc/sqlhosts 和 $INFORMIX/etc/onconfig中设定。章 informix_sql语言简介重要的数据库术语表中每一行代表了表的主题的一个实例。 表中一个列代表了一个属性。关系模型:描述数据库和数据模型。表:表是数据项的阵列,
15、以行和列组织。所有的数据都是以表的形式存在的,表由行和列组成。行:列:表、行、列:表=实体一个表代表了数据库对一个主体或一类事物所知道的信息。列=属性一个列代表了对表的主体的为真的一个特性、特征或事实。行=实列一个行代表了表的主体的一个单独的实例。对表的操作:选择:表中满足特定条件的行的水平子集投影:选定某些符合条件的列的垂直子集连接:通过连接几个相关的表获得更多个实体的信息INFORMIX数据库实用程序介绍1、Dbaccess使用数据库的结构化查询语言对数据库进行操作允许输入一组新的语句作为当前语句执行当前的语句修改当前语句允许用户使用系统编辑程序vi对当前语句进行编辑将执行当前语句的结果进
16、行输出将查询结果输出到打印机将查询结果输出到一个新文件将查询结果追加的一个存在的文件中 将查询结果送到其它程序的标准输入中 退出out put菜单选择当前目录下以.sql为后缀的SQL语句文件 存放当前语句到某一 SQL文件。其后缀为。sql显示当前数据库中某个表的信息 从数据库中删除某个 SQL文件退出 Query_Language 菜单用来输入、执行 SQL查询语句或者将查询结果输出;选择、生成、删除数据库;生 成、修改、删除或者查询数据库中表的各种信息等。下面详细介绍各个菜单及其功能:Query _Lan guageNewRunModifyUse_editorOut putPrin te
17、rNew_fileAppen d_fileTo_pipeExitChooseSaveInfoDropExitSelect设置某数据库为当前工作数据库Create创建新数据库并使其成为当前工作数据库Drop从系统中删除某数据库Exit退出数据库Database菜单,返回到上级菜单Table用来生成、修改或删除一个数据库中的表Create生成一个新表Alter修改一个已经存在的表的结构Info查询一个已经存在的表的信息Drop删除一个已经存在的表Exit退出一个已经存在的表2、Isqlrf(有的系统为:isql)Form可以执行、创建、修改、编译屏幕格式或删除已存在的屏幕格式Run执行某一已经存在
18、的屏幕格式Modify修改指定的已经存在的屏幕格式Generate为指定的表创建一个缺省的屏幕格式Com pile编译一个制定的屏幕格式New创建特定的用户屏幕格式Drop删除某已经存在的格式文件Exit退出Form菜单Rep ort可以执行、建立、修改、编译、或删除报表Run执行某一报表Modify修改指定的报表Generate为某一个表建立一个缺省的报表New建立一个用户指定的报表Com pile编译指定的报表Drop删除一个指定的已经存在的报表Exit退出Report菜单Query_Language详见实用程序说明:dbaccessUser_menu可以执行、建立或修改用户建立的采单Ru
19、n执行当前数据库的用户菜单Modify允许用户建立或修改用户菜单Exit退出User_menu菜单用来选择、生成或删除一个数据库DatabaseDatabaseTableExit详见实用程序说明:dbaccess 详见实用程序说明:dbaccess 通出实用程序isqlf (或isql)简单的SELECT语句SELECT语句是最重要也是最复杂的SQL语句,它和insert up date和delete语句一起用于数据操作,主要用于:从数据库中检索数据作为INSERT语句的一部分产生新的行 作为 UPDATE 语句的一部分更新信息 1 SELETE 语句的简要介绍构成:指定要查询的表指定要查询的
20、列 选择特定的列或创建一个新的连接条件 改变数据产生的次序 把结果以表的形式存放起来,供以后使用 子句是必选的。SELECT 子句FROM 子句WHERE 子句ORDER BY 子句INTO TEMP 子句 其中 SELECT 、FORMgrant 和 revoke 语句将在后面权限选择:在表中满足特定条件的行的水平子集。这一类型的部分行的所有列。选择是通过SELECT 语句的 WHERE例: SELECT *FROM customWHERE state=”NJ”显示结果如下:customer_num107fnameCharleslnameReamcompanyAthletic Supplie
21、saddressl41 Jordan Avenueaddress2cityPalo AltostateCAzipcode94304phone415-356-9876SELECT 子句返回表中的一 子句来实现的。查询数据库必须对该数据库具有connect 权限以及对表具有 SELECT 权限,这些权限通常作为默认值赋给用户。与数据库的操作权限有关的 讲到。关系操作投影:在表中一些列的垂直子集,子集包含了表中这些列的所有行。这样的 SELECT 语句返回表中所有行的一些列。投影是通过在 SELECT 语句中的 SELECT 子句的选项 来实现的。例: SELECT UNIQUE city, sta
22、te,zipcode FROM customer查询结果包含了与 customer 表中的相同数目的行,但仅投影了列的一个子集显示结果如下:citystate zipcodeBartlesvilleOK74006Blue IslandNY60406BrightonMA02135Cheey HillNJ08002DenverCO80219JacksonvilleFL32256Los AltosCA94022Menlo ParkCA94025Moutain ViewCA94040Moutain ViewCA94063OaklandCA94609Palo AltoCA94303Palo AltoCA
23、94304PhoenixAZ85008SELECT 语句在大多数情况下同时使用选择和投影,查询返回表中的一些行和一些 列。state= ” NJ”例: SELECT UNIQUE city,state,zipcode FROM customer WHERE显示结果如下: citystatezipcodeCherry HillPrincetonNJNJ0800208540连续:将两个或多个表通过一个或多个相同的列联系起来成为一个新的结果表例: SELECT UNIQUE city,state,zipcode,sname FROM customer ,stateWHERE customer ,st
24、ate = state.code显示结果如下:citystate zipcodesnameBartlesvilleOK74006OklahomaBlue IslandNY60406New YorkBrightonMA02135MassachusettsCherry HillNJ08002New JerseyDenverCO80219ColoradoJacksonvilleFL32256FloridaLos AltosCA94022californiaMenlo ParkCA94025californiaMountain ViewCA94040californiaMountain ViewCA9
25、4063californiaOaklandCA94609californiaPalo AltoCA94303californiaPalo AltoCA94304californiaPhoenixAZ85008Arizona2.单表 SELECT 语句检索所有的行和列使用 * 号:星号代表所有的列的名字。例: SELECT *FROM manufact显示结果如下:manu_codemanu_namelead_timeSMT ANZ NRGHSKHROSHMKAR NKL PRCSmith Anza Norge Husky Hero Shimara karsten Nikolus ProCycl
26、e35754302189 选择特定的列例: SELECT UNIQUE customer_num 注:此处关键字 UNIQUE 或它的同义词FORM ordersDISTINCT 来抑制重复的行显示结果如下:customer_num101104106排序列排序:可以通过改变选项表中列的次序来改变各列在显示时的次序。例: SELECT manu_name , manu_code , lead_time FROM manufact显示结果如下:manu_namelead_timeSmithSMT3AnzaANZ5NorgeNRG7HuskyHSK5HeroHRO4ShimaraSHM30Karst
27、enKAR21NikolusNKL8ProCyclePRC9manu-code行排序:可以通过SELECT语句中加入 ORDER BY 子句来要求系统按某各指定次序对数据进行排序。例: SELECT manu-code, manu_name, lead_timeFROM manufactORDER BY lead_time以 lead_time 的次序显示 manufact 表中的每一行和列。ORDER BY 子句中列显示结果如下:manu_namemanu_codelead_timeSmithSMT3HeroHRO4HuskyHSK5AnzaANZ5NorgeNRG7NikolusNKL8P
28、roCyclePRC9KarstenKAR21ShimaraSHM30缺省时检索所得的数据排序后按升序显示。升序对 A 到小写 z ,对数字类型而言是从最小值到最大值, 晚的顺序排序, I 在列名后接关键字CHARACTER 数据类型而言是从大写 DATE 和 DATETIME 类型的数据从早到 INTERVAL 数据按持续时间从最短到最长排序。DESC 表明检索所得数据按降序排序。SELECT * FROM ORDER DESC果如下:manufactBY lead_timemanu_code manu_nameleadSHMShimara30KARKarsten21PRCProCycle9
29、NKLNikolus8NRGNorge7HSKHusky5ANZAnza5HROHero4SMTSmith3例:time可以实现按照多列排序,人而建立一个组排序,缺省仍为升序,在 首位得列优先。例: SELECT *FROM stockORDER BY manu_code, unit_price(_nummanu_codedescri ptionunit_ priceunitunit_descr5ANZtennis racquet$19.80eacheach9ANZvolleyball net$20.00eacheach6ANZtennis ball$48.00case24 cans/case
30、313ANZswim cap$60.00box12/box201ANZgolf shoes$75.00eacheach310ANZkick board$84.00case12/case301ANZrunning shoes$95.00eacheach304ANZwatch$170.00box10/box110ANZhelmet$244.00case4/case205ANZ3 golf balls$312.00case24/case8ANZvolleyball$840.00case24/case302HROice p ack$4.50eacheach309HROear drops$40.00ca
31、se20/case301HROrunning shoes$42.50eacheach选择特定的行可以在SELECT语句中加入WHERE子句来从表艮中检索特定的行显示结果如下:通过WHERE子句来设置一个比较条件,查询条件使用特定的关键字和运算符来定义 搜索条件。关键字:可以用 BETWEEN、LIKE或MATH测试相等的情况;或用 IS NULL来测试 空值;可以把关键字 NO和这些关键字连用来指定相反的条件。运算符:操作符操作=等于!=或不等于大于小于=大于等于=小于等于比较项的大小按照排序时的顺序确定,除了在测试 或BYTE列。NULL值的时候,不能在比较项中使用TEXT在 WHERE来:
32、子句中,可以用前面讲的关键字和运算符来建立比较条件查询,用包括行在例: SELECT customer_num, call_code, call_dtime, res_dtime FROM cust_callsWHERE customer num = 106WHERE子句中用关系运算符 =来包括指定的行显示结果如下:customer_num call_code call_ dtimeres_dtime106D1994 061208:201994 06 1208:25排除行在 WHERE子句中用关系运算符!=或来排除指定的行例: SELECT customer_num, company, cit
33、y, state FROM customerWHEREstate != ” CA”显示结果如下:customer_num119120121122companyThe Triathletes Club Century Pro Shop City SportsThe Sporting Lifecity Cherry Hill Phoenix Wilmington PrincetonstateNJAZDENJ排除范围的123Bay SportsJacksonvilleFL124Putnum s PuttersBartlesville125Total Fitness SportsBrightonMA1
34、26Neeliecousnt DSispDenverCO127Big Blue Bike ShopBlue IslandNY128Phoenix UniversityPhoenixAZ定范围和行在 WHERE 子句中使用关键字 NOT BETWEENOK来排除一定WHERE zipcode NOT BETWEENORDER BY state“ 94000 ” AND“ 94999 ”fname显示结果如下:lnamecompanycitystateFrankLessorPhoenix UniversityPhoenixAZFredJewellCentury Pro ShopPhoenixAZE
35、ileenNeelieNeeliesDiscount SpDenverJasonWallackCity SportsWilmingtonDEMarvinHanlonBay SportsJacksonvilleFLJamesHenryTotal Fitness SportsBrightonMABobShorterThe Triathletes CluCherry HillNJCathy0 BrianThe Sporting Life PrincetonNJKimSatiferBig Blue Bike ShopBlue IslandNYChrisPutnumPutnum s PuttersBar
36、tlesvilleOK指定行有多种方式可以在 WHERE 子句中指定行例: SELECT fname, lname, company ,city,state FROM customerCO例: SELECT catalog_num ,stock-num, manu_code, cat_advert FROM catalogWHERE catalog_num, BETWEEN 10005 AND 10008100053HSKHigh-Technology Design Expands the Sweet SpotCatalog_num Stock_num Manu_code Cat_advert
37、 Athletes 查找值的子集例: SELECTFROMWHERE state = “ ORDER BY lnamelname ,city,state,phone customerAZ”ORNJ”或: SELECT lname ,city, state, phone FROM customer WHERE state NOT IN ORDER BY lnameAZ” , “ NJ”)显示结果如下:lnamecitystatephoneAlbertsRedwood CityCA415-886-6677BaxterOaklandCA415-655-0011BeattyMenlo ParkCA41
38、5-356-9982CurriePalo AltoCA415-328-4543GrantMenlo ParkCA415-356-1123HanlonJacksonvilleFL904-823-4239HenryBrightonMA617-232-4159 确认空值使用例: SELECTFROM ordersWHERE paid_date IS NULLIS NULL 或者IS NOT NULL选项检查 NULL值order_num ,customer_num , po_num , ship_date复合条件查询用逻辑运算符AND OR和NOT来连接一至多个比较条件。例: SELECT orde
39、r_num , customer_num , po_num, ship_dateFROM ordersWHERE paid_date IS NULL或: SELECT catalog_num, stock_num, manu_code, cat_advertFROM catalogWHERE catalog_num = 10005 AND catalog_num = 10008 第一个语句使用了关键字,第二个语句使用了关系运算符。 显示结果如下: catalog_num stock_num manu_code cat_advert100063SHMDurable Aluminum for Hi
40、gh School and CollegiateAND ship_date IS NOT NULL 显示结果如下:order_ numcustomer_ num po_numship_date1004106 800605/30/19941007117 27869306/05/19941012117 27870106/29/佃9410161佃 P C678207/12/19941017120 DM35433107/13/1994CHARCTER域的子串可以使用关键字对于基于处略。LIKE和MATCH来查询,此四、修改数据的语句1.修改数据的语句与 SELECT语句相比相对简单,但由于它们对数据库
41、中数据进行修改,因此使用时一定要小心。如果在修改的过程中系统发生故障,数据库本身的状态就不确定。一般的在数据库库中插入、删除和更新前,应确定:数据库是否赋予用户有限的权限,以保证用户安全存取数据库和表。 修改后的数据是否保持现有数据库的完整性。系统是否能保护数据库有效抵御外部事件引起的系统或硬件故障。以下三个语句可以用于修改数据 DELETE INSERT UPDATE删除插入更新2.DELETE语句DELETE语句中如果从表中删除行或行的组合。一旦事务提交后将无法恢复被删 除的行。当删除一行时,还要注意是否会删除别的表中的行。这些行的值依赖于被删除的 行。删除表中所有的行DELETE语句中如
42、果不带有 WHERE子句表示删除表中所有的行。 语法:DELETE FROM 表名例:DELETE FROM customer删除表中指定的行DELETE使用WHER语句来指定表中要删除的行语法:DELETE FROM 表名 WHERE条件子句例:DELETE FROM customer WHERE company =Druid Cyclery ”复杂的删除条件DELETE中的 WHER子句可以很复杂,几乎和SELETE语句中的一样。它可以包含多个用 AND和OR连接起来的条件。例: DELETE FROM stockWHERE 0 = (SELECT COUNT(*) FROM manufa
43、ctWHERE manufact . manu_code = stock . manu_code)子查询对 manufact 中匹配的行计数,将 stock 表中与 manufact 表中不匹配的 manu_code 所在的行删除。3INSERT 语句INSERT 语句往表里加入一个新的行。这个语句有两个基本功能:使用你提供的列的 值创建一个新的行:使用从别的表里选择得到的数据创建一个新的行。单行插入。根据一系列的值创建一个新的行,然后把行放入表中VALUES例: INSERT INTOVALUES语法: INSERT INTO 表名胜古迹(字段列表) 加入指定字段的值)stock(115,“
44、 PRC”, “ tire_pump ” ,108. “ box”, “ 6/box ”)注意:上面的例子中 VALUES 子句所列出的值与表中的列一一对应。要写 VALUES 子句,就必须知道表的列,以及其第一个到最后一个的次序。也可以列出特定的列名,数据库服务器为剩下的列指定缺省的值。如果没有缺省值 而允许空值的话则指定为空值。stock例 : INSERT INTO(stock_num , description, unit_price, manu_code)VALUES (115, “ tire_ pump ”,114 . “ SHM”)VALUES 子句只接受常数值,不接受表达式。可
45、以提供的值包括:数字、日期值、 间隔时间值、引号括起的字符串、 NULL 表示空值、 TODAY 表示今天日期、 CURRENT 代表当前的日期和时间、 USER 代表用户名、 DBSERVNAME 代表数据库服务器所在的 计算机。 VALUES 子句插入的值应符合该列的值的要求。 多行和表达式用 SELECT 语句代表 VALUES 子句,实现仅用一个语句插入多行(对 SELECT语句返回的每行都有插入一行)计算值(VALUES子句只允许常数),选项列表中允许表达式语法: INSERT INTO 表名 (字段列表)SELECT 语句例: INSERT INTO cust_calls (cus
46、tomer_num ,call_descript)SELECT customer_num ,order_num , FROM ordersWHERE paid_date is NOT NULL AND ship_date IS NULLINSERT 语句中的 SELECT 语句包含 INTO 、INTO TEMP 、 ORDER BY 语 句。不能引用正在往里插入行的表。如果需要引用正在往里插入行的表时,可以通过创建临时 表的方法实现。4UPDATE 语句UPDATE 语句用来更新表中已有的一行或多行中的一列或多列的值。 该 语句的两种基本形式为:通过名字给列赋予特定的值把一系列的值赋给一系列
47、的列注意:更新后的值需满足原来列上数据完整性的约束。选定要更新的行UPDATE 使用 WHERE 语句来选定要更新的行,忽略 WHERE 子句表示更新所有的 行。注意要更新的表不能在子查询的 FROM 语句中出现。可以选定一行 (WHERE 子句利用表中主键来确定行) 语法: UPDATE 表名SET字段名1 =设定值1, 字段名n =设定值nWHERE 条件语句例: UPDATE customerSET fname= “ Barnably ” ,lname= “ Dorfler ”WHERE customer_num=103 可以用统一的值来更新多行: 例: UPDATE stockSET
48、unit_price=unit_price*1.05WHERE manu_code= “ HRO”可以用一个子查询来作为赋值的一部分。当使用子查询作为表达式的一个元素时,子查询 必须返回且只返回一个值。例: UPDATE itemsSET total_price=quantity *(SELECT MAX (unit_price) FROM stockWHERE stock . stock_num=items. Stock_num)WHERE items. Order_num IN(SELECT order_num FROM ordersWHERE ship_date IS NULL)第二个
49、SELECT 语句选择出符合条件的 order_num ,主 WHERE 语句选定与其匹配的 items. Order_num,并更新 items 表中相应行的 total_price 列。 用选定的值来更新UPDATE 语句可以用一个块赋值代替一系列的赋值,当这些值是常数时,并没有特别 的优点,如: 语法: UPDATE 表名n) = ( 设定值 1,设定值n)SET (字段名 1, 字段名WHERE 条件语句例: UPDATE customerSET (fname, lname) = (Barbaby ”Dorfler ”)WHERE (fname, lname) = (Barbaby ”
50、Dorfler ”)当要赋的值来自一个 SELECT语句时,就具有了简洁和提高性能的优点。 例: UP DATE customerSET (address1,address2, city, state , zip code FROM newaddrWHERENewaddr, customer_num=customer,customer_num) WHERE customer_num IN(SELECT costomer_num FROM newaddr)5.L0AD、UNLOAD 语句 LOAD语句LOAD语句用于从一操作系统文件中向某一现存表中装入ASC II码数据。语法:例:LOAD FROMINSERT INTO LOAD例:LOADFROMINSERTFROMINSERT“在装入数据的操作系统文件名” 被装入数据的表的名称(字段列表)“/usr/enid/sam pie”INTO customer“ usr/alex/datafileINTOcustomer(fname, lname, addressl, city, state) UNLOAD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版水电设施维修保养及安全检查合同
- 2025《合同法》深度解析与案例分析(附详细解答)
- 2025企业安全生产管理合同书示范文本
- 语法比较级和最高级课件
- 供应链风险管理评估工具全面覆盖
- 多功能销售数据统计分析平台
- 商场租赁及运营管理协议
- 红河色彩知识培训课件
- 红楼梦课件教学内容
- 诗经教学课件介绍
- 10kA配电站房标准建设规范及施工工艺
- 2024-2025学年陕西省西安西工大附中高一(上)月考物理试卷(含答案)
- 公司价值观与伦理管理制度
- 2024-2025学年初中音乐七年级上册(2024)苏少版(2024)教学设计合集
- DB34T 3709-2020 高速公路改扩建施工安全作业规程
- 初中道德与法治教研组工作计划
- 企业级IPv6网络改造及升级服务合同
- 《立在地球边上放号》《峨日朵雪峰》联读课件32张高中语文必修上册
- 家具厂封边技能培训
- 重点群体人员本年度实际工作时间表
- DBJ50-T-386-2021 建筑施工现场扬尘控制标准
评论
0/150
提交评论