这篇MongoDB基本管理命令比较全面,转载保留,原文
目录
MongoDB命令帮助系统
基本命令及实例
一基本命令
二基本DDL和DML
三启动与终止
四安全管理
五数据备份恢复与迁移管理
六远程连接管理
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行。下面通过熟悉MongoDB的基本管理命令,来了解MongoDB提供的DBMS的基本功能和行为。
在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控。看一下MongoDB的命令帮助系统:
1root@dev2:~#mongo 2MongoDBshellversion:1.8.3 3connectingto:test 4>help 5db.help()helpondbmethods 6db.mycoll.help()helponcollectionmethods 7rs.help()helponreplicasetmethods 8helpconnectconnectingtoadbhelp 9helpadminadministrativehelp 10helpmiscmiscthingstoknow 11helpmrmapreducehelp 12 13showdbsshowdatabasenames 14showcollectionsshowcollectionsincurrentdatabase 15showusersshowusersincurrentdatabase 16showprofileshowmostrecentsystem.profileentrieswithtime>=1ms 17use<db_name>setcurrentdatabase 18db.foo.find()listobjectsincollectionfoo 19db.foo.find({a:1})listobjectsinfoowherea==1 20itresultofthelastlineevaluated;usetofurtheriterate 21DBQuery.shellBatchSize=xsetdefaultnumberofitemstodisplayonshell 22exitquitthemongoshell这是MongoDB最顶层的命令列表,主要告诉我们管理数据库相关的一些抽象的范畴:数据库操作帮助、集合操作帮助、管理帮助。如果你想了解数据库操作更详细的帮助命令,可以直接使用db.help(),如下所示:
1>db.help() 2DBmethods: 3db.addUser(username,password[,readOnly=false]) 4db.auth(username,password) 5db.cloneDatabase(fromhost) 6db.commandHelp(name)returnsthehelpforthecommand 7db.copyDatabase(fromdb,todb,fromhost) 8db.createCollection(name,{size:...,capped:...,max:...}) 9db.currentOp()displaysthecurrentoperationinthedb 10db.dropDatabase() 11db.eval(func,args)runcodeserver-side 12db.getCollection(cname)sameasdb[cname]ordb.cname 13db.getCollectionNames() 14db.getLastError()-justreturnstheerrmsgstring 15db.getLastErrorObj()-returnfullstatusobject 16db.getMongo()gettheserverconnectionobject 17db.getMongo().setSlaveOk()allowthisconnectiontoreadfromthenonmastermemberofareplicapair 18db.getName() 19db.getPrevError() 20db.getProfilingLevel()-deprecated 21db.getProfilingStatus()-returnsifprofilingisonandslowthreshold 22db.getReplicationInfo() 23db.getSiblingDB(name)getthedbatthesameserverasthisone 24db.isMaster()checkreplicaprimarystatus 25db.killOp(opid)killsthecurrentoperationinthedb 26db.listCommands()listsallthedbcommands 27db.printCollectionStats() 28db.printReplicationInfo() 29db.printSlaveReplicationInfo() 30db.printShardingStatus() 31db.removeUser(username) 32db.repairDatabase() 33db.resetError() 34db.runCommand(cmdObj)runadatabasecommand.ifcmdObjisastring,turnsitinto{cmdObj:1} 35db.serverStatus() 36db.setProfilingLevel(level,<slowms>)0=off1=slow2=all 37db.shutdownServer() 38db.stats() 39db.version()currentversionoftheserver 40db.getMongo().setSlaveOk()allowqueriesonareplicationslaveserver对数据库进行管理和操作的基本命令,可以从上面获取到。如果想要得到更多,而且每个命令的详细用法,可以使用上面列出的db.listCommands()查询。
另一个比较基础的是对指定数据库的集合进行操作、管理和监控,可以通过查询db.mycoll.help()获取到:
1>db.mycoll.help() 2DBCollectionhelp 3db.mycoll.find().help()-showDBCursorhelp 4db.mycoll.count() 5db.mycoll.dataSize() 6db.mycoll.distinct(key)-eg.db.mycoll.distinct(x) 7db.mycoll.drop()dropthecollection 8db.mycoll.dropIndex(name) 9db.mycoll.dropIndexes() 10db.mycoll.ensureIndex(keypattern[,options])-optionsisanobjectwiththesepossiblefields:name,unique,dropDups 11db.mycoll.reIndex() 12db.mycoll.find([query],[fields])-queryisanoptionalqueryfilter.fieldsisoptionalsetoffieldstoreturn. 13e.g.db.mycoll.find({x:77},{name:1,x:1}) 14db.mycoll.find(...).count() 15db.mycoll.find(...).limit(n) 16db.mycoll.find(...).skip(n) 17db.mycoll.find(...).sort(...) 18db.mycoll.findOne([query]) 19db.mycoll.findAndModify({update:...,remove:bool[,query:{},sort:{},new:false]}) 20db.mycoll.getDB()getDBobjectassociatedwithcollection 21db.mycoll.getIndexes() 22db.mycoll.group({key:...,initial:...,reduce:...[,cond:...]}) 23db.mycoll.mapReduce(mapFunction,reduceFunction,<optionalparams>) 24db.mycoll.remove(query) 25db.mycoll.renameCollection(newName,<dropTarget>)renamesthecollection. 26db.mycoll.runCommand(name,<options>)runsadbcommandwiththegivennamewherethefirstparamisthecollectionname 27db.mycoll.save(obj) 28db.mycoll.stats() 29db.mycoll.storageSize()-includesfreespaceallocatedtothiscollection 30db.mycoll.totalIndexSize()-sizeinbytesofalltheindexes 31db.mycoll.totalSize()-storageallocatedforalldataandindexes 32db.mycoll.update(query,object[,upsert_bool,multi_bool]) 33db.mycoll.validate()-SLOW 34db.mycoll.getShardVersion()-onlyforusewithsharding有关数据库和集合管理的相关命令,是最基础和最常用的,如集合查询、索引操作等。
下面通过实际的例子来演示一些常见的命令:
1、showdbs
显示当前数据库服务器上的数据库
2、usepagedb
切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等
3、showcollections
显示数据库中所有的集合(collection)
4、db.serverStatus()
查看数据库服务器的状态。示例如下所示:
1{ 2"host":"dev2", 3"version":"1.8.3", 4"process":"mongod", 5"uptime":845446, 6"uptimeEstimate":839192, 7"localTime":ISODate("2011-12-27T04:03:12.512Z"), 8"globalLock":{ 9"totalTime":845445636925, 10"lockTime":13630973982, 11"ratio":0.016122827283818857, 12"currentQueue":{ 13"total":0, 14"readers":0, 15"writers":0 16}, 17"activeClients":{ 18"total":0, 19"readers":0, 20"writers":0 21} 22}, 23"mem":{ 24"bits":64, 25"resident":12208, 26"virtual":466785, 27"supported":true, 28"mapped":466139 29}, 30"connections":{ 31"current":27, 32"available":792 33}, 34"extra_info":{ 35"note":"fieldsvarybyplatform", 36"heap_usage_bytes":70895216, 37"page_faults":17213898 38}, 39"indexCounters":{ 40"btree":{ 41"accesses":4466653, 42"hits":4465526, 43"misses":1127, 44"resets":0, 45"missRatio":0.00025231420484197006 46} 47}, 48"backgroundFlushing":{ 49"flushes":14090, 50"total_ms":15204393, 51"average_ms":1079.0910574875797, 52"last_ms":669, 53"last_finished":ISODate("2011-12-27T04:02:28.713Z") 54}, 55"cursors":{ 56"totalOpen":3, 57"clientCursors_size":3, 58"timedOut":53 59}, 60"network":{ 61"bytesIn":63460818650, 62"bytesOut":763926196104, 63"numRequests":67055921 64}, 65"opcounters":{ 66"insert":7947057, 67"query":35720451, 68"update":16263239, 69"delete":154, 70"getmore":91707, 71"command":68520 72}, 73"asserts":{ 74"regular":0, 75"warning":1, 76"msg":0, 77"user":7063866, 78"rollovers":0 79}, 80"writeBacksQueued":false, 81"ok":1 82}有时,通过查看数据库服务器的状态,可以判断数据库是否存在问题,如果有问题,如数据损坏,可以及时执行修复。
5、查询指定数据库统计信息
usefragment
db.stats()
查询结果示例如下所示:
1>db.stats() 2{ 3 "db":"fragment", 4 "collections":12, 5 "objects":384553, 6 "avgObjSize":3028.40198360174, 7 "dataSize":1164581068, 8 "storageSize":1328351744, 9 "numExtents":109, 10 "indexes":10, 11 "indexSize":16072704, 12 "fileSize":4226809856, 13 "ok":1 14}显示fragment数据库的统计信息。
6、查询指定数据库包含的集合名称列表
db.getCollectionNames()
结果如下所示:
1>db.getCollectionNames() 2[ 3"17u", 4"baseSe", 5"bytravel", 6"daodao", 7"go2eu", 8"lotour", 9"lvping", 10"mafengwo", 11"sina", 12"sohu", 13"system.indexes" 14]1、创建数据库
如果你习惯了关系型数据库,你可能会寻找相关的创建数据库的命令。在MongoDB中,你可以直接通过usedbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库,例如:
1>showdbs 2admin0.03125GB 3local(empty) 4pagedb0.03125GB 5test0.03125GB 6>useLuceneIndexDB 7switchedtodbLuceneIndexDB 8>showdbs 9admin0.03125GB 10local(empty) 11pagedb0.03125GB 12test0.03125GB 13>db 14LuceneIndexDB 15>db.storeCollection.save({version:3.5,segment:e3ol6}) 16>showdbs 17LuceneIndexDB0.03125GB 18admin0.03125GB 19local(empty) 20pagedb0.03125GB 21test0.03125GB 22>可见,在use指定数据库后,并且向指定其中的一个集合并插入数据后,数据库和集合都被创建了。
2、删除数据库
直接使用db.dropDatabase()即可删除数据库。
3、创建集合
可以使用命令db.createCollection(name,{size:...,capped:...,max:...})创建集合,示例如下所示:
1>db.createCollection(replicationColletion,{capped:true,size:10240,max:17855200}) 2{"ok":1} 3>showcollections 4replicationColletion 5storeCollection 6system.indexes4、删除集合
删除集合,可以执行db.mycoll.drop()。
5、插入更新记录
直接使用集合的save方法,如下所示:
1><em>db.storeCollection.save({version:3.5,segment:e3ol6})</em>更新记录,使用save会将原来的记录值进行覆盖实现记录更新。
6、查询一条记录
使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:
1>db.storeCollection.findOne({version:3.5}) 2{ 3"_id":ObjectId("4ef970f23c1fc4613425accc"), 4"version":"3.5", 5"segment":"e3ol6" 6}7、查询多条记录
使用find()函数,参数指定查询条件,不指定条件则查询全部记录。
8、删除记录
使用集合的remove()方法,参数指定为查询条件,示例如下所示:
1>db.storeCollection.remove({version:3.5}) 2>db.storeCollection.findOne() 3null9、创建索引
可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:
1>usepagedb 2switchedtodbpagedb 3>db.page.ensureIndex({title:1,url:-1}) 4>db.system.indexes.find() 5{"name":"_id_","ns":"pagedb.page","key":{"_id":1},"v":0} 6{"name":"_id_","ns":"pagedb.system.users","key":{"_id":1},"v":0} 7{"_id":ObjectId("4ef977633c1fc4613425accd"),"ns":"pagedb.page","key":{"title":1,"url":-1},"name":"title_1_url_-1","v":0}上述,ensureIndex方法参数中,数字1表示升序,-1表示降序。
使用db.system.indexes.find()可以查询全部索引。
10、查询索引
我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询,示例如下所示:
1>db.page.getIndexes() 2[ 3{ 4"name":"_id_", 5"ns":"pagedb.page", 6"key":{ 7"_id":1 8}, 9"v":0 10}, 11{ 12"_id":ObjectId("4ef977633c1fc4613425accd"), 13"ns":"pagedb.page", 14"key":{ 15"title":1, 16"url":-1 17}, 18"name":"title_1_url_-1", 19"v":0 20} 21]当然,如果需要查询系统中全部的索引,可以使用db.system.indexes.find()函数。
11、删除索引
删除索引给出了两个方法:
1db.mycoll.dropIndex(name) 2db.mycoll.dropIndexes()第一个通过指定索引名称,第二个删除指定集合的全部索引。
12、索引重建
可以通过集合的reIndex()方法进行索引的重建,示例如下所示:
1>db.page.reIndex() 2{ 3"nIndexesWas":2, 4"msg":"indexesdroppedforcollection", 5"ok":1, 6"nIndexes":2, 7"indexes":[ 8{ 9"name":"_id_", 10"ns":"pagedb.page", 11"key":{ 12"_id":1 13}, 14"v":0 15}, 16{ 17"_id":ObjectId("4ef977633c1fc4613425accd"), 18"ns":"pagedb.page", 19"key":{ 20"title":1, 21"url":-1 22}, 23"name":"title_1_url_-1", 24"v":0 25} 26], 27"ok":1 28}13、统计集合记录数
usefragment
db.baseSe.count()
统计结果,如下所示: 1>usefragment 2switchedtodbfragment 3>db.baseSe.count() 436749上述统计了数据库fragment的baseSe集合中记录数。
14、查询并统计结果记录数
usefragment
db.baseSe.find().count()
find()可以提供查询参数,然后查询并统计结果,如下所示:
1>usefragment 2switchedtodbfragment 3>db.baseSe.find().count() 436749上述执行先根据查询条件查询结果,然后统计了查询数据库fragment的baseSe结果记录集合中记录数。
15、查询指定数据库的集合当前可用的存储空间
usefragment
db.baseSe.storageSize()
14256409616、查询指定数据库的集合分配的存储空间
db.baseSe.totalSize()
144096000
上述查询结果中,包括为集合(数据及其索引存储)分配的存储空间。
1、正常启动
mongod--dbpath/usr/mongo/data--logfile/var/mongo.log
说明:
指定数据存储目录和日志目录,如果采用安全认证模式,需要加上--auth选项,如:
mongod--auth--dbpath/usr/mongo/data--logfile/var/mongo.log
2、以修复模式启动
mongod--repair
以修复模式启动数据库。
实际很可能数据库数据损坏或数据状态不一致,导致无法正常启动MongoDB服务器,根据启动信息可以看到需要进行修复。或者执行:
mongod-f/etc/mongodb.conf--repair
3、终止服务器进程
db.shutdownServer()
终止数据库服务器进程。或者,可以直接kill掉mongod进程即可。
1、以安全认证模式启动
mongod--auth--dbpath/usr/mongo/data--logfile/var/mongo.log
使用--auth选项启动mongod进程即可启用认证模式。
或者,也可以修改/etc/mongodb.conf,设置auth=true,重启mongod进程。2、添加用户
db.addUser("admin",",%F23_kj~00Opoo0+\/")
添加数据库用户,添加成功,则显示结果如下所示:
1{ 2"user":"admin", 3"readOnly":false, 4"pwd":"995d2143e0bf79cba24b58b3e41852cd" 5}3、安全认证
db.auth("admin",",%F23_kj~00Opoo0+\/")
数据库安全认证。认证成功显示结果:
1{ 2"user":"admin", 3"readOnly":false, 4"pwd":"995d2143e0bf79cba24b58b3e41852cd" 5}如果是认证用户,执行某些命令,可以看到正确执行结果,如下所示:
1db.system.users.find() 2{"_id":ObjectId("4ef940a13c1fc4613425acc8"),"user":"admin","readOnly":false,"pwd":"995d2143e0bf79cba24b58b3e41852cd"}否则,认证失败,则执行相关命令会提示错误:
1db.system.users.find() 2error:{ 3"$err":"unauthorizeddb:adminlocktype:-1client:127.0.0.1","code":10057 4}4、为数据库写数据(同步到磁盘)加锁
db.runCommand({fsync:1,lock:1})
说明:该操作已经对数据库上锁,不允许执行写数据操作,一般在执行数据库备份时有用。执行命令,结果示例如下:
1{ 2"info":"nowlockedagainstwrites,usedb.$cmd.sys.unlock.findOne()tounlock", 3"ok":1 4}5、查看当前锁状态
db.currentOp()
说明:
查询结果如下所示:
1{ 2"inprog":[], 3"fsyncLock":1, 4"info":"usedb.$cmd.sys.unlock.findOne()toterminatethefsyncwrite/snapshotlock" 5}其中,fsyncLock为1表示MongoDB的fsync进程(负责将写入改变同步到磁盘)不允许其他进程执行写数据操作
6、解锁
useadmin
db.$cmd.sys.unlock.findOne()说明:
执行解锁,结果如下所示:
1{"ok":1,"info":"unlockrequested"}可以执行命令查看锁状态:
db.currentOp()
状态信息如下: 1{"inprog":[]}说明当前没有锁,可以执行写数据操作。
1、备份全部数据库
mkdirtestbak
cdtestbak
mongodump说明:默认备份目录及数据文件格式为./dump/[databasename]/[collectionname].bson
2、备份指定数据库 mongodump-dpagedb说明:备份数据库pagedb中的数据。
3、备份一个数据库中的某个集合
mongodump-dpagedb-cpage
说明:备份数据库pagedb的page集合。
4、恢复全部数据库
cdtestbak
mongorestore--drop说明:将备份的所有数据库恢复到数据库,--drop指定恢复数据之前删除原来数据库数据,否则会造成回复后的数据中数据重复。
5、恢复某个数据库的数据
cdtestbak
mongorestore-dpagedb--drop
说明:将备份的pagedb的数据恢复到数据库。6、恢复某个数据库的某个集合的数据
cdtestbak
mongorestore-dpagedb-cpage--drop
说明:将备份的pagedb的的page集合的数据恢复到数据库。7、向MongoDB导入数据
mongoimport-dpagedb-cpage--typecsv--headerline--drop<csvORtsvFile.csv
说明:将文件csvORtsvFile.csv的数据导入到pagedb数据库的page集合中,使用cvs或tsv文件的列名作为集合的列名。需要注意的是,使用--headerline选项时,只支持csv和tsv文件。
--type支持的类型有三个:csv、tsv、json
其他各个选项的使用,可以查看帮助: 1mongoimport--help 2options: 3--helpproducehelpmessage 4-v[--verbose]bemoreverbose(includemultipletimesformore 5verbositye.g.-vvvvv) 6-h[--host]argmongohosttoconnectto(<setname>/s1,s2forsets) 7--portargserverport.Canalsouse--hosthostname:port 8--ipv6enableIPv6support(disabledbydefault) 9-u[--username]argusername 10-p[--password]argpassword 11--dbpathargdirectlyaccessmongoddatabasefilesinthegiven 12path,insteadofconnectingtoamongodserver- 13needstolockthedatadirectory,socannotbeused 14ifamongodiscurrentlyaccessingthesamepath 15--directoryperdbifdbpathspecified,eachdbisinaseparate 16directory 17-d[--db]argdatabasetouse 18-c[--collection]argcollectiontouse(somecommands) 19-f[--fields]argcommaseparatedlistoffieldnamese.g.-fname,age 20--fieldFileargfilewithfieldsnames-1perline 21--ignoreBlanksifgiven,emptyfieldsincsvandtsvwillbeignored 22--typeargtypeoffiletoimport.default:json(json,csv,tsv) 23--fileargfiletoimportfrom;ifnotspecifiedstdinisused 24--dropdropcollectionfirst 25--headerlineCSV,TSVonly-usefirstlineasheaders 26--upsertinsertorupdateobjectsthatalreadyexist 27--upsertFieldsargcomma-separatedfieldsforthequerypartofthe 28upsert.Youshouldmakesurethisisindexed 29--stopOnErrorstopimportingatfirsterrorratherthancontinuing 30--jsonArrayloadajsonarray,notoneitemperline.Currently 31limitedto4MB.8、从向MongoDB导出数据
mongoexport-dpagedb-cpage-q{}-f_id,title,url,spiderName,pubDate--csv>pages.csv
说明:将pagedb数据库中page集合的数据导出到pages.csv文件,其中各选项含义:
-f指定cvs列名为_id,title,url,spiderName,pubDate
-q指定查询条件
其他各个选项的使用,可以查看帮助: 1mongoexport--help 2options: 3--helpproducehelpmessage 4-v[--verbose]bemoreverbose(includemultipletimesformoreverbositye.g.-vvvvv) 5-h[--host]argmongohosttoconnectto(<setname>/s1,s2forsets) 6--portargserverport.Canalsouse--hosthostname:port 7--ipv6enableIPv6support(disabledbydefault) 8-u[--username]argusername 9-p[--password]argpassword 10--dbpathargdirectlyaccessmongoddatabasefilesinthegiven 11path,insteadofconnectingtoamongodserver- 12needstolockthedatadirectory,socannotbeused 13ifamongodiscurrentlyaccessingthesamepath 14--directoryperdbifdbpathspecified,eachdbisinaseparatedirectory 15-d[--db]argdatabasetouse 16-c[--collection]argcollectiontouse(somecommands) 17-f[--fields]argcommaseparatedlistoffieldnamese.g.-fname,age 18--fieldFileargfilewithfieldsnames-1perline 19-q[--query]argqueryfilter,asaJSONstring 20--csvexporttocsvinsteadofjson 21-o[--out]argoutputfile;ifnotspecified,stdoutisused 22--jsonArrayoutputtoajsonarrayratherthanoneobjectperline注意:
如果上面的选项-q指定一个查询条件,需要使用单引号括起来,如下所示:
1mongoexport-dpage-cArticle-q{"spiderName":"mafengwoSpider"}-f_id,title,content,images,publishDate,spiderName,url--jsonArray>mafengwoArticle.txt否则,就会出现下面的错误:
1ERROR:toomanypositionaloptions(六)远程连接管理
1、基于mongo实现远程连接
1mongo-uadmin-padmin192.168.0.197:27017/pagedb通过mongo实现连接,可以非常灵活的选择参数选项,参看命令帮助,如下所示:
1mongo--help 2MongoDBshellversion:1.8.3 3usage:mongo[options][dbaddress][filenames(endingin.js)] 4dbaddresscanbe: 5foofoodatabaseonlocalmachine 6192.169.0.5/foofoodatabaseon192.168.0.5machine 7192.169.0.5:9999/foofoodatabaseon192.168.0.5machineonport9999 8options: 9--shellruntheshellafterexecutingfiles 10--nodbdontconnecttomongodonstartup-nodbaddress 11argexpected 12--quietbelesschatty 13--portargporttoconnectto 14--hostargservertoconnectto 15--evalargevaluatejavascript 16-u[--username]argusernameforauthentication 17-p[--password]argpasswordforauthentication 18-h[--help]showthisusageinformation 19--versionshowversioninformation 20--verboseincreaseverbosity 21--ipv6enableIPv6support(disabledbydefault)2、基于MongoDB支持的javascript实现远程连接
当你已经连接到一个远程的MongoDB数据库服务器(例如,通过mongo连接到192.168.0.184),现在想要在这个会话中连接另一个远程的数据库服务器(192.168.0.197),可以执行如下命令:
1>varx=newMongo(192.168.0.197:27017) 2>varydb=x.getDB(pagedb); 3>useydb 4switchedtodbydb 5>db 6ydb 7>ydb.page.findOne() 8{ 9"_id":ObjectId("4eded6a5bf3bfa0014000003"), 10"content":"巴黎是浪漫的城市,可是...", 11"pubdate":"2006-03-19", 12"title":"巴黎:从布鲁塞尔赶到巴黎", 13"url":"http://france.bytravel.cn/Scenery/528/cblsegdbl.html" 14}上述通过MongoDB提供的JavaScript脚本,实现对另一个远程数据库服务器进行连接,操作指定数据库pagedb的page集合。
如果启用了安全认证模式,可以在获取数据库连接实例时,指定认证账号,例如:
1>varx=newMongo(192.168.0.197:27017) 2>varydb=x.getDB(pagedb,shirdrn,(jkfFS$343$_\=\,.F@3); 3>useydb 4switchedtodbydb本文内容总结:MongoDB命令帮助系统,基本命令及实例,(一)基本命令,(二)基本DDL和DML,(三)启动与终止,(四)安全管理,(五)数据备份、恢复与迁移管理,
原文链接:https://www.cnblogs.com/Joans/p/3729914.html