zoukankan      html  css  js  c++  java
  • oracle基础操作(1)

    以前只是简单用程序操作数据,现在才发现自己没有系统的学习过,所以想在这里记录一下自己在数据库方面遇到的问题,会参考查询网络上一些资料,现在看的是韩顺平oracle视频的笔记;

    一、关于oracle系统的一些常用操作

    1、oracle安装时会自动生成sys和system用户,sys是超级用户,具有最高权限,具有sysdba角色,有创建数据库的权限,默认密码是:change_on_install;system是管理操作员,具有sysoper角色,没有创建数据库的权限默认密码是:manager;

    2、desc 表名;查看表结构时:使用Command window(命令窗口),不是SQL Window

    3、常用关于表查询

    select table_name from user_tables; //当前用户的表

    select table_name from all_tables; //所有用户的表
    select table_name from dba_tables; //包括系统表(需要用户权限)
    select * from user_tab_columns where table_name='表名'

    4、set timing on;(命令窗口)打开显示操作时间的开关

    5、sql*plus常用命令:

    conn 用户名/密码 [as sysdba/sysoper] 对应的是disc
    psssw 修改用户密码,需要用SYS/SYSTEM登陆
    show user 显示当前用户

    6、用户管理

    创建用户:create user 用户名 identified by 密码; (密码以字母开头)
    给自己修改密码:password 用户名;
    给别人修改(有dba权限):alter user 用户名 identified by 新密码
    删除用户:drop user 用户名 【cascade】(用户创建了表时,带cascade参数-级联删除该用户的所有对象)

    7、权限

    oracle的权限分为系统权限和对象权限:
    系统权限:用户对数据库的相关权限(角色)
    grant connect to scott with admin option;(system给scott用户connect角色)
    对象权限:用户对其他用户的数据对象操作的权限(select,insert,update,delete,all)
    grant select on emp to scott;(赋给scott用户查询emp的对象权限)
    grant all on emp to scott;(赋给scott用户查询,修改,删除,添加emp的对象权限)
    revoke select on emp from scott;(撤销scott用户对emp表的select对象权限)

    8、给用户解锁:

    alter user scott account unlock;

    二、简单使用查询

    (1)distinct 取消查询结果的重复行,distinct紧跟在selectt之后
    (2)使用连接字符串(||)
    select ename || ' is a ' || job from emp
    (3)查询中,别名需要使用“”号圈中文,英文用‘’
    (4)查询时,若列里有一个分组函数,其他的都必须是分组函数,否则就出错
    select ename, max(sal) from emp;
    分组查询时,分组字段可以和分组函数一起出现在查询列里
    SELECT AVG(sal), MAX(sal), deptno FROM emp GROUP by deptno;
    分组函数只能出现在选择列表、 having、 order by 子句中(不能出现在 where中)

    三、连接查询:

    Book表:BookId,BookName,StudentId
    Student表:StudentId,StudentName

    (1)默认查询:select * from book b,student s where b.studentid=s.studentid

    内连接:select * from book b inner join student s on b.studentid=s.studentid

    (2)左外连接:select * from book b left join student s on b.studentid=s.studentid
    以Book表的b.StudentId为基准,遍历Student表中与之匹配的s.StudentId:若b.StudentId含有s.StudentId匹配项,则
    进行拼接,然后遍历Student表的下一条s.StudentId,当查询完毕则进入下一条b.StudentId。若b.StudentId没有相应
    s.StudentId匹配项时,则显示左表的项,拼接右表的项显示为NULL。

    select * from book b left join student s on b.studentid=s.studentid where b.studentid=s.studentid

    select * from book b,student s where b.studentid=s.studentid

    (3)union用于合并多个select语句的结果,要求select查询的列相同(自动取消重复行);
    union all不取消重复行

  • 相关阅读:
    oracle 调优3
    ifconfig找不到命令的帖子 精选
    执行计划中各字段各模块描述
    oracle统计信息
    oracle中 rownum与rowid的理
    触发器
    开园第一天
    Asp.net生成htm静态文件的两种途径
    避免刷新页面,自动跳回到页面顶部的办法
    ASP.NET二级域名站点共享Session状态
  • 原文地址:https://www.cnblogs.com/xyl-share-happy/p/4492523.html
Copyright © 2011-2022 走看看