• Oracle-day5:新增、复制建表、表结构、表数据、删除


    目录

    一、insert新增数据

    二、复制建表

    三、表结构修改

    四、查看表结构、表数据处理

    五、修改表数据

    六、删除语句

    八、练习题


    一、insert新增数据

    /*
      ---------- 一、DML 数据操作语言--------
      -- 1、增加数据 insert
      语法:insert into 表名 (列1,列2,...) values (值1,值2,...);
      -- 要求:
         -- a、列和值必须一一对应(位置、数据类型、约束)
      -- 注意:
         a、新增的数据需要提交commit才能保存到数据库中
         b、撤销新增加的数据需要回滚:rollback
         c、默认值:default表示   
    */

    1. -- 1、往 student1表中添加数据
    2. insert into student1(sno,sname,ssex,sage,bir,clsno)values('001','李四','男',19,date'2023-8-19','2');
    3. -- 1.1 对于时间的输入,也可以用:to_date('日期字符串','日期格式yyyy-mm-dd')的方式如录入
    4. -- 2、往全部列中添加数据,可以省略列名不写
    5. insert into student1 values('002','王五','男',19,date'2023-8-19','2');
    6. -- 3、可以将表到处 导成标准的 insert into 语句 文档
    7. -- 工具 --> 导出表 窗口 --> 选择 sql插入 指定文件名 --> 导出

    二、复制建表

       ------- 二、复制建表 -------
       create table 表名 as select 查询语句 where 条件;
       复制建表:只复制表结构,不会复制数据
       不会复制主键约束、检查约束、默认值约束、唯一约束、外键约束
       会复制非空约束

    1. -- 1、复制student1的表
    2. create table student2 as select * from student1 where 1 = 2;

    where用来控制是复制结构或者把表数据都给复制过去

    三、表结构修改

           ---------三、表结构修改-----------
        ---1、菜单操作
            --左边对象浏览器栏 点击tables 找到对应的表 -->右键 编辑 -->表结构 窗口--> 列 选型 --> 增加列、修改列、删除列
        ---2、sql语句操作
            -- 语法:alter table 表名

    1. -- 1、增加列 add
    2. -- 语法:alter table 表名 add(列1 数据类型,列2 数据类型);
    3. alter table student001 add(a number,b varchar(20));
    4. -- 2、修改列 modify
    5. -- 语法:alter table 表名 modify(列1 数据类型,列2 数据类型...)
    6. -- 注意:其他数据类型可以修改为字符串,但是字符串不能修改为其他数据类型
    7. alter table student001 modify(a varchar(20));
    8. -- 3、删除列 drop 会删除
    9. -- 语法:alter table 表名 drop(列名1,列名2)
    10. alter table student001 drop(a,b)
    11. select * from student001;
    12. -- 4、重命名列 rename column
    13. -- 语法:alter table 表名 rename column 旧列名 to 新列名
    14. -- 把sno改为stuId
    15. alter table student001 rename column sno to stuid;

    四、查看表结构、表数据处理

          ---------五、查看表结构、表数据处理
           --查看表结构
        --左边对象浏览器栏 点击tables 找到对应的表 -->右键 查看或编辑 -->表结构  -->列选项
        --在命令窗口 sql提示符输入 desc 表名;   回车执行

    1. --1、清空表数据 truncate table 表名;
    2. truncate table student001;
    3. --2、批量复制数据
    4. --insert into 表名 select 查询语句;
    5. insert into student_b select * from student_a;
    6. commit;
    7. -- 3、对表重命名
    8. -- rename 旧表名 to 新表名
    9. rename student001 to student01;

    五、修改表数据

           ---------- 六、修改数据----------
           update语法:update 表名 set 列1 = 值2 where 条件
           注:如果不使用where,那么会修改整个表的数据

    1. select * from student01;
    2. -- 修改用户的年龄是:系统时间 - sbirthday的时间
    3. alter table student01 add (age number) ; -- 新增一个年龄列
    4. select sysdate,to_char(sysdate,'yyyy') y from dual;
    5. -- 1、更新用户的年龄:系统时间-出生
    6. update student01 s set age=to_char(sysdate,'yyyy')-to_char(sbirthday,'yyyy') where sname = 'wang';
    7. update student01 s set age=to_char(sysdate,'yyyy')-to_char(sbirthday,'yyyy');
    8. commit;

    六、删除语句

           --------------删除语句-----------
           truncate -- DDL 语句,删除表中的数据,效率高
           delete -- 删除表中的数据,逐行删除,DML语句
           delete的语法:
           -- delete from 表名 where 条件;
           -- from可以省略,不要where条件会删除整个表的数据

    1. select * from student01;
    2. -- 1、删除掉stuid为001的数据
    3. delete student01 where stuid = 001;
    4. rollback; -- 回滚
    5. -- 2、delete不带where条件会清空整表数据
    6. delete student01;
    7. rollback; -- 回滚

    八、练习题

    1. --练习题:
    2. --1、新建一个表emp2 要求emp2的结构和emp一样,同时要把emp的数据复制过去
    3. create table emp2 as select * from emp;
    4. select * from emp;
    5. select * from emp2;
    6. --2、在emp2表中增加一行数据
    7. insert into emp2 values(8000,'zs','CLERK',7782,date'2023-08-29',1500,0,10);
    8. select * from emp2;
    9. --3、在emp2表中增加列bz和bz1,数据类型为字符串
    10. alter table emp2 add(bz varchar(20),bz1 varchar2(30));
    11. select * from emp2;
    12. --4、将emp中的所有记录工资sal+1000,comm+1000插入到emp2中
    13. -- 4.1 先查询出emp表中的工资
    14. select sal+1000,comm+1000 from emp;
    15. select * from emp;
    16. select * from emp2;
    17. -- 合并子查询
    18. update emp2 set sal = (
    19. select sal+1000 from emp where empno = emp2.empno
    20. ),comm = (
    21. select nvl(comm,0)+1000 from emp where empno = emp2.empno
    22. )
    23. ;
    24. select * from emp2;
    25. rollback;
    26. --5、将emp2中empno为7654的comm奖金修改为2000
    27. update emp2
    28. set comm = 2000
    29. where empno = 7654;
    30. select * from emp2;
    31. --6、将emp2中员工姓名ename中包含ALL的奖金修改为1600
    32. update emp2
    33. set comm = 1600
    34. where
    35. ename like '%ALL%';
    36. -- 验证
    37. select * from emp2
    38. where ename like '%ALL%';
    39. --7、在emp2表中增加一个列age,将截止到当前时间的每一个员工工作的年限更新到age列
    40. alter table emp2
    41. add(age number)
    42. ; -- 新增age
    43. select * from emp2;
    44. update emp2
    45. set age = to_char(sysdate,'yyyy') - to_char(hiredate,'yyyy')
    46. ; -- 更新
    47. select e.*,rownum from emp2 e;

  • 相关阅读:
    SpringBoot笔记之SpringSecurity
    VIM文本编辑器基本操作
    中断处理过程的压栈问题
    .net core 和 WPF 开发升讯威在线客服系统:怎样实现拔网线也不丢消息的高可靠通信(附视频)
    【软考-中级】系统集成项目管理工程师-质量管理历年案例
    【Shell编程】Shell中for循环、while循环、until循环语句
    C++二分算法: 找出第 K 小的数对距离
    定义爬虫规则和数据存储
    CSS 中几种常用的换行方法
    Prometheus邮件告警
  • 原文地址:https://blog.csdn.net/qq_63141957/article/details/132588245