知识点小结--Oracle

Oracle
  • 什么是数据库?
    存储数据的仓库

    • 优点:
      1.可存储大量数据
      2.方便检索
      3.保持数据的一致性、完整性
      4.安全,可共享

    • 解决的问题?
      数据的持久化(把数据写到磁盘中)

  • 用户管理: (系统管理员管理用户)
    system /sys 系统管理员

    1. 创建用户:
      语法: create user 用户名 identified by 密码;

      注意:

      • 管理员才能创建用户

      • 创建用户需要授权才能登陆 管理员要给用户授权

    2. 用户授权:

      ​ 权限 删除,添加,查询,修改
      ​ 数据库中的角色: connect、resource、 dba;

      ​ 授权: 可以给角色 获取权限
      语法: grant 角色、权限 to 用户名;

  • 表的操作

    1. 表的创建
      语法:
      create table t_name(
      字段1 数据类型1(数据长度),
      字段2 数据类型2(数据长度),
      字段3 数据类型3(数据长度),

      );

    2. 删除表:
      drop table 表名 [cascade consistent];

    3. 表的字段添加

      ​ alter table 表名 add 字段名 字段类型;

    4. 修改字段类型
      alter table 表名 modify 字段 字段类型

    5. 修改字段名:
      alert table 表名 rename column 源字段 to 新字段;

    6. 删除字段
      alter table 表名 drop column 字段名;

  • Oracle中数据类型

    1. 字符型
      • char 字符型[长度固定] 能够存储最大长度是2000 个字节
      • varchar2 字符型[长度是可变] 能存存储最大长度是4000字节
      • long 字符型[大型字符] 能存存储最大2G文本
    2. 数据型
      • number 数值型 可以存储小数 可以存储整数 默认长度是32位 最高精度38位
    3. 时间型
      • date 日期 精确到秒 2019-9-7:11:22:33
      • timestamp 时间戳 精确到 秒后面的6位 2019-9-7:11:22:33.000000
    4. 大数据类型 LOB
      • blob 存储大型二进制文件
      • clob 存储字符文件,类似 long
  • 约束

  1. 非空约束 not null

  2. .默认值的约束 default ‘’

  3. 唯一约束 unique

  4. 主键约束 unique + not null

  5. 外键约束:外键是从表中重复出现,在主表中作为主键存在

    • alter table t_stu add constraint fk_stu_class foreign key(classId) references t_class(cid);

    • 外键的特点:
      1. 外键可以在从表中重复出现 ,他在主表中是主键
      2. 一张表可以有多个外键
      3. 外键可以为null
      4. 外键的作用是关联多种表,可以建立表之间的关系 (一对一 一对多 多对多)
      5. 删除主表时候 如果 从表有使用主表的数据 是不能删除的, 从表的数据可以直接删除
      6. 2表关联了 先删除 从表 在删除主表
      7. 关键是多表查询单 必要条件

  6. check约束: 某个字段可以在一定的设置范围存储

    • alter table t_stu add constraint ck_stu_age check(sage in (18,19,20));
  • DML data manipulation language

    1. INSERT

      • insert into 表名(字段1,字段2…) values(val1,val1 …);
      • insert into 表名 values (val1,val2…)
      • create table t_stu_copy1 as select * from t_stu;复制( where 1 != 1 不把数据查出来 )
      • 序列的使用方式:
        • nextval: 获取下一值的序列
        • currval; 获取当前会话的序列
    2. UPDATE

      • update 表名 set 字段1= val1,字段2=val2 where 判断条件;
    3. DELETE

      • delete from 表名 where 条件
    4. SELECT

      • 单表查询:

        1. 基础查询 select 字段 /as [别名]/ from 表名

          • 去重复 distinct
          • select ‘编号:’ || empno || ‘姓名:’|| ename 员工信息 from emp;字段合并
        2. 条件查询 select 列名 from 表名 where 判断条件;

        3. 模糊查询 select 列名 from 表名 like 判断条件;

        4. 排序查询 select * from table where 条件order by 字段;(asc/desc)

        5. 聚合函数 + 分组

          • 字符函数 SUBSTR(x,start[,length]) 返回x的字串,从staart处开始,截取length个字符,缺 省length,默认到结尾。

          • 数字函数 ROUND(X[,Y]),四舍五入;TRUNC(x[,y]),直接截取,不四舍五入。

          • 日期函数 EXTRACT(fmt FROM d),提取日期中的特定部分。 fmt为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。

          • 日期转换函数 to_date : 将字符串转换成日期

            ​ to_char : 将日期转换成字符串

          • 其他函数 nvl(column, value) 如果column为空,返回value,否则返回x。

        6. 子查询

        7. 分页查询

      • 多表从查询:

      1. 合并结果集

        • union 去除重复并且合并; union all 不去重复的记录
      2. 连接查询

        • 交叉连接 select * from emp,dept;

          会产生很大的结果集(15 * 4 ) 60 性能低,大量无意义数据

        • 等值连接 select * from emp,dept where emp.deptno = dept.deptno;

          同样产生60条数据,只是通过过滤显示解决无意义数据

        • 内连接 select * from emp e inner join dept d on (e.deptno = d.deptno);

        • 外连接

          • 左外连接: 把左表所有数据查询出来

            select * from emp e left join dept d on e.deptno = d.deptno;

          • 右外连接: 把右表所有的数据查出来

            select * from emp e right join dept d on e.deptno = d.deptno;

          • 全外连接: 把2表不满足的记录保留

            select * from emp e full join dept d on e.deptno = d.deptno;

        • 自然连接 select * from emp e natural join dept d; //与内连接的区别??

      3. 子查询 查询语句中嵌套查询:

      4. 分组查询

        • 结构

          seledct * from t
          where 条件
          group by 分组字段
          order by 字段
          having 条件;

      5. 分页查询

        • 结构

        select t.ename,t.empno,t.num from (
        select ename,empno,rownum num from emp where rownum <= pageSize * currentPage ) t
        where t.num >= (currentPage - 1) * pageSize +1 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值