总结
- 基本查询:select 别名,distinct去重,nvl处理空值,||连接符
- 条件查询:where >=,<=,=,<>
- 范围查询:between and,in,is not null,is null
- 模糊查询:like ‘%’;
- 排序查询:order by
函数
- 单行函数
- 字符函数:
upper(),lower(),length(),replace()
- 数值函数:
round(),trunc(),mod()
- 日期函数:
sysdate,add_months()
- 转换函数:
to_char(),to_date(),to_number()
- 通用函数:
nvl()
- 多行函数
count\sum\avg\max\min
- 分组查询:
group by
:在分组统计时候,在select
出现的普通字段,在group by
中必须出现,在group by中出现的普通字段,在select
中可以不出现
过滤:having
:where
条件在分组之前的查询条件,having
在分组后得到结果对结果进一步筛选
多表关联查询 - 笛卡儿积:通过查询的结果,发现员工表中每条记录,都跟部门表的每条数据进行连接查询。得到结果就是一个笛卡尔积。在笛卡尔积的基础上,进一步设置关联条件(子表的外键字段=主表的主键字段),就得到内连接。
- 内连接
where tab1.字段 = tab2.字段
- 外连接
left join ,right join,
where tab1.字段 = tab2.字段(+)
- 内连接
DDL语句
- 创建表空间–代表项目的开始,只有dba权限的角色才有权限创建表空间
create tablespace 表空间名 datafile '文件路径' size 100m autoextend on next 10m;
- 创建用户
create user 用户名 identified by 密码 default tablespace 默认表空间;
- 用户授权(connect ,resource,dba)
grant connect,resource to itcast;
- 创建表
create table 表名( 字段名 字段类型, );
truncake
表名,直接摧毁表结构后重构表,比delete要快很多,但是没法按照条件删除
约束
0.主键约束 primary key
- 唯一约束
unique
- 非空约束
not null
- 检查约束
check(gender in(1,2))
- 外键约束
constraint 外键名 foreign key(字段) references 对应表(对应字段)
对表中列的属性修改
alter table 表名 moddify 列名
alter table 表名 add 列名
alter table 表名 drop column 列名
alter table 表名 rename column 列名 to 新列名
数据的增删改查
select,update,delete,insert
集合操作
并集 union all
交集 intersect
差集 minus
视图
create view 视图名 as 查询语句 with read ``only
:虚表,本身不存在数据,数据来源于原始表
索引
create index 索引名 on 表名(列名)
:目的是提高检索速度
序列
create sequence 序列名;nextval->currval
:类似于MySql的自动增长
exists & not exists
同义词
create synonym 同义词名 for 其他用户.表名
;- 同义词和视图的区别:
- 不需要dba权限就可以创建同义词
- 视图可以隐藏列,同义词不可以去掉列只是整张表的复制
SQL> shutdown
和startup