当前位置:文档之家› 魔乐科技Oracle笔记(超经典)--李兴华

魔乐科技Oracle笔记(超经典)--李兴华

魔乐科技Oracle笔记(超经典)--李兴华
魔乐科技Oracle笔记(超经典)--李兴华

连接符||

图表 1

多表查询的基本语法

查一张以上的表,就叫做多表查询

例子:查询出雇员名称,部门名称和部门所在地的(一般多表查询要用别名)

统计记录数:

查询emp有多少条纪录

左右连接(重点)

select e.empno,e.ename,d.deptno,d.dname,d.loc

from

emp e,dept d where e.deptno=d.deptno;

部门一共四个,这里只查询出三个,因为在雇员表中没有指定40部门的雇员,所以在消除笛卡尔乘机的时候没有条件符合40,如果喜欢40部门显示出来,就要用左右连接了。

select e.empno,e.ename,d.deptno,d.dname,d.loc

from

emp e,dept d where e.deptno(+)=d.deptno;

(+)在左边,表示以右边的表为准,表示右链接。

40部门出来了,所以此时就用到了有连接,证明以下规律(.+.)在左表示右连接

........

(.+.)在右表示左连接

........

.SQL:1999对SQL的支持(了解)

范例:交叉连接(cross join)产生笛卡尔积

select * from empt CROSS JOIN dept;

查询结果产生笛卡尔积

CREATE TABLE EMP10 AS SELECT * FROM EMP WHERE DEPTNO=10; select * from emp NATURAL JOIN dept; 自动进行匹配

范例:USING子句,直接关联的操作列

select * from emp e JOIN dept d USING (deptno) where deptno=30;

把两张表的详细信息进行打印输出

范例:ON子句自己编写连接条件

select * from emp e JOIN dept d ON (e.deptno=d.deptno) where e.deptno=30;

范例:左连接(左外连接)右连接(右外连接)LEFT JOIN RIGHT JOIN 组函数和分组统计(重点)

组函数

在SQL常用组函数有如下几个:

COUNT()求全部记录数

MAX()求最大记录数

MIN()求最小记录数

A VG()平均

SUM()求和

分组统计

GROUP BY

select deptno,COUNT(empno) from emp GROUP BY deptno;

算出部门表的平均工资:

select A VG(sal) from emp ;

算出每个部门的平均工资:

Select deptno,A VG(sal) from emp ;

之所以会出现这个错误是因为数据库不知道怎样在结果集中处理deptno列。考虑一下:这个查询既试图使用AVG聚合函数对多行记录进行操作,却又试图从每行中获得deptno列的值;这两个操作是不可能同时完成的。此时必须提供一个GROUP BY子句告诉数据库将deptno列相同的行分组在一起,然后数据库就可以将这些组中的行传递给AVG函数。

警告:

如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中。

按部门分组,并显示部门名称,以及部门员工数

select d.dname,count(e.empno) from dept d,emp e

where d.deptno=e.deptno

GROUP BY d.dname;

要求查出平均工资大于2000的部门编号和平均工资

select deptno,A VG(sal) from emp WHERE A VG(sal) >2000 GROUP BY deptno;

之所以会出现这个错误是因为W H E R E子句只能用来对单行而不是行组进行过滤。要过滤行组,可以使用HA VING子句。

范例:显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于¥5000。输出结果按月工资的合计升序排列

1.显示全部的非销售人员:job<>’SALESMAN’

select * from emp where job<>'salesman';

2.按工作分组同时求出工资的总和

Select job,SUM(sal) from emp WHERE job<>’SALESMAN’ GROUP BY job;

3.对分组条件进行限制

Select job,SUM(sal) from emp WHERE job<>’SALESMAN’GROUP BY job HA VING SUM(sal)>5000;

4.使用排序,按升序排列

Select job,SUM(sal) su from emp WHERE job<>’SALESMAN’GROUP BY job HA VING SUM(sal)>5000 order by su;

分组的简单原则:

只要一列上存在重复的内容才考虑用分组

注意:分组函数可以嵌套使用,但是在组函数嵌套的时候不能再出现分组条件的查询语句范例:求出平均工资最高的部门

错误代码:

Select deptno,MAX(AVG(sal)) from emp GROUP BY deptno;

Select MAX(A VG(sal)) from emp GROUP BY deptno;(正确)

子查询

范例:要求查询出比7654工资高的全部雇员信息

首先:要知道7654雇员的工资是多少

然后:以此查询结果为查询依据,只要其他工资大于sal,则表示符合条件

首先:查询出比7654工资高的全部雇员信息

select * from emp where sal>(select sal from emp where empno=7654);

其次:与7788工作一样

Select job from emp where empno=7788

所以:select * from emp where sal>(select sal from emp where empno=7654) and job= (Select job from emp where empno=7788);

;

ORACLE笔记

1.Oracle 工具:sqlplus Sqlplus / as sysdba Shutdown immediate(关闭数据库) Startup(启动数据库) 注意:数据库开启才可以进行操作 Select username,account_status from dba_users;(查询数据库中所有的用户名称与用户状态) Alter user scott identified by tiger account unlock;(scott用户解锁) Sqlplus scott/tiger(使用SCOTT 密码为tiger登陆ORACLE数据库) Connect scott/tiger (在SQL>中直接使用SCOTT用户连接数据库) Show all;(看所有变量) Set sqlprompt “_user>”(设置sqlplus环境下面的提示符用自身用户显示) 注意:如要变量下次重启生效必须把变量写入 /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/glogin.sql中 Host(回到系统) Help index(查看所有命令) Help+命令(类似于LINUX中的MAN,查看命令的格式与用法) Disconnect(关闭SQLPLUS工具但是不离开数据库) Describe emp(查看EMP表) Define(定义变量,常用与写脚本用) 如:DEFINE _EDITOR =”vi” (CHAR) (定义VI编辑器用于保存最后一条执行的SQL语句) Save /u01/app/oracle/aa.sql (保存SQL语句) Get /u01/app/oracle/aa.sql (调用保存的SQL语句) 2.select(select 查询语句是ORACLE中最常用的语句) DML语句包括(insert 写入,update改变,delect删除,merge两张表同步) 注意:merge常用在ETL(数据仓库)底下 DDL数据定义语句包括(create创建对象,alter修改,drop删除对象,rename改名,truncate 删除整个表) TCL事务处理语句(commit提交立刻生效,rollback回滚,savepoint保存点,savepoint(保存点) DCL权限语句(grant赋予权限,revoke(收回权限) ORACLE的表称之为堆表(keep table) SELECT (1) writing basic SQL select statemanes 1. selecting all columns SCOTT>select * from dept; SCOTT>select dname,deptno,loc from dept; Basic SELECT Statement SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

oracle学习心得体会

oracle学习心得 一、sqlserver的理解 sqlserver服务器就像一栋大楼,大楼里的机房就像服务器的数据库,机房里的电脑如同数据库里的表 1、登录用户可以登录服务器——可以进大楼 2、登录用户成为数据库用户才能进指定的数据库——进入大楼的人给了某个机房的钥匙 才能进入机房 3、登录用户有权限使用表——进入机房的人有电脑的密码才能使用电脑 二、oracle的理解 oracle服务器(全局数据库)就像一个商场,商场的每一家公司是表空间,公司的业务是表 1、数据库由多个表空间组成——商场里有多家公司组成 2、表空间由段组成——公司要有自己的经营业务,可以只有一个业务,就是一个表空 间中只有一个段,可以有多个业务,就是一个表空间有多个段 3、段由区组成——单个业务的细分类别。例如有家公司经营三个业务,卖书,卖家电,

卖衣服,则每个业务就是一个段。而每个业务又有细分,比如卖书的话要进行分类了。计算机区,人文区,小说区等,每一区都要放上书架存放书籍,则书架就是oracle块,存放数据的 三、数据库,表空间,用户(指定默认表空间),表统统由管理员管理 四、在oem中管理数据库的步骤 1、创建 1)存储——表空间——创建表空间(tomspace)(类似于在sql中创建数据库, 通常可以省略,使用默认表空间为users,,临时表空间为temp) 2)首先展开安全性——创建新用户(tom,指定表空间)(类似于在sql中指定 数据库用户) 3)创建表——指定方案(用户)和表空间(列名不要带<>) 4)设置约束 5)输入信息:方案——用户名——表——右击——查看/编辑目录… 2、修改 1)方案——用户名——表 2)修改表结构,添加约束

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

oracle数据库学习笔记心得

select* |字段表名 from 表名 where 布尔表达式【条件】 externalcandidate 职员相关信息 contractrecruiter 猎头公司 查看表里所有字段 describe[描述] contractrecruiter select cname,nperecentagecharge from contractrecruiter 不显示原来名字,显示现在名字【用AS】 select cname as "Recruiter Name",nperecentagecharge as "Hire Fees" from contractrecruiter 不显示原来名字,显示现在名字【可不用AS】 select cname "Recruiter Name",nperecentagecharge "Hire Fees" from contractrecruiter 【双引号是否写】 双引号是为了区分大小写 职位表 position select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position

select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position 显示非重复运行 查询来源地的人数 describe externalcandidate 查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】select distinct ccity,cstate from externalcandidate 运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate 学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California' 一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1月-70'

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 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

oracle常用笔记总结

1、用dba权限的用户查看数据库都有哪些锁 select https://www.doczj.com/doc/3e8611999.html,ername,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 2、查看有哪些对象被锁了 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id 3、根据sid查找进程id select pro.spid from v$session ses, v$process pro where ses.sid=129 and ses.paddr=pro.addr; select ses.sid from v$session ses, v$process pro where pro.spid=129 and ses.paddr=pro.addr; 4:根据这个spid对应linux下的进程pid linux命令: ps -ef | gre | 'ora' (找到所有ora开头的进程) kill -9 (pid) 5、解决delete后表的高水位的问题 初步判断应该是之前有大量数据,后来delete了,选成高水位,用shrink 清除高水位: alter table t_mobile_client_tp_prov enable row movement; alter table t_mobile_client_tp_prov shrink space; 重新收集统计信息: begin dbms_stats.gather_table_stats(ownname=>'traffic',tabname=>'T_MOBILE_CLIENT_TP_PR end; 6、ORA-02064 distributed operation not supported

oracle学习总结

--在pl/sql中 --将正式库的零售单A部分数据导到测试库的零售单B中,首先要链接两个数据库 -----创建一个DATABASE LINK /*-- Drop existing database link dropdatabaselink TEST; -- Create database link createdatabaselink TEST connectto NEANDS3 using'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl)))'; */ --然后将A表中的字段插入到B表中: insertinto m_retail(ID,C_STORE_ID,RETAILBILLTYPE,ISACTIVE,DOCNO,STATUS,BILLDATE,TOT_AMT_ACTUAL,CREATION DATE,REFNO,AD_CLIENT_ID ) selectID,C_STORE_ID,RETAILBILLTYPE,ISACTIVE,DOCNO,STATUS,BILLDATE,TOT_AMT_ACTUAL,CREATIONDAT E,REFNO,AD_CLIENT_ID from neands3.m_retail@test where status='2'and billdate='20140823' neands3:用户名 m_retail:表名 @test:链接的名称(已经创建好的) ---定时任务将M_RETAIL里的内容插入到新建的表M_RETAIL_MEN的存储过程: create or replace procedure P_M_RETAIL_MENDIAN(p_pi_id IN NUMBER) AS begin DELETE FROM M_RETAIL_MEN WHERE BILLDATE =TO_CHAR(BILLDATE ,'YYYYMMDD'); commit; insert into M_RETAIL_MEN(id,C_STORE_ID,BILLDATE,AMT_ACTUAL25) select get_sequences('M_RETAIL_MEN'),c_store_id,to_char(sysdate,'yyyymmdd'),sum(TOT_AMT_ACTUAL) from M_RETAIL t where t.billdate=to_char(sysdate,'yyyymmdd') and t.status='2' group by t.C_STORE_ID,t.BILLDATE; UPDATE AD_PInstance SET STATE = 'M', RESULT = 0, ModifiedDate = SYSDATE, ERRORMSG = NULL WHERE id = p_pi_id;---pl/sql存储过程自带的 end P_M_RETAIL_MENDIAN; get_sequences(部门):id自增 正则表达式: 在oracle里正则表达式有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr

Oracle复习题总结

绪论: 1、Oracle,甲骨文,1977年开始研发,总部位于美国加州红木滩市,创始人为Larry Ellison(埃里森) 、 Bob Miner、Ed Oates 2、Oracle服务器=实例+数据库;Oracle实例=内存+后台进程; 第四章:表空间的创建与删除 例4.1 建立名称为data_ts1的数据表空间,大小为50M,区间统一为128KB大小。 SQL> conn system/systempwd@orcl SQL> drop tablespace data _ts1 including conntents; SQL> create tablespace data _ts1 2 tempfile ‘ %oracle_home%\database\data_ts1.dbf ’ SIZE 50M REUSE 3 uniform size 128K; 例4.2 建立名称为temp_ts1的临时表空间,使用temp_ts1.dbf文件存放临时数据。 SQL> conn system/systempwd@orcl SQL> drop tablespace temp_ts1 including conntents; SQL> create temporary tablespace temp_ts1 2 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse 3 uniform size 128k; 例4.3创建10号部门经理用户EMP_MGR10,指定该用户的数据表空间为data_ts1,临时表空间为temp_ts1。授权该用户可以查看SCOTT用户下雇员表中的记录。 SQL> conn system/systempwd@orcl SQL> drop user emp_mgr10 cascade; SQL> create user emp_mgr10 identified by emp_mgr10pwd 2 default tablespace data_ts1 temporary tablespace temp_ts1; SQL> grant connect to emp_mgr10; SQL> conn scott/tiger@orcl 4 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse 5 uniform size 128k; 例4.4 创建和应用撤销表空间。 SQL> conn system/systempwd@orcl SQL> drop tablespace undo_ts1 including conntents; SQL> create undo tablespace undo_ts1 2 datafile ‘ %oracle_home%\database\undo_ts1.dbf ’ size 50M reuse; 例4.5 创建大文件表空间,并指定为SCOTT用户的默认数据表空间。 SQL> conn system/systempwd@orcl SQL> drop tablespace bigfile_ts1 including conntents; SQL> create bigfile tablespace bigfile_ts1 2 datafile ‘ %oracle_home%\database\bigfile_ts1.dbf ’ size 50M reuse; SQL> alter user scott default tablespace bigfile_ts1; 需要注意的是,大文件表空间的段空间管理不能为手工(MANUAL),只能为自动(AUTO)。 例4.6调整数据表空间data_ts1的大小。 SQL> conn system/systempwd@orcl --为表空间data_ts1增加一数据文件,大小为1M。 SQL> alter tablespace data_ts1 2 add datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ size 1M; --重置该数据文件大小为2M。 SQL> alter tablespace 2 datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ siz e 2M;

oracle数据库学习总结

oracle数据库学习总结 一、ORACLE中字段的数据类型 1、字符型 1)char 范围最大2000个字节定长 char(10) '张三' 后添空格6个把10个字节补满'张三' 性别char(2) '男' 2)varchar2 范围最大4000个字节变长 varchar2(10) '张三' 在数据库中'张三' 2、数字number 范围10的-38次方到10的38次方 可以表示小数也可以表示整数 number(4) 最大表示4位整数-9999 到9999 number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99 3、日期date 包含年月日和时分秒7个字节 4、图片blob 二进制大对象图像/声音4G 二、如何建表 学生表student create table student( --学生表 xh number(4), --学号 xm varchar2(10), --姓名 sex char(2), --性别 birthday date, --日期 sal number(7,2) --奖学金 ); 三、字段的添加、删除、修改 1、添加字段(学生所在班级classid) alter table student add (classid number(2)); 2、修改字段的长度 alter table student modify (xm varchar2(12)) ; 3、修改字段的类型(不能有记录的) alter table student modify (xh varchar2(5)); 4、删除一个字段 alter table student drop column sal; 5、删除表 drop table student; 6、表的名字修改 rename student to stu; 7、字段如何改名字 --先删除 a)alter table student drop column sal;

Oracle数据库 知识点总结

1.constraint约束: alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键 alter table [table_name] drop constraint [pk_name];//删除主键 alter table [table_name] add constraint [fk_name] foreign key(fkname) references [tablename](fkname);//添加外键 alter table [table_name] drop constraint [fk_name];//删除外键 2.union 关键字: A username, B username rod bruce rose marina select username from A union select username from B 2、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随E XCEPT 一起使用时(EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 3.复合主键一般不设外键 4. 组函数也称为聚合函数。 例如:我们把学生可以分为男生和女生两个组,如果想求每组的人数,平均身高,平均年龄等,就需要用到分组函数了。 在SQL中常用的组函数有以下几个: COUNT():求出全部的记录数 MAX():求出一组中的最大值 MIN():求出一组中的最小值 AVG():求出一组中的平均值 SUM():求和 范例:COUNT()函数

Oracle从入门到精通复习笔记(一)

数据块 1)、块头; 2)、表目录; 3)、行目录; 4)、空余空间; 5)、行数据; 数据区 1)、多个数据块组成,也称为数据扩展区,数据区是Oracle储存分配的最小单位。 段 1)、由多个数据区组成; 2)、数据段:数据段中保存的是表中的数据记录; 3)、索引段:索引段中包含了用于提高系统性能的索引; 4)、回滚段(撤销段):回滚段中保存了回滚条目,oracle将修改前的旧值保存在回滚段中; 5)、临时段:当执行创建索引、查询等操作时,Oralce可能会使用一些临时储存空间,用于暂时性的保存解析过的查询语句以及在排序过程中产生的临时数据。 表空间 1)、表空间是数据库的最大逻辑划分区域; 2)、表空间(逻辑储存结构)=文件夹>数据文件(物理储存结构)=文件; Oracle默认创建的主要表空间 1)、SYSTEM表空间 2)、SYSAUX表空间:充当SYSTEM的辅助表空间; 3)、UODO表空间:撤销表空间,用于储存撤销信息的表空间; 4)、USERS表空间:用户表空间 物理储存结构 1)、数据文件; 1)、系统数据文件; 2)、撤销数据文件; 3)、用户数据文件; 2)、控制文件; 1)、控制文件是一个二进制文件,它记录了数据库的物理结构,其中主要包括数据库名、数据文件与日志文件的名字和位置、数据库建立日期等信息; 2)、只有控制文件正常,实例才能加载并打开数据库; 3)、每个数据库至少拥有一个控制文件,但一个控制文件只能属于一个数据库; 3)、日志文件; 1)、日志文件的主要功能是记录对数据所做的修改,对数据库所做的修改几乎都记录在日志文件中;

2)、重做日志文件; 1)、重做日志文件用来记录所发生过的更改信息(添加、修改、删除)及由oracle 内部行为而引起的数据库变化信息; 3)、归档日志文件; 5)、服务器参数文件; 1)、服务器参数文件是二进制文件,用来记录oracle数据库的基本参数信息(数据库名、控制文件所在路径、日志缓冲大小等)。 2)、查看服务器参数; 1)、查询v$parameter; 2)、使用SQL*PLus的SHOW PARAMETER命令显示服务器参数; 3)、修改服务器参数; 1)、通过企业管理器(OEM)修改; 2)、使用ALTER SYSTEM命令修改服务器参数; 6)、口令文件; 7)、辅助文件; 1)、密码文件; 1)、密码文件是oracle系统用于验证sysdba权限的二进制文件,当远程用户以sysdba 和sysoper连接到数据库时,一般要用到密码文件验证; 2)、警告文件(警告日志文件); 1)、警告文件是一个储存在oracle系统目录下的文本文件(通常为alert_orcl.log),它用来记录oracle系统的运行信息和错误信息; 2)、随着时间的推移,警告文件会越来越大,数据库管理员应该定期删除警告文件; 3)、跟踪文件; 1)、后台跟踪文件,用于记录后台进程的警告或错误信息; 2)、用户进程文件,用于记载与用户进程相关的信息,它主要用于跟踪SQL语句; 3)、每个后台进程都有对应的后台进程文件; Oracle服务器 1)、实例; 1)、系统全局区(SGA) 1)、SGA使用操作系统的内存资源,是所有用户进程共享的一块内存区域,也就是说,SGA中的数据资源可以被多个用户进程共同使用; 2)、高速数据缓存区(Database buffer cache); 1)、高速数据缓存区中存放着Oracle系统最近访问过的数据块,数据块在高速数据缓存区中也称为缓存块;

oracle第二讲笔记

■类(对象)与表(记录)的关系图 ■创建表 基本语法 create table 表名( 列名列的数据类型, ... ) 举例说明 创建一张用户表 create table users( id number, name varchar2(32), password varchar2(32), birthday date); ■oracle的数据类型 ①char(size)

存放字符串,最大2000个字符,是定长。 举例说明 create table test1(name char(32)); 这样,在name这列,最多只能存放32个字符,如果超过,就报错,如果不够’abc’,则用空格补全。 insert into test1 values(‘abc’); create table test2(name char(4000)); ②varchar2(size) 变长,最大存放4000个字符 举例说明 特别说明:如果我们的数据的长度是固定的,比如商品编号(8位),则应当使用char来存放,因为这样存放速度快,如果存放的数据长度是变化的,则使用varchar2 ③nchar(size) 1.定长 2.编码方式unicode 举例说明 create table test4(name nchar(2)); insert into test4 values(‘中国’);//ok

create table test5 (name char(2)); insert into test5 values(‘中国’);//报错 说明:一个汉字,占用nchar的一个字符空间,一个汉字,占用char的两个字符空间 3.最大字符长度2000 ④nvarchar2(size) 1.变长 2.unicode编码 3.最大字符长度4000 ⑤clob(charater large object)字符型大数据对象 1.变长 2.8Tb ⑥blob(binary large object)二进制大数据对象 1.变长 2.最大8tb 特别说明:我们在实际开发中很少把视频,图像文件存放数据库(效率问题),实际上存放记录文件的一个路径(本地或url),然后通过io/网络来操作 如果我们要求对文件安全性,可以考虑存放数据库。 ⑦number NUMBER[(precision [, scale])] NUMBER(p,s)

oracle结课总结

Oracle数据库课程 报告 院系软件学院 专业软件工程 班级 学生姓名 学号 任课教师 2012 年5月14日

1、为users表空间添加一个数据文件,文件名为users03.dbf,大小为50MB 答:ALTER TABLESPACE USER ADD DATAFILE ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’ SIZE 50M’; 2、为EXAMPLE表空间添加一个数据文件,文件名为example02.dbf,大小为20M 答:ALTER TABLESPACE EXAMPLE ADD DATAFILE ‘D:\ORACLE\ORADATA\ORCL\example02.dbf’ SIZE 20M’; 3、将表空间USERS中的数据文件USERS03.DBF更名为userdata04.dbf,将表空间EXAMPLE中的数据文件example03.dbf更名为example04.dbf 答:SHUTDOWN IMMEDIATE; 在操作系统中重命名userdata03.dbf、example03.dbf 分别为userdata04.dbf、example04.dbf STARTUP MOUNT; ALTER DATABASE RENAME FILE ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’, ‘D:\ORACLE\ORADATA\ORCL\example03.dbf’ TO ‘D:\ORACLE\ORADATA\ORCL\u serdata04.dbf’, ‘D:\ORACLE\ORADATA\ORCL\example04.dbf’; 4、为数据库添加一个重做日志文件组,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。 答:ALTER DATABASE ADD LOGFILE GROUP 4 (‘D:\ORACLE\ORADATA\ORCL\redo04a.log’,’D:\ORACLE\ORADATA\ORCL\redo04b.l og’)SIZE 5M; 5、将数据库设置为归档模式,并采用自动归档方式。 答:SHUTDOWN IMMEDIATE STARTUP MOUNT ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; ALTER SYSTEM ARCHIVE LOG START 6、使用SQL命令创建一个本地管理方式下自动分区管理的表空间USERTBS1,其对应的数据文件大小为20MB 答:create tablespace USERTBS1 datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' size 50M extent management local autoallocate; 7、修改USERTBS1表空间的大小,将该表空间的数据文件改为自动扩展方式,最大值为100MB 答:alter database datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' autoextend on next 5M maxsize 100M; 8、使用SQL命令创建一个本地管理方式下的临时表空间TEMPTBS,并将该表空间作为当前数据库实例的默认临时表空间。 答:create temporary tablespace TEMPTBS

oracle知识点整理

╔---------------------------╗ ☆2.用户管理:☆ ╚---------------------------╝ 用dos命令打开或关闭监听服务: 启动监听:lsnrctl start 停止监听:lsnrctl stop 查看监听:lsnrctl status 创建用户(create):create user用户名identified by密码;例:create user zhangsan indentified by zhangsan 修改用户密码(alter):alter user用户名identified by密码;例:alter user zhangsan identified by zhangsan1 删除用户(drop):Drop user用户名cascade例:drop user zhangsan cascade(带cascade 的删除语句可以不管用户是否拥有模式对象,连同一起删除) 用户状态管理(alter):锁定用户:alter user用户名account lock;例:alter user zhangsan account lock 解锁用户:alter user用户名account unlock;例:alter user zhangsan account unlock 权限管理 (grand,revoke): DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库 结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数 据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建 实体,不可以创建数据库结构 对于普通用户:授予connect, resource权限即可。 对于DBA管理用户:授予connect,resource, dba权限 权限授予:grant connect, resource, dba to用户名1 [,用户名2]... 权限回收:Revoke connect, resource from用户名 实体权限分类:select, update, insert, alter, index, delete, all //all包括 所有权限 execute//执行存储过程权限 例:grant select, update, insert on product to 用户名; 例:grant all(所有权限) on product to 用户名; 更多见(Oracle用户、权限、角色管理.txt)文本 ╔---------------------------╗ ☆3.空间管理:☆ ╚---------------------------╝ 创建表空间(tablesapce): 表空间: Create tablesapce表空间名(rb_开头)datafile地址(如‘d:datafiles.dbf’) size 50M; size:表空间大小

相关主题
文本预览
相关文档 最新文档