zoukankan      html  css  js  c++  java
  • sql


    ===SQLPLUS======================
    1、什么是sql plus?
    是用来和Oracle进行交互的工具
    可电脑端使用,也可以在服务器上使用

    2、启动SQLPLUS

    3、设置界面风格

    4、常用命令
    show 显示SQL Plus中的信息

    connect 先无条件断开当前数据库用户的连接,再建立连接;缩写(conn)

    disconnect 断开当前连接。

    set 设置SQL Plus中的相关信息

    describe 返回存储对象的描述。缩写(desc)

    help 获取SQL Plus命令的帮助。

    clear screen清屏

    exit或quit 退出


    5、创建用户
    a.创建一个普通用户:
    语法:create user 用户名 identified by 密码;

    b.授权给一个用户:
    角色:oracle中内置了3个角色
    DBA:系统管理权限
    connect:创建会话连接权限
    resource:操作数据库对象的权限

    语法:grant 权限,权限..to 用户名;

    创建用户名为ABC的用户,密码自拟


    修改密码:alter user 用户名 identified by 新密码;
    删除用户:drop user 用户名;
    账户解锁:alter user 用户名 account unlock;
    ============================================
    导入SQL脚本:
    1.脚本文件内容,复制粘贴到SQLPLUS中;
    2.@ 文件路径 文件名.后缀名;

    SQL简单查询
    1、什么是SQL?什么是表格?怎么查询?

    SQL(Structured query language)结构化查询语言
    用来和数据库进行交互的语言

    表:行与列组成的二维空间,他是数据库存储的基本单位。


    2、select语法

    select 列名,列名2,列名3…… from 表名;

    3、练习
    --1从s_emp表中查询员工姓名

    --2从s_emp表中查询员工编号、姓名


    --3从s_emp表中查询员工编号、姓名、薪资

    --4从s_emp表中查询所有员工信息


    --5从s_emp表中查询公司中所有职位

    --6从s_emp表中查询所有员工姓名、职位、入职日期

    --7找出所有部门的部门编号、名称和地址


    --8找出公司不同级别的最高工资和最低工资

    =========================


    5、sql在数据库中是用运算能力:
    --从员工表中查询每个员工姓名和年薪


    6、sql具有字符串拼接能力,并且可以取别名:
    --字符串拼接(****是**入职的,工资是**,职位***)


    7、空值置换函数nvl()
    --查询所有员工的名字,年薪(不考虑提成)


    --查询所有员工的名字,年薪(考虑提成)

    注意:nvl()中的两个值要为同一数据类型

    使用scott/tiger用户下的emp表完成下列练习,表结构说明如下

    emp员工表 字段如下:
    empno 员工号
    ename 员工姓名
    job 职位
    mgr 上级编号
    hiredate入职日期
    sal 薪资
    comm 提成
    deptno 部门编号

    --1、选择部门30中的员工;
    select * from emp where deptno =30;

    --2、查询所有办事员(CLERK)的姓名、编号和部门;
    select ename,empno,deptno from emp where job = 'CLERK';

    --3、找出提成高于工资的员工;
    select * from emp where comm>sal;

    --4、找出提成高于薪资60%的员工
    select * from emp where comm>(sal*0.6);

    --5、找出部门10中所有经理和部门20中所有办事员的详细资料
    select * from emp where (deptno = 10 and job = 'MANAGER')or(deptno = 20 and job = 'CLERK');

    =============================

    --6、找出部门10中所有经理、部门20中所有办事员以及既不是经理又不是办事员但薪资大于或等于2000的所有雇员的详细资料
    select * from emp
    where (deptno = 10 and job = 'MANAGER') or (deptno = 20 and job= 'CLERK') or (job != 'MANAGER' and job != 'CLERK' and sal>=2000);

    --7、找出收取提成的员工的不同职位;
    select distinct job from emp where comm is not null;

    --8、找出不收取提成 或收取提成低于100的员工;
    select * from emp where comm is null or comm <100;

    -*-9、找出各月最后一天入职的所有员工

    -*-10、找出30年之前入职的员工

    ===================================
    -*-11、显示只有首字母大写的所有员工的姓名

    -*-12、显示正好为4个字符的员工姓名

    --13、显示不带有R字母的员工姓名
    select ename
    from emp
    where ename not like '%R%';

    -*-14、显示所有员工姓名的前三个字符

    -*-15、显示所有员工的姓名,用a代替所有的A
    =========================================================
    -*-16、显示所有员工的姓名以及工作满30年的入职日期

    --17、显示雇员的详细资料,按姓名排序
    select * from emp order by ename;

    --18、显示员工姓名,根据工作年限将最老的员工排在最前面
    select ename
    from emp
    where ename
    order by hiredate asc;

    --19、显示所有员工的姓名、部门编号和薪资,部门编号降序排列,同部门员工以薪资升序排列
    select ename, deptno,sal from emp order by deptno desc,sal ;

    -*-20、显示所有员工的姓名和入职日期,按照员工入职的月份降序排序,并将最前年份排在最前
    ============================================================
    -*-21、显示在一个月为30 天的情况下,所有员工的日工资,忽略余数

    -*-22、找出2月份入职的员工

    -*-23、显示出所有员工姓名,和其在公司所在天数

    --24、显示姓名字段的任何位置都包含A的所有员工姓名
    select ename
    from emp
    where ename like '%A%';

    -*-25、以年、月、日分别显示所有员工的工作时长;

  • 相关阅读:
    hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
    OpenCV中OpenCL模块函数
    基于年纪和成本(Age & Cost)的缓存替换(cache replacement)机制
    POJ 1637 混合图求欧拉回路 最大流实现
    Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}
    uboot环境变量与内核MTD分区关系
    nor flash 和nand flash 的区别
    NAND Flash大容量存储器K9F1G08U的坏块管理方法
    嵌入式学习之Nand Flash
    s3c2440对nandflash的操作
  • 原文地址:https://www.cnblogs.com/Heng23/p/7767403.html
Copyright © 2011-2022 走看看