现在的位置: 首页 > 综合 > 正文

Oracle相关问题及知识点

2018年02月02日 ⁄ 综合 ⁄ 共 3457字 ⁄ 字号 评论关闭
1. 简单介绍一下SQL、PL/SQL、SQL/PLUS
答:1) SQL一种标准语言,第四代语言

2) PL/SQL 在SQL基础上,一个过程化SQL
3) SQL/PLUS不是一个语言,是一个环境,是一个工具,支撑SQL
注:8i以前不支持标准SQL,到9i以后才彻底支持标准SQL(ANSI),此外还有自已的SQL语句。

2. SQL命令有关注意事项
答:1)大小写不敏感

2)命令输入至buffer中

3. 主键和外键
答:主键:1)不许重复

2)不许为空

外键:1)其内容为本表或其他表某个字段

2)对应的字段既可以是主键,也可以是唯一键

4. 单引号和双引号
答:单引号:日期、字符串,单引号里内容大小写敏感

双引号:字段别名, 双引号里内容大小写敏感

5. Null和NVL
答:Null:在不特殊处理,任何包含null的表达式其值都是null。

NVL:有数据取实际数据,为null取后面数据。

6.DISTINCT

答:1) 紧跟在select后,或者复合函数中;

2) 多个字段联合唯一;

7. SQL*PLUS中文件命令EDIT如何退出
答:EDIT调用默认的文本编辑器编辑文件, 其退出即为该文本编辑器的退出方式。

8. 日期格式
答:日期格式为:’日-月-年’,例:17-JUN-99。如非这种格式会按字符串处理。

9. SQL中表达式和逻辑操作符
答:1) between…and… :包括起止值,可以终止值小于起始值,但这样的查询没有任何结果;

2)使用like操作符对字符串进行查找时,“%”代表所有字符,“_”代表单个字符。如果要查询的目标中本身带有关键字符“%”、“_”,可使用转义符“/”,例:like ‘abcd/_bcd’ escape ‘/’

10. round和trunc

答:round(46.938) 47

trunc(46.938) 46

Round(46.938,-2) 0

Round(56.938,-2) 100

Trunc(46.938,-2) 0

Trunc(56.938,-2) 0

11.将日期转为字符串函数to_char 中的一些日期格式元素:

答:ddd 一年的第几天

Dd 一月的第几天

D 一个星期的第几天

Year 英文全拼年份

Month 英文全拼月份

Day 英文全拼星期

11. RR日期格式

答:只指定二份年份的情况下:0-49代表本世纪即2000-2049,50-99代表上一世纪即1950-1999

12. 如何提高SQL语句的执行速度?

答:1) 使用索引

2) 尽量减少嵌套语句的使用

13. 组函数(Group function)

答:1) count(*): 统计总数,包括null值

Count(column_name): 内有字段名称,统计非null行的总数

2) 当select后既有单独列,又有组函数,该列名一定要出现在group by后,否则会报错。Group by后也可跟不在select后的列名。

3) where语句后不能跟组函数,这种情况下可用having

14.子查询

答:既可用于from后,也可以用于where、having里

15. 一些常用的字典表

答:user_tables

User_views

User_indexes

User_constraints

User_synonyms

User_sequences

16. 实体关系模型中一些约定俗成的表示方式

答:# 不许重复

* 不能为空

#* 主键

(#)* 第二主键

O 可为空

>—----- 每个左表中的记录必须对应一个且只能对应右表中一个记录。右表中每个记录可以对应一至多个左表中的记录

>|—----- 左表中必须要有一个外键,其内容来自于右表。在ERD中没有明确标出,要建表人自已建。

17. 关系类型

答:1) 一对一:这种关系的二个表完全可合成一张表,用得非常少。

2)多对一:用得最多。

3)多对多:在具体开发时一定要找出中间载体实现二个表的连接。

18.约束类型

答:1) 主键

2)外键

3) 非空值

4) 唯一值

19. 创建数据表

答:1) 语法:

CREATE TABLE [schema.]table

(column datatype[DEFAULT expr]

[column_constraint],

[table_constraint]);

2) Oracle数据库对象命名规则

. 以字母开头

. 1-30个字符长度

. 由A-Z、a-z、0-9、_、$以及#组成

表名在user_tables中保存为大写,如要忠实地记录表名,可在表名称上加单引号,如:’abc ‘。

3)字段数据类型

CHAR [(length)]:定长字符数据,最长可以到2000字节。Length指定了被存储字符的最大长度。

VARCHAR2 [(length)]:可变长度的字符数据,最长可以到4000字节。Length指定了被存储字符的最大长度。

LONG:可变长度的字符数据,最大长度可以为2GB。

NUMBER [(precision[,scale])]:不进行数据转换而直接参与算术运算的数据。Oracle中只有这种数字类型。Precision表示精度,数字中的数字位数,范围为1~38。Scale表示尾数,小数点右边的数字位数,可以在-84~127之间变化。

RAW:原始的二进制数据,最大长度可以为2000字节。在不同字符集的系统之间移动数据时,不能用Oracle转换RAW数据。

LONG RAW:原始的二进制数据,最大长度可以为2GB。在不同字符集的系统之间移动数据时,不能用Oracle转换RAW数据。

4)约束

● 语法:字段级别约束:column [CONSTRAINT constraint_name] constraint_type,

数据表级别约束:column,…

[CONSTRAINT constraint_name] constraint_type(column,…),

●注意:a. 表级别的约束和表之间有逗号隔开;约束名如不设定,系统会自动分配约束名称,类似于SYS_C168。约束名称建议用“表名_字段名_约束类型缩写”。例:

CREATE TABLE friend …

Phone varchar2(15) not null,…

Last_name varchar2(25) constraint friend_last_name_nn not null,…

b. not null只能用于字段级别约束

20. 几种约束类型

答:1. 主键约束:

… id NUMBER(7) CONSTRAINT s_emp_id_pk PRIMARY KEY,…

…id NUMBER(7), CONSTRAINT s_emp_id_pk PRIMARY KEY(id),…

2. 外键约束:

…dept_id NUMBER(7) CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),…

3. 非空约束:

…phone VARCHAR2(15) NOT NULL,…

4. 唯一值约束

…phone VARCHAR2(10) CONSTRAINT s_emp_phone_uk UNIQUE,…

21. 两种有趣的insert语句

答:1) 通过变量输入值:

Insert into s_dept(id,name) values(&id,’&name’)

2) 通过子查询插入值(子查询结果的字段类型和顺序与要插入字段类型与顺序一致)

Insert into history(id,name) select id,last_name from s_emp where start_date < ’01-JAN-94’

22.VARCHAR和VARCHAR2的区别和联系

答:VARCHAR和VARCHAR2是一样的东西,都是可变长的(不会用空格填充的),Varchar不推荐使用,Oracle公司以后可能会用Varchar做其他用途,但Varchar2肯定不会,Oracle公司做过保证。以下可见相关代码:
SQL> create table test_char(col1 char(10),col2 varchar(10),col3 varchar2(10));
表已创建。
SQL> insert into test_char values('aa','aa','aa');
已创建 1 行。
SQL> select length(col1),length(col2),length(col3) from test_char;
LENGTH(COL1) LENGTH(COL2) LENGTH(COL3)

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

10 2 2

这样我们清楚了,char(包括nchar)是定长的,varchar,varchar2,nvarchar2都是可变长度的。

抱歉!评论已关闭.