• oracle复习(一)


    一、系统操作
    cmd->sqlplus / as sysdba; //以管理员身份登录数据库
    alter user system account unlock; //解锁用户system
    alter user scott identified by tiger; //把scott的密码改为tiger
    grant resource,connect to scott; //给scott赋予多个权限
    role 角色(connect,resource)
    grant 权限/角色 to 用户名 //赋予权限
    revoke 权限/角色 from 用户名 //解除权限

    二、表的数据类型
    number(5) -数值型
    number(18,2)-钱 ,18是长度,2是小数点后两位
    nvarchar2(20) -字符串。(支持中文)
    varchar2(20) -字符串,(不支持中文)
    date 日期类型。 年月日,时分秒
    timestamp 日期类型。 年月日,时分秒毫秒
    nclob -大数据类型。 存储大量文本文档(可存中文)
    clob -大数据类型。 存储大量文本文档(不可存中文)
    blob -大数据类型。 存储大量二进制数据,存储图片数据

    三、表的构成
    1.primary key 主键,能唯一表示一条记录 用主键 来 强制约束,不能重复。
    2.foreign key 外键 表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
    3:列的默认值:在插入一条数据时,不需要人为给定值,系统自动加上指定的默认值。
    4:范围约束
    age>= 6 and age <= 10
    sex='男' or sex='女'
    限制姓名的长度:
    length(name)>=1 and length(name)<=2

    四、sql语句
    1.增加数据:insert into
    语法:insert into 表名(字段列表1,字段名2) values(值列表);
    把字符串'1990/08/08'按'yyyy/mm/dd'格式转换成date类型to_date('1990/08/08','yyyy/mm/dd')
    增加一条记录到t_student表
    insert into t_student
    (studentid,name,sex,birthday,age,classnum)
    values(4,'小明',0,to_date('1990/08/08','yyyy/mm/dd'),27,1);
    2.删除数据: delete from
    语法:delete from 表名 where 条件
    3.修改数据: update
    update 表名 set 列名=新值
    给每个员工的工资增加200元
    update emp set sal=sal+200;
    给每个员工的工资减200,但是奖金增加3000
    update emp set sal=sal-200,comm=3000;
    给工作等于CLERK的员工奖金翻倍
    update emp set comm=comm*2 where job='CLERK';
    4.查数据: select
    select 列名1,列名2,列名...from 表名
    select * from 表名 表示查询表中的所有列
    select * from 表名 where 条件
    select 列名 from 表名 where 条件
    select * from emp where job in('CLERK', 'SALESMAN') in(值列表) not in(值列表)
    模糊查询like
    通配符:%代表0-N个字符
    select * from emp where ename like '%S%'
    通配符; _代表一个字符
    5.排序:order by 字段 排序顺序 asc是升序,desc是降序
    6.去除重复的数据: select distinct job from emp;
    7.查询工资大于1K并且工作=CLERk并且名字带S的员工信息
    select * from emp where sal>=1000 and job='CLERK' and ename like '%S%'
    8.oracle对每条记录 有一个唯一标识(字符串形式),rowid
    rowid根据记录的存储地址 生成。
    rownum是一个虚拟不存在的字段,表示“结果记录”的序号
    查询5条记录
    select t.*,t.rowid,rownum from emp t where rownum<=5
    *查询表别名:
    select * from 表名 别名
    select t.*,t.rowid from emp t
    select e.empno,e.ename,e.job from emp e
    9.序列
    标识列(自动增长的列)
    create sequence seq_sid
    minvalue 1
    maxvalue 1000000
    start with 1
    increment by 1
    cycle;
    序列有当前值,及下一个值
    当前值:序列名.currval
    取下一个值:序列名.nextval
    往学生表增加数据,主键从序列取值
    insert into t_student values(seq_sid.nextval,'aaa',0,sysdate,1,15);
    select * from t_student;

    五、视图
    视图可以简化 复杂查询
    视图是给 复杂查询 取别名
    视图可以隐藏 查询细节,更安全。

    六、索引
    索引是 数据表 的 目录
    索引的作用 是 加快 查询速度
    索引的类型:normal,unique(唯一索引),bitmap(位图索引)
    unique索引:作用的数据字段值不能重复
    normal索引:数据字段值可以重复(类似姓名字段)
    bitmap索引:适合加到字段只有某几个值的表中(适合性别字段,只有'男','女'2个值)

    七、oralce函数
    Upper把字符串转换成大写
    select e.empno,upper(e.ename) from emp e;
    select upper('asdf') from dual;
    lower把字符串转换成小写
    select e.empno,lower(e.ename) from emp e;
    select upper('SADFSDF') from dual;

    八substr函数
    substr(要截取的字符串,从什么位置开始截取1表示开始位置,截取长度)
    select e.empno, substr(e.ename,1, 2) from emp e;

    九、instr函数
    instr(要查找的字符串,被查找的子串,开始查找的位置)
    返回查找到的位置,如果没有,返回0
    查找位置如果是负数,则表示从后面往前面找。
    select instr('hello world','o', -9) from dual;

    十、length(字符串)
    返回字符串的长度
    select length('Hello') from dual;返回5

    lengthb(字符串)返回字符串的字节数
    select lengthb('Hello中文') from dual;返回9

  • 相关阅读:
    ubuntu下如何更改mysql数据存放路径
    collection_select
    发现星期六日的电视比较好看
    rails
    系统抢救10.04
    劫后重生,痛定思痛,ubuntu 10.04=>10.10
    随机查询N条记录
    which linux your like
    kindeditor的使用
    array
  • 原文地址:https://www.cnblogs.com/simplelu/p/6742068.html
Copyright © 2020-2023  润新知