2021.07.30 Java学习笔记 之 JDBC(oracle)和 MYBATIS

Oracle总结

         对前两天的内容的一些补充

--删除
--delete from 表名 where 行过滤条件;  删除表中满足条件的数据
select * from  t_user where id in (7499,7654);

delete from t_user where id in (7499,7654);

--delete  from 表名; 删除表中所有的数据
delete from t_user;

--主外键关系下两张表中数据的删除: 
       --删除从表中的数据,可以直接删除
       delete from emp where empno = 7369;
       --删除主表中的数据,不允许直接删除,前提是被从表中数据引用
       delete from dept where deptno = 40;
       select * from dept
       select * from emp;
       --如果要删除被从表引用了的主表数据:
              --1)默认-->先删除从表中引用的那些数据,再删除主表数据
              --2)删除主表数据的同时删除那些引用了当前主表数据的从表数据   --> on delete cascade
              --3)删除主表数据,从表中那些引用了当前主表数据的外键字段设置为null --> on delete set null

-- 班级表 -->主表
--学生表--> 从表(有外键存在的表为从表)   关联了班级表的主键字段
create table yjx_class(
       cid number(5) primary key,
       cname varchar2(15)
)

create table yjx_student(
       sid number(5) primary key,
       sname varchar2(15),
       --学生所在班级编号
       cid number(5) references yjx_class(cid) on delete set null
)

insert into yjx_class values(202,'java49期');
insert into yjx_class values(204,'java48期');

insert into yjx_student values(1001,'zhangsan',202);
insert into yjx_student values(1002,'lisi',202);


select * from yjx_class;
select * from yjx_student;

delete from yjx_class where cid = 202;
delete from yjx_student where cid = 202;

drop table yjx_student;

--truncate 数据截断  与 delete之间的区别
--1)可以实现截断(删除)表中所有的数据 ,delete  可以删除所有|指定的数据
--2)不会开启事务,delete会默认开启事务
--3)truncate截断表中数据时候,如果表只主表,从表结构检查上不允许   delete删除主表中数据的时候三种方案-->三种
truncate table yjx_class;

select * from t_user;

create table haha(
       id number(5)
)

总结

--数据库 : database 数据仓库
--oracle  mysql  sqlserver
--Oracle 大型 付费的数据库

--SQL 语言
        设计表
    前提: 设计表首先应该按需遵循三范式
        1. 确定表名 
        2. 确定字段名 类型 +约束(主键 外键 非空 默 检查认 唯一)
    主键: 唯一标识一条记录(唯一并且非空)
    唯一: 唯一
    非空:不能为空
    默认: 当没给值时使用给定一个默认值
    外键:参考其他表(自己)的某个(某些)字段
    检查:自定义的规则

--DDL : 数据定义语言   表创建create  表删除drop     表修改alter

        表创建create 

            表名必须唯一,如果存在 ,必须删除
            create table 表名(
            字段名 类型(长度) 约束,
            ...其他字段....
            ..约束........
            )

        表删除drop
            drop table 表名 (cascade constraints)
            --删除表
            drop table emp_his;
            --主从表关系下删除表
            --先删除从表 再删除主表 ;同时删除约束
            drop table tb_txt cascade constraints;
            drop table tb_user cascade constraints;
            --删除主表的同时级联删除约束
            drop table emp_his cascade constraints
        
        表修改alter
            
            1. 修改表名 :rename to
            2. 修改列名: alter table 表名 rename column to
            3. 修改类型: alter table 表名 modify(字段 类型)
            4. 修改约束: 先删除 后添加
            5. 添加列: alter table 表名 add 字段 类型
            6. 删除列:alter table 表名 drop column 字段

--DML : 数据管理语言   插入insert   删除delete   修改update 

           插入insert
                INSERT INTO 表名称 VALUES (值1, 值2,....)
                INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

           删除delete
                DELETE FROM 表名称 WHERE 列名称 = 值
                DELETE * FROM table_name(删除所有行)
            
           修改update 
                UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
                UPDATE Person SET 列名称= 某值, 列名称 = 某值 ,列名称 = 某值 

                
--DQL : 查询select
      --select 数据  from 数据源,数据源.. where 行过滤条件|表连接条件 group by 分组  having 组过滤信息  order by 排序;
      --select 数据  from 数据源 join 数据源 on 连接条件.. where 行过滤条件 group by 分组  having 组过滤信息  order by 排序;

        select distinct *|字段|表达式 as 别名 from 表 表别名
        SELECT * FROM 表名; ->查询某个表中所有的记录的所有字段信息
        SELECT 列名 FROM 表名; ->查询某个表中所有的记录的指定字段信息
        SELECT 列名1,列名2 FROM 表名; -> 查询某个表中所有的记录的字段1 字段2
        SELECT distinct 列名 FROM 表名; ->去除重复记录
        SELECT 表达式 FROM 表名; ->查询表达式
        SELECT xxx as 别名 FROM 表名 表别名 ->使用别名
      
      --索引 提高效率

        前提 : 设计表首先应该按需遵循三范式
            1. 确定表名 
            2. 确定字段名 类型 +约束(主键 外键 非空 默 检查认 唯一)
        主键: 唯一标识一条记录(唯一并且非空)
        唯一: 唯一
        非空:不能为空
        默认: 当没给值时使用给定一个默认值
        外键:参考其他表(自己)的某个(某些)字段
        检查:自定义的规则
        索引: 提高查询速度的一种手段 -->目录
            1、唯一性较好字段适合建立索引
            2、大数据量才有效果
            3、主键|唯一: 唯一索引
        create index 索引名 on表名 (字段列表...)
        drop index 索引名
        create index idx_emp on emp(sal,ename);
        drop index idx_emp;
        select * from emp order by sal,ename

      --视图 
        视图:建立在表|结果集|视图上的虚拟表,有以下作用
            1. 简化:select 查询语句
            2. 重用:封装select语句 命名
            3. 隐藏:内部细节
            4. 区分:相同数据不同查询
        不是所有的用户都有创建视图的权限
            1. 前提: create view -->组 connect resource dba
            2. 授权: -->sqlplus /nolog
                a)、sys登录 conn sys/123456@orcl as sysdba
                b)、授权: grant dba to scott;
                    回收: revoke dba from scott;
                c)、重新登录

      --rowid 行记录地址
         ROWID 是 ORACLE 中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值