Oracle

  1. Oracle和plsql的安装。
  2. 查询

解析步骤: from -> where -> select -> order by

SELECT [DISTINCT] {*,column alias,..}

FROM table alias

WHERE 条件表达式

ORDER BY 排序字段列表 [asc|desc]

条件查询

模糊查询

排序

子查询:嵌套查询

  1. 函数

单行函数:日期,nvl(null值处理),decode(多值判断)

多行函数:count,max,sum,avg

  1. 分组

解析步骤1)、from 2)、where 3)、group 4)、having 5)、select 6)、order by

select distinct * | 字段 | 表达式 | 函数 as 别名

from 表 表别名

where 过滤行记录条件

group by 分组字段列表

having 过滤组

order by 字段列表 asc | desc

  1. 行转列

select name,

 min(decode(course, '语文', score)) 语文,

 min(decode(course, '数学', score)) 数学,

min(decode(course, '英语', score)) 英语

from tb_student

group by name;

  1. DDL

creat创建

drop删除

after修改

  1. 三范式
  2. 设计表
  1. 确定表名
  2. 字段名 类型 约束(主键,外键,默认,唯一,非空,检查)

主键:(唯一且非空)  primary key

外键:其他表参考自己的某字段

默认:当没给值时,给一个默认值   default(18)

非空:不能为空    not null,

唯一:唯一 unique

检查:自定义的规则 check(age>=18)

  1. 创建表

给表名添加注释  comment on table tb_user is '用户表';

给表字段添加注释 comment on column tb_user.age is '年龄';

给约束添加名字   constraint nn_user_pwd  约束

追加默认   alter table tb_user modify (age default(18));

追加非空   alter table tb_user modify (userpwd constraint nn_user_pwd not null);

追加自定义约束  alter table tb_user add constraint ck_user_pwd check(length(userpwd) between 4and 18);

  1. 删除表

直接删除表    drop table emp_his;

先删除从表,再删除主表,同时删除约束

drop table tb_txt cascade constraints;

drop table tb_user cascade constraints;

删除主表的同时级联删除约束(要求从表外键设置null元素)

drop table emp_his cascade constraints;

  1. 修改表结构
  2. 关于约束

约束的禁止和启用

ALTER TABLE tb_user disable constraint nn_user_name;

ALTER TABLE tb_user enable constraint nn_user_name;

  1. 视图

建立在表或者结果集上的虚拟表。

不是所有的用户都能创建视图,要授权。

授权: grant dba to scott;

 回收: revoke dba from scott;

创建:create or replace view vw_xixi_haha as select empno,ename,sal,deptno from emp with read only;

  1. 索引

提高查询效率

创建索引 create index idx_emp on emp(sal,ename);

删除索引 drop index idx_emp;

  1. 序列

程序管理流水号。序列在创建时,没有与表关联,在操作数据时与表关联。

创建:create sequence seq_tb_user start with 2 increment by 2;

查询下个值 select seq_tb_user.nextval from dual;

查询当前值 select seq_tb_user.currval from dual

删除序列   drop sequence seq_tb_user;

10.事物

单个逻辑单元内操作的一组相关操作。要么全部完成,要么全部没有完成。

保证事物的安全性。ACID

A原子性:事物中所有数据的执行,要么全部执行,要么全部不执行。

C一致性:事物完成时,所有数据保持一致的状态。

I隔离性:事物在另一个事物修改前或修改后访问。

D持久性:事物对数据库的修改是持久的,不丢失数据。

事物的隔离级别

丢失更新:AB同时存储数据,结果没有是预想的A+B的数据。

脏读:A修改了数据没有提交,B读取了修改后的数据,A回滚,B读取的无效。

不可重复读:A读了一串数据,B刚对A读的数据修改,A再读发现跟刚才不一样。

幻读:A读取数据带WHERE条件查询,B插入数据也是A的WHERE条件,T1再次查询,发现出现了B的记录。

事物的开启:自动开启于 DML 之 insert delete update

事物的结束:

成功:正常执行完成的 DDL 语句:createalterdrop

正常执行完 DCL 语句 GRANTREVOKE

正常退出的 SQLPlus 或者 SQL Developer 等客户端

如果人工要使用隐式事务,SET AUTOCOMMIT ON (只针对一个连接)

手动提交 :使用 commit

失败:rollback ,手动回滚只能对未提交的数据回滚

非法退出 意外的断电

11.DML

Insert添加数据

insert into 表名 values(和表结构顺序和个数和类型一致的数据

insert into 表名(指定列名) values(和指定的列个数、顺序、类型一致的列数据)

Delete删除数据

delete [from] 表名 where 过滤行记录

Update修改数据

update 表名set (字段列表) =(select 字段列表 from 源表 where 过滤源表记录)where 更新记录的条件手动更改字段值:

truncate: 截断所有的数据

truncate和delete的区别:

1truncate -->ddl ,不涉及事务,就不能回滚

delete -->dml ,涉及事务,可以回滚

2truncate 截断所有的数据 delete 可以删除全部 或者部分记录

3、truncate从结构上检查是否存在主外键,如果存在,不让删除

delete 从记录上检查是否存在主外键,如果存在,按参考外键约束进行删除。

12.表连接

内连接:

笛卡尔积: 交叉连接cross join

等值连接:在笛卡尔积的基础上取条件相等        自然连接natural join

非等值连接:bewteen and,><

自连接:俩个一样的表连接

外连接:

主表在左,左外连接 left join

表和表之间的关系:一对多,多对一,多对多

13.rowid和rownum

Rowid:删除重复记录。

Rownum:必须排序,不能直接取>1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值