zoukankan      html  css  js  c++  java
  • Orcal笔记3-DDL-DML

    一.Oracle的支持数据类型
         1.字符串类型
             char  固定长度(定义时即已确定长度,空余位置被补全),最大长度255,如 name char(10),'中'会占用10个长度;
             varchar2 长度不固定,根据实际情况占用,空余被放弃,最大长度3999,如 name varchar2(10),'中'会占用2个长度;

        2.数值类型
             number(3) 最大数据999
             number(3,2) 最大数据9.99

        3.大数值类型
             long:最大长度2G,相当于mysql中的longtext;
             clob:最大长度4G;
             blob:最大长度4G

        4.日期类型
             data:相当于mysql中的datatime,格式为yyyy-mm-dd hh:mi:ss;
             timestamp:时间戳,精度高,精确到小数点后9位;

    二.DDL和DML
         --查看当前用户的权限
         SELECT * FROM session_privs;

        --创建表空间和数据文件
         CREATE TABLESPACE qin_space DATAFILE 'c:\qin.dbf' SIZE 5M AUTOEXTEND ON NEXT 1M;

        --创建用户
         CREATE USER qin IDENTIFIED BY qin DEFAULT TABLESPACE qin_space;

        --赋予权限 3个角色 dba resource connect
         GRANT DBA TO qin;

        --创建表 t_student
         CREATE TABLE t_student(
                tid NUMBER(8),
                tname VARCHAR2(30) NOT NULL,
                telephone VARCHAR2(11),
                gender CHAR(1),
                birthday DATE,
               
                CONSTRAINT pk_tid PRIMARY KEY(tid),           --主键约束
                CONSTRAINT unique_column UNIQUE(telephone),   --唯一约束
                CONSTRAINT check_column CHECK(gender IN(0,1)) --检查约束
         )

        --插入数据
         INSERT INTO t_student VALUES(1,'小潘','110000011','0',to_date('2017-09-16','yyyy-mm-dd'));
         SELECT * FROM t_student;

        --创建orders表
         CREATE TABLE orders(
                o_id NUMBER(8) PRIMARY KEY,
                o_totalprice NUMBER(8,2)
         )

        --插入数据
         INSERT INTO orders VALUES(1,1000);
         INSERT INTO orders VALUES(2,2000);
         SELECT * FROM orders;

        --创建表orderdetail,设置与orders表的外键关联
         CREATE TABLE orderdetail(
                od_id NUMBER PRIMARY KEY,
                od_name VARCHAR2(30),
                o_id NUMBER(8),
                CONSTRAINT fk_o_id FOREIGN KEY(o_id) REFERENCES orders(o_id)
         );

        --插入数据
         INSERT INTO orderdetail VALUES(1,'mouse',1);
         INSERT INTO orderdetail VALUES (2,'keyboard',2);
         SELECT * FROM orderdetail

        --快速建表
         CREATE TABLE myemp AS SELECT * FROM SCOTT.emp;
         CREATE TABLE mydept AS SELECT * FROM SCOTT.dept;

        --update  需求:给NEW YORK地区的部门员工加薪100元
         --查询NEW YORK地区的部门员工
         SELECT * FROM myemp WHERE deptno IN (SELECT deptno FROM mydept WHERE loc = 'NEW YORK');
         UPDATE myemp SET sal = sal+100 WHERE deptno IN (SELECT deptno FROM mydept WHERE loc = 'NEW YORK');

        --修改表结构
         --t_student表加一列address
         ALTER TABLE t_student ADD( address VARCHAR2(30));
         --修改address字段的长度为200
         ALTER TABLE t_student modify(address varchar2(200));
         --删除address列
         ALTER TABLE t_student DROP COLUMN address;

    三.delete和truncate区别
       delete只是删除了数据,truncate是摧毁了表然后重建
       delete语句会产生磁盘碎片,而truncate不会
       delete删除的数据可以找回的

    四.Oracle的其它对象
         1.视图:
             视图是一个虚表,可以用来封装复杂的sql语句和隐藏敏感列;视图是原数据表的引用,操作视图会改变原表;
             语法:create view 视图名称 as sql查询语句

            只读视图: with read only
             create view view_emp as select ename, empno, job, mgr from myemp with read only;

        2.序列:
             独立于表之外的一个对象,主要用于主键自增
             语法:
             create sequence seq_test;
             select seq_test.nextval from dual;
             select seq_test.currval from dual;

            序列的完整语法:
             create sequence seq_sequence
             increment by 2   --递增值 默认1
             start with 3     --起始值 默认1
             maxvalue 15      --最大值  默认 19个9
             minvalue 2       --最小值  默认1
             cycle            --循环  默认 nocycle
             cache 5          --缓存的数量  默认缓存20

        3.索引
             创建索引可以提高查询效率
             语法格式:create index 索引名字 on 表名(列名)
             当数据量较小或数据经常被修改时,不建议创建索引.

        4.同义词(synonym)
             优点:可以缩短访问对象的名称;
             语法:create [public] synonym 名称 for 对象;
             举例:
             create synonym e for scott.emp;
             select * from e;


    五.数据导入导出(dos窗口下,不需要连接到oracl)
         1. 导出Scott用户下的所有对象
           exp 用户名/密码@IP:1521/orcl   file='位置\想要保存的文件名称.dmp' owner=用户名

        2.  导入到用户qin中
           imp 用户名/密码@IP:1521/orcl   file='位置\已有的想要导入的文件名称.dmp' full=y

  • 相关阅读:
    angularjs学习笔记—工具方法
    js日期格式转换的相关问题探讨
    vue路由原理剖析
    如何减少UI设计师产品与前端工程师的沟通成本
    前端优化带来的思考,浅谈前端工程化
    前端入门方法
    自写juqery插件实现左右循环滚动效果图
    前端大综合
    前端收集
    如何在代码中减少if else语句的使用
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7534832.html
Copyright © 2011-2022 走看看