1   1  /  1  页   跳转

ORACLE 数据库(二)

ORACLE 数据库(二)


    ORACLE安装 和 删除
    启动和关闭
    SQL*PLUS  windows下窗口版本
              超级用户 system/manager
                      sys/change_on_install
              普通用户
                      scott/tiger
              DOS下的SQLPLUS版本
    如何使用
      命令show user
      SQL语句
难点
    约束  如何给表加约束???

SQL*PLUS环境命令
  结束时可以写; 也可以不写
  desc dept
  show user
  connect scott/tiger
  set linesize 200
  set pagesize 100
  spool c:\aa.txt

SQL语句
  结束时候一定要 有分号或者/
《1》DDL语句(数据定义语言)
  create
  alter
  drop
  truncate 开头的语句
    建立表
      create table class(--班级表
          classid number(2) primary key,
          cname varchar2(20) not null);

      /*wdsadsadsad
        asdsadsadsadsad
        多行注释 
        */ 
      create table student( --学生表
        xh number(4) primary key, --学号
        name varchar2(10) not null, --姓名
        sex  char(2)  check (sex in ('男','女')),--性别
        birthday date,--生日
        sal number(7,2), --奖学金
        classid number(2) references class(classid) --班级         
      );

外键引用的列一定是主键或有unique约束的列

  alter table student add (shengfenzheng number(18));

  drop table student;
 

  delete from student;
  truncate table student; 删除记录的 速度快 数据不能恢复

《2》 DML语句(数据操作语言)     
  select
  insert
  delete
  update

  insert into student(xh,name,sex)
  values (&xh,'&n','&sd');
 
  insert into student(xh,name,sex)
  values (&学号,'&姓名','&性别');

  转义字符 \
  打开转义 set escape on
 
  insert into student(xh,name,sex)
  values (1003,'JO\&HI','男');

《3》 TCL(事务控制语句)
  commit;  提交  修改保存到数据库中
  rollback; 回滚  取消内存中的改动
  savepoint;保存点 分解事务的 把事务变小

    事务何时存在 DML语句中除select以外都会有事务
 
《《《《《《《注意》》》》》 / 重复运行上一条SQL语句 

  commit;    结束上一个事务 并且开始一个新的事务

  update student set sal = null where xh =1000;

  savepoint c111;
 
  insert into student(xh,name,sex) values (1004,'MIKE','男');

  rollback to c111; --撤销了插入的数据

  rollback;  --从c111这个点回滚到事务的开始点

《SQLPLUS规则》 
  DML语句后跟上DDL语句 DML语句的事务会被自动提交
  exit/quit命令 退出 SQLPLUS环境时也会自动提交事务
  非法操作是不能提交事务的 ,只能导致事务回滚

《4》 DCL语句(数据控制语句)               
    grant 授予权限
    revoke 撤销权限
  权限 select ,insert,delete,update
        connect ,resource
 
  如何建一个自己的用户?
    必须是超级用户才能建用户
    --连接到超级用户
    connect system/manager
    --建立用户名zhangsan 密码m123
    create user zhangsan identified by m123;
    --授予必要的权限connect 你能够连接
                    resource 你能建表不受空间的限制
    grant connect,resource to zhangsan;
    --这个普通用户就建好了 和scott用户的权限是一样的     
    grant DBA to zhangsan; --张三的权限和System一样
 
    --改张三的密码
    <<1>> 自己改自己的密码
        connect zhangsan/m123
        密码改为了mm1 
        alter user zhangsan identified by mm1;
    <<2>> 超级用户来改
        connect system/manager
        alter user zhangsan identified by mm1; 


   

  在scott/tiger这个用户下
    grant select on dept to zhangsan;
    在zhangsan下 可以使用select * from scott.dept;
        看到结果
   
在scott/tiger这个用户下
      revoke select on dept from zhangsan;撤销授权
    在zhangsan下 可以使用select * from scott.dept;
        看不到结果
   
ORALCE的函数
  单行函数  返回值只有一个
     
  分组函数  返回值是多条记录
      group by
      sum
      avg           
     
单行函数
  字符函数
    concat 连接  ||
  <1>显示dname和loc中间用-分隔
    select deptno,dname||'----'||loc from dept;
   
    dual哑元表  没有表需要查询的时候 可以用它
        select 'Hello World' from dual;
        select 1+1 from dual;
        查询系统时间
          select sysdate from dual;
  <2>  initcap 首字母大写
      select ename,initcap(ename) from emp;
  <3>  lower  转换为小写字符
        select ename,lower(ename) from emp;
  <4> upper 转换为大写
        update dept set loc=lower(loc);
        update dept set loc=upper(loc);
  <5> LPAD 左填充
        select deptno,lpad(dname,10,' '),loc from dept;
  <6> RPAD 右填充
  <7> LTRIM 去除左边的空格
      RTRIM 去除右边的空格
      ALLTRIM  去除两边的空格
  <8>replace    替换
      translate  转换
      select replace(ename,'S','s') from emp;
        select translate(ename,'S','s') from emp;
  <9> ASCII 求ASC码
      chr  asc码变字符
        select ascii('A') from dual;
        select chr(97) from dual;
  <10> substr 字符截取函数
          select substr(ename,1,3) from emp;
              从第1个位置开始 显示3个字符
          select substr(ename,4) from emp;
              从第4个位置开始显示后面所有的字符
  <11> instr 测试字符串出现的位置
          select ename,instr(ename,'S') from emp;
            'S'第1次出现的位置
          select ename,instr(ename,'S',1,2) from emp;                 
  <12> length 字符串的长度
        select ename,length(ename) from emp;
     
日期和 时间函数
  <1> sysdate 系统时间
        select sysdate from dual;
        select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
        select to_char(sysdate,'DDD') from dual 
     
  <2> ADD_MONTHS 添加月份 得到一个新的日期
        select add_months(sysdate,1) from dual;

      select add_months(sysdate,-1) from dual;
  <3> last_day  某月的最后一天
      select last_day(sysdate) from dual;
     
      select add_months(last_day(sysdate)+3,-1) from dual;
            本月第3天的日期
  <4>  months_between 两个日期之间的月数
        select months_between(sysdate,'2005-02-01') from dual;

转换函数
  to_char  把日期或数字类型变为字符串
      select to_char(sysdate,'hh24:mi:ss') from dual;
     
      select to_char(sal,'L9,999') from emp;
            L本地货币
  to_number  把字符串变成数字
      select to_number('19990801') from dual;
 
  to_date    把字符串变成日期
      select to_date('19800101','yyyymmdd') from dual;

      select to_char(to_date('19800101','yyyymmdd'),
        'yyyy"年"mm"月"dd"日"') from dual;     
数字函数
    ceil(x)  不小于x的最小整数
        ceil(12.4)  13
        ceil(-12.4)  -12
    floor(x)  不大于x的最大整数
        floor(12.4)  12
        floor(-12.4)  -13


  round(x)  四舍五入
    round(12.5)  13
    round(12.456,2) 12.46
  trunc(x)  舍去尾数
    trunc(12.5)  12
    trunc(12.456,2)  12.45
  mod(x,n)  x除以n以后的余数
    mod(5,2) 1
    mod(4,2) 0

混合函数
      求最大值
  select greatest(100,90,80,101,01,19) from dual;
 
      求最小值
  select least(100,0,-9,10) from dual;
      空值转换函数
  select nvl(comm,0) from emp;
      comm 类型和 值的类型是 一致的
 
复杂的函数
  decode    (if ... elseif .... elesif ... else结构)
   

  sal=800  显示低工资 
  sal=3000  正常工资
  sal=5000  高工资
    只能做等值比较

  select sal,decode(sal,800,'低工资',3000,'正常工资',5000,'高工资')
  from emp;

判断正负
  sign(x)  x是正  1
            x是负  -1
            x是0  0

如何做大于小于的比较????
  sal<1000  显示低工资 
  1000<=sal<=3000  正常工资
  3000<sal<=5000  高工资

  select sal,decode(
            sign(sal-1000),-1,'低工资',
            decode(sign(sal-3000),-1,'正常工资',
                            0,'正常工资',
                            1,decode(sign(sal-5000),-1,'高工资','高工资')
            )) as 工资状态 from emp;
     
最后编辑2006-01-20 09:29:04
分享到:
gototop
 

请楼主具体说说究竟从ACCESS的哪儿输入这些代码操作呢?
帮我们扫扫盲吧^_^
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT