2020OceanBase数据库V4.1.0快速手册_第1页
2020OceanBase数据库V4.1.0快速手册_第2页
2020OceanBase数据库V4.1.0快速手册_第3页
2020OceanBase数据库V4.1.0快速手册_第4页
2020OceanBase数据库V4.1.0快速手册_第5页
已阅读5页,还剩202页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OceanBaseOceanBase数据库 声OceanBase快速上手|产品版本:V4.1.0 |文档版本:20230627OceanBase通用约定OceanBase通用约定产品版本:V4.1.0PAGE产品版本:V4.1.0PAGE3通用约定格式说明样例该类警示信息将导致系统重大变更甚至故障,或者导致人身伤害等结果。危险重置操作将丢失用户配置数据。危险该类警示信息可能会导致系统重大变更甚至故障,或者导致人身伤害等结果。警告重启操作将导致业务中断,恢复业务时间约十分钟。警告用于警示信息、补充说明等,是用户必须了解的内容。注意权重设置为0,该服务器不会再接受新请求。注意用于补充说明、最佳实践、窍门等,不是用户必须了解的内容。说明您也可以通过按Ctrl+A选中全部文件。说明>多级菜单递进。单击设置>网络>设置网络类型。粗体表示按键、菜单、页面名称等UI元素。在结果确认页面,单击确定。Courier字体命令或代码。执行cd/dC:/window命令,进入Windows系统文件夹。斜体表示参数、变量。baeloglist--instanceidInstance_ID[]或者[a|b]表示可选项,至多选择一个。ipconfig[-all|-t]{}或者{a|b}表示必选项,至多选择一个。switch{active|stand}OceanBase快速上手OceanBase快速上手产品版本:V4.1.0PAGE产品版本:V4.1.0PAGE100目录ase数据库 ase数据库 注意 背景信息 方案介绍 前提条件 说明 方案一:部署OceanBase演示环境 步骤一:下载并安装all-in-one安装包 13步骤二:单机部署OceanBase数据库 说明 14方案二:部署OceanBase集群环境 说明 15步骤一:下载并安装all-in-one安装包 15步骤二:使用白屏部署OceanBase数据库 说明 15方案三:部署OceanBase容器环境 20(可选)步骤一:拉取OceanBase数据库镜像 说明 21步骤二:启动OceanBase数据库实例 21步骤三:连接OceanBase数据库实例 21在您开始前 23关于内存 23开启写入限速 23租户内存扩容 说明 注意 24调整租户内存中MemTable的比例 24关于超时时间 25设置超时时间 说明 26SQL基础操作(MySQL模式) 27创建数据库 273.2表操作 273.2.1创建表 273.2.2查看表 283.2.3修改表 293.2.4删除表 31索引操作 31创建索引 31查看索引 32删除索引 34插入数据 34删除数据 35更新数据 40查询数据 44提交事务 46回滚事务 48acle模式) acle模式) 功能适用性 4.1表操作 514.1.1创建表 514.1.2修改表 514.1.3删除表 53索引操作 53创建索引 53查看索引 54删除索引 56插入数据 56删除数据 58更新数据 58查询数据 60提交事务 61回滚事务 63创建Python示例应用程序 66前提条件 66Python3.x创建应用程序 66步骤一:获取数据库连接串 66步骤二:安装PyMySQL驱动 66步骤三:编写应用程序 67步骤四:运行应用程序 68Python2.x创建应用程序 68步骤一:获取数据库连接串 69步骤二:安装MySQL-python驱动 69步骤三:编写应用程序 69步骤四:运行应用程序 71更多信息 71创建Java示例应用程序 72前提条件 72创建Java应用程序 72步骤一:获取数据库连接串 72步骤二:编写应用程序 7注意 72步骤三:运行应用程序 75更多信息 75创建C示例应用程序 76前提条件 76创建C应用程序 76步骤一:获取数据库连接串 76步骤二:安装MySQLConnector/C驱动 76通过yum安装mariadbclient 76步骤三:编写应用程序 77示例代码 77步骤四:运行应用程序 81创建Go示例应用程序 83前提条件 83创建Go应用程序 83步骤一:获取数据库连接串 83步骤二:安装Go-SQL-Driver/MySQL 83通过goget安装(适用于GoV1.13-V1.16) 83通过goinstall安装 8注意 8注意 84步骤三:编写应用程序 84步骤四:执行应用程序 87更多信息 87应用程序 88功能适用性 应用程序 88功能适用性 8前提条件 创建Python应用程序 步骤一:获取数据库连接串步骤二:安装JayDeBeApi驱动 步骤三:编写应用程序 步骤四:执行应用程序 更多信息 用程序 92功能适用性 用程序 92功能适用性 9前提条件 创建Java应用程序 步骤一:获取数据库连接串步骤二:安装OceanBaseConnector/J驱动 说明步骤三:编写应用程序 步骤四:执行应用程序 更多信息 程序 96功能适用性 程序 96功能适用性 96前提条件 步骤一:获取数据库连接串步骤二:安装C相关驱动 步骤三:编写应用程序 示例代码步骤四:执行应用程序 更多信息

88888888899091929292929393949596969697100106106在OceanBase数据库上进行TPC-C测试 TPC-C数据库模型事务类型 环境准备 OceanBase安装BenchmarkSQL 注意适配BenchmarkSQL5 修改配置文件 说明数据准备 tpccdb创建表 加载数据 创建索引 开始测试 体验OceanBase数据库ScalableOLTP 体验OceanBase数据库热点行更新能力 步骤一:创建测试表,插入测试数据步骤二:构造并发更新场景 步骤三:默认配置下执行测试 步骤四:打开OceanBase数据库ELR配置 步骤五:开启OceanBase数据库ELR进行测试

107107107107108108108108108112113114114114119119119120122122123124125125体验OperationalOLAP TPC-H进行环境调优安装TPC-HTool 生成数据 生成查询SQL 说明新建表 加载数据 注意注意 说明 执行测试 FAQ 手动体验OperationalOLAP 不开启并发查询开启并发查询 使用OBD工具自动进行TPCH测试 功能适用性注意 体验并行导入和数据压缩 并行导入PDML开启PDML执行 数据压缩 数据准备数据导入 注意体验多租户特性 背景信息创建资源规格UnitConfig 创建资源池和关联UnitConfig 注意根据创建的ResourcePool创建租户 注意修改租户配置和调整实例资源规格

127127127129130130130132136138139140140141141143144149149150151151153153154154156156159159159160160160161163体验DDL新特性(MySQL模式) 变更主键添加主键修改主键 删除主键 变更分区类型 变更分区示例变更列类型 修改列类型的示例字符数据类型之间的转换示例数值数据类型之间的转换示例 二进制类型数据类型的转换示例 整数型数据与字符型数据的转换示例 修改表或者列的字符集和字符序(COLLATION) 修改表的字符集和字符序说明修改表中已有数据的字符集和字符序 说明修改列的字符集和字符序 体验DDL新特性(Oracle模式) 功能适用性变更主键 添加主键修改主键 删除主键 变更分区类型 注意变更分区示例 变更列类型 修改列类型的示例字符数据类型之间的转换示例改变数值数据类型精度的示例

166166166168169170170176177177179184186187187188190190190193193193193195196197197197201202202204快速入门系列教程 OBDOceanBase使用Docker快速部署OceanBase数据库 OceanBase数据库的基本操作 创建Python应用程序 创建C应用程序 创建Go应用程序 创建Java应用程序 在OceanBase数据库上进行TPC-C测试 体验OceanBase数据库热点行更新能力 体验OperationalOLAP 体验并行导入数据压缩 体验多租户特性 体验DDL

206206206206207207207207207207207207207208OceanBase本文以部署OceanBase演示环境、部署OceanBase集群环境和部署OceanBase容器环境三种部署方案为例指导您如何快速使用OceanBase数据库。注意本文中的方法仅适用于OceanBase数据库快速上手体验,不适用生产环境,如需在生产环OceanBase部署数据库章节。背景信息OceanBase数据库自V4.0.0开始提供统一的安装包all-in-onepackage。您可以通过这个统一的安装包一次性完成OBD、OceanBase数据库、ODP、OBAgent、Grafana、Prometheus的安装,自V4.1.0起,all-in-onepackage新增支持安装OCPExpress。您可以根据实际需求选择部分或全部组件安装。方案介绍为了助力您快速上手体验OceanBase数据库,我们提供了如下三种不同的方案实现快速部署Oceanbase数据,您可以根据自身环境情况灵活选择。方案一:部署OceanBase演示环境此方案适用于仅有一台机器时,快速搭建一个可用的OceanBase数据库环境。部署的OceanBase数据库环境具备数据库的基本功能,可以有效地帮助您了解OceanBase数据库;但是该环境不具备任何分布式能力及高可用特性,不建议长期使用。具体操作步骤请参考方案一:部署OceanBase演示环境。方案二:部署OceanBase集群环境此方案适用于需要深入了解OceanBase分布式数据库架构原理及功能特性的用户。部署的OceanBase集群具备数据库完整能力及分布式高可用的特性。该方案需要您至少准备三台4vCPU、10GB50GB方案三:部署OceanBase容器环境(仅适用于社区版)此方案适用于非Linux操作系统(例如Windows、macOS),希望通过容器实现部署、管理OceanBase数据库的用户。该方案未经过规模化的验证,建议谨慎使用。操作步骤请参OceanBase前提条件在参考本文安装OceanBase数据库之前,确保您的软硬件环境满足以下要求:项目 描述系统AliOS7.2版本及以上(内核Linux3.10.0版本及以上)RedHatEnterpriseLinuxServer7.X版本(内Linux3.10.0)CentOSLinux7.X版本及以上版本(内核Linux3.10.0KylinOSV10AnolisOS8.6统信UOS1020a/1021a/1021e/1001cNFSChina4.0Inspurkos5.8中移动BCLinuxBigCloudEnterpriseLinuxForEuler21.10LTSCPU最低要求2核,推荐4核及以上。内存8GB,16GB磁盘类型推荐使用SSD。磁盘存储空间54GB。文件系统EXT4戓XFS,当数据超过16T时,使用XFS。all-in-one安装包all-in-one安装包需选择V4.1.0及以上版本。Docker使用Docker部署OceanBase数据库时需提前安装Docker并启动Docker服务,详细操作请参考Docker文档。说明x86CentOSLinux7.9OceanBase当您仅拥有一台可用机器时,您可参考本节内容使用OceanBase数据库。

obd demo

命令快速部署单机all-in-oneall-in-one企业版:请联系技术支持获取all-in-one安装包。OceanBaseall-in-one在安装包所在目录下执行如下命令解压安装包并安装。[admin@test001[admin@test001~]$tar-xzfoceanbase-all-in-one-*.tar.gz[admin@test001~]$cdoceanbase-all-in-one/bin/[admin@test001bin]$./install.sh[admin@test001bin]$source~/.oceanbase-all-in-one/bin/env.shOceanBase[admin@test001~]$obd[admin@test001~]$obddemo-coceanbase,obproxy,obagent,prometheus,grafana社区版部署[admin@test001[admin@test001~]$obddemoobddemo命令默认在当前家目录下以最小规格部署并启动OceanBase数据库及相关组件(包括ODP、OBAgent、Grafana和Prometheus),固定部署名为demo快速部署命令。OBDOceanBase集群命令组。说明当安装grafana或prometheus时,会输出grafana或prometheus的访问地址。在阿里云或其他云环境下,可能出现因无法获取公网IP而输出内网地址的情况,此IP非公网地址,您需要使用正确的地址。[admin@test001~]$obclient-h-P2881[admin@test001~]$obclient-h-P2881-uroot@sys-Doceanbase-AODP代理访问数据库[admin@test001[admin@test001~]$obclient-h-P2883-uroot@sys-Doceanbase-A--proxy-modeOceanBase当您拥有多台可用机器时,可参考本节内容使用obdweb命令启动白屏,在白屏界面部署分布式OceanBase集群。说明OceanBaseOBDOceanBase一文。all-in-one下载all-in-oneall-in-oneOceanBaseall-in-one在安装包所在目录下执行如下命令解压安装包并安装。[admin@test001[admin@test001~]$tar-xzfoceanbase-all-in-one-*.tar.gz[admin@test001~]$cdoceanbase-all-in-one/bin/[admin@test001bin]$./install.sh[admin@test001bin]$source~/.oceanbase-all-in-one/bin/env.shOceanBase

obd

命令启动白屏界面,根据输出地址登录白屏界面并单击

开启体验之旅开始部署。[admin@test001[admin@test001~]$obdwebstartOBDWEBinpleaseopenhttp://172.xx.xxx.233:8680说明8680obdwebp

命令指定端口。在阿里云或其他云环境下,可能出现程序无法获取公网IP,从而输出内网地址的情况,此IP非公网地址,您需要使用正确的地址访问白屏界面。IP

页面配置集群的部署模式、密码、目录、端口以及更多配置,您也可不做修改,使用默认配置。单击下一步进入预检查页面。OceanBase使用OBClient客户端连接OceanBase数据库,或者登录OCPExpress白屏界面管理集群。通过2881端口直连数据库,以直连节点为例[admin@test001~]$obclient-h-P2883-uroot@sys-Doceanbase-A--proxy-mode[admin@test001~]$obclient-h-P2881[admin@test001~]$obclient-h-P2883-uroot@sys-Doceanbase-A--proxy-modeOceanBase您可参考本节内容在Docker容器里启动OceanBase数据库,帮助您快速了解OceanBase数据库。(可选)步骤一:拉取OceanBase数据库镜像OceanBaseOceanBase[admin@test001~]$dockersearchoceanbase OceanBase[admin@test001~]$dockerpulloceanbase/oceanbase-ce 说明Docker中选择版本。OceanBase[admin@test001~]$[admin@test001~]$dockerrun-p2881:2881--nameobstandalone-eMINI_MODE=0-doceanbase/oceanbase-ce部署mini的独立实例[admin@test001[admin@test001~]$dockerrun-p2881:2881--nameobstandalone-eMINI_MODE=1-doceanbase/oceanbase-ce2~5bootsuccess![admin@test001[admin@test001~]$dockerlogsobstandalone|tail-1bootsuccess!OceanBaseoceanbase-ce镜像安装了OceanBase数据库客户端OBClient,并提供了默认连接脚本ob-mysql。#使用root用户登录集群的sys租户#使用root用户登录集群的sys租户[admin@test001~]$dockerexec-itobstandaloneob-mysqlsys#使用root用户登录集群的test租户[admin@test001~]$dockerexec-itobstandaloneob-mysqlroot#使用test用户登录集群的test租户[admin@test001~]$dockerexec-itobstandaloneob-mysqltest您也可以运行以下命令,使用您本机的OBClient或者MySQL客户端连接实例。[admin@test001~]$obclient-uroot@sys-h127.1-P2881 连接成功后,终端将显示如下内容:[admin@test001~]$dockerexec-itobstandaloneob-mysqlsysloginasroot@sysCommandis:obclient-h127.1-uroot@sys-A-DoceanbaseWelcometotheOceanBase.Commandsendwith;or\g.YourOceanBaseconnectionidis3221487727Serverversion:OceanBase_CE(r100000192023032010-0265dfc6d00ff4f0ff4ad2710504a18962abaef6)(BuiltMar20202310:12:57)Copyright(c)2000,2018,OceanBaseand/oritsaffiliates.Allrightsreserved.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.obclient[oceanbase]>在您开始前为了能更好的体验和上手OceanBase关于内存OceanBase数据库是基于LSM-Tree的存储引擎,不同于传统数据库实时刷脏页的机制,OceanBase数据库将数据分为内存中的MemTable和磁盘中的SSTable,其中所有的数据更新写入操作都在内存的MemTable中完成,并且在内存使用量达到一定阈值后触发Compaction,转储至SSTable,并释放活跃的内存。这种架构的优势是可以将随机I/O转化I/O,存储架构概述。由于LSM-Tree将增量数据都存放在内存中,达到一定阈值后才触发转储,这会导致小规格的租户实例运行在超过其可承载能力的密集写入场景时(例如数据导入或者运行大量数据批处理场景),会因为MemTable达到上限而无法接受新的请求。OceanBase处理方式:开启写入限速:设置内存写入达到一定阈值后,OceanBase数据库主动限制客户端导入速度。租户内存扩容:环境中节点总内存资源相对充足,可扩大租户内存。调整租户内存中MemTable的比例:当节点总内存有限,无法扩容时,还可调整租户内存中MemTable的比例,扩大可写入内存,并且调低转储阈值,让转储更快发生。开启写入限速OceanBase数据库具备写入过载保护功能,当资源有限,无法扩展内存时,可以通过服务端写入限速来保护内存,避免写入超限。可通过设置如下两个配置项来开启服务端的写入限速功能:writing_throttling_trigger_percentage:用于设置写入速度的阈值,即当MemStore已使用的内存达到该阈值(百分比)时,触发写入限速。该配置项的取值范围为[1,100],默60,100writing_throttling_maximum_duration:指定触发写入限速后,剩余MemStore内存2h,该配置项一般不做修改。802h的写入限速,示例如下:obclient>obclient>ALTERSYSTEMSETwriting_throttling_trigger_percentage=QueryOK,0rowsaffectedobclient>obclient>ALTERSYSTEMSETwriting_throttling_maximum_duration='2h';QueryOK,0rowsaffected租户内存扩容内存配置步骤如下:用的

OceanBasesysSQLUNIT_CONFIGUNIT_CONFIGNAMErootobclient>obclient>SELECTNAMEFROMDBA_OB_UNIT_CONFIGS;++|NAME|++|sys_unit_config||test_unit|++2rowsinset说明sys_unit_configtestunit_confignametest_unit复制租户的unit_configname,使用如下命令,完成内存扩容。obclient>obclient>ALTERRESOURCEUNITtest_unitMIN_CPU=2,MAX_CPU=2,MEMORY_SIZE='10G',MAX_IOPS=10000,MIN_IOPS=10000;注意当前版本中,仅CPU、Memory配置生效,其他I/O参数(例如IOPS)暂不生效。MemTable通过如下配置项来调整租户内存中MemTable的比例:freeze_trigger_percentage:当租户的MemTable内存的使用量达到此配置项所限制使用的百分比时,就会自动触发转储,转储后会释放占用的内存。该配置项取值范围[1,99],20,MemStore20%,就会触发转储。memstore_limit_percentage:该配置项用于控制租户内存中可用于MemStore写入的比例,取值范围[1,99],默认值为50,表示租户可使用的MemStore占其总可用内存的50%。当内存不足时,可以调高

memstore_limit_percentag

的取值,并调低freeze_trigger_percentage的取值,从而达到临时扩容和尽快转储释放的效果。freeze_trigger_percentageroot使用 用户登录OceanBase集群的sys租户,调高memstore_limit_percentage的root取值,并调低freeze_trigger_percentage的取值,示例如下:obclient>obclient>ALTERSYSTEMSETfreeze_trigger_percentage=20;QueryOK,0rowsaffectedobclient>ALTERSYSTEMSETmemstore_limit_percentage=QueryOK,0rowsaffected关于超时时间在 OceanBase 数据库中,您可能在查询或执行 DML 操作时遇

timeout 或Transactionistimeout的错误,这是因为OceanBase数据库对查询和事务超时做了默认配置,方便用户针对不同业务场景进行调整。ob_query_timeouttimeout%';OceanBase数据库提供了以下超时时间相关的变量,可使用SHOWVARIABLESLIKE'%命令进行查看。ob_query_timeouttimeout%';:查询超时时间,单位us,默认值为10s。ob_trx_timeout:事务超时时间,单位us,默认值86400s。ob_trx_timeoutob_trx_idle_timeout:事务空闲超时时间,单位us,默认值86400s。ob_trx_idle_timeout设置超时时间超时时间的设置方法如下:在会话/全局进行变量设置。示例如下:obclient>obclient>SETob_query_timeout=10000000;QueryOK,0rowsaffectedobclient>SETGLOBALob_query_timeout=10000000;QueryOK,0rowsaffected在JDBC连接串中设置。示例如下:jdbc:oceanbase://:1001/unittests?user=**u**@sys&password=******&sessionVariablesjdbc:oceanbase://:1001/unittests?user=**u**@sys&password=******&sessionVariables=ob_query_timeout60000000000,ob_trx_timeout=60000000000&xxxx在SQL级别添加Hint设置。示例如下:说明此方式只对当前SQL语句生效。SELECT/*+query_timeout(100000000*/c1FROMt1; SQL(MySQL)本节主要介绍OceanBase数据库MySQL模式下的一些SQL基本操作。创建数据库CREATEDATABASECREATEDATABASEdb1示例:创建数据库 ,指定字符集为UTF8,并创建读写属性。db1obclient>obclient>CREATEDATABASEdb1DEFAULTCHARACTERSETUTF8READWRITE;QueryOK,1rowaffected更多CREATEDATABASECREATEDATABASE章节。创建完成后,可以通过SHOWDATABASESobclient>obclient>SHOWDATABASES;++|Database|++|oceanbase||db1||test|++3rowsinset表操作OceanBase创建表db1CREATETABLE使用 语句在数据库中创建新表示例:在数据库 中创建表testdb1CREATETABLEobclient>obclient>USEdb1;Databasechangedobclient>CREATETABLEtest(c1INTPRIMARYKEY,c2VARCHAR(3));QueryOK,0rowsaffected更多CREATETABLECREATETABLE章节。查看表使用SHOWCREATE示例:

语句查看建表语句。查看表test的建表语句。obclient>obclient>SHOWCREATETABLEtest\G***************************1.row***************************Table:testCreateTable:CREATETABLE`test`(`c1`int(11)NOTNULL,`c2`varchar(3)DEFAULTPRIMARYKEY(`c1`))DEFAULTCHARSET=utf8mb4ROW_FORMAT=DYNAMICCOMPRESSION='zstd_1.3.8'REPLICA_NUM=1BLOCK_SIZE=16384USE_BLOOM_FILTER=FALSETABLET_SIZE=134217728PCTFREE=01rowinset使用SHOW

语句查看

数据库中的所有表。obclient>obclient>SHOWTABLESFROMdb1;++|Tables_in_db1|++|test|test|++1rowinset修改表使用ALTERTABLE语句来修改已存在的表的结构,包括修改表及表属性、新增列、修改列及属性、删除列等。示例:将表

的字段c2

改名为c3,并同时修改其字段类型。obclient>obclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|c1|int(11)|NO|PRI|NULL|||c2|varchar(3)|YES||NULL||+++++++2rowsinsetobclient>ALTERTABLEtestCHANGECOLUMNc2c3CHAR(10);QueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|c1|int(11)|NO|PRI|NULL|||c3|char(10)|YES||NULL||+++++++2rowsinset在表test中增加、删除列。obclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|c1|int(11)|NO|PRI|NULL|||c3|char(10)|YES||NULL||+++++++rowsinsetobclient>ALTERTABLEtestADDc4QueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|c1|int(11)|NO|PRI|NULL|||c3|char(10)|YES||NULL|||c4|int(11)|YES||NULL||+++++++rowsinsetobclient>ALTERTABLEtestDROPQueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|++++++++++++++|c1|int(11)|NO|PRI|NULL|||c4|int(11)|YES||NULL||+++++++2rowsinset更多ALTERTABLEALTERTABLE章节。删除表DROPDROPTABLEtest示例:删除表 。testobclient>obclient>DROPTABLEtest;QueryOK,0rowsaffected更多DROPTABLE语句相关的语法说明,DROPTABLE章节。索引操作索引是创建在表上并对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。本节主要介绍数据库中索引的创建、查看、删除的语法和示例。创建索引obclient>DESCRIBEtest;+++++++|obclient>DESCRIBEtest;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|c1|int(11)|NO|PRI|NULL|||c2|char(3)|YES||NULL||testCREATEINDEX++++++++++++++2rowsinsetobclient>CREATEINDEXtest_indexONtest(c1,QueryOK,0rowsaffected更多CREATEINDEXCREATEINDEX章节。查看索引使用SHOW示例:查看表test

语句查看表的索引。中的索引信息。obclient>obclient>SHOWINDEXFROMtest\G***************************1.row***************************Table:testNon_unique:0Key_name:Seq_in_index:1Column_name:c1Collation:ACardinality:NULLSub_part:NULLPacked:NULLNull:Index_type:BTREEComment:availableIndex_comment:Visible:YES***************************2.row***************************Table:testNon_unique:1Key_name:test_indexSeq_in_index:1Column_name:c1Collation:ACardinality:NULLSub_part:NULLPacked:NULLNull:Index_type:BTREEComment:availableIndex_comment:Visible:YES***************************3.row***************************Table:testNon_unique:1Key_name:test_indexSeq_in_index:2Column_name:c2Collation:ACardinality:NULLSub_part:NULLPacked:NULLNull:YESIndex_type:BTREEComment:availableIndex_comment:Visible:YES3rowsinset删除索引使用DROP示例:删除表test

语句删除表的索引。中的索引。obclient>obclient>DROPINDEXtest_indexONtest;QueryOK,0rowsaffected更多DROPINDEXDROPINDEX章节。插入数据使用示例:创建表t1

语句在已经存在的表中插入数据。并插入一行数据。obclient>obclient>CREATETABLEt1(c1INTPRIMARYKEY,c2int)PARTITIONBYKEY(c1)PARTITIONS4;QueryOK,0rowsaffectedobclient>SELECT*FROMt1;Emptysetobclient>INSERTt1QueryOK,1rowaffectedobclient>SELECT*FROMt1;+++|c1|c2|+++|1|1|++++++1rowinset向表t1中插入多行数据。obclient>INSERTt1obclient>INSERTt1VALUES(2,2),(3,default),(2+2,3*4);QueryOK,3rowsaffectedRecords:3Duplicates:0Warnings:0obclient>SELECT*FROMt1;+++|c1|c2|+++|1|1||2|2||3|NULL||4|12|+++4rowsinset更多INSERTINSERT章节。删除数据PRIMARYKEYCREATETABLE使用PRIMARYKEYCREATETABLE

语句删除数据,支持单表删除和多表删除数据。通过 创建表。

和t3

的行,其中c1

列为表t2中的/*表`t3`为`KEY`分区表,且分区名由系统根据分区命令规则自动生成,即分区名为/*表`t3`为`KEY`分区表,且分区名由系统根据分区命令规则自动生成,即分区名为`p0`、`p1`、`p2`、`p3`*/obclient>CREATETABLEt2(c1INTPRIMARYKEY,c2INT);QueryOK,0rowsaffectedobclient>INSERTt2VALUES(1,1),(2,2),(3,3),(5,5);QueryOK,4rowsaffectedRecords:4Duplicates:0Warnings:0obclient>SELECT*FROMt2;+++|c1|c2|+++|1|1||2|2||3|3||5|5|+++4rowsinsetobclient>CREATETABLEt3(c1INTPRIMARYKEY,c2INT)PARTITIONBYKEY(c1)PARTITIONS4;QueryOK,0rowsaffectedobclient>INSERTINTOt3VALUES(5,5),(1,1),(2,2),(3,3);QueryOK,4rowsaffectedRecords:4Duplicates:0Warnings:0obclient>SELECT*FROMt3;+++|c1|c2|+++||5|5||1|1||2|2||3|3|+++4rowsinsetobclient>DELETEFROMt2WHEREc1=2;QueryOK,1rowaffectedobclient>SELECT*FROMt2;+++|c1|c2|+++|1|1||3|3||5|5|+++3rowsinset删除表

中按照c2

列排序之后的第一行数据。obclient>obclient>DELETEFROMt2ORDERBYc2LIMIT1;QueryOK,1rowaffectedobclient>SELECT*FROMt2;+++|c1|c2|+++|3|3||5|5||5|5|+++2rowsinset删除表

分区的数据。obclient>obclient>SELECT*FROMt3PARTITION(p2);+++|c1|c2|+++|1|1||2|2||3|3|+++3rowsinsetobclient>DELETEFROMt3PARTITION(p2);QueryOK,3rowsaffectedobclient>SELECT*FROMt3;+++|c1|c2|+++|5|5|+++1rowinset删除t2

表中t2.c1

的数据。obclient>obclient>SELECT*FROMt2;+++|c1|c2|+++|3|3||5|5|+++2rowsinsetobclient>SELECT*FROMt3;+++|c1|c2|+++|5|5|+++obclient>DELETEt2,t3FROMt2,t3WHEREt2.c1=t3.c1;QueryOK,3rowsaffected/*等价于obclient>DELETEFROMt2,t3USINGt2,t3WHEREt2.c1=t3.c1;*/obclient>SELECT*FROMt2;+++|c1|c2|+++|3|3|+++1rowinsetobclient>obclient>SELECT*FROMt3;Emptyset更多DELETEDELETE章节。更新数据100CREATETABLE使用100CREATETABLE

语句修改表中的字段值。通过列值修改为

创建表

和t5

中t4.c1=10

对应的那一行数据的c2obclient>obclient>CREATETABLEt4(c1INTPRIMARYKEY,c2INT);QueryOK,0rowsaffectedobclient>INSERTt4VALUES(10,10),(20,20),(30,30),(40,40);QueryOK,4rowsaffectedRecords:4Duplicates:0Warnings:0obclient>SELECT*FROMt4;+++|c1|c2|+++|10|10||20|20||30|30||40|40|+++4rowsinsetobclient>CREATETABLEt5(c1INTPRIMARYKEY,c2INT)PARTITIONBYKEY(c1)PARTITIONS4;QueryOK,0rowsaffectedobclient>INSERTt5VALUES(50,50),(10,10),(20,20),(30,30);QueryOK,4rowsaffectedRecords:4Duplicates:0Warnings:0obclient>SELECT*FROMt5;+++|c1|c2|+++|20|20||10|10||50|50||30|30|+++4rowsinsetobclient>UPDATEt4SETt4.c2=100WHEREt4.c1=10;QueryOK,1rowaffectedRowsmatched:1Changed:1Warnings:0obclient>SELECT*FROMt4;+++|c1|c2|+++|10|100||20|20||30|30||40|40|40|+++4rowsinset将表

中按照c2

列排序的前两行数据的

列值修改为100。obclient>obclient>UPDATEt4sett4.c2=100ORDERBYc2LIMITQueryOK,2rowsaffectedRowsmatched:2Changed:2Warnings:0obclient>SELECT*FROMt4;+++|c1|c2|+++|10|100||20|100||30|100||40|40|+++4rowsinset将表

分区的数据中t5.c1

的对应行数据的c2

列值修改为100。obclient>obclient>SELECT*FROMt5PARTITION(p1);+++|c1|c2|+++|10|10||50|50|+++2rowsinsetobclient>obclient>UPDATEt5PARTITION(p1)SETt5.c2=100WHEREt5.c1>20;QueryOK,1rowaffectedRowsmatched:1Changed:1Warnings:0obclient>SELECT*FROMt5PARTITION(p1);+++|c1|c2|+++|10|10||50|100|+++2rowsinsetc2t5t5t4c2t5t5t4100,表 中

中满足200t4.c2200t4.c2=t5.c2

对应行的数据,将表

中的c2

列值修改为obclient>obclient>UPDATEt4,t5SETt4.c2=100,t5.c2=200WHEREt4.c2=t5.c2;QueryOK,1rowaffectedRowsmatched:4Changed:1Warnings:0obclient>SELECT*FROMt4;+++|c1|c2|+++|10|100||20|100||30|100||40|40|+++44rowsinsetobclient>SELECT*FROMt5;+++|c1|c2|+++|20|20||10|10||50|200||30|30|+++4rowsinset更多UPDATEUPDATE章节。查询数据使用示例:

语句查询表中的内容。通过CREATE

创建表t6

中读取

的数据。obclient>obclient>CREATETABLEt6(idINT,nameVARCHAR(50),numINT);QueryOK,0rowsaffectedobclient>INSERTINTOt6VALUES(1,'a',100),(2,'b',200),(3,'a',50);QueryOK,3rowsaffectedRecords:3Duplicates:0Warnings:0obclient>SELECT*FROMt6;++++|ID|NAME|NUM|++++++++|1|a|100||2|b|200||3|a|50|++++3rowsinsetobclient>SELECTnameFROMt6;++|NAME|++|a||b||a|++3rowsinset在查询结果中对name进行去重处理。obclient>obclient>SELECTDISTINCTnameFROMt6;++|NAME|++|a||b|++2rowsinset从表

中根据筛选条件name

,输出对应的

和num。obclient>obclient>SELECTid,name,numFROMt6WHEREname='a';++++|ID|NAME|NUM|++++|1|a|100||3|a|50|++++2rowsinset更多SELECTSELECT章节。提交事务使用COMMIT在提交事务(COMMIT)之前:您的修改只对当前会话可见,对其他数据库会话均不可见。您的修改没有持久化,您可以通过ROLLBACK语句撤销修改。在提交事务(COMMIT)之后:您的修改对所有数据库会话可见。您的修改持久化成功,不能通过ROLLBACK语句回滚修改。示例:通过CREATE

创建表t_insert

语句提交事务。obclient>obclient>CREATETABLEt_insert(idnumberNOTNULLPRIMARYnamevarchar(10)NOTNULL,valuenumber,gmt_createDATETIMENOTNULLDEFAULTCURRENT_TIMESTAMP);QueryOK,0rowsaffectedobclient>INSERTINTOt_insert(id,name,value,gmt_create)VALUES(1,'CN',10001,current_timestamp),(2,'US',10002,current_timestamp),(3,'EN',10003,current_timestamp);QueryOK,3rowsaffectedRecords:3Duplicates:0Warnings:0obclient>SELECT*FROMt_insert;+++++|id|name|value|gmt_create|+++++|1|CN|10001|2022-08-2216:19:26||2|US|10002|2022-08-2216:19:26||3|EN|10003|2022-08-2216:19:26|+++++3rowsinsetobclient>INSERTINTOt_insert(id,name)VALUES(4,'JP');QueryOK,1rowaffectedobclient>COMMIT;QueryOK,0rowsaffectedobclient>Byeobclient>obclient-h-ur**t@mysql-P2881-p******-Ddb1obclient>SELECT*FROMt_insert;+++++|id|name|value|gmt_create|++++++++++|1|CN|10001|2022-08-2216:19:26||2|US|10002|2022-08-2216:19:26||3|EN|10003|2022-08-2216:19:26||4|JP|NULL|2022-08-2216:21:39|+++++4rowsinset更多事务控制语句相关的说明请参见事务管理概述。回滚事务使用ROLLBACK语句回滚事务。回滚一个事务指将事务的修改全部撤销。可以回滚当前整个未提交的事务,也可以回滚到事务中任意一个保存点。如果要回滚到某个保存点,必须结合使用

ROLLBACK

和 TO SAVEPOINT语句。其中:如果回滚整个事务,则:事务会结束所有的修改会被丢弃清除所有保存点释放事务持有的所有锁如果回滚到某个保存点,则:事务不会结束保存点之前的修改被保留,保存点之后的修改被丢弃清除保存点之后的保存点(不包括保存点自身)obclient>SELECTobclient>SELECT*FROMt_insert;+++++|id|name|value|gmt_create|+++++|1|CN|10001|2022-08-2216:19:26||2|US|10002|2022-08-2216:19:26||3|EN|10003|2022-08-2216:19:26|+++++3rowsinsetobclient>BEGIN;QueryOK,0rowsaffectedobclient>INSERTINTOt_insert(id,name,value)VALUES(4,'JP',10004);ERROR1062(23000):Duplicateentry'4'forkey'PRIMARY'obclient>INSERTINTOt_insert(id,name,value)VALUES(5,'FR',10005),(6,'RU',10006);QueryOK,2rowsaffectedRecords:2Duplicates:0Warnings:0obclient>SELECT*FROMt_insert;+++++|id|name|value|gmt_create|+++++|1|CN|10001|2022-08-2216:19:26||2|US|10002|2022-08-2216:19:26||3|EN|10003|2022-08-2216:19:26||4|JP|10004|2022-08-2216:25:45||5|FR|10005|2022-08-2216:26:23||6|RU|10006|2022-08-2216:26:23|+++++6rowsinsetobclient>obclient>ROLLBACK;QueryOK,0rowsaffectedobclient>SELECT*FROMt_insert;+++++|id|name|value|gmt_create|+++++|1|CN|10001|2022-09-2815:45:26||2|US|10002|2022-09-2815:45:26||3|EN|10003|2022-09-2815:45:26||4|JP|NULL|2022-09-2815:45:48|+++++4rowsinset更多事务控制语句相关的说明,请参见事务管理概述。SQL(Oracle)本节主要介绍OceanBase数据库Oracle模式下的一些SQL基本操作。功能适用性OceanBaseOceanBaseMySQL表操作本节主要提供数据库中表的创建、查看、修改和删除的语法和示例。创建表使用CREATETABLE示例:创建表test

语句在数据库中创建新表。obclient>obclient>CREATETABLEtest(c1INTPRIMARYKEY,c2VARCHAR(3));QueryOK,0rowsaffected更多CREATETABLECREATETABLE章节。修改表使用ALTERTABLE语句来修改已存在的表的结构,包括修改表及表属性、新增列、修改列及属性、删除列等。示例:修改表

的字段c2

的字段类型。obclient>obclient>DESCRIBEtest;+++++++|FIELD|TYPE|NULL|KEY|DEFAULT|EXTRA|+++++++|C1|NUMBER(38)|NO|PRI|NULL|NULL||C2|VARCHAR2(3)|YES|NULL|NULL|NULL|++++++++++++++2rowsinsetobclient>ALTERTABLEtestMODIFYc2CHAR(10);QueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|FIELD|TYPE|NULL|KEY|DEFAULT|EXTRA|+++++++|C1|NUMBER(38)|NO|PRI|NULL|NULL||C2|CHAR(10)|YES|NULL|NULL|NULL|+++++++2rowsinset在表test中增加、删除列。obclient>obclient>ALTERTABLEtestADDc3int;QueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|FIELD|TYPE|NULL|KEY|DEFAULT|EXTRA|+++++++|C1|NUMBER(38)|NO|PRI|NULL|NULL||C2|CHAR(10)|YES|NULL|NULL|NULL||C3|NUMBER(38)|YES|NULL|NULL|NULL|+++++++3rowsinsetobclient>obclient>ALTERTABLEtestDROPCOLUMNc3;QueryOK,0rowsaffectedobclient>DESCRIBEtest;+++++++|FIELD|TYPE|NULL|KEY|DEFAULT|EXTRA|+++++++|C1|NUMBER(38)|NO|PRI|NULL|NULL||C2|CHAR(10)|YES|NULL|NULL|NULL|+++++++2rowsinset更多ALTERTABLEALTERTABLE章节。删除表DROPDROPTABLEtest示例:删除表 。testobclient>obclient>DROPTABLEtest;QueryOK,0rowsaffected更多DROPTABLEDROPTABLE章节。索引操作索引是创建在表上并对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。创建索引testCREATEINDEX使用 语句创建表的索引testCREATEINDEXobclient>obclient>DESCRIBEtest;+++++++|FIELD|TYPE|NULL|KEY|DEFAULT|EXTRA|+++++++|C1|NUMBER(38)|NO|PRI|NULL|NULL||C2|CHAR(10)|YES|NULL|NULL|NULL|+++++++2rowsinsetobclient>CREATEINDEXtest_indexONtest(c1,QueryOK,0rowsaffected更多CREATEINDEXCREATEINDEX章节。查看索引通过视图ALL_INDEXES查看表的所有索引。obclient>SELECTobclient>SELECTOWNER,INDEX_NAME,INDEX_TYPE,TABLE_OWNER,TABLE_NAMEFROMALL_INDEXESWHEREtable_name='TEST'\G***************************1.row***************************OWNER:SYSINDEX_NAME:TEST_OBPK_1664353339491130INDEX_TYPE:NORMALTABLE_OWNER:TABLE_NAME:TEST***************************2.row***************************OWNER:SYSINDEX_NAME:TEST_INDEXINDEX_TYPE:NORMALTABLE_OWNER:SYSTABLE_NAME:TABLE_NAME:TEST2rowsinset通过USER_IND_COLUMNS查看表索引的详细信息。obclient>SELECT*FROMUSER_IND_COLUMNSWHEREtable_name='TEST'\G***************************1.row***************************INDEX_NAME:TEST_OBPK_1664353339491130TABLE_NAME:TESTCOLUMN_NAME:C1COLUMN_POSITION:COLUMN_LENGTH:22CHAR_LENGTH:DESCEND:ASCCOLLATED_COLUMN_ID:NULL***************************2.row***************************INDEX_NAME:TEST_INDEXTABLE_NAME:TESTCOLUMN_NAME:C1COLUMN_POSITION:COLUMN_LENGTH:22CHAR_LENGTH:DESCEND:ASCCOLLATED_COLUMN_ID:NULL***************************3.row***************************INDEX_NAME:TEST_INDEXTABLE_NAME:TESTCOLUMN_NAME:C2COLUMN_POSITION:COLUMN_LENGTH:10CHAR_LENGTH:CHAR_LENGTH:DESCEND:ASCCOLLATED_COLUMN_ID:NULL3rowsinset删除索引使用DROPINDEX语句删除表的索引。示例:删除索引test_index。obclient>obclient>DROPINDEXtest_index;QueryOK,0rowsaffected更多DROPINDEXDROPINDEX章节。插入数据使用示例:

语句添加一个或多个记录到表中。通过CREATE

创建表t1

中插入一行数据。obclient>obclient>CREATETABLEt1(c1INTPRIMARYKEY,c2INT);QueryOK,0rowsaffectedobclient>SELECT*FROMt1;Emptysetobclient>INSERTINTOt1VALUES(1,1);QueryOK,1rowaffectedobclient>SELECT*FROMt1;+++|c1|c1|c2|+++|1|1|+++1rowinset直接向子查询中插入数据。obclient>obclient>INSERTINTO(SELECT*FROMt1)VALUES(2,2);QueryOK,1rowaffectedobclient>SELECT*FROMt1;+++|C1|C2|+++|1|1||2|2|+++2rowsinset包含RETURNING子句的数据插入。obclient>obclient>INSERTINTOt1VALUES(3,3)RETURNINGc1;++|C1|++|3|++1rowinsetobclient>SELECT*FROMt1;+++|C1|C1|C2|+++|1|1||2|2||3|3|+++3rowsinset更多INSERTINSERT章节。删除数据使用DELETE语句删除数据。示例:删除表

中c1=2

的行。obclient>obclient>DELETEFROMt1WHEREc1=2;QueryOK,1rowaffectedobclient>SELECT*FROMt1;+++|C1|C2|+++|1|1||3|3|+++2rowsinset更多DELETEDELETE章节。更新数据使用示例:

语句修改表中的字段值。将表

对应的那一行数据的c2

列值修改为100。obclient>obclient>UPDATEt1SETt1.c2=100WHEREt1.c1=QueryOK,1rowaffectedRowsmatched:1Changed:1Warnings:0obclient>SELECT*FROMt1;+++|C1|C2|+++|1|100||3|3|+++2rowsinset直接操作子查询,将子查询中

对应的那一行数据的c2

列值修改为300。obclient>obclient>UPDATE(SELECT*FROMt1)vSETv.c2=300WHEREv.c1=3;QueryOK,1rowaffectedRowsmatched:1Changed:1Warnings:0obclient>SELECT*FROMt1;+++|C1|C2|+++|1|100||3|300|+++2rowsinset更多UPDATEUPDATE章

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论