zoukankan      html  css  js  c++  java
  • Oracle 学习笔记(二)

    ​ 

    使用 profile 管理用户口令

    概述:profile 是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为 default 的 profile 。当建立用户没有指定 profile 选项,那么 oracle 就会将 default 分配给用户。

    1.账户锁定 

    概述:指定该用户登陆时最多可以输入密码的次数,也可以指定用户锁定的时间,一般用 dba 的身份去执行该命令。

    例子:指定 scott 这个用户最多只能尝试 3 次登陆,锁定时间为 1 天,看下是怎么实现的。

    创建 profile 文件 

    SQL> create profile lock_account limit failed_login_attempts 3 password_lock_time 1; 

    SQL> alter user scott profile lock_account; 

    2.给用户解锁 

    SQL> alter user tea account unlock; 

    3.终止口令 

    为了让用户定期修改密码,可以使用终止口令的指令来完成,这个命令也需要 dba 的身份来操作。

    例子:给前面创建的用户 bobi 创建一个 profile 文件,要求该用户每隔 15 天要修改自己的登陆密码,宽限期为 3 天。看下怎么实现。

    SQL> create profile myprofile limit password_life_time 15 password_grace_time 3; 

    SQL> alter user bobi profile myprofile; 

    口令历史 

    概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样 oracle 就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle 就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

    例子:

    1)建立profile 

    SQL>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10; 

    password_reuse_time //指定口令可重用时间,即10天后可以重用了。

    2)分配给某个用户 

    SQL> alter user bobi profile password_history ; 

    删除 profile 

    概述:当不需要某个profile文件时,可以删除该文件。

    SQL> drop profile password_history 【casade】 

    注意:文件删除后,用这个文件约束的所有用户都被释放了。

    加了casade,会把级联的相关东西也都给删除掉。

    Oracle 表的管理

    表名和列的命名规则 

    • 必须以字母开头 

    • 长度不能超过 30 个字符 

    • 不能使用 oracle 的保留字 

    • 只能使用字符:A-Z,a-z,0-9,$ , # 等。

    oracle 支持的数据类型

    char   定长 最大2000个字符。

    例子:char(10)  ‘Stephen’前面 7 个字符放‘Stephen’,后面补 3 个空格,’Stephen   ‘。

    varchar2(20)  变长  最大4000个字符。

    例子:varchar2(10) ‘Stephen’ oracle 分配 7 个字符,节省空间。

    clob(character large object) 字符型大对象 最大4G 

    char 查询的速度极快但浪费空间,查询比较多的数据时用;

    varchar 节省空间 。

    数字型

    number 范围 -10 的 38 次方 到 10 的 38 次方 。

    可以表示整数,也可以表示小数 

    number(5,2)  表示一位小数有 5位有效数,2 位小数 范围:-999.99 到 999.99

    number(5) 表示一个 5 位整数 范围 99999 到 -99999 

    日期类型 

    date 包含年月日和时分秒   oracle 默认格式  1-1月-1999 

    timestamp 这是 oracle9i 对 date 数据类型的扩展。可以精确到毫秒。

    图片

    blob 二进制数据 可以存放图片、声音,  4G,   一般在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高则存入数据库。

    创建表 

    -- 学生表 

    CREATE TABLE student (    ---表名 

              xh       number(4),   --学号 

              xm    varchar2(20),   --姓名 

              sex      char(2),     --性别 

              birthday date,         --出生日期 

              sal      number(7,2)   --奖学金 

    );

    --班级表 

    CREATE TABLE class( 

        classId NUMBER(2), 

        cName VARCHAR2(40) 

    ); 

    修改表 

    添加一个字段

    SQL>ALTER TABLE student add (classId NUMBER(2)); 

    修改一个字段的长度 

    SQL>ALTER TABLE student MODIFY (xm VARCHAR2(30)); 

    修改字段的类型/或是名字(不能有数据) 不建议做 

    SQL>ALTER TABLE student MODIFY (xm CHAR(30)); 

    删除一个字段  不建议做(删了之后,顺序就变了。加就没问题,因为是加在后面)

    SQL>ALTER TABLE student DROP COLUMN sal; 

    修改表的名字   很少有这种需求

    SQL>RENAME student TO stu; 

    删除表

    SQL>DROP TABLE student; 

    添加数据 

    所有字段都插入数据

    INSERT INTO student VALUES ('A001', 'Stephen', '男', '19-5月-88', 5000); 

    oracle 中默认的日期格式‘dd-mon-yy’ 

    dd 日(天) 

    mon 月  

    yy  2位的年  

    '18-4月-19' 2019年4月18日 

    修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)

    ALTER SESSION SET NLS_DATE_FORMAT ='yyyy-mm-dd'; 

    修改后,可以用我们熟悉的格式添加日期类型:

    INSERT INTO student VALUES ('A002', 'Bobi', '男', '1985-05-06', 8000); 

    插入部分字段

    INSERT INTO student(xh, xm, sex) VALUES ('A003', 'Lucy, '女'); 

    插入空值

    INSERT INTO student(xh, xm, sex, birthday) VALUES ('A004', 'Lily', '女', null); 

    问题:如果要查询 student 表里 birthday 为 null 的记录怎么写 sql ?

    错误写法:select * from student where birthday = null;

    正确写法:select * from student where birthday is null;

    如果要查询 birthday 不为 null ,则应该这样写:

    select * from student where birthday is not null; 

    修改数据 

    修改一个字段

    UPDATE student SET sex = '女' WHERE xh = 'A001'; 

    修改多个字段

    UPDATE student SET sex = '男', birthday = '1991-01-01' WHERE xh = 'A001'; 

    查询含有 null 值的数据 

    不用 = null 而用 is null;

    SELECT * FROM student WHERE birthday IS null; 

    删除数据

    DELETE FROM student; 

    删除所有记录,表结构还在,写日志,可以恢复的,速度慢。

    Delete 的数据可以恢复。

    savepoint a; --创建保存点 

    DELETE FROM student; 

    rollback to a;  --恢复到保存点 

    一个有经验的DBA,在确保完成无误的情况下要定期创建还原点。

    删除表的结构和数据

    DROP TABLE student; 

    删除一条记录

    delete from student WHERE xh = 'A001'; 

    删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快:

    truncate TABLE student; 

    今天笔记做到这,后续有空继续。

    【微信公众号:Stephen】一个毕业三年后自学 Java 入行的程序员。
  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/stephen-java/p/10732891.html
Copyright © 2011-2022 走看看