数据库 数据库实例 表空间(逻辑单位) 数据文件(物理单位)
oracle库只有一个实例orcl,和MySQL
mysql:创建库、创建表;多数据库
oracle:创建表空间,创建用户,用户建表,多用户
SQL:分类及每类常见操作符
查询语句结构:
select 列名 * from 表名 where条件 group by分组条件 having过滤 order by排序
oracle:
1、dual:虚表,伪表,补齐语法结构 select 1+1 from dual;
2、别名查询 :列名 别名(as关键字可省略,别名中不能特殊字符 关键字加“”)
3、nvl(num ,0)如果参数1为null则返回2 ,null不确定的值 不可预知的内容 不可做四则
4、拼接:“”别名时使用,‘’使用的值:是字符
|| 连接符, select ‘姓名:’||ename from emp;
concat('姓名:',ename) from emp; 列名是concat(‘姓名:’,ename)值是姓名:*
5、where条件查询:特殊字符 后面用escape‘’转义
关系运算符: > >= < <= != <>
逻辑运算符:and or not 其他运算符:like between in(set) is null is not null
6、排序:order by asc desc 注意null 最后加: nulls first | last
7、函数:要有返回值,单行函数,多行函数:对某列all处理max min count sum avg
求余:mod mod(9,3)0 ; mode(9,4)1
substr('sbgho',0,3)sbg ; substr('shogn',1,3)sho
长度:length('abggg') 去空格trim(‘’)替换字符replace('hello','l','s')
9.日期函数:今天select sysdate from dual; 3月后 add_months(sysdate,3) 3天后sysdate+3
10、执行顺序:from where group by having select order by
where后不能接聚合函数,可接单行函数;having在group by后执行,可接聚合函数
11、分组:select 分组条件,分组后的操作 from 表名 group by 分组条件 having 条件过滤
12 exists,数据量大时高效
13 集合运算:列类型一致 按照顺序写 列的数量要一致,如果不足用空值或指定相同类型的具体值
14 五大约束:
15 回滚点
提交commit,保持点/回滚点savepoint pointname,回滚rollback
16 视图: 对查询结果的封装 屏蔽表中细节
create or replace view view_test as select ename,job,mgr from emp with read only;
//尽量不要通过视图修改数据
17、PLSQL procedure language过程语言,Oracle对SQL的一个扩展
可像Java中一样写 if else if 编写循环for while
declare
声明变量
变量名 变量类型
变量名 变量类型:= 初始值
vrow emp%rowtype;---声明记录型变量
begin
业务逻辑
end;
dbms_output.put_line()相当于Java中的sout
业务逻辑可以是:
while 条件 loop
end loop; |
for 变量 in 起始值 ……结束值 loop
end loop |
loop exit when 条件 end loop |
18、游标:操作查询结果集,相当于JDBC中的resultSet
19 、异常
too_many_rows:查询出多行记录,赋值给rowtype记录的一行数据变量
no_data_found:没有找到数据
20、存储过程:封装在服务器上一段已经编译好的plsql代码片段
补充:
cascade constraint:强制删除表:先删除外键关联表的外键约束,再删除自己
当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete,truncate不支持事务