常用SQL命令和参数崔霄.docx
- 文档编号:18126009
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:81
- 大小:257.78KB
常用SQL命令和参数崔霄.docx
《常用SQL命令和参数崔霄.docx》由会员分享,可在线阅读,更多相关《常用SQL命令和参数崔霄.docx(81页珍藏版)》请在冰点文库上搜索。
常用SQL命令和参数崔霄
SQL命令:
1:
改变初始化参数的值
常见的初始化参数:
DB_NAME=dbname本地数据库名,如DB_NAME=student。
DB_DOMAIN=域名网络域名,如DB_DOMAIN=。
CONTROL_FILES=(“控制文件名“,…)数据库控制文件位置和名称。
DB_BLOCK_SIZE=n设置数据块的大小。
DB_CACHE_SIZE=nSGA中数据库缓冲区大小,KB或MB为单位。
DB_FILES=n同时可以打开的数据文件数,缺省值为200。
OPEN_CURSORS=n一次会话中可以打开游标的最大值,缺省为50。
OPEN_LINKS=n一次会话中连接的远程数据库数量,缺省为4。
SHARED_POOL_SIZE=nSGA中共享池大小,以KB和MB为单位。
SGA_MAX_SIZE=nSGA所能使用的最大内存。
PROCESS=n能并发执行的操作系统进程最大数目。
INSTANCE_NAME=实例名数据库实例名,通常同DB_NAME。
(以后遇见初始化参数将继续添加到这里。
)
修改动态初始化参数:
(1):
编辑修改初始化参数文件,重启后将生效。
(2):
使用SQL命令,许多参数将立即生效。
ALTERSESSIONSET参数名称=参数值;使用此命令只影响调用该语句的会话以后的执行,并不改变其他会话同样参数的值。
ALTERSYSTEMSET参数名称=参数值[DEFERRED];使用此命令修改参数时,Oracle会将修改命令记录在警告日志文件中。
如果不带DEFERRED子句,修改的值影戏哪个到所有实例中的所有会话。
直到数据库关闭为止。
如果带DEFERRED子句,修改的值不影响当前已经连接的会话,只影响以后建立连接的会话。
2:
查看参数的当前值
显示所有参数并按字母排序。
SQL>SHOWPARAMETERS;
显示所有参数名称中包含DB字符串的初始化参数的值。
SQL>SHOWPARAMETERSDB;
如果要得到更详细的参数信息,可以查询V$parameters动态性能视图。
SQL>DESCv$parameter;
如果要得到当前会话中生效的参数及参数的值,可以查询v$parameter2视图。
SQL>descv$parameter2;
3查看用户当前表
SQL>select*fromuser_tables;查看当前用户的tables
查看当前用户的单个表:
SQL>select*fromuser_tableswheretable_name='EMP';
查看当前用户模式的所有表:
只显示表名
SQL>selecttable_namefromuser_tables;
4--查看正在运行的后台进程
SELECT*FROMv$bgprocessWHEREpaddr<>'00';
5:
创建表空间:
CREATETABLESPACEtbs2
DATAFILE'D:
\oracle\oradata\APTECH\tbs2_01.dbf'
SIZE50M;
6:
创建用户:
CREATEUSERACCP
IDENTIFIEDBYACCP
DEFAULTTABLESPACEUSERS
TEMPORARYTABLESPACETEMP;
7给用户授权
GRANTCONNECTTOACCP;
GRANTRESOURCETOACCP;
--ConnectasSCOTT
GRANTSELECTONEMPTOACCPWITHGRANTOPTION;
--再次以sys登陆并创建一个用户
CREATEUSERMARTIN
IDENTIFIEDBYmartinpwd
DEFAULTTABLESPACEUSERS
TEMPORARYTABLESPACETEMP;
--如果不使用CONNECT角色,则需要逐个赋予用户权限
GRANTCREATESESSIONTOMARTIN;
GRANTCREATETABLETOMARTIN;
GRANTCREATEVIEWTOMARTIN;
GRANTCREATESEQUENCETOMARTIN;
--授予用户使用表空间USERS的权限
ALTERUSERMARTIN
QUOTAUNLIMITEDONUSERS;
--查看用户MARTIN的信息
selectUSERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE
fromdba_users
whereusername='MARTIN';//注意字符串里的大小写MARTIN。
8创建表,添加约束,添加列,删除约束,删除列:
SQL>createtablegoods(gidnumber(10),gnamevarchar2(20),gpricenumber(5,2),gsalesdatedate);
给表添加约束:
SQL>altertablegoodsaddconstraintpk_gidprimarykey(gid);
删除约束:
SQL>altertablegoodsaddconstraintpk_gidprimarykey(gid);
•--添加列
•altertablegoodsaddpricenumber(5,3);
•--删除列
•altertablegoodsdropcolumnname;
•--复制表结构和数据(不复制约束,notnull可以)
•createtablemygoodsasselect*fromgoods;
•--复制表结构(不能复制约束,notnull可以)
•createtablemygoodsasselect*fromgoods
•where1>2;
修改列属性:
SQL>altertablegoodsmodify(GPRICEnumber(9,2)notnull);
插入数据:
SQL>insertintogoodsvalues(1001,'ibm',7456123.89,sysdate);
SQL>insertintogoodsvalues(1002,'ibm',7456123.89,sysdate);
更新数据:
SQL>updategoodssetgname='tcl',gprice=.019wheregid=1002;
9•数据字典
•user_tables--查询用户表
SQL>descuser_tables;
•dba_tables--dba使用查看数据库所有用户
10:
查看系统时间
SQL>selectsysdatefromdual;
11:
在SQLPLUS中暂时执行DOS命令;
SQL>host[dos命令]
如:
SQL>hostdir/w
12:
截断表,只删除表中的所有数据不删除表
TRUNCATETABLEGOODS;
在select查询语句里可以嵌入select查询语句,称为嵌套查询。
有些书上将内嵌的select语句称为子查询,子查询形成的结果又成为父查询的条件。
子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。
子查询中不能有orderby分组语句。
4.4.1简单嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>=(selectsalfromscott.empwhereename='WARD'); ―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.19所示的结果。
【参见光盘文件】:
\第4章\4.4\441.sql。
在这段代码中,子查询selectsalfromscott.empwhereename='WARD'的含义是从emp数据表中查询姓名为WARD的员工的薪水,父查询的含义是要找出emp数据表中薪水大于等于WARD的薪水的员工。
上面的查询过程等价于两步的执行过程。
(1)执行“selectsalfromscott.empwhereename='WARD'”,得出sal=1250;
(2)执行“selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>=1250;”
4.4.2带【in】的嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresalin(selectsalfromscott.empwhere ename='WARD');
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.20所示的结果。
【参见光盘文件】:
\第4章\4.4\442.sql。
上述语句完成的是查询薪水和WARD相等的员工,也可以使用【notin】来进行查询。
4.4.3带【any】的嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>any(selectsalfromscott.empwhere job='MANAGER');
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.21所示的结果。
【参见光盘文件】:
\第4章\4.4\443.sql。
带any的查询过程等价于两步的执行过程。
(1)执行“selectsalfromscott.empwherejob='MANAGER'”,其结果如图4.22所示。
【参见光盘文件】:
\第4章\4.4\443-1.sql。
(2)查询到3个薪水值2975、2850和2450,父查询执行下列语句。
【参见光盘文件】:
\第4章\4.4\443-2.sql。
――――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>2975orsal>2850orsal>2450; ――――――――――――――――――――――――――――――――――――――
4.4.4带【some】的嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal=some(selectsalfromscott.empwhere job='MANAGER');
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.23所示的结果。
【参见光盘文件】:
\第4章\4.4\444.sql。
带some的嵌套查询与any的步骤相同。
(1)子查询,执行“selectsalfromscott.empwherejob='MANAGER'”,其结果如图4.22所示。
(2)父查询执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal=2975orsal=2850orsal=2450; ―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:
\第4章\4.4\444-2.sql。
带【any】的嵌套查询和【some】的嵌套查询功能是一样的。
早期的SQL仅仅允许使用【any】,后来的版本为了和英语的【any】相区分,引入了【some】,同时还保留了【any】关键词。
4.4.5带【all】的嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>all(selectsalfromscott.empwhere job='MANAGER');
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.24所示的结果。
【参见光盘文件】:
\第4章\4.4\445.sql。
带all的嵌套查询与【some】的步骤相同。
(1)子查询,结果如图4.22所示。
(2)父查询执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.empwheresal>2975andsal>2850andsal>2450;
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:
\第4章\4.4\445-2.sql。
4.4.6带【exists】的嵌套查询
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
selectemp.empno,emp.ename,emp.job,emp.salfromscott.emp,scott.deptwhereexists(select*fromscott.empwhere scott.emp.deptno=scott.dept.deptno);
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.25所示的结果。
【参见光盘文件】:
\第4章\4.4\446.sql。
4.4.7并操作的嵌套查询
并操作就是集合中并集的概念。
属于集合A或集合B的元素总和就是并集。
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
(selectdeptnofromscott.emp)union(selectdeptnofromscott.dept); ―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.26所示的结果。
【参见光盘文件】:
\第4章\4.4\447.sql。
4.4.8交操作的嵌套查询
交操作就是集合中交集的概念。
属于集合A且属于集合B的元素总和就是交集。
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
(selectdeptnofromscott.emp)intersect(selectdeptnofromscott.dept); ―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.27所示的结果。
【参见光盘文件】:
\第4章\4.4\448.sql。
4.4.9差操作的嵌套查询
差操作就是集合中差集的概念。
属于集合A且不属于集合B的元素总和就是差集。
在【命令编辑区】执行下列语句。
―――――――――――――――――――――――――――――――――――――
(selectdeptnofromscott.dept)minus(selectdeptnofromscott.emp);
―――――――――――――――――――――――――――――――――――――
单击【执行】按钮,出现如图4.28所示的结果。
【参见光盘文件】:
\第4章\4.4\449.sql。
并、交和差操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。
第二章:
SQL查询和SQL函数:
幻灯片1:
幻灯片2:
回顾
幻灯片3
目标:
了解Oracle数据类型;
了解数据定义语言和数据操纵语言;
了解事务控制语言和数据控制语言;
掌握SQL操作符和SQL函数;
幻灯片4SQL简介2-1
问题一:
什么是SQL?
SQL是StructuredQueryLanguage(结构化查询语言)的首字母缩写词
SQL是数据库语言,Oracle使用该语言存储和检索信息
表是主要的数据库对象,用于存储数据
通过SQL可以实现与Oracle服务器的通信
SQLPlus和SQLPlusWorksheet是在Oracle中执行SQL命令的环境。
SQL语言提供与关系数据库的接口,SQL命令是对数据库操作的指令。
结构化查询语言由一系列命令或语句组成,所有程序和用户可以使用这些命令来访问Oracle数据库中的数据。
用户以SQL命令提出要完成的工作,SQL语言编译程序自动将它们翻译成访问数据库的指令来完成指定的任务。
通常终端用户不直接使用SQL命令而是通过应用程序和ORACLE工具来访问数据库。
但是,服务器在响应用户请求时,应用程序或工具必须使用SQL命令来访问数据库中的数据。
幻灯片5SQL简介2-2
SQL支持下列类别的命令:
数据定义语言(DDL)注意:
DDL语句会自动COMMIT
•数据定义命令
―CREATE命令
―ALTER命令
―DROP命令
―TRUNCATE命令
SQL>createtablegoods(gidnumber(10),gnamevarchar2(20),gpricenumber(9,2),gsaledatedate);
//删除列
SQL>altertablegoodsdropcolumngsaledate;
//添加列:
SQL>altertablegoodsaddgsalesdatedate;
Drop删除表、列或者表空间
SQL>droptablespaceworktbsincludingcontents;
SQL>droptablegoods;
//drop后使用descgoods看一下
然后再使用TRUNCATE命令
TRUNCATETABLEGOODS;
在实际应用中,三者的区别是明确的。
当你不再需要该表并释放存储空间时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate,注意truncate不释放存储空间;
当你要删除部分记录时(always with a WHERE clause), 用 delete.
数据操纵语言(DML)
•数据操纵命令
―INSERT
―SELECT
―UPDATE
SQL>updategoodssetgsalesdate='10-2月-05'wheregid=1001;
―DELETE
注意:
delete语句alwayswithwhere语句。
SQL>deletefromgoodswheregid=1001;
Select*fromgoods;
Rollback;
Select*fromgoods;
我们可以发现出现了什么情况,即操作可以回退!
DML语句可以回退,DDL语句会自动提交,无法回退。
事务控制语言(TCL)
用于事务控制的语句有:
COMMIT-提交并结束事务处理
ROLLBACK-撤销事务中已完成的工作
SAVEPOINT–标记事务中可以回滚的点
数据控制语言(DCL)
SQL语言的数据类型:
Oracle定义了许多内置的数据类型,同时允许用户自定义新的数据类型。
内置数据类型:
1字符数据类型(Character):
―Char:
固定长度,存储字母或者数字,长度在1----2000个字节之间,默认一个字节。
―Varchar2:
可变长度,定义时需要指定大小,长度在1---4000个字节。
―Long:
最大大小2G,表中只有一列可以定义为Long数据类型,long列上不能定义唯一或者主键约束。
不能在long列上创建索引。
过程或者存储过程不能接受long数据类型做参数。
定义时必须指定长度。
char(n),定长的nB(字节)字符串,n取值范围1B—2000B。
如果数据长度不到n的最大值,Oracle将用空格填充。
如果数据长度超过n的最大值则报错。
VARCHAR2(n)
可变长的字符串,n的取值范围1B—4000B。
如果数据长度没有达到n的最大值,Oracle根据数据大小自动调整字段长度。
如果字符数据前后有空格,Oracle将自动删除空格。
VARCHAR(n)
变长字符串,与VARCHAR2(n)完全一样。
未来Oracle可能不支持VARCHAR。
三种字符类型,最好使用VARCHAR2。
LONG(n)
变长字符串,n的取值范围1B—2GB。
拥护不需要做字符串搜索的长串数据(即不能放在where子句中)。
LONG可以用在Select语句、UPDATE语句或INSERT语句的VALUES中。
对于LONG的使用限制:
每个表中只能有一个LONG类型的列,该列不能用在Where条件中,不能对LONG列进行索引,不能用在GROUPBY或ORDERBY子句中,定义存储函数中不能返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 SQL 命令 参数