zoukankan      html  css  js  c++  java
  • 1. 安装Oracle,配置环境 2. 实现查询From子句 3. 实现查询where子句 4. 实现查询order by子句

    一、环境安装
    1. 登录:以管理员身份登录
    sqlplus 登录名/密码
    管理员身份登录:sqlplus system/123456
    2. 登录后,导入案例。下载scott.sql文件,执行下面一行的命令
    SQL>@"E:兄弟连文档oraclejava 19day01scriptscott.sql";
    此时我们拥有非管理员的用户:scott
    3. 激活scott的账号,激活用scott可登录
    alter user scott identified by tiger;
    alter user 登录 identified by 登录密码;
    此时如果成功:
    SQL> show user
    显示:USER 为 "SCOTT"
    4. 退出system管理登录,重新以scott/tiger登录
    C:..sqlplus scott/tiger
    登录成功
    SQL> desc dept;
    如成功

    名称 是否为空? 类型
    ----------------------------------------- -------- ------------------

    DEPTNO NOT NULL NUMBER(2)
    DNAME VARCHAR2(14)
    LOC VARCHAR2(13)
    ---------------------------------------------------------------------------------------------
    二、sql命令
    0. 在Oracle环境下清空屏幕
    SQL> host cls;
    1. 查看表结构
    SQL> desc 表名;
    例如: desc dept; 查看dept部门表的表结构
    desc emp; 查看emp员工表的表结构
    2.专业词汇
    数据库:存储数据的仓库。
    数据存储经历的阶段
    人工阶段 -- 很久很久以前...有一个屋子放置一台(巨大个的)计算机,用于实现科学计算。
    文件阶段 -- 用文件实现【永久存储】
    数据库阶段--用数据库实现存储
    常见关系型数据库
    DB2 -- IBM
    Oracle -- Oracle公司(甲骨文)
    Sql Server -- 微软
    MySQL -- Oracle公司

    java程序猿必备关系数据库:OracleMySql
    数据库分类
    非关系型数据库: 后续课程有说
    关系型: 层次结构、网状结构、关系型数据库
    数据库系统
    DB -- 数据库
    RDB -- 关系型数据库
    RDBMS -- 关系型数据库管理系统
    数据库存储的基本单位
    表(实体描述) -- class Student{... ...}
    字段(列) -- 属性
    值(行) -- 实体对象值
    dept表 列
    行 DEPTNO DNAME LOC
    ------- ---------------------------- --------------------------
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON
    Oracle常见数据类型:
    数值型 number(有效长度,小数点保留位数); 举栗:number(10,2) 12345678.12
    字符
    可变长度字符 varchar2(有效长度) 举栗:varchar2(5) 'ab' 实际存 'ab'
    varchar2(5) 'abcde' 最多存5个
    不可变长度字符 char(有效长度) 举栗:char(5) 'ab' 实际存 'ab '
    char(5) 'abcde' 最多存5个
    char当实际存储字符不足时补空格,varchar2按实际字符长度存储不补空格
    日期 date ... 月/日/年 小时:分钟:秒 ...

    3.查询一个表的内容:from子句
    前导条件:登录名scott 密码tiger
    3.1 查询dept部门表的所有字段信息
    select * from dept;
    *表示所有的列字段: deptNo,dName,loc

    3.2 查询显示emp员工表中:员工编号、员工姓名、工资、奖金、部门编号
    语法:select 列名1,列名2,...,列名N from 表名;
    练习:select empNo,eName,sal,comm,deptNo from emp;

    3.3 查询显示dept部门的:部门编号,部门名称,所在地区
    select deptNo,dName,loc from dept;

    --【总结】from子句-------------------------------------------------------------------------------------
    查询一个表的所有字段:字段名可用* 代替。

    select 列名1,列名2,... ... ,列名N from 表名;

    select * from 表名;

    4. from 子句进阶
    4.1 别称,给当前字段或这个表起外号:显示部门时统一部门字段标题dXxx的格式。
    语法:select 列名1 别称1,列名2 别称2,... ,列名N 别称N from 表名;
    默认:select deptNo,dName,loc from dept;
    练习:select deptNo dNo,dName,loc dLoc from dept;
    思考:
    员工表emp里有字段:empNo,eName...deptNo(部门编号)
    部门表dept里有字段:deptNo(部门编号),dName,loc
    列字段同名了,此时必须用别称来区分

    4.2 数学运算:+ - * / 求当前员工的年薪(忽略奖金) = 月薪*12. 显示员工姓名、月薪、年薪
    select eName,sal, sal*12 from emp; 显示标题eName,sal,sal*12

    select eName,sal, sal*12 yearSal from emp; 显示标题eName,sal,yearSal

    思考:员工当月实发工资=工资sal+提成comm ,显示员工姓名和实发工资
    select eName,sal,comm,sal+comm from emp; 此时没奖金的人没有实发工资,
    oracle中 运算数1+运算数2 任何1个是null结果是null
    当某个员工没有绩效奖金comm是,工资sal+奖金comm显示结果是null
    没有控制处理时:select eName,sal,comm,sal+comm money from emp;
    ENAME SAL COMM MONEY
    -------------------- ---------- ---------- ----------
    SMITH 800
    ... ...
    4.3 null值的处理,查询奖金是null时依然计算实发工资
    语法:nvl(字段,新值) 功能:将字段里时null的内容替换成新值
    s
    练习:将奖金是null的显示0
    select eName,nvl(comm,0) from emp;
    练习:当奖金是Null时依然计算实发工资(sal+comm)
    select eName,sal,nvl(comm,0) cm, sal+nvl(comm,0) money from emp;
    显示结果:
    ENAME SAL CM MONEY
    -------------------- ---------- ---------- ----------
    SMITH 800 0 800
    ... ...

    练习:查询所有员工年薪和年度提成(显示员工姓名、年薪yearSal、年度提成yearComm)
    ename sal*12 nvl(comm,0)*12==对

    select eName, sal*12 , nvl(comm,0)*12 from emp;
    完美要求可加入别称
    select eName, sal*12 yearSal, nvl(comm,0)*12 yearComm from emp;

    4.4 字符链接。 当需要有显示前缀、后缀、中间链接赋的时候可用

    练习:显示 部门名_所在地区
    java的字符链接: "abc"+"123" 结果是 "abc123"
    oracle的字符链接:'abc'||'123' 结果是 'abc123' select 'abc'||'123' from dual;
    答:select dName||'_'||loc from dept;

    练习:要求姓名以 Mr.开头

    答:select 'Mr.'||eName,sal from emp;

    思考:显示 abc 成 'abc' 即显示结果中有'号,特殊符号的处理
    思考答1:select '''abc''' from dual;
    思考答2:select ''''||'abc'||'''' from dual;

    5、where子句 :有条件查询 ,表达满足什么条件显示数据。结合from使用

    5.1 查工资大于1000的员工
    select * from emp where sal>=1000; --显示当前工资在1000及以上员工的所有字段
    select eName,sal from emp where sal>=1000; --查询工资大于1000及以上员工的姓名和工资

    5.2 姓名是WARD的员工
    select * from emp where eName = 'WARD';
    select * from emp where eName = 'Ward'; 还能出来结果吗?答不出,'值'区分大小写

    5.3 查询部门所在地区纽约的部门信息是什么?
    select * from dept where loc='NEW YORK';


    5.4 查没奖金的员工信息。
    你们认为:select eName,comm from emp where comm = null;
    答案1:select eName,comm from emp where nvl(comm,0) = 0 ;


    6、order by 子句:排序,按指定规则排序
    6.1 按部门编号从大到写显示部门信息
    思路:排序依据是部门编号,排序规则是从大到小
    答:select * from dept order by deptNo desc; --desc降序从大到小的排序规则。asc升序
    6.2 按部门名称升序排列显示
    答: select * from dept order by dname asc;

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    数据库数据格式化之Kettle Spoon
    NopCommerce开源项目中很基础但是很实用的C# Helper方法
    oracle 两个逗号分割的字符串 如何判断是否其中有相同值
    MongoDB+MongoVUE安装及入门
    C#中Dictionary<TKey,TValue>排序方式
    kettle的基本介绍
    Kettle能做什么?
    oracle like 条件拼接
    loading加载和layer.js
    关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值
  • 原文地址:https://www.cnblogs.com/sumboy/p/9058609.html
Copyright © 2011-2022 走看看