Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86644
  • 博文数量: 14
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-01 19:49
文章分类

全部博文(14)

文章存档

2011年(1)

2008年(13)

我的朋友
最近访客

分类: Oracle

2008-03-12 11:41:54

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都是可变长度的。
阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~