oracle数据库基础

来源:互联网 发布:淘宝客优惠券口令推广 编辑:程序博客网 时间:2024/06/15 14:22
sql:结构化的查询语句
T-sql:标准结构化查询语句
1.sql的分类
a)DML:数据管理语句
    insert、delete、update
        统称为 修改操作
            executeUpdate        
b)DQL:数据查询语句
    select
        i)单表查询
        ii)多表查询:
            可以是 基表 也可以是 视图 或者是查询的结果
            1)不同的表之间链接
            2)自连接
以上DML和DQL统称为 CRUD
c)DDL:数据定义语言
    create
    drop
    alter
d)TPL(TCL):事务控制语言
    commit
    rollback
    注意:oracle操作中在客户端(plsql)中进行insert 、delete、udpate 必须commit
          oracle会对操作的表 自动加锁
          团队开发
e)DCL:数据控制语言
    grant    :授予用户权限
    revoke     :收回用户的权限

2.数据类型:
    a)数值类型:number
        number(n) :最多存放 n 个整数
        number(m,n):最多m个数字 其中 n 个小数
        number      :最大装载 37 个整数
    b)字符类型;
        char(n):
        varchar2(n):
    c)date,datetime: varchar2
        '12-7月/2017'
        2017-07-12
    d)blob,clob 4G    varchar2
        存放图片的地址
    
3.常用的约束:
    主键约束:不能为空 必须唯一 自动添加聚集索引
    唯一约束:值必须唯一,可以为null    ajax 完成用户名检查
    非空约束:该列不能为空
    检查约束:check
    外键约束:
    默认约束:
    创建表的时候不添加约束
        添加数据 进行 各种  select 查询 如果都能满足要
    再通过 alter 添加相应约束
    
    设计软件:完形填空
    ooad
4.建表的语法:
create table 表名
(
    列名 数据类型 特征,
    列名 数据类型 特征
)        
    
alter table 表名
    操作
    
5.使用oracle数据库
    启动oracle的监听程序
    启动操作数据库 服务
6.插入语句
        insert into 表名(列名列表)values(值)
7.删除
    delete from 表名 where 条件 ;条件 以 主键为主
    建议 把 delete 用 update 修改 状态完成
8.修改
    update 表名 set 列=值,列=值 where 条件
9.查询语句
    a)清楚要显示哪些数据            放入到 select 后面
    b)显示数据的来源(来自哪些表或视图)    放在from 的后面 表与表之间以 , 分割
    c)搞清楚表与表之间的关联关系,可能两张表没有之间关系,找第三方表
        放在where 后面 多个关系 以 and 链接
    d)是否有其他条件  直接 在where 后 添加 and 链接 即可

10.sql 中的运算符:
a)算术运算符:
    +    :如果一边为null 计算的结果 为 null
            nvl(列,值)   :检测 列的值是否 为null 如果为null 输出后面的值
b)比较运算符:
    >
    >=
    <
    <=
    =
    !=
    <>
c)特殊的比较运算符
    between  and  相当于 >=  and <=
    in(值1,值2)        :批量删除  列=值1 or 列=值2
    like :模糊查询
        %    :表示 任意个 任意字符
        _    :表示 一个任意字符
        
        自动补全(智能提示):想想百度
    Oracle 中的数据 区分大小写

            like '_M%'
            like '____'
            like '%M_'
d)逻辑运算符:and 运算符的优先级 比 or 高
    and
    or
    not
    
e)  nvl(列,值)
    upper()
    lower()
11.视图:虚拟表,其中不存放任何数据,不能进行insert、delete、update操作
         和基本的查询用法相同
         他就是 一条复杂sql语句的别名,是预编译
        
    create or replace view 视图名称
    as
        select 语句;
    
    因为 scott 账户没有创建视图的权利
        必须使用 sys 对scott用户进行授权
            grant create view to scott;
            
            revoke create view from scott;
12.触发器:
a)对表进行insert、delete、update操作是自动执行的一组 sql代码
b)分类:
        before:在把数据装载到表中以前 执行  太监 替皇帝 尝食品
        after :在把数据添加到表中后 在执行
        instead of :替代 只能添加到视图
    
    before: 要修改本表中的数据,用before触发器
            在插入数据是 生成 用户的编号
    after :自己操作完后影响其他表中的数据
c)触发的事件,一个事件只能触发一个
    insert delete update
d)两张虚拟的表:
    :new    :存放的是要添加到表中的数据
    :old    :存放的是 从表中删除的数据
    特点:与触发器操作的表 结构完全相同
          只存放一行数据
    
    操作        :new        :old
    insert       有             无
    delete       无             有
    update       有          有
//示例
create or replace trigger trig_stu_idbefore       inserton stu_infofor each row --SQL语句影响几行 触发器就执行几次    declare         n number; --存放表中 主键的最大值begin  select max(stu_id) into n from stu_info;  --n可能为空  if n is null then    n :=0;  end if;  :new.stu_id := n+1;end;