1、oracle常用的数据类型有 varchar2(100)、date、number。
疑问:也有varchar类型,和varchar2的区别是什么?
解:
2、Oracle只用 NUMBER(m,n) 就可以表示任何复杂的数字数据。
number可以存储浮点数,也可以存储整数;
number(8,1) 存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;
number(8) 存储总长度为8的整数;
这里有详细参考
3、oracle建表注意点:
一般表或者字段命名都是大写的,除非有项目要求是用驼峰规则来写的,要不然,一般都是大写或小写,加下划线。
表 名和字段名的风格要统一。
4、过滤和排序函数
字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON月-RR。
赋值使用 := 符号。
BETWEEN…AND… 在两个值之间 (包含边界)
回避特殊符号的:使用转义符。例如:将[%]转为[%]、[_]转为[_],然后再加上[ESCAPE ‘\’] 即可。
排序可按别名排序。
使用 LIKE 运算选择类似的值,选择条件可以包含字符或数字:
- % 代表零个或多个字符(任意个字符)。
- _ 代表一个字符
5、SQL函数分单行函数、多行函数。
单行函数:只对一行进行变换,每行返回一个结果。包含 字符、数值、日期、转换、通用函数。
5.1 大小写控制函数:lower、upper、initcap (首字母大写,其它小写)。
5.2 字符控制函数:
trim 函数删除字符串两边的制定字符,默认是空格。
5.3 数字函数:
5.4 日期型数据有:日期、时间。
函数SYSDATE 返回:日期、时间。
5.5 转换函数:
数据类型转换分为 显性转换 和 隐性转换。
select TO_DATE(‘2012年10月29日 08:10:21’,’yyyy“年”mm”月”dd“日 ”hh:mi:ss’)
From dual
select to_number('¥1,234,567,890.10','L999,999,999,999.99') from dual;
to_char 函数对日期的转换:to_char(date,‘format_model’)
to_date 函数对字符的转换:to_date(char[,‘format_model’])
to_char 函数对数字的转换:to_char(number,‘format_model’)
to_number 函数对字符的转换:to_number(char[,‘format_model’])
5.6 通用函数
nvl 函数:将空值转换成一个已知的值,可以使用的数据类型有日期、字符、数字。
nvl2 函数:expr1不为NULL,返回expr2;为NULL,返回expr3。
nullif 函数 : 相等返回NULL,不等返回expr1。
coalesce 函数:COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。
5.7 条件表达式
- case 表达式
- decode 函数
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])
select last_name,job_id,salary,
decode(job_id,'IT_PROG',1.10*salary,
'ST_CLERK',1.15*salary,
'SA_REP',1.20*salary,
salary) revised_salary
from employees;
5.8 嵌套函数
单行函数可以嵌套,嵌套函数的执行顺序是由内到外。
6、多表查询
连接 n个表,至少需要 n-1个连接条件。
主要内容包含:
- 笛卡尔积; 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。
- 根据结果集中是否包含一个表与另一个表不匹配的行分为:内连接、外连接(左外、右外、满外);
- 根据连接条件分为:等值连接(自连接)、非等值连接;
- 自然连接-会以两个表中具有相同名字的列为条件创建等值连接;
- 叉集-和笛卡尔积结果一样;
- on-指定额外的连接条件; using-指定等值连接中需要用到的列;
非等值连接:
SELECT e.last_name, e.salary, j.grade_level
FROM employees e, job_grades j
WHERE e.salary
BETWEEN j.lowest_sal AND j.highest_sal;
内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL). 外连接的 WHERE 子句条件类似于内部连接, 但连接条件中没有匹配行的表的列后面要加外连接运算符, 即用圆括号括起来的加号(+).
在SQL: 1999中,内连接只返回满足连接条件的数据
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右) 外连接。
两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行 ,这种连接称为满外连接。
外连接语法:使用外连接可以查询不满足连接条件的数据。外连接的符号是 (+)。
叉集:使用CROSS JOIN 子句使连接的表产生叉集。叉集和笛卡尔集是相同的。
自然连接:NATURAL JOIN 子句,会以两个表中具有相同名字的列为条件创建等值连接。在表中查询满足等值条件的数据。如果只是列名相同而数据类型不同,则会产生错误。
SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations ;
使用 USING 可以在有多个列满足条件时进行选择。JOIN 和 USING 子句经常同时使用。
使用ON 子句创建连接(常用):
自然连接中是以具有相同名字的列为连接条件的。
可以使用 ON 子句指定额外的连接条件。
这个连接条件是与其它条件分开的。
ON 子句使语句具有更高的易读性。
7.Unicode与UTF-8的关系: