ORACLE数据库基础知识

ORACLE数据库基础知识
ORACLE数据库基础知识

一、选择行

1. 简单的SELECT 语句

SELECT 字段名1 [AS] '字段名1 解释' FROM table;

2. 处理NULL

NVL函数可把NULL转换成其它类型的符号

编程技巧: NVL函数在多条件模糊查询的时候比较有用

NVL函数可返回多种数据类型:

返回日期 NVL(start_date,'2002-02-01')

返回字符串 NVL(title,'no title')

返回数字 NVL(salary,1000)

3. 使用SQL*PLUS(1)

SQL> desc table; 显示表结构

SQL> select * from tab; 查看用户下所有的表

SQL> set pause on; 可以使大量结果集在用户按“Enter”(回车)后翻页SQL> set pagesize 100; 设定SQL语句返回结果集一页的行数100, 默认值是14

SQL> set linesize 100; 设定SQL语句返回结果集一行的宽度100, 默认值是80

4. SQL*PLUS里规定字段的显示格式

规定数字的显示格式

SQL>column 字段名 format 99999999999;

SQL>column 字段名 format 999,999,999,999;

SQL>column 字段名 format a数字 [word_wrapped];

规定long字符的显示宽度

SQL>set long 200;

规定字段名的显示内容

SQL> column 字段名 heading '字段名显示内容';

SQL> set heading off; 查询时不显示字段名称

规定字段的对齐方向

SQL> column 字段名 justify [left | right | center];

清除字段的格式

SQL> column 字段名 clear;

5. SQL*PLUS里规定字段的显示格式例子

SQL> column last_name heading 'Employee|Name' format a15;

SQL> column salary justify right format $99,999.99;

SQL> column start_date format a10 null 'Not Hired';

说明:如果start_date为null, 显示字符串'Not Hired'

6. 判断题(T/F)

(1). SQL command are always held in sql buffer. [T]

(2). SQL*PLUS command assit with query data. [T]

5

J2EE @ zxw

SQL*PLUS命令只控制SELECT结果集的显示格式及控制文件.只有SQL命令能访

问数据库.

二、限制选择行

1. 按指定的规则排序

SELECT expr FROM table [ORDER BY {column, expr} [ASC | DESC] ];

默认的排序是ASC升序(由小到大)

还可以ORDER BY 字段名的位置[1]| [2] ASC| DESC;

2. 用WHERE限制选择行(1)

比较操作符 = > < >= <= != <> ^= 与NULL比较不能用上面的比较操作符 ANY SOME

ALL

SQL操作符BETWEEN … AND… IN LIKE IS NULL

NOT BETWEEN … AND… NOT IN NOT LIKE IS NOT NULL

逻辑操作符 AND OR NOT

3. 用WHERE限制选择行(2)

比较顺序(可以用括号改变它们的顺序)

(1). = < > >= <= in like is null between

(2). and

(3). Or

4. LIKE操作

% 零到任意多个字符 _ 一个字符

例如: 字段名 like 'M%' 字段名 like '%m%' 字段名 like 'job_'

如果要找含下划线的字符, 要加反斜线例如:字段名 like '%X/_Y%' escape '/'

5. 日期字段的比较

举例:

日期字段 between to_date('2001-12-12','YYYY-MM-DD') and

to_date('2002-02-01','YYYY-MM-DD')

日期字段> to_date('2001-12-12','YYYY-MM-DD') and日期字段<=

to_date('2002-02-01','YYYY-MM-DD');

6. 不能用到索引的比较操作符

IS NULL

IS NOT NULL

LIKE '%m%'

三、单行函数

1. 数字函数

ABS 取绝对值 POWER 乘方 LN 10为底数取0

SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取0

数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH

CEIL 大于或等于取整数

FLOOR 小于或等于取整数

MOD 取余数

ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期.

round(sysdate,'Y')是年的第一天

TRUNC(n,m) 按m的位数取小数点后的数值如果trunc(日期), 确省的是去掉时

6

J2EE @ zxw

2. 字符函数

CHR 按数据库的字符集由数字返回字符

CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 || 相同

REPLACE(c,s,r) 把字符c里出现s的字符替换成r, 返回新字符

SUBSTR(c,m,n) m大于0,字符c从前面m处开始取n位字符,m等于0和1一样, m小与0,字符c从后面m处开始取n位字符

TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串

INITCAP 字符首字母大写,其它字符小写

LOWER 字符全部小写

UPPER 字符全部大写

LTRIM(c1,c2) 去掉字符c1左边出现的字符c2

RTRIM(c1,c2)

TRIM(c1,c2) 去掉字符c1左右两边的字符c2

LPAD(c1,n,c2) 字符c1按制定的位数n显示不足的位数用c2字符串替换左边的空位

RPAD(c1,n,c2)

3. 日期函数

ADD_MONTHS(d,n) 日期值加n月

LAST_DAY 返回当月的最后一天的日期

MONTHS_BETWEEN(d1,d2) 两个日期值间的月份,d1

NEXT_DAY 返回日期值下一天的日期

SYSDATE 当前的系统时间

DUAL是SYS用户下一个空表,它只有一个字段dummy

4. 转换函数(1)

TO_CHAR(date,'日期显示格式')

TO_CHAR(number) 用于显示或报表的格式对齐

TO_DATE(char,'日期显示格式')

TO_LOB 把long字段转换成lob字段

TO_NUMBER(char) 用于计算或者比较大小

4. 转换函数(2)

to_date里日期显示格式

YYYY 年 YEAR YYY YY Y

Q 季度

MM 月 MONTH MON

W 星期 (week of month) WW, IW (week of year)

(说明:周计是按ISO标准,从1月1日的星期数到后面七天为一周,不一定是从周一到周日)

DD 日 DAY DY

HH24 小时 HH12 HH

MI 分钟

SS 秒

如果想固定日期的显示格式可以在数据库的参数文件initorasid.ora里新写一行参数

NLS_DATE_FORMAT=yyyy-mm-dd

hh24:mi:ss可以在UNIX环境变量或者NT的注册表里的设置

NLS_DATE_FORMAT=yyyy-mm-dd

7

J2EE @ zxw

hh24:mi:ss

4. 转换函数(3)

如果想固定日期的显示格式可以用alter session命令改变

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

它的作用顺序如下:

initialization parameter

Environment variable

ALTER SESSION command

4. 转换函数 (4)

to_char(number)里数字显示格式

9 数字位

0 数字前面补0 to_char(-1200,'00000.00')

. 小数点的位置

, 标记位置的逗号用在数字显示格式的左边

L 根据数据库字符集加货币符号 to_char(-1200,'L9999.99')

B 把数字0显示为空格,用在数字显示格式的右边

MI 右边的负数标记 to_char(-1200,'9999.99MI')

PR 括起来的负数 to_char(-1200,'9999.99PR')

EEEE 用指数方式表示 to_char(-1200,'9999.99EEEE')

5. 输入字符,返回数字的函数

instr(c1,c2) 字符c2出现在c1的位置, 不出现, 返回0, 常用于模糊查询length 按数据库的字符集,算出字符c的长度,跟数据库的字符集有关, 一个汉字长度为1

6. 有逻辑比较的函数NVL(EXPR1, EXPR2)函数

解释: IF EXPR1=NULL RETURN EXPR2

ELSE RETURN EXPR1

DECODE(AA0V10R10V20R2....)函数

解释: IF AA=V1 THEN RETURN R1

IF AA=V2 THEN RETURN R2

..…

ELSE

RETURN NULL

举例: decode(id,1,'dept sale',2,'dept tech')

四、从多个表里选取数据记录

1. 数据表间的连接

简单的连接语法:

SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]

WHERE 表名1.字段名 = 表名2. 字段名[ AND ……] ;

SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]

WHERE 表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;

有(+)号的字段位置自动补空值

连接的分类:

等于的连接 =

不等于的连接!= BETWEEN … AND … IN 注意IN和OR不能一起用

8

J2EE @ zxw

外连接有一个字段名(+) , 没有满足的条件补空值

自连接同一个表自己跟自己连接例如找重复记录

2. 数据表间的连接例子

删除table_name表里字段名email重复的记录:

SQL>delete from table_name t1

where t1.rowid >

(select min(rowid) from table_name t2

where t1.email = t2.email

group by email

having count(email) > 1);

找到手机用户的服务区域:

SQL> select a.handphoneno,nvl(https://www.360docs.net/doc/c113543854.html,,'null'),a.totalscore

from topscore a,chargeoperator cc,chargeoperatorinfo c

where substr(a.handphoneno,1,7)=cc.hpnohead(+)

and cc.chargetype=c.chargetype(+)

order by a.totalscore desc;

3. 数据表间的连接技巧

连接N个表, 需要N-1个连接操作

被连接的表最好建一个单字符的别名, 字段名前加上这个单字符的别名BETWEEN .. AND.. 比用 >= AND <= 要好

连接操作的字段名上最好要有索引

连接操作的字段最好用整数数字类型

有外连接时, 不能用OR或IN的比较操作

4. 如何分析和执行SQL语句

写多表连接SQL语句时要知道它的分析执行计划的情况.

Sys用户下运行@/ORACLE_HOME/sqlplus/admin/plustrce.sql 产生plustrace 角色

Sys用户下把此角色赋予一般用户 SQL> grant plustrace to &username; 一般用户下运行@/ORACLE_HOME/rdbms/admin/utlxplan.sql

产生plan_table

SQL> set time on; 说明:打开时间显示

SQL> set autotrace on; 说明:打开自动分析统计,并显示SQL语句的运行结果

SQL> set autotrace traceonly; 说明:打开自动分析统计,不显示SQL语句的运行结果

接下来你就运行测试SQL语句,看到其分析统计结果了。

一般来讲,我们的SQL语句应该避免大表的全表扫描。

SQL> set autotrace off; 说明:关闭自动分析统计

五、集合函数

经常和group by一起使用

1. 集合函数列表

AVG (DISTINCT | ALL | N) 取平均值

COUNT (DISTINCT | ALL | N | expr | * ) 统计数量

MAX (DISTINCT | ALL | N) 取最大值

MIN (DISTINCT | ALL | N) 取最小值

SUM (DISTINCT | ALL | N) 取合计值

9

J2EE @ zxw

STDDEV (DISTINCT | ALL | N) 取偏差值,如果组里选择的内容都相同,结果为0 VARIANCE (DISTINCT | ALL | N) 取平方偏差值

2. 使用集合函数的语法

SELECT column, group_function FROM table

WHERE condition GROUP BY group_by_expression

HAVING group_condition ORDER BY column;

3. 使用count时的注意事项

SELECT COUNT(*) FROM table;

SELECT COUNT(常量) FROM table;

都是统计表中记录数量,如果没有PK后者要好一些

SELECT COUNT(all 字段名) FROM table;

SELECT COUNT(字段名) FROM table;

不会统计为NULL的字段的数量

SUM,AVG时都会忽略为NULL的字段

4. 用group by时的限制条件

SELECT字段名不能随意, 要包含在GROUP BY的字段里

GROUP BY后ORDER BY时不能用位置符号和别名

限制GROUP BY的显示结果, 用HAVING条件

5. 例子

SQL> select title,sum(salary) payroll from s_emp

where title like 'VP%' group by title

having sum(salary)>5000 order by sum(salary) desc;

找出某表里字段重复的记录数, 并显示

SQL> select (duplicate field names) from table_name

group by (list out fields) having count(*)>1;

6. 判断题(T/F)

(1) Group functions include nulls in calculations [F]

(2) Using the having clause to exclude rows from a group calculation [F] 解释:

Group function 都是忽略NULL值的如果您要计算NULL值, 用NVL函数

Where语句在Group By前把结果集排除在外Having语句在Group By后把结果

集排除在外

六、子查询

1. 查询语句可以嵌套

例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

2. 何处可用子查询?

当查询条件是不确定的条件时

DML(insert, update,delete)语句里也可用子查询

HAVING里也可用子查询

3. 两个查询语句的结果可以做集合操作

例如:

并集UNION(去掉重复记录)

并集UNION ALL(不去掉重复记录)

10

J2EE @ zxw

差集MINUS,

交集INTERSECT

4. 子查询的注意事项

先执行括号里面的SQL语句,一层层到外面

内部查询只执行一次

如果里层的结果集返回多个,不能用= > < >= <=等比较符要用IN.

5. 子查询的例子(1)

SQL> select title,avg(salary) from s_emp

group by title Having avg(salary) =

(select min(avg(salary)) from s_emp

group by title);

找到最低平均工资的职位名称和工资

5. 子查询的例子(2)

子查询可以用父查询里的表名

这条SQL语句是对的:

SQL>select cty_name from city where st_code in

(select st_code from state where st_name='TENNESSEE' and

https://www.360docs.net/doc/c113543854.html,t_code=https://www.360docs.net/doc/c113543854.html,t_code);

说明:父查询调用子查询只执行一次.

6.取出结果集的80 到100的SQL语句

ORACLE处理每个结果集只有一个ROWNUM字段标明它的逻辑位置,

并且只能用ROWNUM<100, 不能用ROWNUM>80。

以下是经过分析后较好的两种ORACLE取得结果集80到100间的SQL语句

( ID是唯一关键字的字段名 )

语句写法:

SQL>select * from (

( select rownum as numrow, c.* from (

select [field_name,...] from table_name where 条件1 order by 条件2) c) where numrow > 80 and numrow <= 100 )

order by 条件3;

七、在执行SQL语句时绑定变量

1. 接收和定义变量的SQL*PLUS命令

ACCEPT

DEFINE UNDEFINE

&

2. 绑定变量SQL语句的例子(1)

SQL> select id, last_name, salary from s_emp where dept_id =

&department_number;

Enter value for department_number: 10

old 1: select id, last_name, salary from s_emp where

dept_id=&department_number;

new 1: select id, last_name, salary from s_emp where dept_id= 10 SQL> SET VERIFY OFF | ON;可以关闭和打开提示确认信息old 1和new 1的显示.

3. 绑定变量SQL语句的例子(2)

SQL> select id, last_name, salary

from s_emp

where title = '&job_title';

Enter value for job_title: Stock Clerk

11

J2EE @ zxw

SQL> select id, last_name, salary

from s_emp

where hiredate >to_date( '&start_hire_date','YYYY-MM-DD');

Enter value for start_hire_date : 2001-01-01

把绑定字符串和日期类型变量时,变量外面要加单引号

也可绑定变量来查询不同的字段名

输入变量值的时候不要加;等其它符号

4. ACCEPT的语法和例子

SQL> ACCEPT variable [datatype] [FORMAT] [PROMPT text] [HIDE]

说明: variable 指变量名 datatype 指变量类型,如number,char等 format 指变量显示格

式 prompt text 可自定义弹出提示符的内容text hide 隐藏用户的输入符号

使用ACCEPT的例子:

ACCEPT p_dname PROMPT 'Provide the department name: '

ACCEPT p_salary NUMBER PROMPT 'Salary amount: '

ACCEPT pswd CHAR PROMPT 'Password: ' HIDE

ACCEPT low_date date format 'YYYY-MM-DD' PROMPT“Enter the low date range('YYYY-MM-DD'):”

4. DEFINE的语法和例子

SQL> DEFINE variable = value

说明: variable 指变量名 value 指变量值

定义好了变良值后, 执行绑定变量的SQL语句时不再提示输入变量

使用DEFINE的例子:

SQL> DEFINE dname = sales

SQL> DEFINE dname

DEFINE dname = “sales” (CHAR)

SQL> select name from dept where lower(name)='&dname';

NAME

-------------------------

sales

sales

SQL> UNDEFINE dname

SQL> DEFINE dname

Symbol dname is UNDEFINED

5. SQL*PLUS里传递参数到保存好的*.sql文件里

SQL> @ /路径名/文件名参数名1[,参数名2, ….]

SQL> start /路径名/文件名参数名1[,参数名2, ….]

注意事项:

一次最多只能获取9个&变量, 变量名称只能是从&1,&2到&9

变量名后不要加特殊的结束符号

如果在SQL*PLUS里要把&符号保存在ORACLE数据库里,要修改sql*plus环境变量define

SQL> set define off;

八、概述数据模型和数据库设计

1. 系统开发的阶段:

Strategy and Analysis

Design

Build and Document

Transition

Production

12

J2EE @ zxw

2. 数据模型

Model of system in client's mind

Entity model of client's model

Table model of entity model

Tables on disk

3. 实体关系模型 (ERM)概念

ERM ( entity relationship modeling)

实体存有特定信息的目标和事件例如: 客户,订单等

属性描述实体的属性例如: 姓名,电话号码等

关系两个实体间的关系例如:订单和产品等

实体关系模型图表里的约定

Dashed line (虚线) 可选参数“may be”

Solid line (实线) 必选参数“must be”

Crow's foot (多线) 程度参数“one or more”

Single line (单线) 程度参数“one and only one”

4. 实体关系模型例子

每个订单都必须有一个或几个客户

每个客户可能是一个或几个订单的申请者

5. 实体关系的类型

1:1 一对一例如: 的士和司机

M:1 多对一例如: 乘客和飞机

1:M 一对多例如: 员工和技能

6. 校正实体关系的原则

属性是单一值的, 不会有重复

属性必须依存于实体, 要有唯一标记

没有非唯一属性依赖于另一个非唯一的属性

7. 定义结构时的注意事项

减少数据冗余

减少完整性约束产生的问题

确认省略的实体,关系和属性

8. 完整性约束的要求

Primary key 主关键字唯一非NULL

Foreign key 外键依赖于另一个Primary key,可能为NULL

Column 字段名符合定义的类型和长度

Constraint 约束条件用户自定义的约束条件,要符合工作流要求

例如: 一个销售人员的提成不能超过它的基本工资

Candidate key 候选主关键字多个字段名可组成候选主关键字, 其组合是唯一和非NULL的

9. 把实体关系图映射到关系数据库对象的方法

把简单实体映射到数据库里的表

把属性映射到数据库里的表的字段, 标明类型和注释

把唯一标记映射到数据库里的唯一关键字

把实体间的关系映射到数据库里的外键

13

J2EE @ zxw

其它的考虑:

设计索引,使查询更快

建立视图,使信息有不同的呈现面, 减少复杂的SQL语句

计划存储空间的分配

重新定义完整性约束条件

10. 实体关系图里符号的含义

PK 唯一关键字的字段

FK 外键的字段

FK1,FK2 同一个表的两个不同的外键

FK1,FK1 两个字段共同组成一个外键

NN 非null字段

U 唯一字段

U1,U1 两个字段共同组成一个唯一字段

九、创建表

1. ORACLE常用的字段类型

ORACLE常用的字段类型有

VARCHAR2 (size) 可变长度的字符串, 必须规定长度

CHAR(size) 固定长度的字符串, 不规定长度默认值为1

NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数

最长38位. 不够位时会四舍五入.

DATE 日期和时间类型

LOB 超长字符, 最大可达4G

CLOB 超长文本字符串

BLOB 超长二进制字符串

BFILE 超长二进制字符串, 保存在数据库外的文件里是只读的.

数字字段类型位数及其四舍五入的结果

原始数值1234567.89

数字字段类型位数存储的值

Number 1234567.89

Number 12345678

Number 错

Number(9,1) 1234567.9

Number(9,3) 错

Number(7,2) 错

Number(5,-2) 1234600

Number(5,-4) 1230000

Number(*,1) 1234567.9

2. 创建表时给字段加默认值和约束条件

创建表时可以给字段加上默认值

例如 : 日期字段 DEFAULT SYSDATE

这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间14

J2EE @ zxw

创建表时可以给字段加上约束条件

例如: 非空 NOT NULL

不允许重复 UNIQUE

关键字 PRIMARY KEY

按条件检查 CHECK (条件)

外键 REFERENCES 表名(字段名)

3. 创建表的例子

CREATE TABLE DEPT(

EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,

DNAME VARCHAR2(14),

LOC VARCHAR2(13)) ;

CREATE TABLE region(

ID number(2) NOT NULL PRIMARY KEY,

postcode number default '0' NOT NULL,

areaname varchar2(30) default ' ' NOT NULL);

4. 创建表时的命名规则和注意事项

表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,# 大小写不区分

不用SQL里的保留字, 一定要用时可用双引号把字符串括起来.

用和实体或属性相关的英文符号长度有一定的限制

注意事项:

建表时可以用中文的字段名, 但最好还是用英文的字段名

创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面

建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引

一个表的最多字段个数也是有限制的,254个.

5. 约束名的命名规则和语法

约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是

SYS_Cn(n是数字)

约束名字符串的命名规则同于表和字段名的命名规则

6. 使用约束时的注意事项

约束里不能用系统函数,如SYSDATE和别的表的字段比较

可以用本表内字段的比较

想在事务处理后, 做约束的检查

SQL> alter session set constraints deferred.

7. 由实体关系图到创建表的例子 s_dept

前提条件:已有region表且含唯一关键字的字段id

SQL> CREATE TABLE s_dept

(id NUMBER(7)

CONSTRAINT s_dept_id_pk PRIMARY KEY,

name VARCHAR2(25)

CONSTRAINT s_dept_name_nn NOT NULL,

region_id NUMBER(7)

CONSTRAINT s_dept_region_id_fk REFERENCES region (id), CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));

8. 较复杂的创建表例子

15

J2EE @ zxw

SQL> CREATE TABLE s_emp (

id NUMBER(7) CONSTRAINT s_emp_id_pk PRIMARY KEY,

last_name VARCHAR2(25) CONSTRAINT s_emp_last_name_nn NOT NULL,

first_name VARCHAR2(25),

userid VARCHAR2 CONSTRAINT s_emp_userid_nn NOT NULL

CONSTRAINT s_emp_userid_uk UNIQUE,

start_date DATE DEFAULT SYSDATE,

comments VARCHAR2(25),

manager_id NUMBER(7),

title VARCHAR2(25),

dept_id NUMBER(7) CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id), salary NUMBER(11,2),

commission_pct NUMBER(4,2) CONSTRAINT s_emp_commission_pct_ck CHECK (commission_pct IN(10,12.5,15,17.5,20))

);

9. 通过子查询建表

通过子查询建表的例子

SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date FROM s_emp WHERE dept_id = 41;

SQL> CREATE TABLE A as select * from B where 1=2;

只要表的结构.

10. 用子查询建表的注意事项

可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段

名称,且不能重复。

用子查询方式建立的表,只有非空NOT NULL的约束条件能继承过来,

其它的约束条件和默认值都没有继承过来.

根据需要,可以用alter table add constraint ……再建立其它的约束条件,如primary key等.

11. Foreign Key的可选参数ON DELETE CASCADE

在创建Foreign Key时可以加可选参数:

ON DELETE CASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除.

如果没有ON DELETE CASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.

12. 如果数据库表里有不满足的记录存在,建立约束条件将不会成功.

13. 给表创建和删除同义词的例子

SQL> CREATE SYNONYM d_sum

2 FOR dept_sum_vu;

SQL> CREATE PUBLIC SYNONYM s_dept

2 FOR alice.s_dept;

SQL> DROP SYNONYM s_dept;

十、ORACLE里的数据字典

1. 什么是数据字典?ORACLE的数据字典是数据库的重要组成部分之一,它随着

数据库

的产生而产生, 随着数据库的变化而变化, 体现为sys用户下所有的一些表和视图.

2. 数据字典里存了以下内容:

用户信息

用户的权限信息

所有数据对象信息表的约束条件统计分析数据库的视图等

不能手工修改数据字典里的信息.

16

J2EE @ zxw

3. 常用的数据字典

Dictionary 存放所有数据表,视图,同义词名称和解释

Dict_columns 数据字典里字段名称的和解释

Dba_users 用户 Dba_tablespaces 表空间

Dba_data_files 数据库的文件 Dba_free_space 空闲表空间

Dba_rollback_segs 回滚段

User_objects 数据对象 User_constraints 约束条件

User_sequences 序列号 User_views 视图

User_indexes 索引 User_synonyms 同义词

Session_roles 用户的角色 User_role_privs 用户的角色权限

User_sys_privs 用户的系统权限 User_tab_privs 用户的表级权限

V$session 实时用户情况 V$sysstat 实时系统统计

V$sesstat 实时用户统计 V$sgastat 实时SGA使用

V$locked_object 实时锁 V$controlfile 控制文件

V$logfile 日志文件 V$parameter 参数文件

4. 数据字典的分类

数据字典四大类别

User_ 用户下所有数据库对象

All_ 用户权限范围内所有的数据库对象

Dba_ 所有的数据库对象

V$Content$nbsp; 统计分析数据库的视图赋于oem_monitor权限非DBA用户也可查询V$*视图

5. 查询数据字典

SQL> select * from dictionary where instr(comments,'index')>0; SQL> select constraint_name, constraint_type,

2 search_condition, r_constraint_name

3 from user_constraints

4 where table_name = ‘&table_name';

十一. 控制数据

1 、INSERT(往数据表里插入记录的语句)

SQL> insert into 表名(字段名1, 字段名2, ……) values ( 值1, 值2, ……); SQL> insert into 表名(字段名1, 字段名2, ……) select (字段名1, 字段名2, ……)

from 另外的表名 where 条件;

可以用&标记变量的方法多次输入记录

快速插入数据的方法, 一般用于大于128M的数据转移

SQL> insert /*+ append */ into 表名

select * from 另外的用户名 .另外的表名 WHERE 条件;

SQL> commit;

注意事项:

用INSERT /*+ APPEND */ 的方法会对target_tablename产生级别为6的独占锁,

如果运行此命令时还有对target_tablename的DML操作会排队在它后面,

对OLTP系统在用的表操作是不合适的。

17

J2EE @ zxw

2. 插入字符串类型的字段的注意事项:

字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’

如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号’ ’

字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验

‘’ 标记是NULL, user 标明当前用户

日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒

用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)

TO_DATE( )还有很多种日期格式, 可以参看ORACLE DOC.

年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS

NSERT时最大可操作的字符串长度小于等于4000个单字节,

如果要插入更长的字符串, 请考虑字段用CLOB类型,

方法借用ORACLE里自带的DBMS_LOB程序包.

3、UPDATE (修改数据表里记录的语句)

SQL> UPDATE 表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;

如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL,

最好在修改前进行非空校验;

值N超过定义的长度会出错, 最好在插入前进行长度校验.

新功能,可以修改子查询后的结果集

例子:SQL> update (select * from s_dept) set id=50 where id=60;

4、DELETE (删除数据表里记录的语句)

SQL> DELETE FROM 表名 WHERE 条件;

注意:删除记录并不能释放ORACLE里被占用的数据块表空间.

它只把那些被删除的数据块标成unused.

如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间

SQL> TRUNCATE TABLE 表名;

此操作不可回退.

5、 SQL语句的分类

数据定义语言(DDL):create、alter、drop(创建、修改结构、删除)(其他:rename)

数据操纵语言(DML):insert、delete、select、update(增、删、查、改)(其他:truncate)

数据控制语言(DCL):grant、revoke(授权、回收)、set role

事务控制:commit、rollback、savepoint(其他:lock table、set constraint、set transaction)

审计控制:audit、noaudit

系统控制:alter system 会话控制:alter session

其他语句:comment(添加注释)、explain plan、analyze、validate、call 6、ORACLE里事务控制

Commit 提交事务

Rollback 回退事务

Savepoint 设置断点, 在事务中标记位置, 事务结束, 断点释放

事务结束的情况遇到commit或者rollback遇到DDL和DCL语句发现错误,如死锁用户退出

SQL*PLUS系统重启或崩溃

7. DML操作的注意事项

18

J2EE @ zxw

以上SQL语句对表都加上了行级锁, 确认完成后,

必须加上事物处理结束的命令COMMIT 才能正式生效,

否则改变不一定写入数据库里.行级锁也未能得到释放.

如果想撤回这些操作, 可以用命令 ROLLBACK 复原.

在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围, 应该把它限定在较小 (一万条记录) 范围内,. 否则ORACLE处理这个事物用到

很大的回退段.

程序响应慢甚至失去响应. 如果记录数上十万以上这些操作,

可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.

太过频繁的commit不好

十二、改变表和约束条件

1. 改变表的几种情况(1) 运行时会加表级锁

改变表的名称

SQL> RENAME 表名1 TO 表名2; SQL> ALTER TABLE 表名1 RENAME TO 表名2; 在表的后面增加一个字段

SQL> ALTER TABLE 表名 ADD 字段名字段名描述

[ DEFAULT expr ][ NOT NULL ][ ,字段名2 ……];

修改表里字段的定义描述

SQL> ALTER TABLE 表名 MODIFY 字段名1 字段名1描述 [ DEFAULT expr ][ NOT NULL ]

[ ,字段名2 ……]; 记录为空时,可以减少字段长度,

改变字段类型修改DEFAULT值只作用于修改后的INSERT和UPDATE的记录修改NOT NULL

约束只对现存含非空记录的字段起作用

1. 改变表的几种情况(2) 运行时会加表级锁

删除表里的某个字段

SQL> ALTER TABLE 表名 DROP 字段名;

给表里的字段加上/禁止/启用约束条件

SQL> ALTER TABLE 表名 ADD | DISABLE | ENABLE CONSTRAINT 约束名PRIMARY KEY (字段名1[,字段名2 ……]);

SQL> ALTER TABLE 表名 ADD | DISABLE | ENABLE CONSTRAINT 约束名UNIQUE (字段名1[,字段名2 ……]);

加唯一关键字或者唯一约束条件时自动建立索引

说明:禁止唯一关键字和唯一约束时索引仍然存在,可以被使用.

1. 改变表的几种情况(3) 运行时会加表级锁

删除表里的约束条件

SQL> ALTER TABLE 表名 DROP CONSTRAINTS 约束名 [CASCADE];

会把约束相关的索引一起删除. CASCADE能同时删去外键的约束条件.

把表放在或取出数据库的内存区

SQL> ALTER TABLE 表名 CACHE;

SQL> ALTER TABLE 表名 NOCACHE;

改变表存储的表空间

SQL> ALTER TABLE 表名 MOVE TABLESPACE 表空间名 ;

19

J2EE @ zxw

注意: 如果被转移表空间的表含有索引, 表转移后索引变得不可用.

我们要删除旧索引,建立新索引

2. 删除表及表里的数据

删除表

SQL> DROP TABLE 表名 [CASCADE CONSTRAINTS];

清空表里的记录

SQL> TRUNCATE TABLE 表名;

按时间清空日志表里的记录,使用重新命名的方法

(应用程序可能有短暂出错, 可以选择在不繁忙的时间执行)

按原来表A的建表语句创建新表A1,把表A重命名为A2(如果表A上有较频繁的DML操作,

会对表加上行级锁,重命名过程用递归的方式循环做,直到DML操作结束,命名成功).

把创建新表A1重命名为A

历史记录表A2备份或删除

3. 删除表后应该注意的问题

删除表后把表里的索引一起删去.

删除表后会结束基于它的悬而未决的事物

删除表后根据表创建的views,synonym,stored procedure,stored function依然存在,

但views,synonym变成非法的. 需要手工找出它们并删除

如果用了CASCADE CONSTRAINTS会把与它相关的约束一起删除

此操作不可回退

4. 给表加注释

加注释的语法

SQL> COMMENT ON TABLE 表名 | COLUMN表名.字段名IS ‘text‘

加注释的例子

SQL> comment on table s_emp is ‘Enployee information‘;

SQL> comment on column s_https://www.360docs.net/doc/c113543854.html,st_name is ‘‘;

十三、创建序列号

1. 创建序列号里各参数的解释

SQL> CREATE SEQUENCE name [INCREMENT BY n]

[START WITH n] [{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}]

INCREMENT BY n 一次增长n 个数字

NOMAXVALUE 缺省值10E+27

NOMINVALUE 缺省值1

NOCYCLE 不循环, 常用于唯一关键字

CACHE n 在内存里缓存n个序列,出错回退时会丢失

oracle8i里默认的n是20

序列号的名称一般可以采用“表名_字段名”的命名规则

2. 插入自动增长序列号字段的方法

INSERT时如果要用到从1开始自动增长的数字做唯一关键字, 应该先建立一个

序列号.

20

J2EE @ zxw

CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1

MAXVALUE 99999 NOCYCLE NOCACHE;

其中最大的值按字段的长度来定,比如定义的自动增长的序列NUMBER , 最大值

为999999

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

例子: SQL> insert into s_dept(id, name, region_id) values

(s_dept_id.nextval, 'finance', 2);

1 row created.

只有运行了序列号的名称. nextval后序列号的名称. currval 才有效才有值.

3. 查询序列号的情况

SQL> select sequence_name, min_value, max_value, increment_by,

last_number from user_sequences;

其中last_number指的是序列号的下一个值.

4. 改变序列号

SQL> ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];

注意: 不能改变它的起始值

如果要改变序列的起始值, 先把序列号删除掉, 再新建一个.

5. 删除序列号

SQL>DROP SEQUENCE sequence;

6. 不能用序列号的nextval和currval的地方

视图的查询

有distinct的查询

有group by,having,order by的查询

有子查询的查询

表里的缺省值

十四、创建视图

1. 视图的概念和优点

视图是基于一个或多个表及视图的一些查询语句, 它象显示数据的视窗, 它本

身是不存储数据的.

视图可以限制数据库的访问, 更好的控制权限

使用户使用简单的查询语句

数据的非依赖性

同一数据的不同表现形式

2. 创建视图的语法

SQL> CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)] AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

参数解释:

FORCE 表不存在时,视图仍然可以创建成功

WITH CHECK OPTION 只有符合视图定义的记录才能被插入或修改

WITH READ ONLY 不允许DML操作

Oracle8i以后创建视图可以用order by

21

J2EE @ zxw

3. 创建修改视图的例子

SQL> CREATE OR REPLACE VIEW salvu41 AS SELECT id, first_name FIRST, last_name LAST, salary MONTHLY_SALARY

FROM s_emp WHERE dept_id = 41;

SQL> CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT https://www.360docs.net/doc/c113543854.html,, MIN(e.salary),

MAX(e.salary),

AVG(e.salary) FROM s_emp e, s_dept d WHERE e.dept_id = d.id GROUP BY https://www.360docs.net/doc/c113543854.html,; 注意: 如果用select * from table_name创建的视图

table_name的结构改变后 view要重建或compile后才能显示新的字段内容

4. 查询视图的数据字典

SQL> set long 1600;

SQL> select view_name,text from user_views;

说明: 可以根据视图text_length来设置set long 数字;

User_updatable_columns视图能查询视图里能被修改的字段

5. 简单和复杂的视图对比

特性简单视图复杂视图

表的数量一个多个

有函数吗? 没有有

有分组操作吗? 没有有

有基于视图的DML操作吗? 有没有

6. 在视图上可以用DML命令吗?

可以, 但有一定的限制条件

没有下面的情况, 可以删除view里的记录. group function, group by, distinct

没有上面和下面的情况, 可以修改view里的记录. 字段表达式,

例如: salary*12 含rownum的view

没有上面两种情况, 且view里含基表里所有非空字段的情况, 可以往view里插入记录.

7. 在视图里使用 WITH CHECK OPTION约束条件

SQL> create or replace view empvu41

as select * from s_emp where dept_id = 41

with check option constraint empvu41_ck;

如果运行下面命令会出错ora-01402

SQL> update empvu41 set dept_id=42 where id=16;

原因: 视图empvu41里规定只能看部门号为41的记录修改后会把记录排除在视图empvu41以外

与它的约束条件冲突

8. 删除视图

SQL> DROP VIEW view_name;

十五、创建索引

1.索引的概念

索引是数据库里的一种数据对象

它利用B*树, hash, bitmap结构直接快速地访问数据

它和表是分开存放的两个实体

索引创建好了后, 由系统自动调用和管理

2. 什么时候创建索引?

22

J2EE @ zxw

自动创建的索引:唯一关键字, 唯一的约束条件

手工需要创建的索引:大表查询时, sql语句where后经常用到的字段或字段组合

字段内容差别很大有大量NULL值表很大, 返回记录数较少

3. B*树索引的结构每个索引由字段值和指针或ROWID组成

4.创建索引的语法

CREATE INDEX 索引名 ON 表名 ( 字段1, [字段2, ……] ) TABLESPACE 表空间名;

数据库及Oracle基础知识培训自学教材试题_V1 0

Oracle初级试题 一、选择题(20% 不定项每题2分) 1.对于Oracle用户方案下,根据模式/映像,请选出不属于模式的对象(D) A.表B.索引C.视图D.约束 2.在客户端配置哪个文件,可以使客户端访问oracle server?(A) A.tnsnames.ora B.sqlnet.ora C.listener.ora D.init.ora 3.搜索列中的数据,但只记得部分字符串,通常可以用以下哪种运算?(C) A.in B.between C.like D.exists 4.如从表中删除了一条记录,以下哪个语句可以保存数据库中的改变?(B) A.savepoint B.commit C.rollback D.update 5.下面关于视图的说法,请选出正确的(ABCD) A.一个视图可以创建为只读 B.一个视图可以用来连接两张或更多的表而被创建 C.在视图中不能含有order by子句 D.在视图中不能含有group by子句 6.在select语句中包含了where子句,请问group by子句可以放在哪里?(D) A.where子句前面 B.from子句前面 C.order by子句后面 D.where子句后面 7.关于having子句,以下说法正确的是:(C) A.having与where相同 B.having用于单行条件查询 C.having用于已分组的条件查询 D.having子句必须紧跟在where子句后面使用 8.能够在外部表上进行的操作有:(A) A.select B.update C.insert D.delete 9.在更改索引的操作(alter index)中,以下哪些子句可以定期优化索引?(AC) A.rename B.coalesce C.rebuild D.deallocate unused 10.请选出能够产生锁的操作:(AB) A.select … for update B.commit C.rollback D.lock table 二、填充题(20% 每空4分) 1.数据库最常用的DML操作有SELECT、UPDATE 、DELETE 和INSERT 等(要求写出操作命令)。 2.假设有两个数据N1和N2,请用函数实现如下算法:当N1>N2时,返回“大于”; 当N1=N2时,返回“等于”;当N1N2 then Return ‘大于’;

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库

1常见数据库 1.1MySql : 甲骨文 1.2Oracle: 甲骨文 1.3SQL Server: 微软 1.4Sybase: 赛尔斯 1.5DB2: IBM 2MySql基础知识 2.1关系结构数据模型数据库 2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等 操作数据库 CREATE DATABASE [IF NOT EXISTS]mydb1 USE mydb1 DROP DATABASE [IF NOT EXISTS] mydb1

ALTER DATABASE mydb1 CHARACTER SET utf8 操作表 插入表 CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) ); 更改表 ALTER TABLE t_user ADD (student varcher(20)) ALTER TABLE t_user MODIFY gender CHAR(20) ALTER TABLE t_user CHANGE gender VARCHER(20) ALTER TABLE t_user REMANE genderTO genders ALTER TABLE t_user DROP gender 删除表 DROP TABLE t_user 2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据) 插入数据 INSERT INTO t_user VALUES() INSERT INTO 表名 VALUES(值1,值2,…)

oracle数据库基础教程期末考试简答与实践小抄范文

(1)第十章模式对象重点 数据是描述事物的符号,是数据库中存储的基本对象。在计算机中,用记录的形式来描述数据。数据与数据的解释即数据的语义是紧密结合的。数据库是指按一定的数据模型组织、描述和存储的数据的集合。数据库管理系统是位于操作系统与用户之间的一层数据管理软件。数据库系统是指数据库、数据库管理系统与计算机系统的结合。通常,在不引起混淆的情况下将数据库系统简称为数据库。 (2)数据库管理系统的主要功能包括:数据定义、数据操纵、数据库运行与控制、数据库建立与维护、数据字典定义以及数据通信等。数据库管理系统的内部分多个层次,由应用层、语言定义及其翻译处理层、数据存取层、数据存储层、操作系统以及数据库组成。 (3)数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。 (4)概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物及事物之间的关系。它是现实世界到信息世界的抽象,是数据库设计人员进行数据库设计的工具,与具体的数据库管理系统无关。组织数据模型是从数据组织方式的角度来描述信息,它决定了数据在数据库中的组织结构。 (5)关系数据库的完整性约束包括三类:实体完整性、参照完整性和用户定义完整性。实体完整性:是指关系中必须定义主键,以惟一的确定一个元组。主键由一个或多个属性构成,其取值惟一且不能为空(NULL)。参照完整性:在关系模型中,通过外键来表示表之间的联系。参照完整性是指一个表中的外键的取值必须是参照表中主键存在的值或为空(NULL)。例如,学生信息表中“班号”属性为外键,其取值必须是班级信息表中“班号”属性的某一个值或为空。用户定义完整性:是指用户根据特定应用情况,设定一些约束,反映某一具体应用所涉及的数据必须满足的语义要求。例如,“性别”属性的域为“男、女”。 (6) (7) Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库管理与应用实例教程(刘志成)课后习题及答案

【填空题】 1.默认情况OEM的URL地址是https://sd04:1158/em(其中sd04为机器名) 2.Oracle9i发布于2001,i代表Internet,11G发布于2007,g代表grid(网格) 3.在oracle内存结构中,保存正在执行或可能执行的代码的区是代码区 4.在oracle进程结构中,用于实现进程监控功能的进程是PMON 1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。 2.一个表空间物理上对应一个或多数据文件 3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分成为数据段、索引段、回滚段、LOB段和临时段。 1.在设计表时,对于邮政编码最适合的数据类型是CHAR 2.在alter table语句中,如果要删除列,可以通过指定DROP COLUMN关键字来实现。 3.如果需要在表中插入一批已经存在的数据,可以在insert语句中使用SELECT语句。 4创建一个update语句来修改goods表中的数据,并且把每一行的t-id值都改成15,应该使用的SQL语句是UPDATE SCOTT.Goods SET t_ID=’15’ 5.使用DESC命令可以显示表的结构信息 6.两个表的主关键字和外关键字的数据应该对应一致,这是属于引用完整性,通常可以通过主键和外键来实现。 7.UNIQUE约束通过确保在列中不输入重复值保证一列或多列的实体完整性。 1.在select语句中选择满足条件的记录使用where关键字,分组之后进行选择使用having 关键字 2.用来返回特定字段中所有值得总和的聚合函数是SUM 3.编写查询语句时,使用%通配符可以匹配多个字符。 18.集合运算符UNION实现集合的并运算,操作符INTERSECT实现了对集合的交运算,而MINUS则实现了减运算 19.如果要定义只读的视图,可以在创建视图时使用READ ONLY关键字 20.删除视图的PL\SQL语句是DROP VIEW [用户方案.]视图名 21.在使用CREATE INDEX创建索引时,使用BITMAP关键字可以创建位图索引 22.聚集(Cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键 23.在为表中某个列定义PRIMARY KEY约束PK_ID后,则系统默认创建的索引名为PK_ID 24.如果表中某列的基数比较低,则应该在该列上创建反向索引 25.如果要获知索引的使用情况,可以通过查询DBA_INDEXES视图,而要获知索引的当前状态,可以查询INDEX_STATS视图。 26. 在Oracle的PL/SQL程序中,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE 类型的变量,由系统根据检索的数据表列的数据类型决定该变量的类型,也可以使用%ROWTYPE 类型的变量用来一次存储从数据表中检索的一行数据。 27. SYSDATE函数可以获得当前系统的日期,SUBSTR(s,start,len)函数可以实现从指定的字符串中取指定长度的字符串。 28. 用来变异存储过程的PL/SQL语句是ALTER PROCEDURE,CREATE FUNCTION语句可以用来创建函数。

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

数据库基础知识试题

数据库基础知识试题 部门____________ 姓名__________ 日期_________ 得分__________ 一、不定项选择题(每题分,共30分) 1.DELETE语句用来删除表中的数据,一次可以删除( )。D A .一行 B.多行 C.一行和多行 D.多行 2.数据库文件中主数据文件扩展名和次数据库文件扩展名分别为( )。C A. .mdf .ldf B. .ldf .mdf C. .mdf .ndf D. .ndf .mdf 3.视图是从一个或多个表中或视图中导出的()。A A 表 B 查询 C 报表 D 数据 4.下列运算符中表示任意字符的是( )。B A. * B. % C. LIKE 5.()是SQL Server中最重要的管理工具。A A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器 6.()不是用来查询、添加、修改和删除数据库中数据的语句。D A、SELECT B、INSERT C、UPDATE D、DROP 7.在oracle中下列哪个表名是不允许的()。D A、abc$ B、abc C、abc_ D、_abc 8.使用SQL命令将教师表teacher中工资salary字段的值增加500,应该使用的命 令是()。D A、Replace salary with salary+500 B、Update teacher salary with salary+500 C、Update set salary with salary+500 D、Update teacher set salary=salary+500 9.表的两种相关约束是()。C

Oracle11g数据库基础教程-参考答案资料

第1章Oracle 11g数据库安装与配置 1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对 具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较 高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据 库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的 对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速 访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据 库都属于远程访问)。(必须启动) OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非必须启动) OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非必须启动) OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+对象和分布式环境下的事务资源管理器的服务。

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

ORACLE数据库基础知识1

第一部分 Oracle数据库概念与原理 一、Oracle数据库概念 1. 数据库 数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。 2. Oracle数据库 Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。 二、Oracle数据库原理 1. Oracle数据库的基本任务 (1)录入数据; (2)存储数据; (3)查询、处理数据

2. Oracle数据库的组成结构 Oracle按照应用情况可以分为核心数据(DATA)、操作系统(Operation System)、数据库服务器部分(Oracle Server)、Oracle SQL Server程序、Oracle工具(包括SQL*PLUS和很多像Developer 2000、designer 2000等工具)以及Oracle的各种应用。 按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成: ⑴实例(Instance):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。 ⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。 ⑶程序:也是Oracle数据库的过程,主要包括客户过程(client processes),根据用户的要求向服务器过程提出需求信息的请求;服务器过程server processes),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。 ⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。 日志文件(Log File),也称重演日志文件(Redo Logs File)或事务记录文件(Trasaction Log File),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。 控制文件(Control File),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。 每个数据库至少应该有两个以上的控制文件和日志文件备份。 ⑸内存结构 Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理, 达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块: ① Data Buffer Cache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。 ② Dictionary Cache(Row Cache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。 ③ Redo Log Cache(Transaction Log Cache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。 ④ Share SQL Pool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。 3. Oracle数据库的数据处理流程

Oracle数据库基本数据类型

oracle基本数据类型

oracle 数据库中讨论char ,varchar ,varchar2 数据类型! 这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了? 首先我们先来分析3个数据类型的说明: 1。char CHAR的长度是固定的,最长2000个字符。 2。varchar 和 varchar2 可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。 其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。 知道了他们的特点我们就来讨论下使用区别 1.char和varchar、varchar2 由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别: varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的

‘以空间换效率’。 varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar和varchar2会更好一些。 当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。 2。varchar和varchar2 这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。 因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。 所以我得出了以下结论: 如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle 之外其他数据库兼容就不要用varchar2。 ORACLE中的数据类型分类 ORACLE中的数据类型不可谓不多,下面把我这两天来的学习体会写一下吧! 1、字符数据类型:包括我CHAR,VARCHAR2,LONG。 CHAR型可以存储字母数字值,这种数据类型的 列长度可以是1到2000个字节。如果未指明,则默认其占用一个字节,如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。 VARCHAR2型其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名。数据类型大小在1至4000个字节,但是和CHAR不同的一点是:当你定义了VARCHAR2长度为30,但是你只输入了10个字符,这时VARCHAR2不会像CHAR一样填充,在数据库中只有10具字节。

Oracle11g数据库基础教程-参考答案

Oracle11g数据库基础教程 参考答案

第1章Oracle 11g数据库安装与配置1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) ● OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) ● OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据库都属于远程访问)。(必须启动) ● OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非 必须启动) ● OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非 必须启动) ● OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) ● OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) ● OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) ● OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+ 对象和分布式环境下的事务资源管理器的服务。

Oracle数据库基础知识(华为内部培训资料)

课程IL001100 ORACLE数据库基础知识 ISSUE1.0 开心Java整理

目录 课程说明 (1) 课程介绍 (1) 课程目标 (1) 相关资料 (1) 第1章ORACLE数据库概述 (2) 1.1 产品概述 (2) 1.1.1 产品简介 (2) 1.1.2 基本概念 (3) 1.2 ORACLE系统结构 (4) 1.2.2 ORACLE物理结构 (4) 1.2.3 系统全局区 (6) 1.2.4 进程 (8) 1.3 存储管理 (9) 1.3.2 逻辑结构 (10) 1.3.3 表(Table) (14) 1.3.4 视图(View) (18) 1.3.5 索引(Index) (18) 1.3.6 同义词(Synonym) (19) 1.3.7 序列(Sequence) (19) 1.3.8 数据库链(Database Link) (19) 第2章管理ORACLE数据库 (21) 2.1 基本概念 (21) 2.1.1 数据字典 (21) 2.1.2 事务管理 (23) 2.1.3 数据库管理员(DBA) (24) 2.1.4 ORACLE的四种状态 (25) 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 (26) 2.2.1 启动数据库 (26) 2.2.2 关闭数据库 (26) 2.3 svrmgrl方式的ORACLE数据库启动和关闭 (28) 2.3.1 启动数据库 (28) 2.3.2 关闭数据库 (30) 2.4 应用开发工具(SQL * Plus) (31) 2.4.1 SQL (32) 2.4.2 PL/SQL (33)

Oracle 11g 数据库基础教程(第二版) 张凤荔 实验5

实验五 实验内容: 1.使用条件语句 执行例9.4中程序,观察运行结果。 例9.4 下面演示了IF语句的使用方法,代码如下: SET ServerOutput ON; DECLARE Num INTEGER := -11; BEGIN IF Num < 0 THEN dbms_output.put_line('负数'); ELSIF Num > 0 THEN dbms_output.put_line('正数'); ELSE dbms_output.put_line('0'); END IF; END; / 程序中声明了一个整形变量Num,使用IF语句判断Num是正数、负数或者0,程序运行结果为‘负数’。

2.使用分支语句 执行例9.5中程序,观察运行结果。 例9.5 使用CASE语句根据给定的整数输出对应的星期值,代码如下: SET ServerOutput ON; DECLARE varDAY INTEGER := 3; Result VARCHAR2(20); BEGIN Result := CASE varDAY WHEN 1 THEN '星期一' WHEN 2 THEN '星期二' WHEN 3 THEN '星期三' WHEN 4 THEN '星期四' WHEN 5 THEN '星期五' WHEN 6 THEN '星期六' WHEN 7 THEN '星期七' ELSE '数据越界' END; dbms_output.put_line(Result); END; / 程序中声明了一个整形变量varDAY和一个字符型变量Result。使用CASE语句判断varDAY 变量是星期几。如果变量varDAY在1~7之间,则能显示相应的星期信息:否则返回提示信息‘数据越界’。程序运行结果为‘星期三’。

Oracle数据库基础题库【含答案】

一、 判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE 语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

oracle数据库基础使用方法

oracle数据库基础使用方法 RACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能.下面是小编收集整理的oracle数据库基础使用方法,希望对大家有帮助~~ oracle数据库基础使用方法工具/原料 windows xp,win7,server2003等 oracle 10g,oracle 11g 准备工作 1在电脑上安装oracle 2然后在开始菜单里打开oracle控制台。输入用户名密码登陆创建表空间 1oracle的基本操作有创建数据库,创建建用户,创建表空间等等,这里从创建表空间开始讲起,创建数据库的基本流程就是先建表空间,然后建用户说起,点击控制台服务器标签 2点击表空间后弹出表空间管理窗口,这里可以对表空间过行,创建,编辑和修改的操作。由于oracle是刚刚安装的,列表的表空间是oracle自建的。这几个表空间是不允许删除的。 3点击右上角创建按钮,弹出新建表空间窗口,主要是由两部分组成,一般信息里配置表空间的名称,表空间类型,及状态等信息,存储里面配置表空间的存储位置,存储文件名称,空间大小等信息4配置完毕后可以点击显示SQL按钮查看SQL语句的详细信息。

这些语句可以直接放在数据库连接工具如DbVisualier里面执行。执行语句创建表空间的效果跟控制台里的效果一样。 5配置完成后点击确定按钮完成表空间的添加。 创建用户 1点击服务器标签,在安全性下点击用户 2系统列出当前服务的用户列表 3点击右上角创建按钮,弹出新建用户窗口用户需要配置的信息比较多,如果对数据库控制不高,只要配置一般信息及角色即可4首先输入用户的名称,密码,默认表空间及临时表空间。 5点击角色标签后弹出用户角色编辑,角色就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。默认用户只有连接的权限6点击编辑角色后弹出角色编辑窗口,选中用户角色后点击移动按钮,把角色从左边框选到右边框里表示添加成功,或者直接双击左边角色也可以把角色添加到右边框里。DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。适合初学者测试时使用,没有什么限制。 7角色添加成功后点击确认完成用户的创建,然后可以在用户列表里看到刚刚新建的角色 数据库的连接 数据库的连接我们可以通过DbVisualizer来连接,主要的配置

相关文档
最新文档