zoukankan      html  css  js  c++  java
  • oracle笔记1:-安装-体系结构-基本查询

    一.Oracle数据库的安装(安装在虚拟机的xp系统里)
         1.安装虚拟机
         2.虚拟机内安装xp系统,以下步骤在虚拟机内进行
         3.双击setup.exe,在出现的界面中设置口令,及确认口令(此口令即为system账号的密码),点击下一步
         4.先决条件检查,将"用户已验证前面的复选框打勾,下一步
         5.概要界面,点击安装
         6.安装完成后,自动运行配置向导
         7.口令管理界面,点击"口令管理"解锁SCOTT和HR两个账户
         8.回到口令管理界面,点击确定,安装完成,点击退出.

        9.设置虚拟机:编辑--虚拟网络编辑器--添加网络,添加后会自动分配IP(如,192.168.9.0)
         10.此时,本机上会多出一块虚拟网卡(网络和共享中心),设置该网卡的IP与虚拟机的ip在同一网段(如192.168.9.1)
         11.设置xp系统中ip保持在同一网段(如192.168.9.2)
         12.设置虚拟机的网络适配器,自定义为刚才添加的网卡;虚拟机-设置-网络适配器-自定义

        13.修改oracal的两个核心配置文件:C:oracleproduct10.2.0db_1NETWORKADMIN
         该文件下,listener.ora文件和tnsnames.ora文件中的ip都改为与xp系统ip一致,port=1521

        14.测试sqlplus客户端连接服务器,将sqlplus所在的整个文件夹(instanclient_12_1),copy至一个没有中文,没有空格的路径里
         15.打开DOS窗口,进入该文件夹,输入命令:sqlplus system/密码@远程IP:1521/orcl;若使用powershell,则输入.sqlplus system/密码@远程IP:1521/orcl
         远程IP:XP系统的ip;密码为安装时输入的密码
         16.quit,退出

        17.测试并连接pl/sql developer.安装pl/sql,注意安装路径不能有中文,不能有空格,一直下一步直到安装完成;
         18.点击快捷方式,出现登陆界面,点击"cancel",进入界面
         19.tools--preferences,修改oracle home为:D:instantclient_12_1;
         修改OCIlibrary为,D:instantclient_12_1/oci.dll;
         20.copy oracle的核心文件tnsnames至一个没有中文和空格的路径里,然后添加至系统环境变量,变量名:TNS_ADMIN,变量值为:D:instantclient_12_1
         21.使用system账户进入系统;

        22.进入数据库后,重置及解锁SCOTT账户,命令如下:alter user  scott identified by tiger account unlock;对于HR账户同样操作;

        注:
         --解决中文乱码问题
         --1.查看服务器端编码
         select userenv('language') from dual;
         --2.查看以下语句执行后的第一个参数与服务器端编码是否一致
         select * from V$NLS_PARAMETERS;
         --3.若不一致,添加环境变量:变量名:NLS_LANG,变量值:第1步查到的值
         --4.重启pl/sql Devloper


    二.Oracle数据库的体系结构
         1.数据库:oracle数据库是数据的物理存储,包括数据文件ora或者dbf,控制文件,联机文件,日志文件,参数文件.oracle数据库在一个操作系统中只有一个库,这是与其它数据库的区别之处;
         2.实例:一个实例由一系列的后台进程和内存结构组成,一个数据库可以有n个实例,一般只设置一个;
         3.数据文件(dbf):数据库的物理存储单位;
         4.表空间:数据文件的逻辑映射.一个数据库在逻辑上被划分成一个或多个表空间;表空间由磁盘上的一个或多个数据文件(datafile)组成,一个数据文件只能属于一个表空间.
         5.用户:用户是在实例下建立的,不同实例中可以建相同名字的用户.

    三.基本查询语句(SCOTT账户)
    select * from emp;

    1.--去重 distinct
    select distinct job from emp;
    select job from emp;

    2.--字符串连接 ||  每个员工的信息用一句话显示:“员工编号是XXXX,姓名是XXX,职位是XXX”
    select '员工编号是' || empno || ',姓名是' || ename || ',职位是' || job from emp;

    3.--四则运算
    select sal*12 from emp;

    4.--条件查询
    4.1--查询工资大于等于1500并且小于等于3000的员工
    select * from emp where sal >= 1500 and sal <= 3000;

    4.2--between and 含头含尾
    select * from emp where sal between 1500 and 3000;

    4.3--查询工资不大于1500 not
    select * from emp where not sal > 1500;

    4.4--查询员工编号是 7566,7788,7369 in
    select * from emp where empno in(7566,7788,7369);

    4.6--查询奖金为空的员工信息 is
    select * from emp where comm is null;


    5.--模糊查询 like
    --通配符%,占位符_
    --查询员工姓名中第二个字符带m的,此时,Oracle数据库大小写敏感的
    select * from emp where ename like '_M%';

    6.--查询员工姓名中带_,需要转义 escape       注:%/&/中文字符不可作为转义字符使用
    select * from emp where ename like '%a_%' escape 'a';


    7.--排序 order by asc desc
    --按照奖金的降序排序
    select * from emp order by comm desc nulls last;
    select 1+1 from dual;

    8.--单行函数
    --字符函数:
            lower()转小写;
            upper()转大写;
            initcap()首字母大写;
            replace()替换;
            substr()截取;
            length()长度;
            concat()连接;
    select lower('ABC') from dual;
    select upper('abc') from dual;
    select initcap('abcd') from dual;
    select replace('abcdef','ab','MM') from dual;
    select substr('abcdef',0,3) from dual;--从第1个开始取(含),取3个;
    select substr('abcdef',1,3)from dual;--从第1个开始取(含),取3个;
    select substr('abcdef',2,3) from dual;--从第2个开始取(含),取3个;
    select length('abcdefg') from dual;
    select concat('abc','def') from dual;
    select 'abc'||'def' from dual;

    9.--数值函数
    round()四舍五入
    trunc()去尾/截断
    mod()取模
    select round(12.56,1) from dual;--12.6
    select round(12,-1) from dual;--10
    select round(16,-1) from dual;--20

    select trunc(12.56,-1) from dual;--10
    select trunc(16.5,-1) from dual;--10

    select mod(10,3) from dual;--1

    10.--日期函数
    10.1--当前系统时间 sysdate
    select  sysdate from dual;

    10.2--两个日期的月份差months_between
    select ename, round(months_between(sysdate,hiredate)) from emp;

    10.3--add_months n个月后的时间
    select add_months(sysdate,4) from dual;

    11--转换函数
    --字符转数字
    select '12'+'12' from dual;
    select to_number('12')+to_number('12') from dual;

    12--  查询 '1980-12-17'入职的员工
    select * from emp where to_char(hiredate,'yyyy-MM-dd') = '1980-12-17';
    select * from emp where hiredate = to_date('1980-12-17','yyyy-MM-dd');

    13--通用函数 nvl
    --null如果参与运算,则结果恒为null,需使用nvl函数将其转为0
    select empno,ename,comm,sal*12+nvl(comm,0) from emp;

    14--翻译函数 decode    把员工表中的职位显示成中文

    select ename,job,decode(job,
            'CLERK','店员',
            'SALESMAN','销售员',
            '其它') from emp; 


                                  
    select ename, job,
    case job when 'CLERK' then '店员'
              when 'SALESMAN' then '销售员'
              else '其他'
              end
              from emp;

    15.--组函数
    --计算每个部门的平均工资
    select deptno, trunc(avg(sal)) from emp group by deptno having avg(sal) > 2000;

    16.--统计每个部门的人数,无人部门显示为0

    SELECT D.DEPTNO, COUNT(E.DEPTNO)
       FROM EMP E
      RIGHT JOIN DEPT D
         ON E.DEPTNO = D.DEPTNO
      GROUP BY D.DEPTNO;
  • 相关阅读:
    myBatis源码解析-二级缓存的实现方式
    手写mybatis框架-增加缓存&事务功能
    手写mybatis框架
    myBatis源码解析-配置文件解析(6)
    myBatis源码解析-类型转换篇(5)
    myBatis源码解析-反射篇(4)
    myBatis源码解析-数据源篇(3)
    myBatis源码解析-缓存篇(2)
    Linux Centos下SQL Server 2017安装和配置
    VS2019 查看源码,使用F12查看源码
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7532819.html
Copyright © 2011-2022 走看看