Oracle笔记(操作Scott中的数据)

本文详细介绍了Oracle数据库的相关知识,从数据库概念到Oracle软件的安装、原理、账户管理和SQL语言的应用,涵盖数据库系统、关系型数据库、SQL查询、Oracle函数、分组操作、账户管理、多表查询等内容,适合数据库初学者和开发者学习。
摘要由CSDN通过智能技术生成

1 数据库相关概念

  • 数据:数据是对现实生活事务描述的符号.
  • 数据库:数据库是用来存储数据的库.
  • 数据库管理系统:用户直观用来操作数据库的软件.
  • 数据库应用系统:在数据库管理系统之上的系统,专门给普通用户进行使用的系统.
  • 数据库系统:用户+数据库管理系统+数据库+数据库应用系统+数据库管理员.
  • 常见数据库存储结构:二维表结构存储:数据,数据的描述,数据的关系.
  • 常见的数据库管理系统:Oracle,MySQL,SQL SEVER,DB2,Access.

2 数据库的发展阶段

  1. 网状数据库.
  2. 层次数据库.
  3. 关系数据库:
    • 使用关系(二维表)结构存储与管理数据.
    • 采用结构化查询语言(SQL)作为客户端与数据库服务器之间沟通的桥梁.
    • 目前主流的数据库技术.
  4. 对象数据库:
    • 把面向对象的方法和数据库技术结合起来.
    • 可以使数据库系统的分析/设计最大程度的与人们对客观世界的认识相一致.
  5. NOSQL数据库:
    • Not Only SQL数据库,泛指非关系数据库,如MongoDB.

3 Oracle相关介绍

3.1 软件相关介绍

  1. Oracle是市场目前很流行的大型数据库,适用于大型项目的数据存储.
  2. 作用:合理地管理数据的存储和读取.
  3. 版本:OracleXE,PLSQL.
  4. 安装内容:
    • 一个数据库管理系统和多个数据库.
    • SID:数据库的唯一标识符.
  5. 软件服务介绍:
    • OracleServiceXE:相当于Oracle的开关.
    • OracleXETNSListener:相当于Oracle的监听器.

3.2 软件目录结构介绍

  1. E:\app\ChenZhuJi:安装路径.
  2. E:\app\ChenZhuJi\oradata:数据库相关信息.
  3. E:\app\ChenZhuJi\product:数据库管理系统的相关信息.
    • 11.2.0\dbhome_1\bin目录:数据库管理系统软件的启动目录.
    • 11.2.0\dbhome_1\jdbc目录:数据库和java连接所需的jar包.
    • 11.2.0\dbhome_1\netWork目录:数据库管理系统所需的网络配置目录.
    • 11.2.0\dbhome_1\log目录:Oracle异常日志信息存储目录.

3.3 软件原理

3.3.1 软件体系架构

  1. B/S架构:Browser/Sever(浏览器模式).
  2. C/S架构:Client/Sever(客户端服务器模式).
  3. Oracle是基于C/S机构的,基本交互流程:Oracle客户端–(P,端口号,协议,库名)→Oracle服务器→数据库.

3.3.2 本地网络服务配置

  • 本地网络服务配置文件目录为:

    E:\app\ChenZhuJi\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
    
  • 该文件存储的是键值对,Oracle客户端会自动加载其中的文件内容,连接配置好的数据库.

  • 例如:设置一个名为ORCL的数据库

    ORCL =
    	(DESCRIPTION =
    		(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    		(CONNECT_DATA =
    			(SERVER = DEDICATED)
    			(SERVICE_NAME = orcl)
    		)
    )
    

3.3.3 监听器配置

  • 常见错误:ora-12514.

  • 解决方式:在E:\app\ChenZhuJi\product\11.2.0\dbhome_1\network\admin\listener.ora文件中增加以下代码,再重启监听服务OracleXNETNSListener:

    (SID_DESC=
    	(GLOBAL_DBNAME=ORCL)	
    	(ORCALE_HOME=E:\app\ChenZhuJi\product\11.2.0\dbhome_1)
    	(ORACLE_NAME=ORCL)							
    )
    

3.4 Oracle账户介绍

  • OracleXE自带账户:XE
  • 账户名:
    1. System:系统用户(管理员).
    2. Sys:超级用户(工程师用).
  • 区别:Sys账号比system账户的权限要多.
  • 注意:
    1. OracleXE版本安装好后,不自带普通用户的;
    2. Oracle 11G和Oracle 10G自带一个普通用户scott,默认密码为tiger.

3.5 Oracle新建账户

  1. 必须使用System账户进行用户创建:打开plsql,使用System账户登录,注意登录身份选择sysdba.

  2. 新建SQL命令窗口(执行命令):

    --创建用户
    --create user 用户名 identified by 密码
    create user scott identified by tiger;
    --给用户赋权限
    --赋予数据库登录连接权限
    grant connect to scott;
    --赋予数据库资源操纵权限
    grant resource to scott;
    

3.6 Oracle忘记用户密码的解决方法

  • cmd打开window命令窗口→输入命令:sqlplus/nolog→输入命令:conn/as sysdba→输入命令:alter user 要修改的用户名 identified by 新的密码
  • 注意:可能提示sqlplus不是内部命令的错误,是因为Oracle的环境变量配置错误.

4 关系型数据库的基本概念

  • 关系:整个二维表.
  • 关系名:表格名称.
  • 元组:行数据(记录).
  • 属性:列数据(字段).
  • 属性名:列名称(字段名).
  • 主键:唯一确定元组的属性组(关键字).
  • 域:属性的取值范围.

5 SQL语言简介

  1. 概念:结构化语句.
  2. 作用:操作数据,管理用户,管理事务.
  3. 分类:
    • DQL(数据查询语言):select;
    • DDL(数据定义语言):create,alter,drop;
    • DCL(数据控制语言):grant,revoke;
    • DML(数据操作语言):insert,update,delete;
    • TCL(事务控制语言):SAVEPOINT,SET TRANSACTION,COMMIT.

6 SQL语句的单表查询

  1. 查询表的所有数据:

    • 语法:select *from 表名;

    • select *from emp;
      
  2. 查询表中指定字段的值:

    • 语法:select 字段名1,字段名2… from emp;

    • select empno from emp;
      
  3. as:查询结果中的字段使用别名

    • 语法:在字段名后使用关键字:字段名 as “别名”,as关键字可以省略不写,别名中没有特殊字符时双引号也可以省略.

      1. select 字段名1 别名1,字段名2 别名2 from 表名;
      2. select 字段名1 “别名1”,字段名2 “别名2” from 表名;
      3. select 字段名1 as “别名1”,字段名2 as “别名2” from 表名;
    • select empno "员工编号",ename 员工姓名,sal as "薪水" from emp;
      
  4. 连接符(||’’||)的使用:

    • 语法:select 字段名||‘字符’||字段名||…from 表名;

    • 注意:||为SQL语句的字符连接符,使用在select和from之间,字符连接格式为:字段名||‘字符’||字段名,一个拼接好的连接在结果集中是作为一个新的字段显式,可以使用别名优化字段显示.

    • select empno || '的姓名是'|| ename from emp;
      --输出结果14列:(员工编号)的姓名是(员工姓名)
      
  5. distinct:去除重复

    • 语法:select distinct 字段名1,字段名2,… from 表名;

    • 注意:去除重复的规则是按照行进行去除的,多行数据完全相同只取其一.

    • select distinct job from emp;
      --输出结果5行.
      
  6. order by:排序

    • 语法:select 字段名,字段名,… from 表名 order by 字段名1,字段名2… desc/asc;

    • 先按字段1排序,如果字段1相同,再按照字段2…进行排序.

    • 注意:desc表示降序排列,asc表示升序排列,默认是asc.

    • select *from emp order by empno;
      --将员工表全部信息按照员工编号升序排列输出.
      select * from emp order by sal desc,empno;
      --先按工资降序排列,如果工资相同,按员工编号升序排列.
      
  7. 字段的逻辑运算:

    select empno,sal+1000 from emp;
    --将员工编号和其工资加1000输出
    
  8. where:筛选查询

    • 语法:select 字段名,字段名,…from表名 where 筛选条件;

    • 单筛选条件:

      • 语法:使用运算符进行筛选=,>,>=,<,<=,<>.

      • 注意:如果条件中的值为字符,必须使用单引号括起来.

      • select empno,ename,sal+comm as 薪资 from emp;
        --查询所有的员工的工资信息
        
        select * from emp where ename='SMITH';
        --查询SMITH的个人信息
        
        select empno,ename,sal,sal+comm from emp where ename='SMITH';
        --查询SMITH的薪资信息
        
        
        select * from emp where sal > 1000;
        --查询工资大于1000的员工信息
        
        select * from emp where sal <> 3000 order by sal;
        --查询工资不等于3000的员工信息
        
        select * from emp where hiredate >= '01-1月-1981' order by hiredate;
        --查看入职日期在81年后的员工信息,按照入职时间升序排列.
        --注意:Oracle默认的日期格式为:日-月-年,示例'03-1月-1981
        
    • 多筛选条件:

      • and:使用and关键字,多条件同时成立的筛选使用and关键字进行条件连接.

        • 多个条件使用and关键进行连接,筛选的是符合所有条件的数据

        • 语法:select * from 表名 where 筛选条件1 and 条件2 and …

        • select * from emp where sal >= 2000 and sal < 3000;
          --查询工资在2000-3000之间的员工信息
          
          select * from emp where comm is not null and comm > 0;
          --查询奖金大于0且不为null的员工的全部信息
          
      • or:使用or关键字,进行或条件的筛选.

        • select * from emp where job='SALESMAN' or job= 'ANALYST' or job= 'MANAGER' order by job;
          --查询工作为SALESMAN,ANALYST,MANAGER的员工信息.
          
      • ():使用小括号可以提升条件的执行级别,使用了小括号的级别是最高的.

        • and关键字的执行级别高于or.

        • select * from emp where (job = 'SALEMAN' or job = 'MANAGER') and sal > 2000;
          --查询工作为SALEMAN或MANAGER且工资大于2000的员工的全部信息.
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值