第二十三天:总结

1.子查询

2.DML
  除开select,其他的DML:insert,update,delete
  1)insert
  a.除去通过子查询插入,insert语句一次只能插入一行,而其他的DML可以操作多个行
  b.字符和日期数据要包含在单引号中
  c.向表中插入空值:不写(不插你)或者 null(插你个null)
  d.插入时间:不知道数据库中时间的格式,即使知道格式很麻烦
            to_date(XXX, YYY)插入时间,我统一用to_date(),反正插入的是时间,具体的格式我就不管了            
  e.& 等着你输入具体的值
  f.在insert中使用子查询插入
    不写value, insert into XXX ...select语句.....
   
  insert into insert_test (id, name, birthday, info)
                  values(1, 'Tom', to_date('1988-10-17', 'YYYY-MM-DD'), null)
  insert into insert_test (id, name, birthday)
                  values(2, 'Jerrey', to_date('1988-10-18', 'YYYY-MM-DD')) 
  insert into insert_test (id, name, birthday, info)
                  values(3, 'Bob', to_date('1988-10-19', 'YYYY-MM-DD'), 'Bob@163.com')                             
  insert into insert_test (id, name, birthday, info)
                 select employee_id, last_name, hire_date, email
                 from employees where employee_id = 200 
  2)update
  在update语句中使用子查询,
  是更新基于另一个表中的数据
 
  update insert_test
    set name = (
                  select last_name
                  from employees
                  where employee_id = 204
               ),
        birthday = (
                     select hire_date
                     from employees
                     where employee_id = 204
                   )
    where id = 1
 
  3)delete
  a.使用where来限定,省略where 就删除所有记录,表结构还在
  b.同样truncate也可以删除所有记录,它是先删表,然后按照原来表的结果建表
      delete删除后,可以回滚(rollback)s
      truncate删除后,不可以回滚
  c.在delete中使用子查询,综合上面的子查询被用到了CRUD中
 
  delete from insert_test where id = 2 
  delete from insert_test
  delete from insert_test
    where id = (
                 select employee_id
                 from employees
                 where last_name = 'Whalen'
               )
    4)insert, update, delete操作的时候出现数据完整性,在约束中的外键总结          

3.事务
  a.事务的开始:以第一个DML语句的执行
  b.事务的结束:commit 或 rollback
                              DDL 或 DCL(他们是自动提交)
                              用户会话正常结束
                              系统异常终了
  c.事务的组成:一个或多个DML,一个DDL,一个DCL        (这些是可选的,不必都出现)                   
  d.事务:事务是指逻辑上的一组操作,组成这组操作的各个单元,要么都成功,要么都失败
  e.事务的特性(ACID):
     原子性:要么都成,要么都不成
     一致性:转账前和转账后的总钱是一致的
     隔离性:脏读,不可重复读,虚读
     持久性:一旦提交,在数据库中是永久的,不能rollback
  f. commit
       rollback
     savepoint a
     rollback to savepoint a

4.DDL
  a.常见的数据库对象
    表,视图,序列,索引,同义词
  b.Oracle数据库中的表:
    用户定义的表:
       建表需要:权限 和 存储空间(限额-->指定大小)
    数据字典: 
  c.select * from user_tables;
    select * from user_tables where lower(TABLE_NAME) = 'employees';
  d.create 
    使用子查询创建表
    create table XXX
    as
      select ....... (用as别名,create中的列名就变了s)
   
    create table create_test
        as
           select employee_id as "id",
                  last_name   as "name",
                  hire_date   as "birthday"
           from employees
           where department_id = 80
    e.alter:add, modify, drop     
       alter table create_test
         add (info varchar2(20)) 
         
         alter table create_test
         modify (info varchar2(50))
         
         alter table create_test
         drop column info
    f.drop
      drop表,数据和表结构都删除
      和delete,truncate不同,它们删的是数据,表结构不删除   
      drop table不能回滚
      所有正在运行的相关事务被提交
      所有相关索引被删除
   
      rename create_test to create_new
       
      
   
5.约束
  not null, unique, primary key, foreign key, check
  Oracle中不指定约束名,自动按照SYS_Cn 的格式指定约束名
  列级约束只能作用在一列上,表级约束可以作用在一列,多列
  非空约束只能定义在列上
  1)列级约束
  2)表级约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值