Oracle相关问题及知识点

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都是可变长度的。

你可能感兴趣的:(Oracle相关问题及知识点)