zoukankan      html  css  js  c++  java
  • Oracle之基础操作

    sqlplus常用命令:
      进入sqlplus模式:sqlplus /nolog
    管理员登录:
      conn / as sysdba 登录本机的数据库
      conn sys/123456 as sysdba
    普通用户登录
      conn scott/tiger@orcl 普通用户登录指定的数据库
      conn scott/tiger 普通用户登录默认数据库
    解锁用户:
      alter user scott account unlock;
    锁定用户:
      alter user scott account lock;
    注意:只有管理员才有权限解锁和锁定用户!!!
    显示当前登录用户:
      show user;
    查询Scott用户下emp表的数据
      select * from emp;

    DBA:数据库管理员
    DB:database 数据库
    DBMS:数据库管理系统

    管理员:
      sys:超级管理员
      system:普通管理员
    普通用户:
      scott:系统提供的
    创建用户:普通用户没有操作用户的权限【创建修改删除】
      create user java0408 identified by java0408;
    修改密码:
      password Java0408 然后根据提示修改就可以了
    删除用户:drop user j0408 cascade; cascade 级联删除
    授权:创建的用户任何权限【我们需要对用户授权】
    角色: connect resource dba
      grant connect,resource,dba to j0408
    撤销权限:
      revoke connect,resourc,dba from j0408;


    --注释
    -- 表的注释 字符串都用''单引号
      comment on table t_student is '学生表';

    -Oracle中常用的数据类型
    --字符型
    char:字符型 能够存储的最大的内容是 2000个字节
    分配了多大的空间保存数据的时候就直接分配多大的空间,
    不会因为数据的大小而调整,char 的效率会比 varchar2 高

    varchar2:字符型 4000个字节
    保存数据的时候会根据数据的大小调整分配的空间,
    相比char内存的利用率会更高
    long :最多可以存储2GB
    --数字型
      number: number[(n[,s])] --'[]'表示可选,也就是非必须
      默认的长度 32位
      number(5) 长度为5
      number(5,2) 长度5位,小数点后2两位 小数位超过精度四舍五入
    --日期时间类型
      Date:日期 时间类型精确到秒
      TIMESTAMP:精确到秒后6位小数
    系统时间:sysdate
      select sysdate from dual;

    约束:
    主键约束:
      alter table t_student5 add constraint pk_student_id primary key (id,s_name);
    --注意:一张表中只能够有一个主键,但是一个主键可以包含多个字段【联合主键】
      外键约束:表与表之间的约束关系

    第一种在建表的时候创建:
      constraint 外键标识名 foreign key (外键字段名) references 从表表名 (主键字段名);

    第二种在建表之后创建外键
      alter table 表名 add constraint 外键标识名 foreign key (外键字段名) references 从表表名 (主键字段名);

      check 约束:使某个字段的值在特定的范围内
      create table 表名(
      字段名1 类型1 check (条件范围),
      …
      );

    对表结构中的字段的修改
      1.删除表
        drop table t_student4;
      2.添加字段
        alter table t_student add sex char(3);
      3.修改字段类型
        alter table t_student modify sex varchar2(20)
      4.修改字段名称
        alter table t_student rename column sex1 to sex2;
      5.删除字段
        alter table t_student drop column sex2;

    DML操作:
      增:insert into t_student(id,sname,age)values(11,'江立',25);
      commit; --提交
      rollback;--回滚
      注意:DML操作后数据并没有立即更新到数据库中,
      而是写入了缓存中,我们需要显示的提交或者回滚
      insert into tableName values(value1,value2,...,valueN);
      注意:省略掉字段列表,那么值列表就必须和建表的字段的顺序类型一致

      序列:Oracle特有,用来做主键自增的
    CREATE SEQUENCE sequence_name
    [START WITH num]
    [INCREMENT BY increment]
    [MAXVALUE num|NOMAXVALUE]
    [MINVALUE num|NOMINVALUE]
    [CYCLE|NOCYCLE]
    [CACHE num|NOCACHE]
    序列的使用方式:命名:seq_开头 后面跟表名,一张表对应一个序列
    1.通过查询语句
      select seq_t_class.nextval from dual;
    2.在插入语句中使用
      insert into t_class values(seq_t_class.nextval,'j1001');
      commit;
      insert into t_student(id,sname,age)values(seq_t_student.nextval,'江立',25);
      commit;
      nextval:下一个值
      currval:当前会话的值

      Oracle 不支持多条数据插入,只能通过查询一个表中的数据再插入到表中实现多条数据插入
    多条插入:
    1.多条数据插入
      insert into t_class_copy(cid,cname) select cid,cname from t_class;
      insert into t_student(id,sname,age,classid)
      select id,sname,age,classid from t_student1
    2.表结构的复制
      复制表结构不包含数据
        create table t_class_copy1 as select * from t_class where 1<>1;
        create table t_student11 as select * from t_student where 1<>1;
      复制表结构包含数据
        create table t_class_copy1 as select * from t_class;
        create table t_student10 as select * from t_student;

    -注意:Oracle中判断为空用 is null 不为空用 is not null

    UPDATE (update) :更新
    语法:update tableName set column1=value1,column2=value2 ...[where columnN=valueN]

      update t_student set classid=104 where id between 2 and 5;--两者之间
      commit;
      update t_student set age=30 where id in (2,5,103,104);--在什么范围之内
      commit;


    DELETE (delete) :删除
      语法: delete from 表名 [where 条件]
      truncate:直接将数据从硬盘中删除,不会缓存,效率很高,但是没法撤销,慎用
      truncate table t_student4 ;

  • 相关阅读:
    python计算均值方差
    Linux shell一行流编程实践
    where are you from
    dinner vs supper
    Python格式化输出
    吐槽win8
    HTML学习(六)图像
    HTML学习(五)链接
    HTML学习(四)样式
    URL与String转换
  • 原文地址:https://www.cnblogs.com/lrxvx/p/9413231.html
Copyright © 2011-2022 走看看