导航:首页 > 程序命令 > plus命令

plus命令

发布时间:2023-02-10 06:55:25

‘壹’ MVC 模型里如何设置默认值,比如 CreateDate设置成 获取当前时间,迁移到数据库里就是Getdate()

Model是django项目的基础,如果一开始没有好好设计好,那么在接下来的开发过程中就会遇到的问题.然而,大多数的开发人员都容易在缺少思考的情况下随意的增加或修改model.这样做的后果就是,在接下来的开发过程中,我们不得不做出努力来修正这些错误.因此,在修改model时,一定尽可能的经过充分的考虑再行动!以下列出的是我们经常用到的一些工具和技巧:South,用于数据迁移,我们会在每个django项目中都用到.但到django1.7时,将会有django.db.migrations代替.django-model-utils,用于处理常见的模式,例如TimeStampedModel.django-extensions,主要用到shell_plus命令,该命令会在shell中自动载入所有的app的model1.基本原则第一,将model分布于不同的app中.如果你的django项目中,有一个app拥有超过20个model,那么,你就应当考虑分拆该app了.我们推荐每个app拥有不超过5个model.第二,尽量使用ORM.我们需要的大多数数据库索引都能通过Object-Relational-Model实现,且ORM带给我们许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证.因此,如果能使用简单的ORM语句完成的,应当尽量使用ORM.只有当纯SQL语句极大地简化了ORM语句时,才使用纯SQL语句.并且,在写纯SQL语句是,应当优先考虑使用raw(),再是extra().第三,必要时添加index.添加db_index=True到model中非常简单,但难的是理解何时应该添加.在建立model时,我们事先不会添加index,只有当以下情况时,才会考虑添加index:在所有的数据库查询中使用率在10%-25%时或当有真实的数据,或能正确估计出使用index后的效果确实满意时第四,注意model的继承.model的继承在django中需要十分小心,django提供了三种继承方式,1.abstractbaseclass继承(不要和Pyhton标准库的abc模块搞混),2.多表(multi-table)继承,3.proxymodel继承.下表罗列了这三种继承的优劣:model继承类型优势劣势不使用继承,即每个相同的field会重复出现在不同的model中容易明白model和数据表的关系如果有大量相同的field,会较难维护abstractbaseclass继承,即只有继承自该类的model才会有数据表,其自身没有对应的数据表不用在每个model重复编写相同的field.也没有多表继承带来的过多消耗无法单独使用其共同的abstractbaseclass多表(multi-table)继承每个model都有数据表,因此可以既使用母表,又使用子表.也能通过parent.child从母表访问子表增加了消耗,因为每次查询子表,都会自动查询其母表.强烈建议不使用这一方法!proxymodel继承,即只有原始model才会有相应的数据表在不建立新数据表的情况下,使我们拥有不同行为的model无法修改model的fielddjango的创造者和其他许多开发人员都认为,多表继承的方法不是一个良好的方法.因此我们强烈建议大家不要使用该方法.下面列举了一些常见的如何选择model继承的情形:如果只有少数model拥有重复的field时,大可不必使用model继承,只需要在每个model中添加这些相同的field即可.如果有足够的model拥有重复的field时,大多是情况下,可以使用abstractbaseclass继承,将相同的field提取到abstractbaseclass中.Proxymodel继承很少被用到,和其他两种继承也有着许多不一样之处.请不要使用多表(multi-table)继承,因为它既消耗资源又复杂,如果可以,尽量使用OneToOneFields和ForeignKeys代替.django项目中,创建时间和修改时间这两个field是最用到的,下面给出一个abstractbaseclass继承的例子:#models.pyfromdjango.(models.Model):"""abstractbaseclass,提供创建时间和修改时间两个通用的field"""created=models.DateTimeField(auto_now_add=True)modified=models.DateTimeField(auto_now=True)classMeta:abstract=True注意以上代码的最后两行,正式这两行将这一model变味了abstractbaseclass,下面以TimeStampedModel为abstractbaseclass建立model:fromdjango.dbimportmodelsclassArticle(TimeStampedModel):title=models.CharField(max_length=200)以上两个class,在执行syncdb时,只会建立一个数据表,这也正是我们希望得到的.第五,使用south进行数据迁移,可以参见以前的文章:如何在Django中使用django-south,实现数据迁移(datamigrations)2.DjangoModel的设计如何设计出好的djangomodel可能是最难也是最复杂的一个话题了,在此,我们看看一些基本的技巧吧:a.规范化我们首先建议了解数据库规范化(databasenormalization).如果你还不清楚这是什么,那么,我们强烈建议你先阅读一下相关的书籍,或搜索"关系型数据库设计"或"数据库规范化".在创建djangomodel之前,应当首先保证设计的数据库是规范化的.b.cache正确的使用cache能帮助我们提高数据库的性能.详细的信息,我们会在今后的文章中作进一步介绍.c.何时使用null和blank当定义modelfield时,我们可以设置null=True和blank=True(默认都是False),知道何时设置null和blank对于开发人员也是十分重要的,在下面的表格中,我们一一列举了如何使用这两个选项:Field类型设置null=True设置blank=TrueCharField,TextField,SlugField,EmailField,CommaSeparatedIntegerField等不要设置django规定储存空字符串来代表空值,当从数据库中读取NULL或空值时都为空字符串可以设置设置后允许接受widget中为空值(即不填写),储存到数据库时空值变为空字符串FileField,ImageField不要设置django实际储存的是路径的字符串,因此同上可以设置同上BooleanField不要设置因为有NullBooleanField代替不要设置IntegerField,FloatField,DecimalField等可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写),设置为True时必须同时设置null=TrueDateTimeField,DateField,TimeField等可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写),设置为True时必须同时设置null=TrueForeignKey,ManyToManyField,OneToOneField可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写)GenericIPAddressField可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写)IPAddressField不推荐设置用GenericIPAddressField代替不推荐设置用GenericIPAddressField代替d.什么时候使用BinaryField在django1.6中,新增了BinaryField,用于储存二进制数据(binarydata或bytes).对于BinaryField,我们无法使用ORM的filters,excludes或其他SQL操作.但在少数情况下,我们会用到BinaryField,例如MessagePack格式的内容,传感器接受的原始数据和压缩数据等.但需要注意的是,BinaryData一般都十分庞大,因此可能会拖慢数据库的速度.如果发生这一现象,我们可以将binarydata储存在文件中,然后使用FileField储存该文件的路径信息.还有,不要从BinaryField中直接读取文件并呈献给用户.因为,1.从数据库读写总是比从文件系统读写慢;2.数据库备份会变得十分庞大,花费的时间;3.获得文件的过程,增加了从django到数据库的这一环节.3.不要替换默认的ModelManager从ORM获取model,实际上是通过django中的Modelmanager完成的,django为每一个model提供了默认的modelmanager,我们不建议将其替换掉,因为:当使用model继承时,model会继承abstractbaseclassmodel的modelmanager,而不会继承非abstractbaseclass的manager.model的第一个modelmanager通常作为默认的manager,当被替换时,可能会发生不可预测的问题.4.数据库事务(Transaction)在django1.6中,ORM默认会autocommit每一个数据库查询,也就是说,每次使用m.create()或m.update()时,在数据库中马上就会做出相应的修改.这样做的好处就是简化了初学者对ORM的理解.但坏处就是,当一个view中包含两个数据库修改,可能一个成功,但另一个失败,这就可能导致数据库不完整,给我们带来很大的危险.解决这一问题的方法就是使用数据库transaction,即将一系列数据库操作包含在一个transaction中,当其中有一个失败时,其他操作也会自动回退.Django1.6为我们带来了一套崭新的既简单又强大的transaction机制,使我们方便的使用数据库transaction.a.将整个httprequest包裹在transaction中django给我们提供了一个简单地方法,将一个httprequest中的所有数据库操作包裹在transaction中:#setting/base.pyDATABASES={'default':{'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':'','USER':'','PASSWORD':'','HOST':'','PORT':'','ATOMIC_REQUESTS':True,}}只需要在数据库设置中加入'ATOMIC_REQUESTS':True选项,就能将整个httprequest包裹在transaction中.这样做的好处显而易见是是安全,但坏处则是性能可能会下降,因此随着流量的增大,我们必须采取更针对性的transaction.其次,需要注意的是,回退的只是数据库的状态,而不包括其他费数据库项,例如发送email等.所以当涉及这些非数据库项时,我们应当使用transaction.con_atomic_request()修饰(decorate)这些view:#myapp/views.py#此时'ATOMIC_REQUESTS'设置为Truefromdjango.dbimporttransactionfromdjango..shortcutsimportget_object_or_404fromdjango.utilsimporttimezonefrom.modelsimportArticle@transaction.non_atomic_requests#以下httprequest不被包裹在一个transaction中defdo_something_to_article(request,pk,title):article=get_object_or_404(Article,pk=pk)#以下代码会以django默认的autocommit模式执行article.datetime=timezone.now()article.save()withtransaction.atomic()#以下代码被包裹在另一个transaction中article.title=titlearticle.datetime=timezone.now()article.save()returnHttpResponse("success!")#如果以上transaction失败了,返回错误状态returnHttpResponse("oops!failed",status_code=400)b.更明确地transaction控制更明确地transaction控制意味着提高真题webapp的性能,但也意味着的开发时间.大多数网站下,由于有限的流量,使用ATOMIC_REQUESTS已经足够.在使用手动transaction控制时,应当注意:不做数据修改的操作,应当排除在transaction之外做数据修改的操作,则应在transaction内特殊情况下,可以违反以上两条需要注意的是,当view返回的是django.http.StreamingHttpResponse时,应当设置ATOMIC_REQUESTS为false,或使用transaction.non_atomic_requests将该view修饰.因为对于view本身,是可以使用transaction的,但对于之后生成的responsestream触发的额外SQL查询,会自动变为django默认的autocommit模式.c.MySQL中使用transaction注意,如果你使用的是MySQL,且数据表类型是MyISAM,那么transaction可能无法使用.无论你的设置是怎么样,当transaction无法使用时,django会自动转化为autocommit模式.

‘贰’ SQL*PLUS的相关命令

下面就介绍一下一些常用的sql*plus命令:
1. 执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
@与@@的区别是什么?
@等于start命令,用来运行一个sql脚本文件。
@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。
@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。
如:在c: emp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:
@@nest_start.sql - - 相当于@ c: emp est_start.sql
则我们在sql*plus中,这样执行:
SQL> @ c: empstart.sql
2. 对当前的输入进行编辑
SQL>edit
3. 重新运行上一次运行的sql语句
SQL>/
4. 将显示的内容输出到指定文件
SQL> SPOOL file_name
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
5. 关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。
6.显示一个表的结构
SQL> desc table_name
7. COL命令:
主要格式化列的显示形式。
该命令有许多选项,具体如下:
COL[UMN] [{ column|expr} [ option ...]]
Option选项可以是如下的子句:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE { expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
1). 改变缺省的列标题
COLUMN column_name HEADING column_heading
For example:
Sql>select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- ---------
10 ACCOUNTING NEW YORK
sql>col LOC heading location
sql>select * from dept;
DEPTNO DNAME location
--------- ---------------------------- -----------
10 ACCOUNTING NEW YORK
2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:
Sql>select * from emp
Department name Salary
---------- ---------- ----------
10 aaa 11
SQL> COLUMN ENAME HEADING ’Employee|Name’
Sql>select * from emp
Employee
Department name Salary
---------- ---------- ----------
10 aaa 11
note: the col heading turn into two lines from one line.
3). 改变列的显示长度:
FOR[MAT] format
Sql>select empno,ename,job from emp;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
Sql> col ename format a40
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
4). 设置列标题的对齐方式
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
SQL> col ename justify center
SQL> /
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边
5). 不让一个列显示在屏幕上
NOPRI[NT]|PRI[NT]
SQL> col job noprint
SQL> /
EMPNO ENAME
---------- ----------------------------------------
7369 SMITH
7499 ALLEN
7521 WARD
6). 格式化NUMBER类型列的显示:
SQL> COLUMN SAL FORMAT ,990
SQL> /
Employee
Department Name Salary Commission
---------- ---------- --------- ----------
30 ALLEN ,600 300
7). 显示列值时,如果列值为NULL值,用text值代替NULL值
COMM NUL[L] text
SQL>COL COMM NUL[L] text
8). 设置一个列的回绕方式
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
COL1
--------------------
HOW ARE YOU?
SQL>COL COL1 FORMAT A5
SQL>COL COL1 WRAPPED
COL1
-----
HOW A
RE YO
U?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW
ARE
YOU?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW A
9). 显示列的当前的显示属性值
SQL> COLUMN column_name
10). 将所有列的显示属性设为缺省值
SQL> CLEAR COLUMNS
8. 屏蔽掉一个列中显示的相同的值
BREAK ON break_column
SQL> BREAK ON DEPTNO
SQL> SELECT DEPTNO, ENAME, SAL
FROM EMP
WHERE SAL < 2500
ORDER BY DEPTNO;
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。
BREAK ON break_column SKIP n
SQL> BREAK ON DEPTNO SKIP 1
SQL> /
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
10. 显示对BREAK的设置
SQL> BREAK
11. 删除6、7的设置
SQL> CLEAR BREAKS
12. Set 命令:
该命令包含许多子命令:
SET system_variable value
system_variable value 可以是如下的子句之一:
APPI[NFO]{ON|OFF|text}
ARRAY[SIZE] {15|n}
AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
AUTOP[RINT] {ON|OFF}
AUTORECOVERY [ON|OFF]
AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
BLO[CKTERMINATOR] {.|c}
CMDS[EP] {;|c|ON|OFF}
COLSEP {_|text}
COM[PATIBILITY]{V7|V8|NATIVE}
CON[CAT] {.|c|ON|OFF}
COPYC[OMMIT] {0|n}
COPYTYPECHECK {ON|OFF}
DEF[INE] {&|c|ON|OFF}
DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
ECHO {ON|OFF}
EDITF[ILE] file_name[.ext]
EMB[EDDED] {ON|OFF}
ESC[APE] {|c|ON|OFF}
FEED[BACK] {6|n|ON|OFF}
FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
FLU[SH] {ON|OFF}
HEA[DING] {ON|OFF}
HEADS[EP] {||c|ON|OFF}
INSTANCE [instance_path|LOCAL]
LIN[ESIZE] {80|n}
LOBOF[FSET] {n|1}
LOGSOURCE [pathname]
LONG {80|n}
LONGC[HUNKSIZE] {80|n}
MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL
{ON|OFF}] [PRE[FORMAT] {ON|OFF}]
NEWP[AGE] {1|n|NONE}
NULL text
NUMF[ORMAT] format
NUM[WIDTH] {10|n}
PAGES[IZE] {24|n}
PAU[SE] {ON|OFF|text}
RECSEP {WR[APPED]|EA[CH]|OFF}
RECSEPCHAR {_|c}
SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
WRAPPED]|TRU[NCATED]}]
SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
SHOW[MODE] {ON|OFF}
SQLBL[ANKLINES] {ON|OFF}
SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
SQLCO[NTINUE] {> |text}
SQLN[UMBER] {ON|OFF}
SQLPRE[FIX] {#|c}
SQLP[ROMPT] {SQL>|text}
SQLT[ERMINATOR] {;|c|ON|OFF}
SUF[FIX] {SQL|text}
TAB {ON|OFF}
TERM[OUT] {ON|OFF}
TI[ME] {ON|OFF}
TIMI[NG] {ON|OFF}
TRIM[OUT] {ON|OFF}
TRIMS[POOL] {ON|OFF}
UND[ERLINE] {-|c|ON|OFF}
VER[IFY] {ON|OFF}
WRA[P] {ON|OFF}
1). 设置当前session是否对修改的数据进行自动提交
SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
SQL> SET ECHO {ON|OFF}
3).是否显示当前sql语句查询或修改的行数
SQL> SET FEED[BACK] {6|n|ON|OFF}
默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数
4).是否显示列标题
SQL> SET HEA[DING] {ON|OFF}
当set heading off 时,在每页的上面不显示列标题,而是以空白行代替
5).设置一行可以容纳的字符数
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
6).设置页与页之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
当set newpage n 时,会在页和页之间隔着n个空行。
当set newpage none 时,会在页和页之间没有任何间隔。
7).显示时,用text值代替NULL值
SQL> SET NULL text
8).设置一页有多少行数
SQL> SET PAGES[IZE] {24|n}
如果设为0,则所有的输出内容为一页并且不显示列标题
9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。
SQL> SET SERVEROUT[PUT] {ON|OFF}
在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。
10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。
SQL> SET WRA[P] {ON|OFF}
当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
SQL> SET TERM[OUT] {ON|OFF}
在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
12).将SPOOL输出中每行后面多余的空格去掉
SQL> SET TRIMS[OUT] {ON|OFF}
13)显示每个sql语句花费的执行时间
set TIMING {ON|OFF}
14). 遇到空行时不认为语句已经结束,从后续行接着读入。
SET SQLBLANKLINES ON
Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:
select deptno, empno, ename
from emp
where empno = '7788';
如果拷贝到sql*plus中执行, 就会出现错误。这个命令可以解决该问题
15).设置DBMS_OUTPUT的输出
SET SERVEROUTPUT ON BUFFER 20000
用dbms_output.put_line('strin_content');可以在存储过程中输出信息,对存储过程进行调试
如果想让dbms_output.put_line(' abc');的输出显示为:
SQL> abc,而不是SQL>abc,则在SET SERVEROUTPUT ON后加format wrapped参数。
16). 输出的数据为html格式
set markup html
在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.
注意其中的spool on, 当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到spool文件中出现了等tag.
14.修改sql buffer中的当前行中,第一个出现的字符串
C[HANGE] /old_value/new_value
SQL> l
1* select * from dept
SQL> c/dept/emp
1* select * from emp
15.编辑sql buffer中的sql语句
EDI[T]
16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行
L[IST] [n]
17.在sql buffer的当前行下面加一行或多行
I[NPUT]
18.将指定的文本加到sql buffer的当前行后面
A[PPEND]
SQL> select deptno,
2 dname
3 from dept;
DEPTNO DNAME
---------- --------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SQL> L 2
2* dname
SQL> a ,loc
2* dname,loc
SQL> L
1 select deptno,
2 dname,loc
3* from dept
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
19.将sql buffer中的sql语句保存到一个文件中
SAVE file_name
20.将一个文件中的sql语句导入到sql buffer中
GET file_name
21.再次执行刚才已经执行的sql语句
RUN
or
/
22.执行一个存储过程
EXECUTE procere_name
23.在sql*plus中连接到指定的数据库
CONNECT user_name/passwd@db_alias
24.设置每个报表的顶部标题
TTITLE
25.设置每个报表的尾部标题
BTITLE
26.写一个注释
REMARK [text]
27.将指定的信息或一个空行输出到屏幕上
PROMPT [text]
28.将执行的过程暂停,等待用户响应后继续执行
PAUSE [text]
Sql>PAUSE Adjust paper and press RETURN to continue.
29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)
COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
create emp_temp
USING SELECT * FROM EMP
30.不退出sql*plus,在sql*plus中执行一个操作系统命令:
HOST
Sql> host hostname
该命令在windows下可能被支持。
31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:
!
sql>!
$hostname
$exit
sql>
该命令在windows下不被支持。
32.显示sql*plus命令的帮助
HELP
如何安装帮助文件:
Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql
Sql>help index
33.显示sql*plus系统变量的值或sql*plus环境变量的值
Syntax
SHO[W] option
where option represents one of the following terms or clauses:
system_variable
ALL
BTI[TLE]
ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|
TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
LNO
PARAMETERS [parameter_name]
PNO
REL[EASE]
REPF[OOTER]
REPH[EADER]
SGA
SPOO[L]
SQLCODE
TTI[TLE]
USER
1) . 显示当前环境变量的值:
Show all
2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息
Show error
当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译
3) . 显示初始化参数的值:
show PARAMETERS [parameter_name]
4) . 显示数据库的版本:
show REL[EASE]
5) . 显示SGA的大小
show SGA
6). 显示当前的用户名
show user
34.查询一个用户下的对象
SQL>select * from tab;
SQL>select * from user_objects;
35.查询一个用户下的所有的表
SQL>select * from user_tables;
36.查询一个用户下的所有的索引
SQL>select * from user_indexes;
37. 定义一个用户变量
方法有两个:
a. define
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
OLD_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
下面对每种方式给予解释:
a. Syntax
DEF[INE] [variable]|[variable = text]
定义一个用户变量并且可以分配给它一个CHAR值。
assign the value MANAGER to the variable POS, type:
SQL> DEFINE POS = MANAGER
assign the CHAR value 20 to the variable DEPTNO, type:
SQL> DEFINE DEPTNO = 20
list the definition of DEPTNO, enter
SQL> DEFINE DEPTNO
―――――――――――――――
DEFINE DEPTNO = ”20” (CHAR)
定义了用户变量POS后,就可以在sql*plus中用&POS或&&POS来引用该变量的值,sql*plus不会再提示你给变量输入值。
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
NEW_V[ALUE] variable
指定一个变量容纳查询出的列值。
例:column col_name new_value var_name noprint
select col_name from table_name where ……..
将下面查询出的col_name列的值赋给var_name变量.
一个综合的例子:
得到一个列值的两次查询之差(此例为10秒之内共提交了多少事务):
column redo_writes new_value commit_count
select sum(stat.value) redo_writes
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
-- 等待一会儿(此处为10秒);
execute dbms_lock.sleep(10);
set veri off
select sum(stat.value) - &commit_count commits_added
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
38. 定义一个绑定变量
VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]
定义一个绑定变量,该变量可以在pl/sql中引用。
可以用print命令显示该绑定变量的信息。
如:
column inst_num heading Inst Num new_value inst_num format 99999;
column inst_name heading Instance new_value inst_name format a12;
column db_name heading DB Name new_value db_name format a12;
column dbid heading DB Id new_value dbid format 9999999999 just c;
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
select d.dbid dbid
, d.name db_name
, i.instance_number inst_num
, i.instance_name inst_name
from v$database d,
v$instance i;
variable dbid number;
variable inst_num number;
begin
:dbid := &dbid;
:inst_num := &inst_num;
end;
/
说明:
在sql*plus中,该绑定变量可以作为一个存储过程的参数,也可以在匿名PL/SQL块中直接引用。为了显示用VARIABLE命令创建的绑定变量的值,可以用print命令
注意:
绑定变量不同于变量:
1. 定义方法不同
2. 引用方法不同
绑定变量::variable_name
变量:&variable_name or &&variable_name
3.在sql*plus中,可以定义同名的绑定变量与用户变量,但是引用的方法不同。
39. &与&&的区别
&用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。
&&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。
如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
40.在输入sql语句的过程中临时先运行一个sql*plus命令
#
有没有过这样的经历? 在sql*plus中敲了很长的命令后, 突然发现想不起某个列的名字了, 如果取消当前的命令,待查询后再重敲, 那太痛苦了. 当然你可以另开一个sql*plus窗口进行查询, 但这里提供的方法更简单.
比如说, 你想查工资大于4000的员工的信息, 输入了下面的语句:
SQL> select deptno, empno, ename
2 from emp
3 where
这时, 你发现你想不起来工资的列名是什么了.
这种情况下, 只要在下一行以#开头, 就可以执行一条sql*plus命令, 执行完后, 刚才的语句可以继续输入
SQL>> select deptno, empno, ename
2 from emp
3 where
6 #desc emp
Name Null? Type
----------------------------------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
6 sal > 4000;
DEPTNO EMPNO ENAME
---------- ---------- ----------
10 7839 KING
41. SQLPlus中的快速复制和粘贴技巧
1) 鼠标移至想要复制内容的开始
2) 用右手食指按下鼠标左键
3) 向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样
4) 内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键
5) 这时,所选内容会自动复制到SQL*Plus环境的最后一行
42、得到当前数据库中当前用户可见的所有表名
select table_name from user_tables;

‘叁’ 在SQL*PLUS中使用什么命令可以查看一个存储过程的内容

有时候你没有办法使用图形界面的管理器连接SQL 服务器,这个时候如果你想查看一个存
储过程的内容就只能依靠SQL 语句了。
系统提供了一个存储过程可以查看 rule,stored procere, user-defined function,
trigger, 或者 view。Syntaxsp_helptext @objname = 'name'
sp_helptext '存储过程名称'

‘肆’ Oracle 10g 数据库中,在SQL*PLUS中书写命令,命令打错了,如何修改用向上向下的箭头都不管用。求帮助

用SQL*PLUS命令EDIT可以编辑刚刚输入的语句。
例:SQL>edit回车
回到SQL>打一个斜杠/就可以运行了。

‘伍’ maya资格证考试整个过程,那可以考,要怎么考!

最初级的,ACAA认证maya@china,Autodesk
Maya
2010
产品专家(1
级)认证
选择题,他会问个:
Bevel和Bevel
Plus命令在创建一些简单的模型时比较常用,下列关于这两个命令说法错误的是?
答案选项:
1.
Bevel命令可以对开放曲线执行
2.
Bevel命令可以对闭合曲线执行
3.
Bevel
Plus命令可以对收尾相接的曲线执行
4.
Bevel
Plus命令仅能对闭合曲线执行
参考答案:4
Maya内置的FCheck浏览器不能打开下列哪一种文件格式?
答案选项:
1.
png
2.
tga
3.
psd
4.
iff
参考答案:3
使用Mesh>Sculpt
Geometry
Tool工具可以__________。
答案选项:
1.
编辑nurbs模型
2.
编辑Polygen模型
3.
编辑Subdiv模型
4.
以上都可以
参考答案:4
等等,十分基础的问题,包含我在内这些基础题我们错误率非常的高……
实际操作题什么的我感觉要看那年出题人的心情,,实话说只要会建模会贴图会渲染会离子,你们来什么咱们都不怕,初级没什么难度别担心

‘陆’ 急急急 如何在SQL*Plus中,用命令行关闭和开启Oracle数据库服务器

运行sql*plus的步骤
同时按住”win“(一般在ctrl键和alt键中间)+”r“(字母键)
输入”cmd“,之后按回车(enter)
在命令行输入”sqlplus“,进入oracle的sql*plus,输入数据库的用户名和密码进行登录操作
oracle的sql*plus是与oracle进行交互的客户端工具,借助sql*plus可以查看、修改数据库记录。在sql*plus中,可以运行sql*plus命令与sql语句。

‘柒’ SQL*PLUS/iSQL*PLUS命令结尾可以不加分号(;)吗

不行,你可以输入一条命令以后回撤,然后“/”,也可以加分号(;)
最好是写完一条加一个分号。

‘捌’ stata安装路径出现两个ado

选择一个就好,下载的外部命令通常为 .ado 格式,为了将下载的命令与自编的命令放在不同的路径下,找到 Stata 的安装路径,可以看到一个 【ado 】文件夹。里面有【base】 文件、【plus】 文件及 【personal】 文件(后两个文件夹不一定有自带,可以自己手动创建)。 - 【base】文件夹用于存储 Stata 自带的基础命令 - 【plus】文件夹用于存储外部命令 - 【personal】用于存储自己编写的命令和 dofiles。
为了达到这一目的,需要对系统默认路径进行一些简单的设置。在 Stata 的安装路径下(如:【D:\stata15】)新建一个 profile.do 文件,将如下命令放到此文件中:
adopath + "D:\stata15\ado\plus"
sysdir set PLUS "D:\stata15\ado\plus" // 外部命令的存放位置
sysdir set PERSONAL "D:\stata15\ado\personal" // 个人文件夹位置
cd `c(sysdir_personal)'

根据外部命令的来源不同,所使用的命令也不尽一致,这里主要介绍 ssc , search,net ,findit 和 github 等命令。
2.1 ssc 命令
ssc 是 Statistical Software Components (http://www.repec.org) 的缩写,用于操作存放在该网站上的外部命令,包括安装 ( ssc install)、移除 ( ssc uninstall )、描述 ( ssc describe)、显示最近更新 ( ssc new )、显示最热门 ( ssc hot )。例如:
. ado dir //显示已安装ado文件
[1] package outreg2 from http://fmwww.bc.e/repec/bocode/o
'OUTREG2': mole to arrange regression outputs into an illustrative table
[2] package estout from http://fmwww.bc.e/repec/bocode/e
'ESTOUT': mole to make regression tables

. ssc install winsor2, all replace //安装winsor2,基本用法:ssc install newprogramname
checking winsor2 consistency and verifying not already installed...
installing into D:\stata15\ado\plus\...
installation complete.

若要查看某一具体命令是否安装,可以利用
. ado, find(winsor2)

[3] package winsor2 from http://fmwww.bc.e/repec/bocode/w
'WINSOR2': mole to winsorize data

要查看 ssc 上最热门的命令,可以通过
. ssc hot, n(10) //显示排名前10的命令
Top 10 packages at SSC
Aug 2018
Rank # hits Package Author(s)
----------------------------------------------------------------------
1 331271.0 findname Nicholas J. Cox
2 19504.6 outreg2 Roy Wada
3 18223.6 estout Ben Jann
4 11066.7 distinct Gary Longton, Nicholas J. Cox
5 7746.3 winsor Nicholas J. Cox
6 6881.7 winsor2 Lian Yu-jun
7 6598.7 ivreg2 Mark E Schaffer, Steven Stillman, Christopher F Baum
8 6579.3 ivreg210 Mark E Schaffer, Steven Stillman, Christopher F Baum
9 6571.1 ivreg28 Mark E Schaffer, Steven Stillman, Christopher F Baum
10 6561.8 ivreg29 Christopher F Baum, Mark E Schaffer, Steven Stillman
----------------------------------------------------------------------
(Click on package name for description)

‘玖’ linux系统sqlplus下怎么退出sql语句

启动和关闭数据库的常用工具有三个

一、SQL*Plus

在SQL*Plus环境中,用户以SYSDBA身份连接到Oracle后,可以通过命令行方式启动或关闭数据库。

二、OEM(企业管理器)

利用OEM数据库控制台,可以完成数据库的启动与关闭操作。

三、RMAN

在Recovery Manager(RMAN)环境中可以通过命令行方式启动或关闭数据库。

一般来说我们使用的都是SQL*Plus来启动和关闭数据库

1、启动数据库:

[oracle@localhost etc]$ sqlplus /nolog

注意:该命令要以oracle用户的身份来完成。
如果最初不是用oracle登陆的话就可能会发生以下情况:

[oracle@localhost etc]$ sqlplus /nolog

bash: sqlplus: command not found

此时只要source一下就可以啦,命令如下:

[oracle@localhost etc]$ source /home/oracle/.bash_profile

[oracle@localhost etc]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Proction on Tue Jun 28 16:19:47 2016

Copyright (c) 1982, 2013, Oracle. All rights reserved.

SQL>

进去以后要先startup一下数据库:

SQL> startup

然后再以sysdba的身份登陆:

SQL> conn /as sysdba

Connected.

2、关闭数据库:

关闭数据库有四种语法:

shutdown immediate

shutdown transaction

shutdown abort

shutdown normal

常用的是shutdown immediate,它是四种语法中最快的关闭方式,

一旦执行了这条命令,则将当前正在处理的sql语句马上停止,然后将所有未提交的事务回退,

并且不等待当前联入数据库的用户断开连接,而是由系统强行将各个联接断开。

在下次启动数据库时系统自动执行恢复动作。

命令如下

SQL>shutdown immediate

Linux CentOS中防火墙的关闭及开启端口

注:CentOS7之前用来管理防火墙的工具是iptable,7之后使用的是Firewall 样例:在CentOS7上安装tomcat后,在linux本机上可以访问tomcat主页,http://ip: ...

在Centos中导入sql文件的方法

在Centos中导入sql文件的方法 利用mysql -u root -p进入mysql数据库 对于文件的导入,在Centos下里面的是首先要新建一个和文件相同名字的数据库.例如:mysql>c ...

CentOS下SVN服务的启动与关闭

CentOS下SVN服务的启动与关闭 操作系统:CentOS 6.5  SVN版本:1.8.11 启动SVN服务:  svnserve -d -r /home/svn /home/svn 为版本库的根 ...

用SQL*Plus命令启动和关闭数据库

用SQL*Plus命令启动和关闭数据库 1.启动方式 starup或startup open startup nomount startup mount startup read only [x] s ...

使用dbstart 和dbshut 脚本来自动化启动和关闭数据库

使用dbstart 和dbshut 脚本来自动化启动和关闭数据库:1. 登录用户root.2. 编辑你的平台的oratab 文件.打开文件/etc/oratab:文件里数据库条目为以下格式:SID:O ...

Oracle安装完成后,如何用命令行启动和关闭数据库?

Oracle安装完成后,如何用命令行启动和关闭数据库? 解答: 打开:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ dat ...

linux CentOS中创建用户 无密码登录

首先点击左上角的 “应用程序” -> “系统工具” -> “终端”,首先在终端中输入 su ,按回车,输入 root 密码以 root 用户登录,接着执行命令创建新用户 hadoop: 接 ...

1,Linux(CentOS)中的基本配置

1,hostname(主机名) 查看主机名:hostname 临时修改主机名:hostname hadoop1 永久修改主机名:vi etc/sysconfig/network :  [NETWORK ...

linux下redis的安装、启动、关闭和卸载

edis 在Linux 和 在Windows 下的安装是有很大的不同的,和通常的软件安装是一样的. 一  下载 Redis 安装包 去redis 官网下载reids 安装包, redis 官网默认只提 ...

随机推荐

NodeJS入门(四)—— path对象

很快Node就会迎来4.0的时代,届时将并入现有的iojs,所以先前写过的iojs入门系列直接更名为NodeJS入门. 本篇开始将逐个介绍Node的各主要模块,依循API文档走一遍,但会给出比API文 ...

请求量限制方法-使用本地Cache记录当前请求量[坑]

有个需求:需要限制每个账户请求服务器的次数(该次数可以配置在DB,xml文件或其他).单位:X次/分钟.若1分钟内次数<=X 则允许访问,1分钟内次数>X则不再允许访问.   这类需求很常 ...

实践1-qq邮箱主页

纯html的网页 采用table分割板块进行布局 ..

[linux] linux下编译安装zlib

zlib官方网站:http://www.zlib.net上下载源码来安装zlib软件包. 目前最新版本zlib是zlib1.2.8,安装开始:$wget http://www.zlib.net/zli ...

C++实现CString和string的互相转换

CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); u ...

SQL group by分组查询(转)

本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...

yum 安装 php5.6 和 mysql5.6

安装 PHP rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm; rpm - ...

Android_ImageView

SignalR系列教程:服务器广播与主动数据推送

本篇是本系列入门篇的最后一遍,由于工作关系,接触SignalR的时间不是很多.等下次有空的话我会写一个利用“SignalR”开发一个在线聊天室的系列博文.近期的话我更偏向于更新框架设计相关的文章,到时 ...

Memcached源码分析之memcached.h

//memcached.h //返回在item中data字段key的地址,即把指针指向key #define ITEM_key(item) (((char*)&((item)->data ...

Linux退出sqlplus界面
纽巴伦和新百伦 有什么不同呢
精选推荐
广告

cmd中输入sqlplus出现Error 6 initializing SQL*Plus(之前正常)
778阅读·0评论·0点赞
2022年7月27日
centos操作系统sqlplus中文显示问号
61阅读·0评论·0点赞
2022年10月30日
linux下数据库监听无法报错,linux sqlplus 连接数据库
194阅读·0评论·0点赞
2021年5月12日
linux监听不到数据库服务,linux下oracle数据库服务和监听的启动停止
635阅读·0评论·0点赞
2021年5月13日
Linux安装sqlplus及Oracle连接配置
3176阅读·1评论·2点赞
2021年6月8日
centos7安装Oracle后使用sqlplus登录中文问号乱码问题!
1167阅读·0评论·0点赞
2019年11月22日
Linux(centos7.6)启动/停止Oracle
1547阅读·0评论·0点赞
2022年5月26日
sqlplus 启动报错,Error 6 initializing SQL*Plus
2.1W阅读·0评论·0点赞
2008年12月26日
Linux CentOS 7安装Oracle11g超完美教程
2.3W阅读·25评论·22点赞
2021年11月17日
linux打开sqlplus工具,linux或unix下sqlplus环境调出以前命令的工具rlwrap
204阅读·0评论·0点赞
2021年5月12日
linux sqlplus 历史命令,SQLPLUS下历史命令查找
405阅读·0评论·0点赞
2021年5月18日
linux oracle数据库客户端安装,Linux安装Oracle数据库SQLPlus客户端
95阅读·0评论·0点赞
2021年5月7日
如何在sql*plus中使用方向键(rlwrap@CentOS)
1145阅读·0评论·0点赞
2010年11月30日
Linux CentOS8 下静默安装 Oracle19c(RPM安装)
1694阅读·6评论·4点赞
2021年1月14日
Linux centos 7 启动oracle 12c数据库
1107阅读·0评论·1点赞
2019年4月17日
linux oracle启动mysql_linux启动oracle数据库服务
79阅读·0评论·0点赞
2021年2月7日
sqlplus命令连接oracle数据库,sqlplus命令行登录oracle数据库的N种方法盘点
4162阅读·0评论·0点赞
2021年5月8日
linux静默安装oracle11g数据库教程
609阅读·0评论·0点赞
2022年8月26日
去首页
看看更多热门内容

‘拾’ 在sql*plus命令行下,查看bmp表的结构应使用什么命令

1、在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
a、启动ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit
b、关闭ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown
SVRMGR>quit
启动oracle9i数据库命令:
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Proction on Fri Oct 31 13:53:53 2003
Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup^C
SQL> startup

阅读全文

与plus命令相关的资料

热点内容
安卓如何完全清除数据 浏览:688
安卓安卓证书怎么信任 浏览:53
服务器被攻击如何解决 浏览:221
学霸变成程序员 浏览:879
c语言编译错误fatalerror 浏览:439
ipv4内部服务器地址怎么分配 浏览:461
java线程安全的方法 浏览:950
重复命令画梯形 浏览:162
在疫情就是命令 浏览:326
自己搭建一个什么服务器好玩 浏览:251
java基础马士兵 浏览:821
完美世界手游如何查看服务器 浏览:857
光遇安卓与ios什么时候互通 浏览:598
js如何运行时编译 浏览:916
引力app在哪里下载 浏览:609
编写app如何得到钱 浏览:800
吉利汽车软件放哪个文件夹安装 浏览:223
多文件编译c 浏览:542
头顶加密后为什么反而更稀疏 浏览:794
离心机压缩机扬程高 浏览:659